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