1# Makefile.mips
2# $FreeBSD: stable/9/sys/conf/Makefile.mips 224105 2011-07-16 17:22:01Z jchandra $
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
20STD8X16FONT?=	iso
21
22.if !defined(S)
23.if exists(./@/.)
24S=	./@
25.else
26S=	../../..
27.endif
28.endif
29.include "$S/conf/kern.pre.mk"
30
31LDSCRIPT_NAME?=ldscript.$M
32SYSTEM_LD:= ${SYSTEM_LD:$S/conf/${LDSCRIPT_NAME}=${LDSCRIPT_NAME}}
33SYSTEM_DEP:= ${SYSTEM_DEP:$S/conf/${LDSCRIPT_NAME}=${LDSCRIPT_NAME}}
34
35KERNLOADADDR?=0x80001000
36# This obscure value is defined by CFE for WR160N
37# To be changed later
38TRAMPLOADADDR?=0x807963c0
39
40MKMODULESENV+=	MACHINE=${MACHINE} MACHINE_ARCH=${MACHINE_ARCH}
41
42# We default to the MIPS32 ISA, if none specified in the
43# kernel configuration file.
44ARCH_FLAGS?=-march=mips32
45EXTRA_FLAGS=-fno-pic -mno-abicalls -G0
46
47HACK_EXTRA_FLAGS=-shared
48
49# We add the -fno-pic flag to kernels because otherwise performance
50# is extremely poor, as well as -mno-abicalls to force no ABI usage.
51CFLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
52HACK_EXTRA_FLAGS+=${EXTRA_FLAGS} $(ARCH_FLAGS)
53TRAMP_ARCH_FLAGS?=$(ARCH_FLAGS)
54TRAMP_EXTRA_FLAGS=${EXTRA_FLAGS} ${TRAMP_ARCH_FLAGS}
55.if ${MACHINE_ARCH:Mmips64*} != ""
56TRAMP_ELFSIZE=64
57.else
58TRAMP_ELFSIZE=32
59.endif
60
61# XXX hardcoded kernel entry point
62ASM_CFLAGS+=${CFLAGS} -D_LOCORE -DLOCORE
63
64KERNEL_EXTRA=trampoline
65trampoline: ${KERNEL_KO}.tramp.bin
66${KERNEL_KO}.tramp.bin: ${KERNEL_KO} $S/$M/$M/elf_trampoline.c \
67	$S/$M/$M/inckern.S
68	${OBJCOPY} --strip-symbol '$$d' --strip-symbol '$$a' \
69		-g --strip-symbol '$$t' ${FULLKERNEL} ${KERNEL_KO}.tmp
70	sed -e s/${KERNLOADADDR}/${TRAMPLOADADDR}/ -e s/" + SIZEOF_HEADERS"// \
71		 ${LDSCRIPT_NAME} > ${LDSCRIPT_NAME}.tramp.noheader
72	${CC} -O -nostdlib -I. -I$S ${TRAMP_EXTRA_FLAGS} ${TRAMP_LDFLAGS} -Xlinker \
73		-T -Xlinker ${LDSCRIPT_NAME}.tramp.noheader \
74		-DKERNNAME="\"${KERNEL_KO}.tmp\"" -DELFSIZE=${TRAMP_ELFSIZE} \
75		$S/$M/$M/elf_trampoline.c $S/$M/$M/inckern.S \
76		-o ${KERNEL_KO}.tramp.elf
77	${OBJCOPY} -S -O binary ${KERNEL_KO}.tramp.elf \
78		${KERNEL_KO}.tramp.bin
79
80%BEFORE_DEPEND
81
82%OBJS
83
84%FILES.c
85
86%FILES.s
87
88%FILES.m
89
90%CLEAN
91
92CLEAN+=	${LDSCRIPT_NAME} ${LDSCRIPT_NAME}.tramp.noheader \
93	${KERNEL_KO}.tramp.elf ${KERNEL_KO}.tramp.bin
94
95${LDSCRIPT_NAME}: $S/conf/${LDSCRIPT_NAME}
96	sed s/KERNLOADADDR/${KERNLOADADDR}/g $S/conf/${LDSCRIPT_NAME} \
97		> ${LDSCRIPT_NAME}
98%RULES
99
100.include "$S/conf/kern.post.mk"
101