diff options
| author | 2021-02-11 18:55:22 -0800 | |
|---|---|---|
| committer | 2021-02-18 16:16:24 -0800 | |
| commit | f7a008d77f8aa47baf4c874c508b38af4965a145 (patch) | |
| tree | 3a11b865d5f49be8fa0588ee5187f1b6c12022fb /src/core/hle/kernel | |
| parent | hle: kernel: memory: PageHeap: Migrate to KPageBitmap class. (diff) | |
| download | yuzu-f7a008d77f8aa47baf4c874c508b38af4965a145.tar.gz yuzu-f7a008d77f8aa47baf4c874c508b38af4965a145.tar.xz yuzu-f7a008d77f8aa47baf4c874c508b38af4965a145.zip | |
hle: kernel: KSystemControl does not belong in Memory namespace.
Diffstat (limited to 'src/core/hle/kernel')
| -rw-r--r-- | src/core/hle/kernel/k_page_bitmap.h | 4 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_system_control.cpp (renamed from src/core/hle/kernel/memory/system_control.cpp) | 13 | ||||
| -rw-r--r-- | src/core/hle/kernel/k_system_control.h | 19 | ||||
| -rw-r--r-- | src/core/hle/kernel/memory/page_table.cpp | 11 | ||||
| -rw-r--r-- | src/core/hle/kernel/memory/system_control.h | 14 |
5 files changed, 34 insertions, 27 deletions
diff --git a/src/core/hle/kernel/k_page_bitmap.h b/src/core/hle/kernel/k_page_bitmap.h index da2d20032..c75d667c9 100644 --- a/src/core/hle/kernel/k_page_bitmap.h +++ b/src/core/hle/kernel/k_page_bitmap.h | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | #include "common/bit_util.h" | 12 | #include "common/bit_util.h" |
| 13 | #include "common/common_types.h" | 13 | #include "common/common_types.h" |
| 14 | #include "common/tiny_mt.h" | 14 | #include "common/tiny_mt.h" |
| 15 | #include "core/hle/kernel/memory/system_control.h" | 15 | #include "core/hle/kernel/k_system_control.h" |
| 16 | 16 | ||
| 17 | namespace Kernel { | 17 | namespace Kernel { |
| 18 | 18 | ||
| @@ -43,7 +43,7 @@ private: | |||
| 43 | 43 | ||
| 44 | public: | 44 | public: |
| 45 | RandomBitGenerator() { | 45 | RandomBitGenerator() { |
| 46 | rng.Initialize(static_cast<u32>(Memory::SystemControl::GenerateRandomU64())); | 46 | rng.Initialize(static_cast<u32>(KSystemControl::GenerateRandomU64())); |
| 47 | } | 47 | } |
| 48 | 48 | ||
| 49 | std::size_t SelectRandomBit(u64 bitmap) { | 49 | std::size_t SelectRandomBit(u64 bitmap) { |
diff --git a/src/core/hle/kernel/memory/system_control.cpp b/src/core/hle/kernel/k_system_control.cpp index e855696ad..aa1682f69 100644 --- a/src/core/hle/kernel/memory/system_control.cpp +++ b/src/core/hle/kernel/k_system_control.cpp | |||
| @@ -1,12 +1,13 @@ | |||
| 1 | // Copyright 2020 yuzu Emulator Project | 1 | // Copyright 2021 yuzu Emulator Project |
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <random> | 5 | #include <random> |
| 6 | 6 | ||
| 7 | #include "core/hle/kernel/memory/system_control.h" | 7 | #include "core/hle/kernel/k_system_control.h" |
| 8 | |||
| 9 | namespace Kernel { | ||
| 8 | 10 | ||
| 9 | namespace Kernel::Memory::SystemControl { | ||
| 10 | namespace { | 11 | namespace { |
| 11 | template <typename F> | 12 | template <typename F> |
| 12 | u64 GenerateUniformRange(u64 min, u64 max, F f) { | 13 | u64 GenerateUniformRange(u64 min, u64 max, F f) { |
| @@ -27,15 +28,15 @@ u64 GenerateUniformRange(u64 min, u64 max, F f) { | |||
| 27 | 28 | ||
| 28 | } // Anonymous namespace | 29 | } // Anonymous namespace |
| 29 | 30 | ||
| 30 | u64 GenerateRandomU64() { | 31 | u64 KSystemControl::GenerateRandomU64() { |
| 31 | static std::random_device device; | 32 | static std::random_device device; |
| 32 | static std::mt19937 gen(device()); | 33 | static std::mt19937 gen(device()); |
| 33 | static std::uniform_int_distribution<u64> distribution(1, std::numeric_limits<u64>::max()); | 34 | static std::uniform_int_distribution<u64> distribution(1, std::numeric_limits<u64>::max()); |
| 34 | return distribution(gen); | 35 | return distribution(gen); |
| 35 | } | 36 | } |
| 36 | 37 | ||
| 37 | u64 GenerateRandomRange(u64 min, u64 max) { | 38 | u64 KSystemControl::GenerateRandomRange(u64 min, u64 max) { |
| 38 | return GenerateUniformRange(min, max, GenerateRandomU64); | 39 | return GenerateUniformRange(min, max, GenerateRandomU64); |
| 39 | } | 40 | } |
| 40 | 41 | ||
| 41 | } // namespace Kernel::Memory::SystemControl | 42 | } // namespace Kernel |
diff --git a/src/core/hle/kernel/k_system_control.h b/src/core/hle/kernel/k_system_control.h new file mode 100644 index 000000000..1d5b64ffa --- /dev/null +++ b/src/core/hle/kernel/k_system_control.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | // Copyright 2021 yuzu Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "common/common_types.h" | ||
| 8 | |||
| 9 | namespace Kernel { | ||
| 10 | |||
| 11 | class KSystemControl { | ||
| 12 | public: | ||
| 13 | KSystemControl() = default; | ||
| 14 | |||
| 15 | static u64 GenerateRandomRange(u64 min, u64 max); | ||
| 16 | static u64 GenerateRandomU64(); | ||
| 17 | }; | ||
| 18 | |||
| 19 | } // namespace Kernel | ||
diff --git a/src/core/hle/kernel/memory/page_table.cpp b/src/core/hle/kernel/memory/page_table.cpp index 00ed9b881..034d43ecd 100644 --- a/src/core/hle/kernel/memory/page_table.cpp +++ b/src/core/hle/kernel/memory/page_table.cpp | |||
| @@ -6,14 +6,15 @@ | |||
| 6 | #include "common/assert.h" | 6 | #include "common/assert.h" |
| 7 | #include "common/scope_exit.h" | 7 | #include "common/scope_exit.h" |
| 8 | #include "core/core.h" | 8 | #include "core/core.h" |
| 9 | #include "core/hle/kernel/k_resource_limit.h" | ||
| 9 | #include "core/hle/kernel/k_scoped_resource_reservation.h" | 10 | #include "core/hle/kernel/k_scoped_resource_reservation.h" |
| 11 | #include "core/hle/kernel/k_system_control.h" | ||
| 10 | #include "core/hle/kernel/kernel.h" | 12 | #include "core/hle/kernel/kernel.h" |
| 11 | #include "core/hle/kernel/memory/address_space_info.h" | 13 | #include "core/hle/kernel/memory/address_space_info.h" |
| 12 | #include "core/hle/kernel/memory/memory_block.h" | 14 | #include "core/hle/kernel/memory/memory_block.h" |
| 13 | #include "core/hle/kernel/memory/memory_block_manager.h" | 15 | #include "core/hle/kernel/memory/memory_block_manager.h" |
| 14 | #include "core/hle/kernel/memory/page_linked_list.h" | 16 | #include "core/hle/kernel/memory/page_linked_list.h" |
| 15 | #include "core/hle/kernel/memory/page_table.h" | 17 | #include "core/hle/kernel/memory/page_table.h" |
| 16 | #include "core/hle/kernel/memory/system_control.h" | ||
| 17 | #include "core/hle/kernel/process.h" | 18 | #include "core/hle/kernel/process.h" |
| 18 | #include "core/hle/kernel/svc_results.h" | 19 | #include "core/hle/kernel/svc_results.h" |
| 19 | #include "core/memory.h" | 20 | #include "core/memory.h" |
| @@ -149,13 +150,13 @@ ResultCode PageTable::InitializeForProcess(FileSys::ProgramAddressSpaceType as_t | |||
| 149 | // Determine random placements for each region | 150 | // Determine random placements for each region |
| 150 | std::size_t alias_rnd{}, heap_rnd{}, stack_rnd{}, kmap_rnd{}; | 151 | std::size_t alias_rnd{}, heap_rnd{}, stack_rnd{}, kmap_rnd{}; |
| 151 | if (enable_aslr) { | 152 | if (enable_aslr) { |
| 152 | alias_rnd = SystemControl::GenerateRandomRange(0, remaining_size / RegionAlignment) * | 153 | alias_rnd = KSystemControl::GenerateRandomRange(0, remaining_size / RegionAlignment) * |
| 153 | RegionAlignment; | 154 | RegionAlignment; |
| 154 | heap_rnd = SystemControl::GenerateRandomRange(0, remaining_size / RegionAlignment) * | 155 | heap_rnd = KSystemControl::GenerateRandomRange(0, remaining_size / RegionAlignment) * |
| 155 | RegionAlignment; | 156 | RegionAlignment; |
| 156 | stack_rnd = SystemControl::GenerateRandomRange(0, remaining_size / RegionAlignment) * | 157 | stack_rnd = KSystemControl::GenerateRandomRange(0, remaining_size / RegionAlignment) * |
| 157 | RegionAlignment; | 158 | RegionAlignment; |
| 158 | kmap_rnd = SystemControl::GenerateRandomRange(0, remaining_size / RegionAlignment) * | 159 | kmap_rnd = KSystemControl::GenerateRandomRange(0, remaining_size / RegionAlignment) * |
| 159 | RegionAlignment; | 160 | RegionAlignment; |
| 160 | } | 161 | } |
| 161 | 162 | ||
diff --git a/src/core/hle/kernel/memory/system_control.h b/src/core/hle/kernel/memory/system_control.h deleted file mode 100644 index a01b6b014..000000000 --- a/src/core/hle/kernel/memory/system_control.h +++ /dev/null | |||
| @@ -1,14 +0,0 @@ | |||
| 1 | // Copyright 2020 yuzu Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include "common/common_types.h" | ||
| 8 | |||
| 9 | namespace Kernel::Memory::SystemControl { | ||
| 10 | |||
| 11 | u64 GenerateRandomRange(u64 min, u64 max); | ||
| 12 | u64 GenerateRandomU64(); | ||
| 13 | |||
| 14 | } // namespace Kernel::Memory::SystemControl | ||