1178170Simp# Makefile.mips
2178170Simp# $FreeBSD$
3178170Simp#
4178170Simp# Makefile for FreeBSD
5178170Simp#
6178170Simp# This makefile is constructed from a machine description:
7178170Simp#	config machineid
8178170Simp# Most changes should be made in the machine description
9178170Simp#	/sys/mips/conf/``machineid''
10178170Simp# after which you should do
11178170Simp#	 config machineid
12178170Simp# Generic makefile changes should be made in
13178170Simp#	/sys/conf/Makefile.mips
14178170Simp# after which config should be rerun for all machines.
15178170Simp#
16178170Simp
17178170Simp# Which version of config(8) is required.
18178170Simp%VERSREQ=	600004
19178170Simp
20178170SimpSTD8X16FONT?=	iso
21178170Simp
22178170Simp.if !defined(S)
23178170Simp.if exists(./@/.)
24178170SimpS=	./@
25178170Simp.else
26178170SimpS=	../../..
27178170Simp.endif
28178170Simp.endif
29178170Simp.include "$S/conf/kern.pre.mk"
30178170Simp
31201984SimpLDSCRIPT_NAME?=ldscript.$M
32201984SimpSYSTEM_LD:= ${SYSTEM_LD:$S/conf/${LDSCRIPT_NAME}=${LDSCRIPT_NAME}}
33201984SimpSYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/${LDSCRIPT_NAME}=${LDSCRIPT_NAME}}
34201984Simp
35201984SimpKERNLOADADDR?=0x80001000
36201984Simp# This obscure value is defined by CFE for WR160N
37201984Simp# To be changed later
38201984SimpTRAMPLOADADDR?=0x807963c0
39178170Simp
40178170SimpMKMODULESENV+=	MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH}
41178170Simp
42178170Simp# We default to the MIPS32 ISA, if none specified in the
43178170Simp# kernel configuration file.
44178170SimpARCH_FLAGS?=-march=mips32
45201984SimpEXTRA_FLAGS=-fno-pic -mno-abicalls -G0
46178170Simp
47178170SimpHACK_EXTRA_FLAGS=-shared
48178170Simp
49178170Simp# We add the -fno-pic flag to kernels because otherwise performance
50178170Simp# is extremely poor, as well as -mno-abicalls to force no ABI usage.
51201984SimpCFLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
52201984SimpHACK_EXTRA_FLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
53224105SjchandraTRAMP_ARCH_FLAGS?=$(ARCH_FLAGS)
54224105SjchandraTRAMP_EXTRA_FLAGS=${EXTRA_FLAGS} ${TRAMP_ARCH_FLAGS}
55224105Sjchandra.if ${MACHINE_ARCH:Mmips64*} != ""
56224105SjchandraTRAMP_ELFSIZE=64
57224105Sjchandra.else
58224105SjchandraTRAMP_ELFSIZE=32
59224105Sjchandra.endif
60178170Simp
61178170Simp# XXX hardcoded kernel entry point
62178170SimpASM_CFLAGS+=${CFLAGS} -D_LOCORE -DLOCORE
63178170Simp
64201984SimpKERNEL_EXTRA=trampoline
65201984Simptrampoline: ${KERNEL_KO}.tramp.bin
66201984Simp${KERNEL_KO}.tramp.bin: ${KERNEL_KO} $S/$M/$M/elf_trampoline.c \
67201984Simp	$S/$M/$M/inckern.S 
68201984Simp	${OBJCOPY} --strip-symbol '$$d' --strip-symbol '$$a' \
69216498Sjchandra		-g --strip-symbol '$$t' ${FULLKERNEL} ${KERNEL_KO}.tmp
70216498Sjchandra	sed -e s/${KERNLOADADDR}/${TRAMPLOADADDR}/ -e s/" + SIZEOF_HEADERS"// \
71216498Sjchandra		 ${LDSCRIPT_NAME} > ${LDSCRIPT_NAME}.tramp.noheader
72216474Sjchandra	${CC} -O -nostdlib -I. -I$S ${TRAMP_EXTRA_FLAGS} ${TRAMP_LDFLAGS} -Xlinker \
73224105Sjchandra		-T -Xlinker ${LDSCRIPT_NAME}.tramp.noheader \
74224105Sjchandra		-DKERNNAME="\"${KERNEL_KO}.tmp\"" -DELFSIZE=${TRAMP_ELFSIZE} \
75224105Sjchandra		$S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S \
76224105Sjchandra		-o ${KERNEL_KO}.tramp.elf
77224105Sjchandra	${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.elf \
78224105Sjchandra		${KERNEL_KO}.tramp.bin
79201984Simp
80178170Simp%BEFORE_DEPEND
81178170Simp
82178170Simp%OBJS
83178170Simp
84178170Simp%FILES.c
85178170Simp
86178170Simp%FILES.s
87178170Simp
88178170Simp%FILES.m
89178170Simp
90178170Simp%CLEAN
91178170Simp
92201984SimpCLEAN+=	${LDSCRIPT_NAME} ${LDSCRIPT_NAME}.tramp.noheader \
93224105Sjchandra	${KERNEL_KO}.tramp.elf ${KERNEL_KO}.tramp.bin
94201984Simp
95201984Simp${LDSCRIPT_NAME}: $S/conf/${LDSCRIPT_NAME}
96217220Sjchandra	sed s/KERNLOADADDR/${KERNLOADADDR}/g $S/conf/${LDSCRIPT_NAME} \
97201984Simp		> ${LDSCRIPT_NAME}
98178170Simp%RULES
99178170Simp
100178170Simp.include "$S/conf/kern.post.mk"
101