]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/conf/Makefile.mips
Merge svn+ssh://svn.freebsd.org/base/head@211344
[FreeBSD/FreeBSD.git] / sys / conf / Makefile.mips
1 # Makefile.mips
2 # $FreeBSD$
3 #
4 # Makefile for FreeBSD
5 #
6 # This makefile is constructed from a machine description:
7 #       config machineid
8 # Most changes should be made in the machine description
9 #       /sys/mips/conf/``machineid''
10 # after which you should do
11 #        config machineid
12 # Generic makefile changes should be made in
13 #       /sys/conf/Makefile.mips
14 # after which config should be rerun for all machines.
15 #
16
17 # Which version of config(8) is required.
18 %VERSREQ=       600004
19
20 STD8X16FONT?=   iso
21
22 .if !defined(S)
23 .if exists(./@/.)
24 S=      ./@
25 .else
26 S=      ../../..
27 .endif
28 .endif
29 .include "$S/conf/kern.pre.mk"
30
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}}
34
35 # XXX: Such sweeping assumptions...
36 MACHINE=mips
37 MACHINE_ARCH=mips
38 KERNLOADADDR?=0x80001000
39 # This obscure value is defined by CFE for WR160N
40 # To be changed later
41 TRAMPLOADADDR?=0x807963c0
42
43 MKMODULESENV+=  MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH}
44
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
49
50 HACK_EXTRA_FLAGS=-shared
51 .if defined(TARGET_BIG_ENDIAN)
52 CFLAGS+=-EB
53 SYSTEM_LD+=-EB
54 EXTRA_FLAGS+=-EB 
55 TRAMP_LDFLAGS+=-Wl,-EB 
56 HACK_EXTRA_FLAGS+=-EB -Wl,-EB
57 .if defined(TARGET_64BIT)
58 SYSTEM_LD+=-m elf64btsmip_fbsd
59 HACK_EXTRA_FLAGS+=-Wl,-m,elf64btsmip_fbsd
60 .endif
61 .else
62 CFLAGS+=-EL
63 SYSTEM_LD+=-EL
64 EXTRA_FLAGS+=-EL
65 TRAMP_LDFLAGS+=-Wl,-EL
66 HACK_EXTRA_FLAGS+=-EL -Wl,-EL
67 .if defined(TARGET_64BIT)
68 SYSTEM_LD+=-m elf64ltsmip_fbsd
69 HACK_EXTRA_FLAGS+=-Wl,-m,elf64ltsmip_fbsd
70 .endif
71 .endif
72
73
74 # We add the -fno-pic flag to kernels because otherwise performance
75 # is extremely poor, as well as -mno-abicalls to force no ABI usage.
76 CFLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
77 HACK_EXTRA_FLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
78
79 # XXX hardcoded kernel entry point
80 ASM_CFLAGS+=${CFLAGS} -D_LOCORE -DLOCORE
81
82 KERNEL_EXTRA=trampoline
83 trampoline: ${KERNEL_KO}.tramp.bin
84 ${KERNEL_KO}.tramp.bin: ${KERNEL_KO} $S/$M/$M/elf_trampoline.c \
85         $S/$M/$M/inckern.S 
86         ${OBJCOPY} --strip-symbol '$$d' --strip-symbol '$$a' \
87         -g --strip-symbol '$$t' ${FULLKERNEL} ${KERNEL_KO}.tmp
88         sed s/${KERNLOADADDR}/${TRAMPLOADADDR}/ ${LDSCRIPT_NAME} | \
89                 sed s/" + SIZEOF_HEADERS"//  > ${LDSCRIPT_NAME}.tramp.noheader
90         # Generate .S file that setups stack and jumps to trampoline
91         echo "#include <machine/asm.h>" >tmphack.S
92         echo "ENTRY(_start)" >>tmphack.S
93         echo "PTR_LA t0, kernel_end" >>tmphack.S
94         echo "move sp, t0" >>tmphack.S
95         echo "add sp, 0x2000" >>tmphack.S
96         echo "and sp, ~0x7" >>tmphack.S
97         echo "PTR_LA t0, _startC" >>tmphack.S
98         echo "j t0" >>tmphack.S
99         echo "END(_start)" >>tmphack.S
100         echo "#define KERNNAME \"${KERNEL_KO}.tmp\""  >opt_kernname.h 
101         ${CC} -O -nostdlib -I. -I$S ${HACK_EXTRA_FLAGS} ${TRAMP_LDFLAGS} -Xlinker \
102                 -T -Xlinker ${LDSCRIPT_NAME}.tramp.noheader tmphack.S \
103                 $S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S \
104                 -o ${KERNEL_KO}.tramp.noheader 
105         ${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.noheader \
106                 ${KERNEL_KO}.tramp.bin \
107
108 %BEFORE_DEPEND
109
110 %OBJS
111
112 %FILES.c
113
114 %FILES.s
115
116 %FILES.m
117
118 %CLEAN
119
120 CLEAN+= ${LDSCRIPT_NAME} ${LDSCRIPT_NAME}.tramp.noheader \
121         ${KERNEL_KO}.tramp.noheader ${KERNEL_KO}.tramp.bin
122
123 ${LDSCRIPT_NAME}: $S/conf/${LDSCRIPT_NAME}
124         cat $S/conf/${LDSCRIPT_NAME}|sed s/KERNLOADADDR/${KERNLOADADDR}/g \
125                 > ${LDSCRIPT_NAME}
126 %RULES
127
128 .include "$S/conf/kern.post.mk"