xref: /netbsd/sys/arch/amd64/conf/Makefile.amd64 (revision c8c6265e)
1*c8c6265eSmaxv#	$NetBSD: Makefile.amd64,v 1.78 2019/09/07 18:56:01 maxv 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
239fa350d2SchristosNOSANITIZER=
249fa350d2Schristos.include <bsd.init.mk>
2581918bf8Sfvdl
2673950688StronUSE_SSP?=	yes
2773950688Stron
2881918bf8Sfvdl##
2981918bf8Sfvdl## (1) port identification
3081918bf8Sfvdl##
3181918bf8SfvdlAMD64=		$S/arch/amd64
32f6b4c20fSchristosGENASSYM_CONF=	${AMD64}/amd64/genassym.cf
3381918bf8Sfvdl
3481918bf8Sfvdl##
3581918bf8Sfvdl## (2) compile settings
3681918bf8Sfvdl##
37a4cdc791SjakllschDEFCOPTS=	-O2 -fno-omit-frame-pointer
3881918bf8SfvdlCPPFLAGS+=	-Damd64 -Dx86_64
3916f7d07eSmaxvCFLAGS+=	-mcmodel=kernel
408e4cbbd3Sdsl# -mno-sse implies -mno-sse2 (etc), explicitly disable avx to be extra sure
41d74c3e3bSdslCFLAGS+=	-mno-red-zone -mno-mmx -mno-sse -mno-avx
42d74c3e3bSdsl# make absolutely sure we don't get x87 registers used as well
438e4cbbd3SdslCFLAGS+=	-msoft-float
448e4cbbd3Sdsl# For gcc we might need this, but other compilers barf
458e4cbbd3Sdsl# CFLAGS+=	-mno-fp-ret-in-387
4681918bf8Sfvdl
47f16a35c1Smartin.if ${SPECTRE_V2_GCC_MITIGATION:U0} > 0 && ${HAVE_GCC:U0} > 0
4891fc8e9cSmrgCFLAGS+=      -mindirect-branch=thunk-inline
4991fc8e9cSmrgCFLAGS+=      -mindirect-branch-register
5091fc8e9cSmrg.endif
5191fc8e9cSmrg
52f8e4d06fSmaxv.if ${KASAN:U0} > 0 && ${HAVE_GCC:U0} > 0
531903813cSmaxvKASANFLAGS=	-fsanitize=kernel-address \
541903813cSmaxv		--param asan-globals=1 --param asan-stack=1 \
554921525dSmaxv		-fsanitize-address-use-after-scope \
561903813cSmaxv		-fasan-shadow-offset=0xDFFF900000000000
57dc20b626Skamil.for f in subr_asan.c subr_kcov.c subr_lwp_specificdata.c subr_specificdata.c
581903813cSmaxvKASANFLAGS.${f}=	# empty
591903813cSmaxv.endfor
601903813cSmaxvCFLAGS+=	${KASANFLAGS.${.IMPSRC:T}:U${KASANFLAGS}}
61f8e4d06fSmaxv.endif
62f8e4d06fSmaxv
6381918bf8Sfvdl##
6481918bf8Sfvdl## (3) libkern and compat
6581918bf8Sfvdl##
663c479c5aSchristosOPT_MODULAR=	%MODULAR%
6781918bf8Sfvdl
6881918bf8Sfvdl##
6981918bf8Sfvdl## (4) local objects, compile rules, and dependencies
7081918bf8Sfvdl##
7181918bf8Sfvdl
7281918bf8Sfvdl##
7381918bf8Sfvdl## (5) link settings
7481918bf8Sfvdl##
757276bb8bSmaxvTEXTADDR?=	0xffffffff80200000
7670dee003Smaxv.if defined(KASLR)
7727958a79SmaxvEXTRA_LINKFLAGS=	--split-by-file=0x100000 -r -d
7816deffebSmaxvKERNLDSCRIPT?= ${AMD64}/conf/kern.ldscript.kaslr
7970dee003Smaxv.else
80e5b5f123SmaxvEXTRA_LINKFLAGS=	-z max-page-size=0x200000
8116deffebSmaxvKERNLDSCRIPT?= ${AMD64}/conf/kern.ldscript
8270dee003Smaxv.endif
8381918bf8SfvdlLINKFLAGS_NORMAL=	-X
8481918bf8Sfvdl
8581918bf8Sfvdl##
8681918bf8Sfvdl## (6) port specific target dependencies
8781918bf8Sfvdl##
8881918bf8Sfvdl
8981918bf8Sfvdl# depend on CPU configuration
9081918bf8Sfvdllocore.o machdep.o: Makefile
9181918bf8Sfvdl
92*c8c6265eSmaxvacpi_wakeup_low.o busfunc.o cpufunc.o cpu_in_cksum.o: assym.h
93681da605Smaxvlinux_sigcode.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