xref: /freebsd/sys/modules/vmm/Makefile (revision 47e073941f4e7ca6e9bde3fa65abbfcfed6bfa2b)
1366f6083SPeter Grehan
2483d953aSJohn Baldwin.include <kmod.opts.mk>
3483d953aSJohn Baldwin
4366f6083SPeter GrehanKMOD=	vmm
5366f6083SPeter Grehan
6*47e07394SAndrew TurnerSRCS=	opt_acpi.h opt_ddb.h device_if.h bus_if.h pci_if.h pcib_if.h acpi_if.h
7*47e07394SAndrew Turner
8*47e07394SAndrew TurnerCFLAGS+= -DVMM_KEEP_STATS
9*47e07394SAndrew TurnerCFLAGS+= -I${SRCTOP}/sys/${MACHINE}/vmm
10*47e07394SAndrew TurnerCFLAGS+= -I${SRCTOP}/sys/${MACHINE}/vmm/io
11*47e07394SAndrew Turner
12*47e07394SAndrew Turner# generic vmm support
13*47e07394SAndrew Turner.PATH: ${SRCTOP}/sys/${MACHINE}/vmm
14*47e07394SAndrew TurnerSRCS+=	vmm.c		\
15*47e07394SAndrew Turner	vmm_dev.c	\
16*47e07394SAndrew Turner	vmm_instruction_emul.c	\
17*47e07394SAndrew Turner	vmm_stat.c
18*47e07394SAndrew Turner
19*47e07394SAndrew Turner.if ${MACHINE_CPUARCH} == "aarch64"
20*47e07394SAndrew TurnerDPSRCS+=	assym.inc
21*47e07394SAndrew Turner
22*47e07394SAndrew Turner# TODO: Add the new EL2 code
23*47e07394SAndrew TurnerSRCS+=	vmm_arm64.c \
24*47e07394SAndrew Turner	vmm_reset.c \
25*47e07394SAndrew Turner	vmm_call.S \
26*47e07394SAndrew Turner	vmm_mmu.c \
27*47e07394SAndrew Turner	vmm_hyp_el2.S
28*47e07394SAndrew Turner
29*47e07394SAndrew Turner.PATH: ${SRCTOP}/sys/${MACHINE}/vmm/io
30*47e07394SAndrew TurnerSRCS+=	vgic.c \
31*47e07394SAndrew Turner	vgic_if.h \
32*47e07394SAndrew Turner	vgic_if.c \
33*47e07394SAndrew Turner	vgic_v3.c \
34*47e07394SAndrew Turner	vtimer.c
35*47e07394SAndrew Turner
36*47e07394SAndrew TurnerSRCS+=	vmm_hyp_exception.S vmm_hyp.c
37*47e07394SAndrew Turner
38*47e07394SAndrew TurnerCLEANFILES+=	vmm_hyp_blob.elf.full
39*47e07394SAndrew TurnerCLEANFILES+=	vmm_hyp_blob.elf vmm_hyp_blob.bin
40*47e07394SAndrew Turner
41*47e07394SAndrew Turnervmm_hyp_exception.o: vmm_hyp_exception.S
42*47e07394SAndrew Turner	${CC} -c -x assembler-with-cpp -DLOCORE \
43*47e07394SAndrew Turner	    ${CFLAGS:N-fsanitize*:N-mbranch-protection*} \
44*47e07394SAndrew Turner	    ${.IMPSRC} -o ${.TARGET} -fpie
45*47e07394SAndrew Turner
46*47e07394SAndrew Turnervmm_hyp.o: vmm_hyp.c
47*47e07394SAndrew Turner	${CC} -c ${CFLAGS:N-fsanitize*:N-mbranch-protection*} \
48*47e07394SAndrew Turner	    ${.IMPSRC} -o ${.TARGET} -fpie
49*47e07394SAndrew Turner
50*47e07394SAndrew Turnervmm_hyp_blob.elf.full:	vmm_hyp_exception.o vmm_hyp.o
51*47e07394SAndrew Turner	${LD} -m ${LD_EMULATION} -Bdynamic -T ${SYSDIR}/conf/ldscript.arm64 \
52*47e07394SAndrew Turner	${_LDFLAGS} --no-warn-mismatch --warn-common --export-dynamic \
53*47e07394SAndrew Turner	--dynamic-linker /red/herring -X -o ${.TARGET} ${.ALLSRC} \
54*47e07394SAndrew Turner	--defsym=text_start='0x0'
55*47e07394SAndrew Turner
56*47e07394SAndrew Turnervmm_hyp_blob.elf:	vmm_hyp_blob.elf.full
57*47e07394SAndrew Turner	${OBJCOPY} --strip-debug ${.ALLSRC} ${.TARGET}
58*47e07394SAndrew Turner
59*47e07394SAndrew Turnervmm_hyp_blob.bin:	vmm_hyp_blob.elf
60*47e07394SAndrew Turner	${OBJCOPY} --output-target=binary ${.ALLSRC} ${.TARGET}
61*47e07394SAndrew Turner
62*47e07394SAndrew Turnervmm_hyp_el2.o:	vmm_hyp_blob.bin
63*47e07394SAndrew Turner
64*47e07394SAndrew Turner.elif ${MACHINE_CPUARCH} == "amd64"
65488adf43SBryan DreweryDPSRCS+=	vmx_assym.h svm_assym.h
66ccca101fSBryan DreweryDPSRCS+=	vmx_genassym.c svm_genassym.c offset.inc
67366f6083SPeter Grehan
68193d9e76SEnji CooperCFLAGS+= -I${SRCTOP}/sys/amd64/vmm/intel
69193d9e76SEnji CooperCFLAGS+= -I${SRCTOP}/sys/amd64/vmm/amd
70366f6083SPeter Grehan
71*47e07394SAndrew TurnerSRCS+=	vmm_host.c	\
72762fd208STycho Nightingale	vmm_ioport.c	\
73366f6083SPeter Grehan	vmm_lapic.c	\
74366f6083SPeter Grehan	vmm_mem.c	\
75366f6083SPeter Grehan	vmm_util.c	\
7618a2b08eSNeel Natu	x86.c
77366f6083SPeter Grehan
78*47e07394SAndrew Turner.PATH: ${SRCTOP}/sys/${MACHINE}/vmm/io
79366f6083SPeter GrehanSRCS+=	iommu.c		\
80366f6083SPeter Grehan	ppt.c           \
81762fd208STycho Nightingale	vatpic.c	\
82e883c9bbSTycho Nightingale	vatpit.c	\
8308e3ff32SNeel Natu	vhpet.c		\
84565bbb86SNeel Natu	vioapic.c	\
85160ef77aSNeel Natu	vlapic.c	\
860dafa5cdSNeel Natu	vpmtmr.c	\
870dafa5cdSNeel Natu	vrtc.c
88366f6083SPeter Grehan
89366f6083SPeter Grehan# intel-specific files
90193d9e76SEnji Cooper.PATH: ${SRCTOP}/sys/amd64/vmm/intel
91366f6083SPeter GrehanSRCS+=	ept.c		\
92366f6083SPeter Grehan	vmcs.c		\
93366f6083SPeter Grehan	vmx_msr.c	\
94b82e2e94SWarner Losh	vmx_support.S	\
95366f6083SPeter Grehan	vmx.c		\
96366f6083SPeter Grehan	vtd.c
97366f6083SPeter Grehan
98366f6083SPeter Grehan# amd-specific files
99193d9e76SEnji Cooper.PATH: ${SRCTOP}/sys/amd64/vmm/amd
100df5e6de3SPeter GrehanSRCS+=	vmcb.c		\
10174ada297SKa Ho Ng	amdiommu.c	\
10274ada297SKa Ho Ng	ivhd_if.c	\
10374ada297SKa Ho Ng	ivhd_if.h	\
104df5e6de3SPeter Grehan	svm.c		\
105e1a172e1SNeel Natu	svm_support.S	\
106df5e6de3SPeter Grehan	npt.c		\
10707ff474aSAnish Gupta	ivrs_drv.c	\
10807ff474aSAnish Gupta	amdvi_hw.c	\
1098f02c5e4SNeel Natu	svm_msr.c
110366f6083SPeter Grehan
111c3dd45c4SJohn BaldwinSRCS.BHYVE_SNAPSHOT=	vmm_snapshot.c
112483d953aSJohn Baldwin
113*47e07394SAndrew TurnerCLEANFILES+=	vmx_assym.h vmx_genassym.o svm_assym.h svm_genassym.o
114366f6083SPeter Grehan
115488adf43SBryan DreweryOBJS_DEPEND_GUESS.vmx_support.o+= vmx_assym.h
116488adf43SBryan DreweryOBJS_DEPEND_GUESS.svm_support.o+= svm_assym.h
117*47e07394SAndrew Turner.endif
118488adf43SBryan Drewery
119b82e2e94SWarner Loshvmx_assym.h:    vmx_genassym.o
120528013d5SWarner Losh	sh ${SYSDIR}/kern/genassym.sh vmx_genassym.o > ${.TARGET}
121366f6083SPeter Grehan
122e1a172e1SNeel Natusvm_assym.h:    svm_genassym.o
123528013d5SWarner Losh	sh ${SYSDIR}/kern/genassym.sh svm_genassym.o > ${.TARGET}
124df5e6de3SPeter Grehan
125b82e2e94SWarner Loshvmx_support.o:
126366f6083SPeter Grehan	${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
127366f6083SPeter Grehan	    ${.IMPSRC} -o ${.TARGET}
128366f6083SPeter Grehan
129e1a172e1SNeel Natusvm_support.o:
130df5e6de3SPeter Grehan	${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
131df5e6de3SPeter Grehan	    ${.IMPSRC} -o ${.TARGET}
132df5e6de3SPeter Grehan
133*47e07394SAndrew Turnerhyp_genassym.o: offset.inc
134*47e07394SAndrew Turner	${CC} -c ${CFLAGS:N-flto:N-fno-common} -fcommon ${.IMPSRC}
135*47e07394SAndrew Turner
136ccca101fSBryan Dreweryvmx_genassym.o: offset.inc
1378e1a7e29SMark Johnston	${CC} -c ${CFLAGS:N-flto*:N-fno-common:N-fsanitize*:N-fno-sanitize*} \
1388e1a7e29SMark Johnston	    -fcommon ${.IMPSRC}
139366f6083SPeter Grehan
140ccca101fSBryan Drewerysvm_genassym.o: offset.inc
1418e1a7e29SMark Johnston	${CC} -c ${CFLAGS:N-flto*:N-fno-common:N-fsanitize*:N-fno-sanitize*} \
1428e1a7e29SMark Johnston	    -fcommon ${.IMPSRC}
143e1a172e1SNeel Natu
144366f6083SPeter Grehan.include <bsd.kmod.mk>
145