xref: /netbsd/sys/arch/amd64/conf/Makefile.amd64 (revision 8e4cbbd3)
1*8e4cbbd3Sdsl#	$NetBSD: Makefile.amd64,v 1.44 2014/02/05 23:10:41 dsl Exp $
281918bf8Sfvdl
381918bf8Sfvdl# Makefile for NetBSD
481918bf8Sfvdl#
581918bf8Sfvdl# This makefile is constructed from a machine description:
681918bf8Sfvdl#	config machineid
781918bf8Sfvdl# Most changes should be made in the machine description
881918bf8Sfvdl#	/sys/arch/amd64/conf/``machineid''
981918bf8Sfvdl# after which you should do
1081918bf8Sfvdl#	config machineid
1181918bf8Sfvdl# Machine generic makefile changes should be made in
1281918bf8Sfvdl#	/sys/arch/amd64/conf/Makefile.amd64
1381918bf8Sfvdl# after which config should be rerun for all machines of that type.
1481918bf8Sfvdl#
1581918bf8Sfvdl# To specify debugging, add the config line: makeoptions DEBUG="-g"
1681918bf8Sfvdl# A better way is to specify -g only for a few files.
1781918bf8Sfvdl#
1881918bf8Sfvdl#	makeoptions DEBUGLIST="uvm* trap if_*"
1981918bf8Sfvdl
2081918bf8SfvdlMACHINE_ARCH=x86_64
2181918bf8SfvdlUSETOOLS?=	no
2281918bf8SfvdlNEED_OWN_INSTALL_TARGET?=no
2381918bf8Sfvdl.include <bsd.own.mk>
2481918bf8Sfvdl
2573950688StronUSE_SSP?=	yes
2673950688Stron
2781918bf8Sfvdl##
2881918bf8Sfvdl## (1) port identification
2981918bf8Sfvdl##
3081918bf8SfvdlAMD64=		$S/arch/amd64
31f6b4c20fSchristosGENASSYM_CONF=	${AMD64}/amd64/genassym.cf
3281918bf8Sfvdl
3381918bf8Sfvdl##
3481918bf8Sfvdl## (2) compile settings
3581918bf8Sfvdl##
36041046e7SfvdlDEFCOPTS=	-O2
3781918bf8SfvdlCPPFLAGS+=	-Damd64 -Dx86_64
3881918bf8SfvdlCFLAGS+=	-mcmodel=kernel
39*8e4cbbd3Sdsl# -mno-sse implies -mno-sse2 (etc), explicitly disable avx to be extra sure
40d74c3e3bSdslCFLAGS+=	-mno-red-zone -mno-mmx -mno-sse -mno-avx
41d74c3e3bSdsl# make absolutely sure we don't get x87 registers used as well
42*8e4cbbd3SdslCFLAGS+=	-msoft-float
43*8e4cbbd3Sdsl# For gcc we might need this, but other compilers barf
44*8e4cbbd3Sdsl# CFLAGS+=	-mno-fp-ret-in-387
4581918bf8Sfvdl
4681918bf8Sfvdl##
4781918bf8Sfvdl## (3) libkern and compat
4881918bf8Sfvdl##
493c479c5aSchristosOPT_MODULAR=	%MODULAR%
503c479c5aSchristos.if !empty(OPT_MODULAR)
5181918bf8SfvdlKERN_AS=	obj
523c479c5aSchristos.else
533c479c5aSchristosKERN_AS=	library
543c479c5aSchristos.endif
5581918bf8Sfvdl
5681918bf8Sfvdl##
5781918bf8Sfvdl## (4) local objects, compile rules, and dependencies
5881918bf8Sfvdl##
5909b51ec9SkardelMD_OBJS=	locore.o vector.o copy.o spl.o
6081918bf8SfvdlMD_CFILES=
6181918bf8SfvdlMD_SFILES=	${AMD64}/amd64/locore.S ${AMD64}/amd64/vector.S \
6209b51ec9Skardel		${AMD64}/amd64/copy.S ${AMD64}/amd64/spl.S
6381918bf8Sfvdl
6481918bf8Sfvdllocore.o: ${AMD64}/amd64/locore.S assym.h
6581918bf8Sfvdl	${NORMAL_S}
6681918bf8Sfvdl
6781918bf8Sfvdlvector.o: ${AMD64}/amd64/vector.S assym.h
6881918bf8Sfvdl	${NORMAL_S}
6981918bf8Sfvdl
7081918bf8Sfvdlcopy.o: ${AMD64}/amd64/copy.S assym.h
7181918bf8Sfvdl	${NORMAL_S}
7281918bf8Sfvdl
7381918bf8Sfvdlspl.o: ${AMD64}/amd64/spl.S assym.h
7481918bf8Sfvdl	${NORMAL_S}
7581918bf8Sfvdl
7681918bf8Sfvdl##
7781918bf8Sfvdl## (5) link settings
7881918bf8Sfvdl##
7981918bf8SfvdlTEXTADDR?=	0xffffffff80100000
80980b1066SskrllEXTRA_LINKFLAGS=	-z max-page-size=0x100000
8181918bf8SfvdlLINKFLAGS_NORMAL=	-X
8281918bf8SfvdlKERN_LDSCRIPT?= kern.ldscript
8381918bf8SfvdlLINKFORMAT=	-T ${AMD64}/conf/${KERN_LDSCRIPT}
8481918bf8Sfvdl
8581918bf8Sfvdl##
8681918bf8Sfvdl## (6) port specific target dependencies
8781918bf8Sfvdl##
8881918bf8Sfvdl
8981918bf8Sfvdl# depend on CPU configuration
9081918bf8Sfvdllocore.o machdep.o: Makefile
9181918bf8Sfvdl
9277a5d439Sjoergacpi_wakeup_low.o amd64func.o busfunc.o cpufunc.o cpu_in_cksum.o: assym.h
9377a5d439Sjoerglinux_support.o linux32_sigcode.o lock_stubs.o mptramp.o: assym.h
9477a5d439Sjoergnetbsd32_sigcode.o: assym.h
9581918bf8Sfvdl
9681918bf8Sfvdl##
9781918bf8Sfvdl## (7) misc settings
9881918bf8Sfvdl##
9981918bf8Sfvdl
10081918bf8Sfvdl##
10181918bf8Sfvdl## (8) config(8) generated machinery
10281918bf8Sfvdl##
10381918bf8Sfvdl%INCLUDES
10481918bf8Sfvdl
10581918bf8Sfvdl%OBJS
10681918bf8Sfvdl
10781918bf8Sfvdl%CFILES
10881918bf8Sfvdl
10981918bf8Sfvdl%SFILES
11081918bf8Sfvdl
11181918bf8Sfvdl%LOAD
11281918bf8Sfvdl
11381918bf8Sfvdl%RULES
11431f44cb2Salc
11581918bf8Sfvdl##
11681918bf8Sfvdl## (9) port independent kernel machinery
11781918bf8Sfvdl##
11881918bf8Sfvdl.include "$S/conf/Makefile.kern.inc"
119e33c2bb5Sthorpej
1201b91baa7Schristos## Include rules for ACPI wakecode
1211b91baa7Schristos.include "$S/arch/x86/acpi/Makefile.wakecode.inc"
1221b91baa7Schristos
123e33c2bb5Sthorpej##
124e33c2bb5Sthorpej## (10) Appending make options.
125e33c2bb5Sthorpej##
126e33c2bb5Sthorpej%MAKEOPTIONSAPPEND
127