xref: /freebsd/sys/modules/vmm/Makefile (revision 35164034e390f56f83efe5bf073d36812b19df23)
1.include <kmod.opts.mk>
2
3KMOD=	vmm
4
5.if ${MACHINE_CPUARCH} == "amd64"
6.endif
7
8SRCS+=	acpi_if.h bus_if.h device_if.h pci_if.h pcib_if.h vnode_if.h
9
10CFLAGS+= -DVMM_KEEP_STATS
11CFLAGS+= -I${SRCTOP}/sys/${MACHINE}/vmm
12
13# generic vmm support
14.PATH: ${SRCTOP}/sys/dev/vmm ${SRCTOP}/sys/${MACHINE}/vmm
15
16SRCS+=	vmm.c			\
17	vmm_dev.c		\
18	vmm_dev_machdep.c	\
19	vmm_instruction_emul.c	\
20	vmm_mem.c		\
21	vmm_stat.c		\
22	vmm_vm.c
23
24.if ${MACHINE_CPUARCH} == "aarch64"
25CFLAGS+= -I${SRCTOP}/sys/${MACHINE}/vmm/io
26DPSRCS+=	assym.inc hyp_genassym.c hyp_assym.h
27
28# TODO: Add the new EL2 code
29SRCS+=	vmm_arm64.c \
30	vmm_reset.c \
31	vmm_call.S \
32	vmm_handlers.c \
33	vmm_mmu.c \
34	vmm_vhe_exception.S \
35	vmm_vhe.c \
36	vmm_hyp_el2.S
37
38.PATH: ${SRCTOP}/sys/${MACHINE}/vmm/io
39SRCS+=	vgic.c \
40	vgic_if.h \
41	vgic_if.c \
42	vgic_v3.c \
43	vtimer.c
44
45CLEANFILES+=	vmm_nvhe_exception.o vmm_nvhe.o
46
47CLEANFILES+=	vmm_hyp_blob.elf.full
48CLEANFILES+=	vmm_hyp_blob.elf vmm_hyp_blob.bin
49
50hyp_assym.h:    hyp_genassym.o
51	sh ${SYSDIR}/kern/genassym.sh hyp_genassym.o > ${.TARGET}
52
53hyp_genassym.o: offset.inc
54	${CC} -c ${NOSAN_CFLAGS:N-flto*:N-fno-common} -fcommon ${.IMPSRC}
55
56vmm_nvhe_exception.o: vmm_nvhe_exception.S vmm_hyp_exception.S
57	${CC} -c -x assembler-with-cpp -DLOCORE \
58	    ${NOSAN_CFLAGS:N-mbranch-protection*} ${.IMPSRC} -o ${.TARGET} -fpie
59
60vmm_nvhe.o: vmm_nvhe.c vmm_hyp.c
61	${CC} -c ${NOSAN_CFLAGS:N-mbranch-protection*:N-fstack-protector*} ${.IMPSRC} \
62	    -o ${.TARGET} -fpie
63
64vmm_hyp_blob.elf.full:	vmm_nvhe_exception.o vmm_nvhe.o
65	${LD} -m ${LD_EMULATION} -Bdynamic -L ${SYSDIR}/conf -T ${SYSDIR}/conf/ldscript.arm64 \
66	    ${_LDFLAGS:N-zbti-report*} --no-warn-mismatch --warn-common --export-dynamic \
67	    --dynamic-linker /red/herring -X -o ${.TARGET} ${.ALLSRC} \
68	    --defsym=_start='0x0' --defsym=text_start='0x0'
69
70vmm_hyp_blob.elf:	vmm_hyp_blob.elf.full
71	${OBJCOPY} --strip-debug ${.ALLSRC} ${.TARGET}
72
73vmm_hyp_blob.bin:	vmm_hyp_blob.elf
74	${OBJCOPY} --output-target=binary ${.ALLSRC} ${.TARGET}
75
76vmm_hyp_el2.o:	vmm_hyp_blob.bin
77
78.elif ${MACHINE_CPUARCH} == "amd64"
79CFLAGS+= -I${SRCTOP}/sys/${MACHINE}/vmm/io
80DPSRCS+=	vmx_assym.h svm_assym.h
81DPSRCS+=	vmx_genassym.c svm_genassym.c offset.inc
82
83CFLAGS+= -I${SRCTOP}/sys/amd64/vmm/intel
84CFLAGS+= -I${SRCTOP}/sys/amd64/vmm/amd
85
86SRCS+=	opt_acpi.h		\
87	opt_bhyve_snapshot.h	\
88	opt_ddb.h
89
90SRCS+=	vmm_host.c	\
91	vmm_ioport.c	\
92	vmm_lapic.c	\
93	vmm_mem_machdep.c \
94	vmm_util.c	\
95	x86.c
96
97.PATH: ${SRCTOP}/sys/${MACHINE}/vmm/io
98SRCS+=	iommu.c		\
99	ppt.c           \
100	vatpic.c	\
101	vatpit.c	\
102	vhpet.c		\
103	vioapic.c	\
104	vlapic.c	\
105	vpmtmr.c	\
106	vrtc.c
107
108# intel-specific files
109.PATH: ${SRCTOP}/sys/amd64/vmm/intel
110SRCS+=	ept.c		\
111	vmcs.c		\
112	vmx_msr.c	\
113	vmx_support.S	\
114	vmx.c		\
115	vtd.c
116
117# amd-specific files
118.PATH: ${SRCTOP}/sys/amd64/vmm/amd
119SRCS+=	vmcb.c		\
120	amdviiommu.c	\
121	ivhd_if.c	\
122	ivhd_if.h	\
123	svm.c		\
124	svm_support.S	\
125	npt.c		\
126	ivrs_drv.c	\
127	amdvi_hw.c	\
128	svm_msr.c
129
130SRCS.BHYVE_SNAPSHOT=	vmm_snapshot.c
131
132CLEANFILES+=	vmx_assym.h vmx_genassym.o svm_assym.h svm_genassym.o
133
134OBJS_DEPEND_GUESS.vmx_support.o+= vmx_assym.h
135OBJS_DEPEND_GUESS.svm_support.o+= svm_assym.h
136
137vmx_assym.h:    vmx_genassym.o
138	sh ${SYSDIR}/kern/genassym.sh vmx_genassym.o > ${.TARGET}
139
140svm_assym.h:    svm_genassym.o
141	sh ${SYSDIR}/kern/genassym.sh svm_genassym.o > ${.TARGET}
142
143vmx_support.o:
144	${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
145	    ${.IMPSRC} -o ${.TARGET}
146
147svm_support.o:
148	${CC} -c -x assembler-with-cpp -DLOCORE ${CFLAGS} \
149	    ${.IMPSRC} -o ${.TARGET}
150
151vmx_genassym.o: offset.inc
152	${CC} -c ${NOSAN_CFLAGS:N-flto*:N-fno-common} -fcommon ${.IMPSRC}
153
154svm_genassym.o: offset.inc
155	${CC} -c ${NOSAN_CFLAGS:N-flto*:N-fno-common} -fcommon ${.IMPSRC}
156
157.elif ${MACHINE_CPUARCH} == "riscv"
158
159SRCS+=	vmm_aplic.c	\
160	vmm_fence.c	\
161	vmm_riscv.c	\
162	vmm_sbi.c	\
163	vmm_switch.S	\
164	vmm_vtimer.c
165
166.endif
167
168.include <bsd.kmod.mk>
169