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