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