diff options
| author | Mary <me@thog.eu> | 2022-01-29 22:18:03 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-29 22:18:03 +0100 |
| commit | 20ce37dee6158ede18ad699338ecea083728423b (patch) | |
| tree | 368333cced7160a272e1f29f92d99b9b48ae3199 /Ryujinx.HLE/HOS/Kernel/Memory | |
| parent | c52158b73361bd25364c23c2b39780d2e626c858 (diff) | |
kernel: A bit of refactoring and fix GetThreadContext3 correctness (#3042)
* Start refactoring kernel a bit and import some changes from kernel decoupling PR
* kernel: Put output always at the start in Syscall functions
* kernel: Rewrite GetThreadContext3 to use a structure and to be accurate
* kernel: make KernelTransfer use generic types and simplify
* Fix some warning and do not use getters on MemoryInfo
* Address gdkchan's comment
* GetThreadContext3: use correct pause flag
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Memory')
| -rw-r--r-- | Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs | 6 | ||||
| -rw-r--r-- | Ryujinx.HLE/HOS/Kernel/Memory/MemoryPermission.cs | 5 | ||||
| -rw-r--r-- | Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs | 1 |
3 files changed, 7 insertions, 5 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs index ff87ecb7..fb3d669d 100644 --- a/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs +++ b/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs @@ -2682,7 +2682,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory return Context.MemoryManager.MemoryRegions[(int)_memRegion]; } - public long GetMmUsedPages() + public ulong GetMmUsedPages() { lock (_blockManager) { @@ -2690,9 +2690,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory } } - private long GetMmUsedSize() + private ulong GetMmUsedSize() { - return _blockManager.BlocksCount * KMemoryBlockSize; + return (ulong)(_blockManager.BlocksCount * KMemoryBlockSize); } public bool IsInvalidRegion(ulong address, ulong size) diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/MemoryPermission.cs b/Ryujinx.HLE/HOS/Kernel/Memory/MemoryPermission.cs index 12300e4f..563b817d 100644 --- a/Ryujinx.HLE/HOS/Kernel/Memory/MemoryPermission.cs +++ b/Ryujinx.HLE/HOS/Kernel/Memory/MemoryPermission.cs @@ -5,8 +5,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory [Flags] enum KMemoryPermission : uint { - None = 0, - Mask = uint.MaxValue, + None = 0, + UserMask = Read | Write | Execute, + Mask = uint.MaxValue, Read = 1 << 0, Write = 1 << 1, diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs b/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs index f7161a88..d3b61780 100644 --- a/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs +++ b/Ryujinx.HLE/HOS/Kernel/Memory/MemoryState.cs @@ -26,6 +26,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory KernelStack = 0x00002013, CodeReadOnly = 0x00402214, CodeWritable = 0x00402015, + UserMask = 0xff, Mask = 0xffffffff, PermissionChangeAllowed = 1 << 8, |
