diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/kernel/process.h | 2 | ||||
| -rw-r--r-- | src/core/hle/kernel/svc.cpp | 12 | ||||
| -rw-r--r-- | src/core/hle/kernel/svc.h | 13 | ||||
| -rw-r--r-- | src/core/hle/kernel/vm_manager.cpp | 4 |
4 files changed, 29 insertions, 2 deletions
diff --git a/src/core/hle/kernel/process.h b/src/core/hle/kernel/process.h index 20b4e401c..add98472f 100644 --- a/src/core/hle/kernel/process.h +++ b/src/core/hle/kernel/process.h | |||
| @@ -131,6 +131,8 @@ public: | |||
| 131 | /// Bitmask of allowed CPUs that this process' threads can run on. TODO(Subv): Actually parse | 131 | /// Bitmask of allowed CPUs that this process' threads can run on. TODO(Subv): Actually parse |
| 132 | /// this value from the process header. | 132 | /// this value from the process header. |
| 133 | u32 allowed_processor_mask = THREADPROCESSORID_DEFAULT_MASK; | 133 | u32 allowed_processor_mask = THREADPROCESSORID_DEFAULT_MASK; |
| 134 | u32 allowed_thread_priority_mask = 0xFFFFFFFF; | ||
| 135 | u32 is_virtual_address_memory_enabled = 0; | ||
| 134 | /// Current status of the process | 136 | /// Current status of the process |
| 135 | ProcessStatus status; | 137 | ProcessStatus status; |
| 136 | 138 | ||
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp index 9c60576c1..2f1b79f32 100644 --- a/src/core/hle/kernel/svc.cpp +++ b/src/core/hle/kernel/svc.cpp | |||
| @@ -313,6 +313,15 @@ static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id) | |||
| 313 | case GetInfoType::AllowedCpuIdBitmask: | 313 | case GetInfoType::AllowedCpuIdBitmask: |
| 314 | *result = g_current_process->allowed_processor_mask; | 314 | *result = g_current_process->allowed_processor_mask; |
| 315 | break; | 315 | break; |
| 316 | case GetInfoType::AllowedThreadPrioBitmask: | ||
| 317 | *result = g_current_process->allowed_thread_priority_mask; | ||
| 318 | break; | ||
| 319 | case GetInfoType::MapRegionBaseAddr: | ||
| 320 | *result = vm_manager.GetAddressSpaceBaseAddr(); | ||
| 321 | break; | ||
| 322 | case GetInfoType::MapRegionSize: | ||
| 323 | *result = vm_manager.GetAddressSpaceSize(); | ||
| 324 | break; | ||
| 316 | case GetInfoType::TotalMemoryUsage: | 325 | case GetInfoType::TotalMemoryUsage: |
| 317 | *result = vm_manager.GetTotalMemoryUsage(); | 326 | *result = vm_manager.GetTotalMemoryUsage(); |
| 318 | break; | 327 | break; |
| @@ -334,6 +343,9 @@ static ResultCode GetInfo(u64* result, u64 info_id, u64 handle, u64 info_sub_id) | |||
| 334 | case GetInfoType::NewMapRegionSize: | 343 | case GetInfoType::NewMapRegionSize: |
| 335 | *result = vm_manager.GetNewMapRegionSize(); | 344 | *result = vm_manager.GetNewMapRegionSize(); |
| 336 | break; | 345 | break; |
| 346 | case GetInfoType::IsVirtualAddressMemoryEnabled: | ||
| 347 | *result = g_current_process->is_virtual_address_memory_enabled; | ||
| 348 | break; | ||
| 337 | default: | 349 | default: |
| 338 | UNIMPLEMENTED(); | 350 | UNIMPLEMENTED(); |
| 339 | } | 351 | } |
diff --git a/src/core/hle/kernel/svc.h b/src/core/hle/kernel/svc.h index 610cd1d7d..a56fd3602 100644 --- a/src/core/hle/kernel/svc.h +++ b/src/core/hle/kernel/svc.h | |||
| @@ -24,14 +24,27 @@ struct PageInfo { | |||
| 24 | enum class GetInfoType : u64 { | 24 | enum class GetInfoType : u64 { |
| 25 | // 1.0.0+ | 25 | // 1.0.0+ |
| 26 | AllowedCpuIdBitmask = 0, | 26 | AllowedCpuIdBitmask = 0, |
| 27 | AllowedThreadPrioBitmask = 1, | ||
| 28 | MapRegionBaseAddr = 2, | ||
| 29 | MapRegionSize = 3, | ||
| 30 | HeapRegionBaseAddr = 4, | ||
| 31 | HeapRegionSize = 5, | ||
| 27 | TotalMemoryUsage = 6, | 32 | TotalMemoryUsage = 6, |
| 28 | TotalHeapUsage = 7, | 33 | TotalHeapUsage = 7, |
| 34 | IsCurrentProcessBeingDebugged = 8, | ||
| 35 | ResourceHandleLimit = 9, | ||
| 36 | IdleTickCount = 10, | ||
| 29 | RandomEntropy = 11, | 37 | RandomEntropy = 11, |
| 38 | PerformanceCounter = 0xF0000002, | ||
| 30 | // 2.0.0+ | 39 | // 2.0.0+ |
| 31 | AddressSpaceBaseAddr = 12, | 40 | AddressSpaceBaseAddr = 12, |
| 32 | AddressSpaceSize = 13, | 41 | AddressSpaceSize = 13, |
| 33 | NewMapRegionBaseAddr = 14, | 42 | NewMapRegionBaseAddr = 14, |
| 34 | NewMapRegionSize = 15, | 43 | NewMapRegionSize = 15, |
| 44 | // 3.0.0+ | ||
| 45 | IsVirtualAddressMemoryEnabled = 16, | ||
| 46 | TitleId = 18, | ||
| 47 | PrivilegedProcessId = 19, | ||
| 35 | }; | 48 | }; |
| 36 | 49 | ||
| 37 | void CallSVC(u32 immediate); | 50 | void CallSVC(u32 immediate); |
diff --git a/src/core/hle/kernel/vm_manager.cpp b/src/core/hle/kernel/vm_manager.cpp index dca637dde..d6d0ad996 100644 --- a/src/core/hle/kernel/vm_manager.cpp +++ b/src/core/hle/kernel/vm_manager.cpp | |||
| @@ -356,12 +356,12 @@ void VMManager::UpdatePageTableForVMA(const VirtualMemoryArea& vma) { | |||
| 356 | 356 | ||
| 357 | u64 VMManager::GetTotalMemoryUsage() { | 357 | u64 VMManager::GetTotalMemoryUsage() { |
| 358 | LOG_WARNING(Kernel, "(STUBBED) called"); | 358 | LOG_WARNING(Kernel, "(STUBBED) called"); |
| 359 | return 0x400000; | 359 | return 0xBE000000; |
| 360 | } | 360 | } |
| 361 | 361 | ||
| 362 | u64 VMManager::GetTotalHeapUsage() { | 362 | u64 VMManager::GetTotalHeapUsage() { |
| 363 | LOG_WARNING(Kernel, "(STUBBED) called"); | 363 | LOG_WARNING(Kernel, "(STUBBED) called"); |
| 364 | return 0x10000; | 364 | return 0x0; |
| 365 | } | 365 | } |
| 366 | 366 | ||
| 367 | VAddr VMManager::GetAddressSpaceBaseAddr() { | 367 | VAddr VMManager::GetAddressSpaceBaseAddr() { |