| 1 | MIPS_TARGET=mipsel-linux-gnu
|
|---|
| 2 |
|
|---|
| 3 | MIPS_CC_DIR=/usr/local/mipsel/bin
|
|---|
| 4 | MIPS_BINUTILS_DIR=/usr/local/mipsel/bin
|
|---|
| 5 |
|
|---|
| 6 | CC=$(MIPS_CC_DIR)/$(MIPS_TARGET)-gcc
|
|---|
| 7 | AS=$(MIPS_BINUTILS_DIR)/$(MIPS_TARGET)-as
|
|---|
| 8 | LD=$(MIPS_BINUTILS_DIR)/$(MIPS_TARGET)-ld
|
|---|
| 9 | OBJDUMP=$(MIPS_BINUTILS_DIR)/$(MIPS_TARGET)-objdump
|
|---|
| 10 | OBJCOPY=$(MIPS_BINUTILS_DIR)/$(MIPS_TARGET)-objcopy
|
|---|
| 11 | BFD_NAME=elf32-tradlittlemips
|
|---|
| 12 | BFD_ARCH=mips
|
|---|
| 13 |
|
|---|
| 14 | DEFS=-DARCH=$(ARCH) -DMACHINE=${MACHINE} -DKERNEL_LOAD_ADDRESS=${KERNEL_LOAD_ADDRESS}
|
|---|
| 15 | CFLAGS=$(DEFS) -mno-abicalls -G 0 -nostdlib -fno-builtin -O2 -fno-zero-initialized-in-bss
|
|---|
| 16 | LFLAGS=-M -N
|
|---|
| 17 |
|
|---|
| 18 | # It seems that on big endian either GCC or the simulators
|
|---|
| 19 | # have the swl/swr/lwl/lwr instructions wrong. Just for sure,
|
|---|
| 20 | # disable it with -mmemcpy (force calling memcpy instead of inlining)
|
|---|
| 21 |
|
|---|
| 22 | ifeq (${MACHINE},indy)
|
|---|
| 23 | CFLAGS += -EB -mmemcpy -DBIG_ENDIAN -DHAVE_FPU -DFPU_LAZY -march=r4600
|
|---|
| 24 | BFD = ecoff-bigmips
|
|---|
| 25 | KERNEL_LOAD_ADDRESS = 0x88002000
|
|---|
| 26 | endif
|
|---|
| 27 |
|
|---|
| 28 | ifeq (${MACHINE},lgxemul)
|
|---|
| 29 | CFLAGS += -DHAVE_FPU -DFPU_LAZY -mips3
|
|---|
| 30 | BFD = ecoff-littlemips
|
|---|
| 31 | KERNEL_LOAD_ADDRESS = 0x80100000
|
|---|
| 32 | endif
|
|---|
| 33 |
|
|---|
| 34 | ifeq (${MACHINE},bgxemul)
|
|---|
| 35 | CFLAGS += -EB -mmemcpy -DBIG_ENDIAN -DHAVE_FPU -DFPU_LAZY -mips3
|
|---|
| 36 | BFD = ecoff-bigmips
|
|---|
| 37 | KERNEL_LOAD_ADDRESS = 0x80100000
|
|---|
| 38 | endif
|
|---|
| 39 |
|
|---|
| 40 | # MSIM needs lwl/swl patch & 4kc instruction patch to work
|
|---|
| 41 | # otherwise add -mmemcpy -mips3
|
|---|
| 42 | ifeq (${MACHINE},msim)
|
|---|
| 43 | BFD = binary
|
|---|
| 44 | CFLAGS += -msoft-float -march=4kc
|
|---|
| 45 | KERNEL_LOAD_ADDRESS = 0x80100000
|
|---|
| 46 | endif
|
|---|
| 47 |
|
|---|
| 48 | # SIMICS 4kc emulation is broken, although for instructions
|
|---|
| 49 | # that do not bother us
|
|---|
| 50 | ifeq (${MACHINE},simics)
|
|---|
| 51 | BFD = elf32-little
|
|---|
| 52 | CFLAGS += -msoft-float -mips3
|
|---|
| 53 | KERNEL_LOAD_ADDRESS = 0x80100000
|
|---|
| 54 | endif
|
|---|
| 55 |
|
|---|
| 56 | ../arch/$(ARCH)/_link.ld: ../arch/$(ARCH)/_link.ld.in
|
|---|
| 57 | $(CC) $(CFLAGS) -C -DBFD=${BFD} -E -x c $< | grep -v "^\#" > $@
|
|---|
| 58 |
|
|---|
| 59 | arch_sources= \
|
|---|
| 60 | arch/start.S \
|
|---|
| 61 | arch/context.S \
|
|---|
| 62 | arch/panic.S \
|
|---|
| 63 | arch/mips.c \
|
|---|
| 64 | arch/dummy.S \
|
|---|
| 65 | arch/console.c \
|
|---|
| 66 | arch/asm.S \
|
|---|
| 67 | arch/exception.c \
|
|---|
| 68 | arch/interrupt.c \
|
|---|
| 69 | arch/cache.c \
|
|---|
| 70 | arch/cpu/cpu.c \
|
|---|
| 71 | arch/mm/frame.c \
|
|---|
| 72 | arch/mm/page.c \
|
|---|
| 73 | arch/mm/tlb.c \
|
|---|
| 74 | arch/fpu_context.c \
|
|---|
| 75 | arch/fmath.c
|
|---|