diff options
Diffstat (limited to 'src/Ryujinx.Cpu/AppleHv/HvAddressSpace.cs')
-rw-r--r-- | src/Ryujinx.Cpu/AppleHv/HvAddressSpace.cs | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/Ryujinx.Cpu/AppleHv/HvAddressSpace.cs b/src/Ryujinx.Cpu/AppleHv/HvAddressSpace.cs index 78f4c464..4785a3f0 100644 --- a/src/Ryujinx.Cpu/AppleHv/HvAddressSpace.cs +++ b/src/Ryujinx.Cpu/AppleHv/HvAddressSpace.cs @@ -18,18 +18,16 @@ namespace Ryujinx.Cpu.AppleHv private const ulong AllocationGranule = 1UL << 14; private readonly ulong _asBase; - private readonly ulong _asSize; private readonly ulong _backingSize; private readonly HvAddressSpaceRange _userRange; private readonly HvAddressSpaceRange _kernelRange; - private MemoryBlock _kernelCodeBlock; + private readonly MemoryBlock _kernelCodeBlock; public HvAddressSpace(MemoryBlock backingMemory, ulong asSize) { (_asBase, var ipaAllocator) = HvVm.CreateAddressSpace(backingMemory); - _asSize = asSize; _backingSize = backingMemory.Size; _userRange = new HvAddressSpaceRange(ipaAllocator); @@ -58,20 +56,20 @@ namespace Ryujinx.Cpu.AppleHv _kernelCodeBlock.Write(KernelRegionEretOffset, 0xD69F03E0u); // ERET ulong kernelCodePa = ipaAllocator.Allocate(AllocationGranule); - HvApi.hv_vm_map((ulong)_kernelCodeBlock.Pointer, kernelCodePa, AllocationGranule, hv_memory_flags_t.HV_MEMORY_READ | hv_memory_flags_t.HV_MEMORY_EXEC).ThrowOnError(); + HvApi.hv_vm_map((ulong)_kernelCodeBlock.Pointer, kernelCodePa, AllocationGranule, HvMemoryFlags.Read | HvMemoryFlags.Exec).ThrowOnError(); _kernelRange.Map(KernelRegionCodeOffset, kernelCodePa, KernelRegionCodeSize, ApFlags.UserNoneKernelReadExecute); } public void InitializeMmu(ulong vcpu) { - HvApi.hv_vcpu_set_sys_reg(vcpu, hv_sys_reg_t.HV_SYS_REG_VBAR_EL1, KernelRegionBase + KernelRegionCodeOffset); + HvApi.hv_vcpu_set_sys_reg(vcpu, HvSysReg.VBAR_EL1, KernelRegionBase + KernelRegionCodeOffset); - HvApi.hv_vcpu_set_sys_reg(vcpu, hv_sys_reg_t.HV_SYS_REG_TTBR0_EL1, _userRange.GetIpaBase()); - HvApi.hv_vcpu_set_sys_reg(vcpu, hv_sys_reg_t.HV_SYS_REG_TTBR1_EL1, _kernelRange.GetIpaBase()); - HvApi.hv_vcpu_set_sys_reg(vcpu, hv_sys_reg_t.HV_SYS_REG_MAIR_EL1, 0xffUL); - HvApi.hv_vcpu_set_sys_reg(vcpu, hv_sys_reg_t.HV_SYS_REG_TCR_EL1, 0x00000011B5193519UL); - HvApi.hv_vcpu_set_sys_reg(vcpu, hv_sys_reg_t.HV_SYS_REG_SCTLR_EL1, 0x0000000034D5D925UL); + HvApi.hv_vcpu_set_sys_reg(vcpu, HvSysReg.TTBR0_EL1, _userRange.GetIpaBase()); + HvApi.hv_vcpu_set_sys_reg(vcpu, HvSysReg.TTBR1_EL1, _kernelRange.GetIpaBase()); + HvApi.hv_vcpu_set_sys_reg(vcpu, HvSysReg.MAIR_EL1, 0xffUL); + HvApi.hv_vcpu_set_sys_reg(vcpu, HvSysReg.TCR_EL1, 0x00000011B5193519UL); + HvApi.hv_vcpu_set_sys_reg(vcpu, HvSysReg.SCTLR_EL1, 0x0000000034D5D925UL); } public bool GetAndClearUserTlbInvalidationPending() @@ -115,7 +113,7 @@ namespace Ryujinx.Cpu.AppleHv MemoryPermission.ReadAndWrite => ApFlags.UserReadWriteKernelReadWrite, MemoryPermission.ReadAndExecute => ApFlags.UserReadExecuteKernelRead, MemoryPermission.ReadWriteExecute => ApFlags.UserReadWriteExecuteKernelReadWrite, - _ => throw new ArgumentException($"Permission \"{permission}\" is invalid.") + _ => throw new ArgumentException($"Permission \"{permission}\" is invalid."), }; } @@ -126,4 +124,4 @@ namespace Ryujinx.Cpu.AppleHv HvVm.DestroyAddressSpace(_asBase, _backingSize); } } -}
\ No newline at end of file +} |