xref: /freebsd/sys/modules/vmm/Makefile (revision c76c2a19ae3763d17aa6a60a5831ed24cbc16e83)
1483d953aSJohn Baldwin.include <kmod.opts.mk>
2483d953aSJohn Baldwin
3366f6083SPeter GrehanKMOD=	vmm
4366f6083SPeter Grehan
57cd91315SMark Johnston.if ${MACHINE_CPUARCH} == "amd64"
67cd91315SMark Johnston.endif
77cd91315SMark Johnston
87cd91315SMark JohnstonSRCS+=	acpi_if.h bus_if.h device_if.h pci_if.h pcib_if.h vnode_if.h
947e07394SAndrew Turner
1047e07394SAndrew TurnerCFLAGS+= -DVMM_KEEP_STATS
1147e07394SAndrew TurnerCFLAGS+= -I${SRCTOP}/sys/${MACHINE}/vmm
1247e07394SAndrew Turner
1347e07394SAndrew Turner# generic vmm support
1493e81baaSMark Johnston.PATH: ${SRCTOP}/sys/dev/vmm ${SRCTOP}/sys/${MACHINE}/vmm
1593e81baaSMark Johnston
1647e07394SAndrew TurnerSRCS+=	vmm.c			\
1747e07394SAndrew Turner	vmm_dev.c		\
18b9ef152bSMark Johnston	vmm_dev_machdep.c	\
1947e07394SAndrew Turner	vmm_instruction_emul.c	\
20*c76c2a19SMark Johnston	vmm_mem.c		\
2147e07394SAndrew Turner	vmm_stat.c
2247e07394SAndrew Turner
2347e07394SAndrew Turner.if ${MACHINE_CPUARCH} == "aarch64"
240a897e67SMark JohnstonCFLAGS+= -I${SRCTOP}/sys/${MACHINE}/vmm/io
2547e07394SAndrew TurnerDPSRCS+=	assym.inc
2647e07394SAndrew Turner
2747e07394SAndrew Turner# TODO: Add the new EL2 code
2847e07394SAndrew TurnerSRCS+=	vmm_arm64.c \
2947e07394SAndrew Turner	vmm_reset.c \
3047e07394SAndrew Turner	vmm_call.S \
3155aa3148SAndrew Turner	vmm_handlers.c \
3247e07394SAndrew Turner	vmm_mmu.c \
33bbe97db3SAndrew Turner	vmm_vhe_exception.S \
34bbe97db3SAndrew Turner	vmm_vhe.c \
3547e07394SAndrew Turner	vmm_hyp_el2.S
3647e07394SAndrew Turner
3747e07394SAndrew Turner.PATH: ${SRCTOP}/sys/${MACHINE}/vmm/io
3847e07394SAndrew TurnerSRCS+=	vgic.c \
3947e07394SAndrew Turner	vgic_if.h \
4047e07394SAndrew Turner	vgic_if.c \
4147e07394SAndrew Turner	vgic_v3.c \
4247e07394SAndrew Turner	vtimer.c
4347e07394SAndrew Turner
443d61bcf1SAndrew TurnerCLEANFILES+=	vmm_nvhe_exception.o vmm_nvhe.o
453d61bcf1SAndrew Turner
4647e07394SAndrew TurnerCLEANFILES+=	vmm_hyp_blob.elf.full
4747e07394SAndrew TurnerCLEANFILES+=	vmm_hyp_blob.elf vmm_hyp_blob.bin
4847e07394SAndrew Turner
49c6170b00SAndrew Turnervmm_nvhe_exception.o: vmm_nvhe_exception.S vmm_hyp_exception.S
5047e07394SAndrew Turner	${CC} -c -x assembler-with-cpp -DLOCORE \
5112a6257aSAndrew Turner	    ${NOSAN_CFLAGS:N-mbranch-protection*} ${.IMPSRC} -o ${.TARGET} -fpie
5247e07394SAndrew Turner
53c6170b00SAndrew Turnervmm_nvhe.o: vmm_nvhe.c vmm_hyp.c
5412a6257aSAndrew Turner	${CC} -c ${NOSAN_CFLAGS:N-mbranch-protection*} ${.IMPSRC} \
5512a6257aSAndrew Turner	    -o ${.TARGET} -fpie
5647e07394SAndrew Turner
573d61bcf1SAndrew Turnervmm_hyp_blob.elf.full:	vmm_nvhe_exception.o vmm_nvhe.o
58f21a6a6aSWarner Losh	${LD} -m ${LD_EMULATION} -Bdynamic -L ${SYSDIR}/conf -T ${SYSDIR}/conf/ldscript.arm64 \
59c2e0d56fSAndrew Turner	    ${_LDFLAGS:N-zbti-report*} --no-warn-mismatch --warn-common --export-dynamic \
6047e07394SAndrew Turner	    --dynamic-linker /red/herring -X -o ${.TARGET} ${.ALLSRC} \
6152f3d650SMark Johnston	    --defsym=_start='0x0' --defsym=text_start='0x0'
6247e07394SAndrew Turner
6347e07394SAndrew Turnervmm_hyp_blob.elf:	vmm_hyp_blob.elf.full
6447e07394SAndrew Turner	${OBJCOPY} --strip-debug ${.ALLSRC} ${.TARGET}
6547e07394SAndrew Turner
6647e07394SAndrew Turnervmm_hyp_blob.bin:	vmm_hyp_blob.elf
6747e07394SAndrew Turner	${OBJCOPY} --output-target=binary ${.ALLSRC} ${.TARGET}
6847e07394SAndrew Turner
6947e07394SAndrew Turnervmm_hyp_el2.o:	vmm_hyp_blob.bin
7047e07394SAndrew Turner
7147e07394SAndrew Turner.elif ${MACHINE_CPUARCH} == "amd64"
720a897e67SMark JohnstonCFLAGS+= -I${SRCTOP}/sys/${MACHINE}/vmm/io
73488adf43SBryan DreweryDPSRCS+=	vmx_assym.h svm_assym.h
74ccca101fSBryan DreweryDPSRCS+=	vmx_genassym.c svm_genassym.c offset.inc
75366f6083SPeter Grehan
76193d9e76SEnji CooperCFLAGS+= -I${SRCTOP}/sys/amd64/vmm/intel
77193d9e76SEnji CooperCFLAGS+= -I${SRCTOP}/sys/amd64/vmm/amd
78366f6083SPeter Grehan
790a897e67SMark JohnstonSRCS+=	opt_acpi.h		\
800a897e67SMark Johnston	opt_bhyve_snapshot.h	\
810a897e67SMark Johnston	opt_ddb.h
820a897e67SMark Johnston
8347e07394SAndrew TurnerSRCS+=	vmm_host.c	\
84762fd208STycho Nightingale	vmm_ioport.c	\
85366f6083SPeter Grehan	vmm_lapic.c	\
86*c76c2a19SMark Johnston	vmm_mem_machdep.c \
87366f6083SPeter Grehan	vmm_util.c	\
8818a2b08eSNeel Natu	x86.c
89366f6083SPeter Grehan
9047e07394SAndrew Turner.PATH: ${SRCTOP}/sys/${MACHINE}/vmm/io
91366f6083SPeter GrehanSRCS+=	iommu.c		\
92366f6083SPeter Grehan	ppt.c           \
93762fd208STycho Nightingale	vatpic.c	\
94e883c9bbSTycho Nightingale	vatpit.c	\
9508e3ff32SNeel Natu	vhpet.c		\
96565bbb86SNeel Natu	vioapic.c	\
97160ef77aSNeel Natu	vlapic.c	\
980dafa5cdSNeel Natu	vpmtmr.c	\
990dafa5cdSNeel Natu	vrtc.c
100366f6083SPeter Grehan
101366f6083SPeter Grehan# intel-specific files
102193d9e76SEnji Cooper.PATH: ${SRCTOP}/sys/amd64/vmm/intel
103366f6083SPeter GrehanSRCS+=	ept.c		\
104366f6083SPeter Grehan	vmcs.c		\
105366f6083SPeter Grehan	vmx_msr.c	\
106b82e2e94SWarner Losh	vmx_support.S	\
107366f6083SPeter Grehan	vmx.c		\
108366f6083SPeter Grehan	vtd.c
109366f6083SPeter Grehan
110366f6083SPeter Grehan# amd-specific files
111193d9e76SEnji Cooper.PATH: ${SRCTOP}/sys/amd64/vmm/amd
112df5e6de3SPeter GrehanSRCS+=	vmcb.c		\
113f95acbd8SMark Johnston	amdviiommu.c	\
11474ada297SKa Ho Ng	ivhd_if.c	\
11574ada297SKa Ho Ng	ivhd_if.h	\
116df5e6de3SPeter Grehan	svm.c		\
117e1a172e1SNeel Natu	svm_support.S	\
118df5e6de3SPeter Grehan	npt.c		\
11907ff474aSAnish Gupta	ivrs_drv.c	\
12007ff474aSAnish Gupta	amdvi_hw.c	\
1218f02c5e4SNeel Natu	svm_msr.c
122366f6083SPeter Grehan
123c3dd45c4SJohn BaldwinSRCS.BHYVE_SNAPSHOT=	vmm_snapshot.c
124483d953aSJohn Baldwin
12547e07394SAndrew TurnerCLEANFILES+=	vmx_assym.h vmx_genassym.o svm_assym.h svm_genassym.o
126366f6083SPeter Grehan
127488adf43SBryan DreweryOBJS_DEPEND_GUESS.vmx_support.o+= vmx_assym.h
128488adf43SBryan DreweryOBJS_DEPEND_GUESS.svm_support.o+= svm_assym.h
129488adf43SBryan Drewery
130b82e2e94SWarner Loshvmx_assym.h:    vmx_genassym.o
131528013d5SWarner Losh	sh ${SYSDIR}/kern/genassym.sh vmx_genassym.o > ${.TARGET}
132366f6083SPeter Grehan
133e1a172e1SNeel Natusvm_assym.h:    svm_genassym.o
134528013d5SWarner Losh	sh ${SYSDIR}/kern/genassym.sh svm_genassym.o > ${.TARGET}
135df5e6de3SPeter Grehan
136b82e2e94SWarner Loshvmx_support.o:
137366f6083SPeter Grehan	${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
138366f6083SPeter Grehan	    ${.IMPSRC} -o ${.TARGET}
139366f6083SPeter Grehan
140e1a172e1SNeel Natusvm_support.o:
141df5e6de3SPeter Grehan	${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
142df5e6de3SPeter Grehan	    ${.IMPSRC} -o ${.TARGET}
143df5e6de3SPeter Grehan
14447e07394SAndrew Turnerhyp_genassym.o: offset.inc
14512a6257aSAndrew Turner	${CC} -c ${NOSAN_CFLAGS:N-flto:N-fno-common} -fcommon ${.IMPSRC}
14647e07394SAndrew Turner
147ccca101fSBryan Dreweryvmx_genassym.o: offset.inc
14812a6257aSAndrew Turner	${CC} -c ${NOSAN_CFLAGS:N-flto*:N-fno-common} -fcommon ${.IMPSRC}
149366f6083SPeter Grehan
150ccca101fSBryan Drewerysvm_genassym.o: offset.inc
15112a6257aSAndrew Turner	${CC} -c ${NOSAN_CFLAGS:N-flto*:N-fno-common} -fcommon ${.IMPSRC}
152e1a172e1SNeel Natu
1530a897e67SMark Johnston.elif ${MACHINE_CPUARCH} == "riscv"
1540a897e67SMark Johnston
1550a897e67SMark JohnstonSRCS+=	vmm_aplic.c	\
156fbacadf1SMark Johnston	vmm_fence.c	\
1570a897e67SMark Johnston	vmm_riscv.c	\
1580a897e67SMark Johnston	vmm_sbi.c	\
1599be0058eSRuslan Bukin	vmm_switch.S	\
1609be0058eSRuslan Bukin	vmm_vtimer.c
1610a897e67SMark Johnston
1620a897e67SMark Johnston.endif
1630a897e67SMark Johnston
164366f6083SPeter Grehan.include <bsd.kmod.mk>
165