6 # This makefile is constructed from a machine description:
8 # Most changes should be made in the machine description
9 # /sys/mips/conf/``machineid''
10 # after which you should do
12 # Generic makefile changes should be made in
13 # /sys/conf/Makefile.mips
14 # after which config should be rerun for all machines.
17 # Which version of config(8) is required.
29 .include "$S/conf/kern.pre.mk"
31 LDSCRIPT_NAME?=ldscript.$M
32 SYSTEM_LD:= ${SYSTEM_LD:$S/conf/${LDSCRIPT_NAME}=${LDSCRIPT_NAME}}
33 SYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/${LDSCRIPT_NAME}=${LDSCRIPT_NAME}}
35 # XXX: Such sweeping assumptions...
38 KERNLOADADDR?=0x80001000
39 # This obscure value is defined by CFE for WR160N
41 TRAMPLOADADDR?=0x807963c0
43 MKMODULESENV+= MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH}
45 # We default to the MIPS32 ISA, if none specified in the
46 # kernel configuration file.
47 ARCH_FLAGS?=-march=mips32
48 EXTRA_FLAGS=-fno-pic -mno-abicalls -G0
50 HACK_EXTRA_FLAGS=-shared
51 .if defined(TARGET_BIG_ENDIAN)
55 TRAMP_LDFLAGS+=-Wl,-EB
56 HACK_EXTRA_FLAGS+=-EB -Wl,-EB
61 TRAMP_LDFLAGS+=-Wl,-EL
62 HACK_EXTRA_FLAGS+=-EL -Wl,-EL
66 # We add the -fno-pic flag to kernels because otherwise performance
67 # is extremely poor, as well as -mno-abicalls to force no ABI usage.
68 CFLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
69 HACK_EXTRA_FLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
71 # XXX hardcoded kernel entry point
72 ASM_CFLAGS+=${CFLAGS} -D_LOCORE -DLOCORE
74 KERNEL_EXTRA=trampoline
75 trampoline: ${KERNEL_KO}.tramp.bin
76 ${KERNEL_KO}.tramp.bin: ${KERNEL_KO} $S/$M/$M/elf_trampoline.c \
78 ${OBJCOPY} --strip-symbol '$$d' --strip-symbol '$$a' \
79 -g --strip-symbol '$$t' ${FULLKERNEL} ${KERNEL_KO}.tmp
80 sed s/${KERNLOADADDR}/${TRAMPLOADADDR}/ ${LDSCRIPT_NAME} | \
81 sed s/" + SIZEOF_HEADERS"// > ${LDSCRIPT_NAME}.tramp.noheader
82 # Generate .S file that setups stack and jumps to trampoline
83 echo "#include <machine/asm.h>" >tmphack.S
84 echo "ENTRY(_start)" >>tmphack.S
85 echo "PTR_LA t0, kernel_end" >>tmphack.S
86 echo "move sp, t0" >>tmphack.S
87 echo "add sp, 0x2000" >>tmphack.S
88 echo "and sp, ~0x7" >>tmphack.S
89 echo "PTR_LA t0, _startC" >>tmphack.S
90 echo "j t0" >>tmphack.S
91 echo "END(_start)" >>tmphack.S
92 echo "#define KERNNAME \"${KERNEL_KO}.tmp\"" >opt_kernname.h
93 ${CC} -O -nostdlib -I. -I$S ${HACK_EXTRA_FLAGS} ${TRAMP_LDFLAGS} -Xlinker \
94 -T -Xlinker ${LDSCRIPT_NAME}.tramp.noheader tmphack.S \
95 $S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S \
96 -o ${KERNEL_KO}.tramp.noheader
97 ${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.noheader \
98 ${KERNEL_KO}.tramp.bin \
112 CLEAN+= ${LDSCRIPT_NAME} ${LDSCRIPT_NAME}.tramp.noheader \
113 ${KERNEL_KO}.tramp.noheader ${KERNEL_KO}.tramp.bin
115 ${LDSCRIPT_NAME}: $S/conf/${LDSCRIPT_NAME}
116 cat $S/conf/${LDSCRIPT_NAME}|sed s/KERNLOADADDR/${KERNLOADADDR}/g \
120 .include "$S/conf/kern.post.mk"