summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/core')
-rw-r--r--src/core/arm/arm_interface.h4
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic.cpp27
-rw-r--r--src/core/arm/dynarmic/arm_dynarmic.h22
-rw-r--r--src/core/arm/exclusive_monitor.h12
-rw-r--r--src/core/arm/unicorn/arm_unicorn.cpp4
-rw-r--r--src/core/arm/unicorn/arm_unicorn.h4
-rw-r--r--src/core/core.cpp14
-rw-r--r--src/core/core.h8
-rw-r--r--src/core/core_cpu.cpp4
-rw-r--r--src/core/core_cpu.h8
-rw-r--r--src/core/crypto/aes_util.cpp37
-rw-r--r--src/core/crypto/aes_util.h14
-rw-r--r--src/core/crypto/ctr_encryption_layer.cpp11
-rw-r--r--src/core/crypto/ctr_encryption_layer.h8
-rw-r--r--src/core/crypto/encryption_layer.cpp6
-rw-r--r--src/core/crypto/encryption_layer.h8
-rw-r--r--src/core/crypto/key_manager.cpp6
-rw-r--r--src/core/crypto/key_manager.h2
-rw-r--r--src/core/crypto/xts_encryption_layer.cpp4
-rw-r--r--src/core/crypto/xts_encryption_layer.h2
-rw-r--r--src/core/file_sys/card_image.cpp15
-rw-r--r--src/core/file_sys/content_archive.cpp6
-rw-r--r--src/core/file_sys/directory.h2
-rw-r--r--src/core/file_sys/nca_metadata.cpp4
-rw-r--r--src/core/file_sys/nca_patch.cpp34
-rw-r--r--src/core/file_sys/nca_patch.h12
-rw-r--r--src/core/file_sys/partition_filesystem.cpp10
-rw-r--r--src/core/file_sys/partition_filesystem.h2
-rw-r--r--src/core/file_sys/patch_manager.cpp4
-rw-r--r--src/core/file_sys/program_metadata.cpp2
-rw-r--r--src/core/file_sys/registered_cache.cpp10
-rw-r--r--src/core/file_sys/romfs.cpp11
-rw-r--r--src/core/file_sys/vfs.cpp22
-rw-r--r--src/core/file_sys/vfs.h32
-rw-r--r--src/core/file_sys/vfs_concat.cpp10
-rw-r--r--src/core/file_sys/vfs_concat.h8
-rw-r--r--src/core/file_sys/vfs_offset.cpp24
-rw-r--r--src/core/file_sys/vfs_offset.h26
-rw-r--r--src/core/file_sys/vfs_real.cpp8
-rw-r--r--src/core/file_sys/vfs_real.h8
-rw-r--r--src/core/file_sys/xts_archive.cpp8
-rw-r--r--src/core/gdbstub/gdbstub.cpp14
-rw-r--r--src/core/hle/ipc.h2
-rw-r--r--src/core/hle/ipc_helpers.h12
-rw-r--r--src/core/hle/kernel/address_arbiter.cpp25
-rw-r--r--src/core/hle/kernel/handle_table.cpp2
-rw-r--r--src/core/hle/kernel/handle_table.h2
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp27
-rw-r--r--src/core/hle/kernel/hle_ipc.h20
-rw-r--r--src/core/hle/kernel/process.cpp6
-rw-r--r--src/core/hle/kernel/process.h4
-rw-r--r--src/core/hle/kernel/shared_memory.h2
-rw-r--r--src/core/hle/kernel/svc.cpp27
-rw-r--r--src/core/hle/kernel/thread.cpp2
-rw-r--r--src/core/hle/kernel/thread.h2
-rw-r--r--src/core/hle/kernel/vm_manager.cpp2
-rw-r--r--src/core/hle/kernel/vm_manager.h4
-rw-r--r--src/core/hle/kernel/wait_object.cpp2
-rw-r--r--src/core/hle/service/acc/profile_manager.cpp21
-rw-r--r--src/core/hle/service/acc/profile_manager.h22
-rw-r--r--src/core/hle/service/am/am.cpp2
-rw-r--r--src/core/hle/service/audio/hwopus.cpp6
-rw-r--r--src/core/hle/service/hid/hid.cpp2
-rw-r--r--src/core/hle/service/lm/lm.cpp2
-rw-r--r--src/core/hle/service/ns/pl_u.cpp12
-rw-r--r--src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp2
-rw-r--r--src/core/hle/service/nvflinger/nvflinger.cpp2
-rw-r--r--src/core/hle/service/service.cpp4
-rw-r--r--src/core/hle/service/service.h6
-rw-r--r--src/core/hle/service/set/set.cpp10
-rw-r--r--src/core/hle/service/set/set.h2
-rw-r--r--src/core/hle/service/spl/module.cpp2
-rw-r--r--src/core/hle/service/vi/vi.cpp8
-rw-r--r--src/core/loader/elf.cpp2
-rw-r--r--src/core/loader/loader.cpp2
-rw-r--r--src/core/memory.cpp55
-rw-r--r--src/core/memory.h18
-rw-r--r--src/core/memory_hook.h4
-rw-r--r--src/core/tracer/recorder.cpp2
79 files changed, 409 insertions, 395 deletions
diff --git a/src/core/arm/arm_interface.h b/src/core/arm/arm_interface.h
index c368745b1..0b2af2a9b 100644
--- a/src/core/arm/arm_interface.h
+++ b/src/core/arm/arm_interface.h
@@ -31,11 +31,11 @@ public:
31 virtual void Step() = 0; 31 virtual void Step() = 0;
32 32
33 /// Maps a backing memory region for the CPU 33 /// Maps a backing memory region for the CPU
34 virtual void MapBackingMemory(VAddr address, size_t size, u8* memory, 34 virtual void MapBackingMemory(VAddr address, std::size_t size, u8* memory,
35 Kernel::VMAPermission perms) = 0; 35 Kernel::VMAPermission perms) = 0;
36 36
37 /// Unmaps a region of memory that was previously mapped using MapBackingMemory 37 /// Unmaps a region of memory that was previously mapped using MapBackingMemory
38 virtual void UnmapMemory(VAddr address, size_t size) = 0; 38 virtual void UnmapMemory(VAddr address, std::size_t size) = 0;
39 39
40 /// Clear all instruction cache 40 /// Clear all instruction cache
41 virtual void ClearInstructionCache() = 0; 41 virtual void ClearInstructionCache() = 0;
diff --git a/src/core/arm/dynarmic/arm_dynarmic.cpp b/src/core/arm/dynarmic/arm_dynarmic.cpp
index b47f04988..0c175d872 100644
--- a/src/core/arm/dynarmic/arm_dynarmic.cpp
+++ b/src/core/arm/dynarmic/arm_dynarmic.cpp
@@ -58,7 +58,7 @@ public:
58 Memory::Write64(vaddr + 8, value[1]); 58 Memory::Write64(vaddr + 8, value[1]);
59 } 59 }
60 60
61 void InterpreterFallback(u64 pc, size_t num_instructions) override { 61 void InterpreterFallback(u64 pc, std::size_t num_instructions) override {
62 LOG_INFO(Core_ARM, "Unicorn fallback @ 0x{:X} for {} instructions (instr = {:08X})", pc, 62 LOG_INFO(Core_ARM, "Unicorn fallback @ 0x{:X} for {} instructions (instr = {:08X})", pc,
63 num_instructions, MemoryReadCode(pc)); 63 num_instructions, MemoryReadCode(pc));
64 64
@@ -81,7 +81,7 @@ public:
81 return; 81 return;
82 default: 82 default:
83 ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:X})", 83 ASSERT_MSG(false, "ExceptionRaised(exception = {}, pc = {:X})",
84 static_cast<size_t>(exception), pc); 84 static_cast<std::size_t>(exception), pc);
85 } 85 }
86 } 86 }
87 87
@@ -110,7 +110,7 @@ public:
110 } 110 }
111 111
112 ARM_Dynarmic& parent; 112 ARM_Dynarmic& parent;
113 size_t num_interpreted_instructions = 0; 113 std::size_t num_interpreted_instructions = 0;
114 u64 tpidrro_el0 = 0; 114 u64 tpidrro_el0 = 0;
115 u64 tpidr_el0 = 0; 115 u64 tpidr_el0 = 0;
116}; 116};
@@ -157,7 +157,8 @@ void ARM_Dynarmic::Step() {
157 cb->InterpreterFallback(jit->GetPC(), 1); 157 cb->InterpreterFallback(jit->GetPC(), 1);
158} 158}
159 159
160ARM_Dynarmic::ARM_Dynarmic(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, size_t core_index) 160ARM_Dynarmic::ARM_Dynarmic(std::shared_ptr<ExclusiveMonitor> exclusive_monitor,
161 std::size_t core_index)
161 : cb(std::make_unique<ARM_Dynarmic_Callbacks>(*this)), core_index{core_index}, 162 : cb(std::make_unique<ARM_Dynarmic_Callbacks>(*this)), core_index{core_index},
162 exclusive_monitor{std::dynamic_pointer_cast<DynarmicExclusiveMonitor>(exclusive_monitor)} { 163 exclusive_monitor{std::dynamic_pointer_cast<DynarmicExclusiveMonitor>(exclusive_monitor)} {
163 ThreadContext ctx; 164 ThreadContext ctx;
@@ -168,12 +169,12 @@ ARM_Dynarmic::ARM_Dynarmic(std::shared_ptr<ExclusiveMonitor> exclusive_monitor,
168 169
169ARM_Dynarmic::~ARM_Dynarmic() = default; 170ARM_Dynarmic::~ARM_Dynarmic() = default;
170 171
171void ARM_Dynarmic::MapBackingMemory(u64 address, size_t size, u8* memory, 172void ARM_Dynarmic::MapBackingMemory(u64 address, std::size_t size, u8* memory,
172 Kernel::VMAPermission perms) { 173 Kernel::VMAPermission perms) {
173 inner_unicorn.MapBackingMemory(address, size, memory, perms); 174 inner_unicorn.MapBackingMemory(address, size, memory, perms);
174} 175}
175 176
176void ARM_Dynarmic::UnmapMemory(u64 address, size_t size) { 177void ARM_Dynarmic::UnmapMemory(u64 address, std::size_t size) {
177 inner_unicorn.UnmapMemory(address, size); 178 inner_unicorn.UnmapMemory(address, size);
178} 179}
179 180
@@ -269,10 +270,10 @@ void ARM_Dynarmic::PageTableChanged() {
269 current_page_table = Memory::GetCurrentPageTable(); 270 current_page_table = Memory::GetCurrentPageTable();
270} 271}
271 272
272DynarmicExclusiveMonitor::DynarmicExclusiveMonitor(size_t core_count) : monitor(core_count) {} 273DynarmicExclusiveMonitor::DynarmicExclusiveMonitor(std::size_t core_count) : monitor(core_count) {}
273DynarmicExclusiveMonitor::~DynarmicExclusiveMonitor() = default; 274DynarmicExclusiveMonitor::~DynarmicExclusiveMonitor() = default;
274 275
275void DynarmicExclusiveMonitor::SetExclusive(size_t core_index, VAddr addr) { 276void DynarmicExclusiveMonitor::SetExclusive(std::size_t core_index, VAddr addr) {
276 // Size doesn't actually matter. 277 // Size doesn't actually matter.
277 monitor.Mark(core_index, addr, 16); 278 monitor.Mark(core_index, addr, 16);
278} 279}
@@ -281,27 +282,27 @@ void DynarmicExclusiveMonitor::ClearExclusive() {
281 monitor.Clear(); 282 monitor.Clear();
282} 283}
283 284
284bool DynarmicExclusiveMonitor::ExclusiveWrite8(size_t core_index, VAddr vaddr, u8 value) { 285bool DynarmicExclusiveMonitor::ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) {
285 return monitor.DoExclusiveOperation(core_index, vaddr, 1, 286 return monitor.DoExclusiveOperation(core_index, vaddr, 1,
286 [&] { Memory::Write8(vaddr, value); }); 287 [&] { Memory::Write8(vaddr, value); });
287} 288}
288 289
289bool DynarmicExclusiveMonitor::ExclusiveWrite16(size_t core_index, VAddr vaddr, u16 value) { 290bool DynarmicExclusiveMonitor::ExclusiveWrite16(std::size_t core_index, VAddr vaddr, u16 value) {
290 return monitor.DoExclusiveOperation(core_index, vaddr, 2, 291 return monitor.DoExclusiveOperation(core_index, vaddr, 2,
291 [&] { Memory::Write16(vaddr, value); }); 292 [&] { Memory::Write16(vaddr, value); });
292} 293}
293 294
294bool DynarmicExclusiveMonitor::ExclusiveWrite32(size_t core_index, VAddr vaddr, u32 value) { 295bool DynarmicExclusiveMonitor::ExclusiveWrite32(std::size_t core_index, VAddr vaddr, u32 value) {
295 return monitor.DoExclusiveOperation(core_index, vaddr, 4, 296 return monitor.DoExclusiveOperation(core_index, vaddr, 4,
296 [&] { Memory::Write32(vaddr, value); }); 297 [&] { Memory::Write32(vaddr, value); });
297} 298}
298 299
299bool DynarmicExclusiveMonitor::ExclusiveWrite64(size_t core_index, VAddr vaddr, u64 value) { 300bool DynarmicExclusiveMonitor::ExclusiveWrite64(std::size_t core_index, VAddr vaddr, u64 value) {
300 return monitor.DoExclusiveOperation(core_index, vaddr, 8, 301 return monitor.DoExclusiveOperation(core_index, vaddr, 8,
301 [&] { Memory::Write64(vaddr, value); }); 302 [&] { Memory::Write64(vaddr, value); });
302} 303}
303 304
304bool DynarmicExclusiveMonitor::ExclusiveWrite128(size_t core_index, VAddr vaddr, u128 value) { 305bool DynarmicExclusiveMonitor::ExclusiveWrite128(std::size_t core_index, VAddr vaddr, u128 value) {
305 return monitor.DoExclusiveOperation(core_index, vaddr, 16, [&] { 306 return monitor.DoExclusiveOperation(core_index, vaddr, 16, [&] {
306 Memory::Write64(vaddr, value[0]); 307 Memory::Write64(vaddr, value[0]);
307 Memory::Write64(vaddr, value[1]); 308 Memory::Write64(vaddr, value[1]);
diff --git a/src/core/arm/dynarmic/arm_dynarmic.h b/src/core/arm/dynarmic/arm_dynarmic.h
index 3bdfd8cd9..56c60c853 100644
--- a/src/core/arm/dynarmic/arm_dynarmic.h
+++ b/src/core/arm/dynarmic/arm_dynarmic.h
@@ -19,12 +19,12 @@ class DynarmicExclusiveMonitor;
19 19
20class ARM_Dynarmic final : public ARM_Interface { 20class ARM_Dynarmic final : public ARM_Interface {
21public: 21public:
22 ARM_Dynarmic(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, size_t core_index); 22 ARM_Dynarmic(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, std::size_t core_index);
23 ~ARM_Dynarmic(); 23 ~ARM_Dynarmic();
24 24
25 void MapBackingMemory(VAddr address, size_t size, u8* memory, 25 void MapBackingMemory(VAddr address, std::size_t size, u8* memory,
26 Kernel::VMAPermission perms) override; 26 Kernel::VMAPermission perms) override;
27 void UnmapMemory(u64 address, size_t size) override; 27 void UnmapMemory(u64 address, std::size_t size) override;
28 void SetPC(u64 pc) override; 28 void SetPC(u64 pc) override;
29 u64 GetPC() const override; 29 u64 GetPC() const override;
30 u64 GetReg(int index) const override; 30 u64 GetReg(int index) const override;
@@ -59,7 +59,7 @@ private:
59 std::unique_ptr<Dynarmic::A64::Jit> jit; 59 std::unique_ptr<Dynarmic::A64::Jit> jit;
60 ARM_Unicorn inner_unicorn; 60 ARM_Unicorn inner_unicorn;
61 61
62 size_t core_index; 62 std::size_t core_index;
63 std::shared_ptr<DynarmicExclusiveMonitor> exclusive_monitor; 63 std::shared_ptr<DynarmicExclusiveMonitor> exclusive_monitor;
64 64
65 Memory::PageTable* current_page_table = nullptr; 65 Memory::PageTable* current_page_table = nullptr;
@@ -67,17 +67,17 @@ private:
67 67
68class DynarmicExclusiveMonitor final : public ExclusiveMonitor { 68class DynarmicExclusiveMonitor final : public ExclusiveMonitor {
69public: 69public:
70 explicit DynarmicExclusiveMonitor(size_t core_count); 70 explicit DynarmicExclusiveMonitor(std::size_t core_count);
71 ~DynarmicExclusiveMonitor(); 71 ~DynarmicExclusiveMonitor();
72 72
73 void SetExclusive(size_t core_index, VAddr addr) override; 73 void SetExclusive(std::size_t core_index, VAddr addr) override;
74 void ClearExclusive() override; 74 void ClearExclusive() override;
75 75
76 bool ExclusiveWrite8(size_t core_index, VAddr vaddr, u8 value) override; 76 bool ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) override;
77 bool ExclusiveWrite16(size_t core_index, VAddr vaddr, u16 value) override; 77 bool ExclusiveWrite16(std::size_t core_index, VAddr vaddr, u16 value) override;
78 bool ExclusiveWrite32(size_t core_index, VAddr vaddr, u32 value) override; 78 bool ExclusiveWrite32(std::size_t core_index, VAddr vaddr, u32 value) override;
79 bool ExclusiveWrite64(size_t core_index, VAddr vaddr, u64 value) override; 79 bool ExclusiveWrite64(std::size_t core_index, VAddr vaddr, u64 value) override;
80 bool ExclusiveWrite128(size_t core_index, VAddr vaddr, u128 value) override; 80 bool ExclusiveWrite128(std::size_t core_index, VAddr vaddr, u128 value) override;
81 81
82private: 82private:
83 friend class ARM_Dynarmic; 83 friend class ARM_Dynarmic;
diff --git a/src/core/arm/exclusive_monitor.h b/src/core/arm/exclusive_monitor.h
index 6f9b51573..f59aca667 100644
--- a/src/core/arm/exclusive_monitor.h
+++ b/src/core/arm/exclusive_monitor.h
@@ -12,14 +12,14 @@ class ExclusiveMonitor {
12public: 12public:
13 virtual ~ExclusiveMonitor(); 13 virtual ~ExclusiveMonitor();
14 14
15 virtual void SetExclusive(size_t core_index, VAddr addr) = 0; 15 virtual void SetExclusive(std::size_t core_index, VAddr addr) = 0;
16 virtual void ClearExclusive() = 0; 16 virtual void ClearExclusive() = 0;
17 17
18 virtual bool ExclusiveWrite8(size_t core_index, VAddr vaddr, u8 value) = 0; 18 virtual bool ExclusiveWrite8(std::size_t core_index, VAddr vaddr, u8 value) = 0;
19 virtual bool ExclusiveWrite16(size_t core_index, VAddr vaddr, u16 value) = 0; 19 virtual bool ExclusiveWrite16(std::size_t core_index, VAddr vaddr, u16 value) = 0;
20 virtual bool ExclusiveWrite32(size_t core_index, VAddr vaddr, u32 value) = 0; 20 virtual bool ExclusiveWrite32(std::size_t core_index, VAddr vaddr, u32 value) = 0;
21 virtual bool ExclusiveWrite64(size_t core_index, VAddr vaddr, u64 value) = 0; 21 virtual bool ExclusiveWrite64(std::size_t core_index, VAddr vaddr, u64 value) = 0;
22 virtual bool ExclusiveWrite128(size_t core_index, VAddr vaddr, u128 value) = 0; 22 virtual bool ExclusiveWrite128(std::size_t core_index, VAddr vaddr, u128 value) = 0;
23}; 23};
24 24
25} // namespace Core 25} // namespace Core
diff --git a/src/core/arm/unicorn/arm_unicorn.cpp b/src/core/arm/unicorn/arm_unicorn.cpp
index 4c4de2623..4e02b7cd4 100644
--- a/src/core/arm/unicorn/arm_unicorn.cpp
+++ b/src/core/arm/unicorn/arm_unicorn.cpp
@@ -90,12 +90,12 @@ ARM_Unicorn::~ARM_Unicorn() {
90 CHECKED(uc_close(uc)); 90 CHECKED(uc_close(uc));
91} 91}
92 92
93void ARM_Unicorn::MapBackingMemory(VAddr address, size_t size, u8* memory, 93void ARM_Unicorn::MapBackingMemory(VAddr address, std::size_t size, u8* memory,
94 Kernel::VMAPermission perms) { 94 Kernel::VMAPermission perms) {
95 CHECKED(uc_mem_map_ptr(uc, address, size, static_cast<u32>(perms), memory)); 95 CHECKED(uc_mem_map_ptr(uc, address, size, static_cast<u32>(perms), memory));
96} 96}
97 97
98void ARM_Unicorn::UnmapMemory(VAddr address, size_t size) { 98void ARM_Unicorn::UnmapMemory(VAddr address, std::size_t size) {
99 CHECKED(uc_mem_unmap(uc, address, size)); 99 CHECKED(uc_mem_unmap(uc, address, size));
100} 100}
101 101
diff --git a/src/core/arm/unicorn/arm_unicorn.h b/src/core/arm/unicorn/arm_unicorn.h
index bd6b2f723..d6f7cf4ab 100644
--- a/src/core/arm/unicorn/arm_unicorn.h
+++ b/src/core/arm/unicorn/arm_unicorn.h
@@ -15,9 +15,9 @@ class ARM_Unicorn final : public ARM_Interface {
15public: 15public:
16 ARM_Unicorn(); 16 ARM_Unicorn();
17 ~ARM_Unicorn(); 17 ~ARM_Unicorn();
18 void MapBackingMemory(VAddr address, size_t size, u8* memory, 18 void MapBackingMemory(VAddr address, std::size_t size, u8* memory,
19 Kernel::VMAPermission perms) override; 19 Kernel::VMAPermission perms) override;
20 void UnmapMemory(VAddr address, size_t size) override; 20 void UnmapMemory(VAddr address, std::size_t size) override;
21 void SetPC(u64 pc) override; 21 void SetPC(u64 pc) override;
22 u64 GetPC() const override; 22 u64 GetPC() const override;
23 u64 GetReg(int index) const override; 23 u64 GetReg(int index) const override;
diff --git a/src/core/core.cpp b/src/core/core.cpp
index 713ee17c1..50f0a42fb 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -140,7 +140,7 @@ struct System::Impl {
140 140
141 cpu_barrier = std::make_shared<CpuBarrier>(); 141 cpu_barrier = std::make_shared<CpuBarrier>();
142 cpu_exclusive_monitor = Cpu::MakeExclusiveMonitor(cpu_cores.size()); 142 cpu_exclusive_monitor = Cpu::MakeExclusiveMonitor(cpu_cores.size());
143 for (size_t index = 0; index < cpu_cores.size(); ++index) { 143 for (std::size_t index = 0; index < cpu_cores.size(); ++index) {
144 cpu_cores[index] = std::make_shared<Cpu>(cpu_exclusive_monitor, cpu_barrier, index); 144 cpu_cores[index] = std::make_shared<Cpu>(cpu_exclusive_monitor, cpu_barrier, index);
145 } 145 }
146 146
@@ -161,7 +161,7 @@ struct System::Impl {
161 // CPU core 0 is run on the main thread 161 // CPU core 0 is run on the main thread
162 thread_to_cpu[std::this_thread::get_id()] = cpu_cores[0]; 162 thread_to_cpu[std::this_thread::get_id()] = cpu_cores[0];
163 if (Settings::values.use_multi_core) { 163 if (Settings::values.use_multi_core) {
164 for (size_t index = 0; index < cpu_core_threads.size(); ++index) { 164 for (std::size_t index = 0; index < cpu_core_threads.size(); ++index) {
165 cpu_core_threads[index] = 165 cpu_core_threads[index] =
166 std::make_unique<std::thread>(RunCpuCore, cpu_cores[index + 1]); 166 std::make_unique<std::thread>(RunCpuCore, cpu_cores[index + 1]);
167 thread_to_cpu[cpu_core_threads[index]->get_id()] = cpu_cores[index + 1]; 167 thread_to_cpu[cpu_core_threads[index]->get_id()] = cpu_cores[index + 1];
@@ -285,7 +285,7 @@ struct System::Impl {
285 std::shared_ptr<CpuBarrier> cpu_barrier; 285 std::shared_ptr<CpuBarrier> cpu_barrier;
286 std::array<std::shared_ptr<Cpu>, NUM_CPU_CORES> cpu_cores; 286 std::array<std::shared_ptr<Cpu>, NUM_CPU_CORES> cpu_cores;
287 std::array<std::unique_ptr<std::thread>, NUM_CPU_CORES - 1> cpu_core_threads; 287 std::array<std::unique_ptr<std::thread>, NUM_CPU_CORES - 1> cpu_core_threads;
288 size_t active_core{}; ///< Active core, only used in single thread mode 288 std::size_t active_core{}; ///< Active core, only used in single thread mode
289 289
290 /// Service manager 290 /// Service manager
291 std::shared_ptr<Service::SM::ServiceManager> service_manager; 291 std::shared_ptr<Service::SM::ServiceManager> service_manager;
@@ -348,7 +348,7 @@ ARM_Interface& System::CurrentArmInterface() {
348 return CurrentCpuCore().ArmInterface(); 348 return CurrentCpuCore().ArmInterface();
349} 349}
350 350
351size_t System::CurrentCoreIndex() { 351std::size_t System::CurrentCoreIndex() {
352 return CurrentCpuCore().CoreIndex(); 352 return CurrentCpuCore().CoreIndex();
353} 353}
354 354
@@ -356,7 +356,7 @@ Kernel::Scheduler& System::CurrentScheduler() {
356 return *CurrentCpuCore().Scheduler(); 356 return *CurrentCpuCore().Scheduler();
357} 357}
358 358
359const std::shared_ptr<Kernel::Scheduler>& System::Scheduler(size_t core_index) { 359const std::shared_ptr<Kernel::Scheduler>& System::Scheduler(std::size_t core_index) {
360 ASSERT(core_index < NUM_CPU_CORES); 360 ASSERT(core_index < NUM_CPU_CORES);
361 return impl->cpu_cores[core_index]->Scheduler(); 361 return impl->cpu_cores[core_index]->Scheduler();
362} 362}
@@ -369,12 +369,12 @@ const Kernel::SharedPtr<Kernel::Process>& System::CurrentProcess() const {
369 return impl->kernel.CurrentProcess(); 369 return impl->kernel.CurrentProcess();
370} 370}
371 371
372ARM_Interface& System::ArmInterface(size_t core_index) { 372ARM_Interface& System::ArmInterface(std::size_t core_index) {
373 ASSERT(core_index < NUM_CPU_CORES); 373 ASSERT(core_index < NUM_CPU_CORES);
374 return impl->cpu_cores[core_index]->ArmInterface(); 374 return impl->cpu_cores[core_index]->ArmInterface();
375} 375}
376 376
377Cpu& System::CpuCore(size_t core_index) { 377Cpu& System::CpuCore(std::size_t core_index) {
378 ASSERT(core_index < NUM_CPU_CORES); 378 ASSERT(core_index < NUM_CPU_CORES);
379 return *impl->cpu_cores[core_index]; 379 return *impl->cpu_cores[core_index];
380} 380}
diff --git a/src/core/core.h b/src/core/core.h
index ab3663427..f9a3e97e3 100644
--- a/src/core/core.h
+++ b/src/core/core.h
@@ -145,16 +145,16 @@ public:
145 ARM_Interface& CurrentArmInterface(); 145 ARM_Interface& CurrentArmInterface();
146 146
147 /// Gets the index of the currently running CPU core 147 /// Gets the index of the currently running CPU core
148 size_t CurrentCoreIndex(); 148 std::size_t CurrentCoreIndex();
149 149
150 /// Gets the scheduler for the CPU core that is currently running 150 /// Gets the scheduler for the CPU core that is currently running
151 Kernel::Scheduler& CurrentScheduler(); 151 Kernel::Scheduler& CurrentScheduler();
152 152
153 /// Gets an ARM interface to the CPU core with the specified index 153 /// Gets an ARM interface to the CPU core with the specified index
154 ARM_Interface& ArmInterface(size_t core_index); 154 ARM_Interface& ArmInterface(std::size_t core_index);
155 155
156 /// Gets a CPU interface to the CPU core with the specified index 156 /// Gets a CPU interface to the CPU core with the specified index
157 Cpu& CpuCore(size_t core_index); 157 Cpu& CpuCore(std::size_t core_index);
158 158
159 /// Gets the exclusive monitor 159 /// Gets the exclusive monitor
160 ExclusiveMonitor& Monitor(); 160 ExclusiveMonitor& Monitor();
@@ -172,7 +172,7 @@ public:
172 const VideoCore::RendererBase& Renderer() const; 172 const VideoCore::RendererBase& Renderer() const;
173 173
174 /// Gets the scheduler for the CPU core with the specified index 174 /// Gets the scheduler for the CPU core with the specified index
175 const std::shared_ptr<Kernel::Scheduler>& Scheduler(size_t core_index); 175 const std::shared_ptr<Kernel::Scheduler>& Scheduler(std::size_t core_index);
176 176
177 /// Provides a reference to the current process 177 /// Provides a reference to the current process
178 Kernel::SharedPtr<Kernel::Process>& CurrentProcess(); 178 Kernel::SharedPtr<Kernel::Process>& CurrentProcess();
diff --git a/src/core/core_cpu.cpp b/src/core/core_cpu.cpp
index b042ee02b..15d60cc8a 100644
--- a/src/core/core_cpu.cpp
+++ b/src/core/core_cpu.cpp
@@ -49,7 +49,7 @@ bool CpuBarrier::Rendezvous() {
49} 49}
50 50
51Cpu::Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, 51Cpu::Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor,
52 std::shared_ptr<CpuBarrier> cpu_barrier, size_t core_index) 52 std::shared_ptr<CpuBarrier> cpu_barrier, std::size_t core_index)
53 : cpu_barrier{std::move(cpu_barrier)}, core_index{core_index} { 53 : cpu_barrier{std::move(cpu_barrier)}, core_index{core_index} {
54 54
55 if (Settings::values.use_cpu_jit) { 55 if (Settings::values.use_cpu_jit) {
@@ -66,7 +66,7 @@ Cpu::Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor,
66 scheduler = std::make_shared<Kernel::Scheduler>(arm_interface.get()); 66 scheduler = std::make_shared<Kernel::Scheduler>(arm_interface.get());
67} 67}
68 68
69std::shared_ptr<ExclusiveMonitor> Cpu::MakeExclusiveMonitor(size_t num_cores) { 69std::shared_ptr<ExclusiveMonitor> Cpu::MakeExclusiveMonitor(std::size_t num_cores) {
70 if (Settings::values.use_cpu_jit) { 70 if (Settings::values.use_cpu_jit) {
71#ifdef ARCHITECTURE_x86_64 71#ifdef ARCHITECTURE_x86_64
72 return std::make_shared<DynarmicExclusiveMonitor>(num_cores); 72 return std::make_shared<DynarmicExclusiveMonitor>(num_cores);
diff --git a/src/core/core_cpu.h b/src/core/core_cpu.h
index 40ed34b47..1d229b42f 100644
--- a/src/core/core_cpu.h
+++ b/src/core/core_cpu.h
@@ -42,7 +42,7 @@ private:
42class Cpu { 42class Cpu {
43public: 43public:
44 Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor, 44 Cpu(std::shared_ptr<ExclusiveMonitor> exclusive_monitor,
45 std::shared_ptr<CpuBarrier> cpu_barrier, size_t core_index); 45 std::shared_ptr<CpuBarrier> cpu_barrier, std::size_t core_index);
46 46
47 void RunLoop(bool tight_loop = true); 47 void RunLoop(bool tight_loop = true);
48 48
@@ -66,11 +66,11 @@ public:
66 return core_index == 0; 66 return core_index == 0;
67 } 67 }
68 68
69 size_t CoreIndex() const { 69 std::size_t CoreIndex() const {
70 return core_index; 70 return core_index;
71 } 71 }
72 72
73 static std::shared_ptr<ExclusiveMonitor> MakeExclusiveMonitor(size_t num_cores); 73 static std::shared_ptr<ExclusiveMonitor> MakeExclusiveMonitor(std::size_t num_cores);
74 74
75private: 75private:
76 void Reschedule(); 76 void Reschedule();
@@ -80,7 +80,7 @@ private:
80 std::shared_ptr<Kernel::Scheduler> scheduler; 80 std::shared_ptr<Kernel::Scheduler> scheduler;
81 81
82 std::atomic<bool> reschedule_pending = false; 82 std::atomic<bool> reschedule_pending = false;
83 size_t core_index; 83 std::size_t core_index;
84}; 84};
85 85
86} // namespace Core 86} // namespace Core
diff --git a/src/core/crypto/aes_util.cpp b/src/core/crypto/aes_util.cpp
index 89ade5000..4be76bb43 100644
--- a/src/core/crypto/aes_util.cpp
+++ b/src/core/crypto/aes_util.cpp
@@ -10,9 +10,9 @@
10 10
11namespace Core::Crypto { 11namespace Core::Crypto {
12namespace { 12namespace {
13std::vector<u8> CalculateNintendoTweak(size_t sector_id) { 13std::vector<u8> CalculateNintendoTweak(std::size_t sector_id) {
14 std::vector<u8> out(0x10); 14 std::vector<u8> out(0x10);
15 for (size_t i = 0xF; i <= 0xF; --i) { 15 for (std::size_t i = 0xF; i <= 0xF; --i) {
16 out[i] = sector_id & 0xFF; 16 out[i] = sector_id & 0xFF;
17 sector_id >>= 8; 17 sector_id >>= 8;
18 } 18 }
@@ -20,11 +20,14 @@ std::vector<u8> CalculateNintendoTweak(size_t sector_id) {
20} 20}
21} // Anonymous namespace 21} // Anonymous namespace
22 22
23static_assert(static_cast<size_t>(Mode::CTR) == static_cast<size_t>(MBEDTLS_CIPHER_AES_128_CTR), 23static_assert(static_cast<std::size_t>(Mode::CTR) ==
24 static_cast<std::size_t>(MBEDTLS_CIPHER_AES_128_CTR),
24 "CTR has incorrect value."); 25 "CTR has incorrect value.");
25static_assert(static_cast<size_t>(Mode::ECB) == static_cast<size_t>(MBEDTLS_CIPHER_AES_128_ECB), 26static_assert(static_cast<std::size_t>(Mode::ECB) ==
27 static_cast<std::size_t>(MBEDTLS_CIPHER_AES_128_ECB),
26 "ECB has incorrect value."); 28 "ECB has incorrect value.");
27static_assert(static_cast<size_t>(Mode::XTS) == static_cast<size_t>(MBEDTLS_CIPHER_AES_128_XTS), 29static_assert(static_cast<std::size_t>(Mode::XTS) ==
30 static_cast<std::size_t>(MBEDTLS_CIPHER_AES_128_XTS),
28 "XTS has incorrect value."); 31 "XTS has incorrect value.");
29 32
30// Structure to hide mbedtls types from header file 33// Structure to hide mbedtls types from header file
@@ -33,7 +36,7 @@ struct CipherContext {
33 mbedtls_cipher_context_t decryption_context; 36 mbedtls_cipher_context_t decryption_context;
34}; 37};
35 38
36template <typename Key, size_t KeySize> 39template <typename Key, std::size_t KeySize>
37Crypto::AESCipher<Key, KeySize>::AESCipher(Key key, Mode mode) 40Crypto::AESCipher<Key, KeySize>::AESCipher(Key key, Mode mode)
38 : ctx(std::make_unique<CipherContext>()) { 41 : ctx(std::make_unique<CipherContext>()) {
39 mbedtls_cipher_init(&ctx->encryption_context); 42 mbedtls_cipher_init(&ctx->encryption_context);
@@ -54,26 +57,26 @@ Crypto::AESCipher<Key, KeySize>::AESCipher(Key key, Mode mode)
54 //"Failed to set key on mbedtls ciphers."); 57 //"Failed to set key on mbedtls ciphers.");
55} 58}
56 59
57template <typename Key, size_t KeySize> 60template <typename Key, std::size_t KeySize>
58AESCipher<Key, KeySize>::~AESCipher() { 61AESCipher<Key, KeySize>::~AESCipher() {
59 mbedtls_cipher_free(&ctx->encryption_context); 62 mbedtls_cipher_free(&ctx->encryption_context);
60 mbedtls_cipher_free(&ctx->decryption_context); 63 mbedtls_cipher_free(&ctx->decryption_context);
61} 64}
62 65
63template <typename Key, size_t KeySize> 66template <typename Key, std::size_t KeySize>
64void AESCipher<Key, KeySize>::SetIV(std::vector<u8> iv) { 67void AESCipher<Key, KeySize>::SetIV(std::vector<u8> iv) {
65 ASSERT_MSG((mbedtls_cipher_set_iv(&ctx->encryption_context, iv.data(), iv.size()) || 68 ASSERT_MSG((mbedtls_cipher_set_iv(&ctx->encryption_context, iv.data(), iv.size()) ||
66 mbedtls_cipher_set_iv(&ctx->decryption_context, iv.data(), iv.size())) == 0, 69 mbedtls_cipher_set_iv(&ctx->decryption_context, iv.data(), iv.size())) == 0,
67 "Failed to set IV on mbedtls ciphers."); 70 "Failed to set IV on mbedtls ciphers.");
68} 71}
69 72
70template <typename Key, size_t KeySize> 73template <typename Key, std::size_t KeySize>
71void AESCipher<Key, KeySize>::Transcode(const u8* src, size_t size, u8* dest, Op op) const { 74void AESCipher<Key, KeySize>::Transcode(const u8* src, std::size_t size, u8* dest, Op op) const {
72 auto* const context = op == Op::Encrypt ? &ctx->encryption_context : &ctx->decryption_context; 75 auto* const context = op == Op::Encrypt ? &ctx->encryption_context : &ctx->decryption_context;
73 76
74 mbedtls_cipher_reset(context); 77 mbedtls_cipher_reset(context);
75 78
76 size_t written = 0; 79 std::size_t written = 0;
77 if (mbedtls_cipher_get_cipher_mode(context) == MBEDTLS_MODE_XTS) { 80 if (mbedtls_cipher_get_cipher_mode(context) == MBEDTLS_MODE_XTS) {
78 mbedtls_cipher_update(context, src, size, dest, &written); 81 mbedtls_cipher_update(context, src, size, dest, &written);
79 if (written != size) { 82 if (written != size) {
@@ -90,8 +93,8 @@ void AESCipher<Key, KeySize>::Transcode(const u8* src, size_t size, u8* dest, Op
90 return; 93 return;
91 } 94 }
92 95
93 for (size_t offset = 0; offset < size; offset += block_size) { 96 for (std::size_t offset = 0; offset < size; offset += block_size) {
94 auto length = std::min<size_t>(block_size, size - offset); 97 auto length = std::min<std::size_t>(block_size, size - offset);
95 mbedtls_cipher_update(context, src + offset, length, dest + offset, &written); 98 mbedtls_cipher_update(context, src + offset, length, dest + offset, &written);
96 if (written != length) { 99 if (written != length) {
97 if (length < block_size) { 100 if (length < block_size) {
@@ -110,12 +113,12 @@ void AESCipher<Key, KeySize>::Transcode(const u8* src, size_t size, u8* dest, Op
110 mbedtls_cipher_finish(context, nullptr, nullptr); 113 mbedtls_cipher_finish(context, nullptr, nullptr);
111} 114}
112 115
113template <typename Key, size_t KeySize> 116template <typename Key, std::size_t KeySize>
114void AESCipher<Key, KeySize>::XTSTranscode(const u8* src, size_t size, u8* dest, size_t sector_id, 117void AESCipher<Key, KeySize>::XTSTranscode(const u8* src, std::size_t size, u8* dest,
115 size_t sector_size, Op op) { 118 std::size_t sector_id, std::size_t sector_size, Op op) {
116 ASSERT_MSG(size % sector_size == 0, "XTS decryption size must be a multiple of sector size."); 119 ASSERT_MSG(size % sector_size == 0, "XTS decryption size must be a multiple of sector size.");
117 120
118 for (size_t i = 0; i < size; i += sector_size) { 121 for (std::size_t i = 0; i < size; i += sector_size) {
119 SetIV(CalculateNintendoTweak(sector_id++)); 122 SetIV(CalculateNintendoTweak(sector_id++));
120 Transcode<u8, u8>(src + i, sector_size, dest + i, op); 123 Transcode<u8, u8>(src + i, sector_size, dest + i, op);
121 } 124 }
diff --git a/src/core/crypto/aes_util.h b/src/core/crypto/aes_util.h
index 8ce9d6612..edc4ab910 100644
--- a/src/core/crypto/aes_util.h
+++ b/src/core/crypto/aes_util.h
@@ -25,7 +25,7 @@ enum class Op {
25 Decrypt, 25 Decrypt,
26}; 26};
27 27
28template <typename Key, size_t KeySize = sizeof(Key)> 28template <typename Key, std::size_t KeySize = sizeof(Key)>
29class AESCipher { 29class AESCipher {
30 static_assert(std::is_same_v<Key, std::array<u8, KeySize>>, "Key must be std::array of u8."); 30 static_assert(std::is_same_v<Key, std::array<u8, KeySize>>, "Key must be std::array of u8.");
31 static_assert(KeySize == 0x10 || KeySize == 0x20, "KeySize must be 128 or 256."); 31 static_assert(KeySize == 0x10 || KeySize == 0x20, "KeySize must be 128 or 256.");
@@ -38,25 +38,25 @@ public:
38 void SetIV(std::vector<u8> iv); 38 void SetIV(std::vector<u8> iv);
39 39
40 template <typename Source, typename Dest> 40 template <typename Source, typename Dest>
41 void Transcode(const Source* src, size_t size, Dest* dest, Op op) const { 41 void Transcode(const Source* src, std::size_t size, Dest* dest, Op op) const {
42 static_assert(std::is_trivially_copyable_v<Source> && std::is_trivially_copyable_v<Dest>, 42 static_assert(std::is_trivially_copyable_v<Source> && std::is_trivially_copyable_v<Dest>,
43 "Transcode source and destination types must be trivially copyable."); 43 "Transcode source and destination types must be trivially copyable.");
44 Transcode(reinterpret_cast<const u8*>(src), size, reinterpret_cast<u8*>(dest), op); 44 Transcode(reinterpret_cast<const u8*>(src), size, reinterpret_cast<u8*>(dest), op);
45 } 45 }
46 46
47 void Transcode(const u8* src, size_t size, u8* dest, Op op) const; 47 void Transcode(const u8* src, std::size_t size, u8* dest, Op op) const;
48 48
49 template <typename Source, typename Dest> 49 template <typename Source, typename Dest>
50 void XTSTranscode(const Source* src, size_t size, Dest* dest, size_t sector_id, 50 void XTSTranscode(const Source* src, std::size_t size, Dest* dest, std::size_t sector_id,
51 size_t sector_size, Op op) { 51 std::size_t sector_size, Op op) {
52 static_assert(std::is_trivially_copyable_v<Source> && std::is_trivially_copyable_v<Dest>, 52 static_assert(std::is_trivially_copyable_v<Source> && std::is_trivially_copyable_v<Dest>,
53 "XTSTranscode source and destination types must be trivially copyable."); 53 "XTSTranscode source and destination types must be trivially copyable.");
54 XTSTranscode(reinterpret_cast<const u8*>(src), size, reinterpret_cast<u8*>(dest), sector_id, 54 XTSTranscode(reinterpret_cast<const u8*>(src), size, reinterpret_cast<u8*>(dest), sector_id,
55 sector_size, op); 55 sector_size, op);
56 } 56 }
57 57
58 void XTSTranscode(const u8* src, size_t size, u8* dest, size_t sector_id, size_t sector_size, 58 void XTSTranscode(const u8* src, std::size_t size, u8* dest, std::size_t sector_id,
59 Op op); 59 std::size_t sector_size, Op op);
60 60
61private: 61private:
62 std::unique_ptr<CipherContext> ctx; 62 std::unique_ptr<CipherContext> ctx;
diff --git a/src/core/crypto/ctr_encryption_layer.cpp b/src/core/crypto/ctr_encryption_layer.cpp
index 296fad419..902841c77 100644
--- a/src/core/crypto/ctr_encryption_layer.cpp
+++ b/src/core/crypto/ctr_encryption_layer.cpp
@@ -8,11 +8,12 @@
8 8
9namespace Core::Crypto { 9namespace Core::Crypto {
10 10
11CTREncryptionLayer::CTREncryptionLayer(FileSys::VirtualFile base_, Key128 key_, size_t base_offset) 11CTREncryptionLayer::CTREncryptionLayer(FileSys::VirtualFile base_, Key128 key_,
12 std::size_t base_offset)
12 : EncryptionLayer(std::move(base_)), base_offset(base_offset), cipher(key_, Mode::CTR), 13 : EncryptionLayer(std::move(base_)), base_offset(base_offset), cipher(key_, Mode::CTR),
13 iv(16, 0) {} 14 iv(16, 0) {}
14 15
15size_t CTREncryptionLayer::Read(u8* data, size_t length, size_t offset) const { 16std::size_t CTREncryptionLayer::Read(u8* data, std::size_t length, std::size_t offset) const {
16 if (length == 0) 17 if (length == 0)
17 return 0; 18 return 0;
18 19
@@ -28,7 +29,7 @@ size_t CTREncryptionLayer::Read(u8* data, size_t length, size_t offset) const {
28 std::vector<u8> block = base->ReadBytes(0x10, offset - sector_offset); 29 std::vector<u8> block = base->ReadBytes(0x10, offset - sector_offset);
29 UpdateIV(base_offset + offset - sector_offset); 30 UpdateIV(base_offset + offset - sector_offset);
30 cipher.Transcode(block.data(), block.size(), block.data(), Op::Decrypt); 31 cipher.Transcode(block.data(), block.size(), block.data(), Op::Decrypt);
31 size_t read = 0x10 - sector_offset; 32 std::size_t read = 0x10 - sector_offset;
32 33
33 if (length + sector_offset < 0x10) { 34 if (length + sector_offset < 0x10) {
34 std::memcpy(data, block.data() + sector_offset, std::min<u64>(length, read)); 35 std::memcpy(data, block.data() + sector_offset, std::min<u64>(length, read));
@@ -43,9 +44,9 @@ void CTREncryptionLayer::SetIV(const std::vector<u8>& iv_) {
43 iv.assign(iv_.cbegin(), iv_.cbegin() + length); 44 iv.assign(iv_.cbegin(), iv_.cbegin() + length);
44} 45}
45 46
46void CTREncryptionLayer::UpdateIV(size_t offset) const { 47void CTREncryptionLayer::UpdateIV(std::size_t offset) const {
47 offset >>= 4; 48 offset >>= 4;
48 for (size_t i = 0; i < 8; ++i) { 49 for (std::size_t i = 0; i < 8; ++i) {
49 iv[16 - i - 1] = offset & 0xFF; 50 iv[16 - i - 1] = offset & 0xFF;
50 offset >>= 8; 51 offset >>= 8;
51 } 52 }
diff --git a/src/core/crypto/ctr_encryption_layer.h b/src/core/crypto/ctr_encryption_layer.h
index 11b8683c7..a7bf810f4 100644
--- a/src/core/crypto/ctr_encryption_layer.h
+++ b/src/core/crypto/ctr_encryption_layer.h
@@ -14,20 +14,20 @@ namespace Core::Crypto {
14// Sits on top of a VirtualFile and provides CTR-mode AES decription. 14// Sits on top of a VirtualFile and provides CTR-mode AES decription.
15class CTREncryptionLayer : public EncryptionLayer { 15class CTREncryptionLayer : public EncryptionLayer {
16public: 16public:
17 CTREncryptionLayer(FileSys::VirtualFile base, Key128 key, size_t base_offset); 17 CTREncryptionLayer(FileSys::VirtualFile base, Key128 key, std::size_t base_offset);
18 18
19 size_t Read(u8* data, size_t length, size_t offset) const override; 19 std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override;
20 20
21 void SetIV(const std::vector<u8>& iv); 21 void SetIV(const std::vector<u8>& iv);
22 22
23private: 23private:
24 size_t base_offset; 24 std::size_t base_offset;
25 25
26 // Must be mutable as operations modify cipher contexts. 26 // Must be mutable as operations modify cipher contexts.
27 mutable AESCipher<Key128> cipher; 27 mutable AESCipher<Key128> cipher;
28 mutable std::vector<u8> iv; 28 mutable std::vector<u8> iv;
29 29
30 void UpdateIV(size_t offset) const; 30 void UpdateIV(std::size_t offset) const;
31}; 31};
32 32
33} // namespace Core::Crypto 33} // namespace Core::Crypto
diff --git a/src/core/crypto/encryption_layer.cpp b/src/core/crypto/encryption_layer.cpp
index 4204527e3..4c377d7d4 100644
--- a/src/core/crypto/encryption_layer.cpp
+++ b/src/core/crypto/encryption_layer.cpp
@@ -12,11 +12,11 @@ std::string EncryptionLayer::GetName() const {
12 return base->GetName(); 12 return base->GetName();
13} 13}
14 14
15size_t EncryptionLayer::GetSize() const { 15std::size_t EncryptionLayer::GetSize() const {
16 return base->GetSize(); 16 return base->GetSize();
17} 17}
18 18
19bool EncryptionLayer::Resize(size_t new_size) { 19bool EncryptionLayer::Resize(std::size_t new_size) {
20 return false; 20 return false;
21} 21}
22 22
@@ -32,7 +32,7 @@ bool EncryptionLayer::IsReadable() const {
32 return true; 32 return true;
33} 33}
34 34
35size_t EncryptionLayer::Write(const u8* data, size_t length, size_t offset) { 35std::size_t EncryptionLayer::Write(const u8* data, std::size_t length, std::size_t offset) {
36 return 0; 36 return 0;
37} 37}
38 38
diff --git a/src/core/crypto/encryption_layer.h b/src/core/crypto/encryption_layer.h
index 7f05af9b4..53619cb38 100644
--- a/src/core/crypto/encryption_layer.h
+++ b/src/core/crypto/encryption_layer.h
@@ -15,15 +15,15 @@ class EncryptionLayer : public FileSys::VfsFile {
15public: 15public:
16 explicit EncryptionLayer(FileSys::VirtualFile base); 16 explicit EncryptionLayer(FileSys::VirtualFile base);
17 17
18 size_t Read(u8* data, size_t length, size_t offset) const override = 0; 18 std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override = 0;
19 19
20 std::string GetName() const override; 20 std::string GetName() const override;
21 size_t GetSize() const override; 21 std::size_t GetSize() const override;
22 bool Resize(size_t new_size) override; 22 bool Resize(std::size_t new_size) override;
23 std::shared_ptr<FileSys::VfsDirectory> GetContainingDirectory() const override; 23 std::shared_ptr<FileSys::VfsDirectory> GetContainingDirectory() const override;
24 bool IsWritable() const override; 24 bool IsWritable() const override;
25 bool IsReadable() const override; 25 bool IsReadable() const override;
26 size_t Write(const u8* data, size_t length, size_t offset) override; 26 std::size_t Write(const u8* data, std::size_t length, std::size_t offset) override;
27 bool Rename(std::string_view name) override; 27 bool Rename(std::string_view name) override;
28 28
29protected: 29protected:
diff --git a/src/core/crypto/key_manager.cpp b/src/core/crypto/key_manager.cpp
index 6f27f990b..bf3a70944 100644
--- a/src/core/crypto/key_manager.cpp
+++ b/src/core/crypto/key_manager.cpp
@@ -54,7 +54,7 @@ boost::optional<Key128> DeriveSDSeed() {
54 return boost::none; 54 return boost::none;
55 55
56 std::array<u8, 0x10> buffer{}; 56 std::array<u8, 0x10> buffer{};
57 size_t offset = 0; 57 std::size_t offset = 0;
58 for (; offset + 0x10 < save_43.GetSize(); ++offset) { 58 for (; offset + 0x10 < save_43.GetSize(); ++offset) {
59 save_43.Seek(offset, SEEK_SET); 59 save_43.Seek(offset, SEEK_SET);
60 save_43.ReadBytes(buffer.data(), buffer.size()); 60 save_43.ReadBytes(buffer.data(), buffer.size());
@@ -105,7 +105,7 @@ Loader::ResultStatus DeriveSDKeys(std::array<Key256, 2>& sd_keys, const KeyManag
105 105
106 // Combine sources and seed 106 // Combine sources and seed
107 for (auto& source : sd_key_sources) { 107 for (auto& source : sd_key_sources) {
108 for (size_t i = 0; i < source.size(); ++i) 108 for (std::size_t i = 0; i < source.size(); ++i)
109 source[i] ^= sd_seed[i & 0xF]; 109 source[i] ^= sd_seed[i & 0xF];
110 } 110 }
111 111
@@ -207,7 +207,7 @@ Key256 KeyManager::GetKey(S256KeyType id, u64 field1, u64 field2) const {
207 return s256_keys.at({id, field1, field2}); 207 return s256_keys.at({id, field1, field2});
208} 208}
209 209
210template <size_t Size> 210template <std::size_t Size>
211void KeyManager::WriteKeyToFile(bool title_key, std::string_view keyname, 211void KeyManager::WriteKeyToFile(bool title_key, std::string_view keyname,
212 const std::array<u8, Size>& key) { 212 const std::array<u8, Size>& key) {
213 const std::string yuzu_keys_dir = FileUtil::GetUserPath(FileUtil::UserPath::KeysDir); 213 const std::string yuzu_keys_dir = FileUtil::GetUserPath(FileUtil::UserPath::KeysDir);
diff --git a/src/core/crypto/key_manager.h b/src/core/crypto/key_manager.h
index ce67913bb..978eec8dc 100644
--- a/src/core/crypto/key_manager.h
+++ b/src/core/crypto/key_manager.h
@@ -108,7 +108,7 @@ private:
108 void LoadFromFile(const std::string& filename, bool is_title_keys); 108 void LoadFromFile(const std::string& filename, bool is_title_keys);
109 void AttemptLoadKeyFile(const std::string& dir1, const std::string& dir2, 109 void AttemptLoadKeyFile(const std::string& dir1, const std::string& dir2,
110 const std::string& filename, bool title); 110 const std::string& filename, bool title);
111 template <size_t Size> 111 template <std::size_t Size>
112 void WriteKeyToFile(bool title_key, std::string_view keyname, const std::array<u8, Size>& key); 112 void WriteKeyToFile(bool title_key, std::string_view keyname, const std::array<u8, Size>& key);
113 113
114 static const boost::container::flat_map<std::string, KeyIndex<S128KeyType>> s128_file_id; 114 static const boost::container::flat_map<std::string, KeyIndex<S128KeyType>> s128_file_id;
diff --git a/src/core/crypto/xts_encryption_layer.cpp b/src/core/crypto/xts_encryption_layer.cpp
index c10832cfe..8f0ba4ee7 100644
--- a/src/core/crypto/xts_encryption_layer.cpp
+++ b/src/core/crypto/xts_encryption_layer.cpp
@@ -14,7 +14,7 @@ constexpr u64 XTS_SECTOR_SIZE = 0x4000;
14XTSEncryptionLayer::XTSEncryptionLayer(FileSys::VirtualFile base_, Key256 key_) 14XTSEncryptionLayer::XTSEncryptionLayer(FileSys::VirtualFile base_, Key256 key_)
15 : EncryptionLayer(std::move(base_)), cipher(key_, Mode::XTS) {} 15 : EncryptionLayer(std::move(base_)), cipher(key_, Mode::XTS) {}
16 16
17size_t XTSEncryptionLayer::Read(u8* data, size_t length, size_t offset) const { 17std::size_t XTSEncryptionLayer::Read(u8* data, std::size_t length, std::size_t offset) const {
18 if (length == 0) 18 if (length == 0)
19 return 0; 19 return 0;
20 20
@@ -46,7 +46,7 @@ size_t XTSEncryptionLayer::Read(u8* data, size_t length, size_t offset) const {
46 block.resize(XTS_SECTOR_SIZE); 46 block.resize(XTS_SECTOR_SIZE);
47 cipher.XTSTranscode(block.data(), block.size(), block.data(), 47 cipher.XTSTranscode(block.data(), block.size(), block.data(),
48 (offset - sector_offset) / XTS_SECTOR_SIZE, XTS_SECTOR_SIZE, Op::Decrypt); 48 (offset - sector_offset) / XTS_SECTOR_SIZE, XTS_SECTOR_SIZE, Op::Decrypt);
49 const size_t read = XTS_SECTOR_SIZE - sector_offset; 49 const std::size_t read = XTS_SECTOR_SIZE - sector_offset;
50 50
51 if (length + sector_offset < XTS_SECTOR_SIZE) { 51 if (length + sector_offset < XTS_SECTOR_SIZE) {
52 std::memcpy(data, block.data() + sector_offset, std::min<u64>(length, read)); 52 std::memcpy(data, block.data() + sector_offset, std::min<u64>(length, read));
diff --git a/src/core/crypto/xts_encryption_layer.h b/src/core/crypto/xts_encryption_layer.h
index 7a1f1dc64..5f8f00fe7 100644
--- a/src/core/crypto/xts_encryption_layer.h
+++ b/src/core/crypto/xts_encryption_layer.h
@@ -15,7 +15,7 @@ class XTSEncryptionLayer : public EncryptionLayer {
15public: 15public:
16 XTSEncryptionLayer(FileSys::VirtualFile base, Key256 key); 16 XTSEncryptionLayer(FileSys::VirtualFile base, Key256 key);
17 17
18 size_t Read(u8* data, size_t length, size_t offset) const override; 18 std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override;
19 19
20private: 20private:
21 // Must be mutable as operations modify cipher contexts. 21 // Must be mutable as operations modify cipher contexts.
diff --git a/src/core/file_sys/card_image.cpp b/src/core/file_sys/card_image.cpp
index 8218893b2..edfc1bbd4 100644
--- a/src/core/file_sys/card_image.cpp
+++ b/src/core/file_sys/card_image.cpp
@@ -41,13 +41,14 @@ XCI::XCI(VirtualFile file_) : file(std::move(file_)), partitions(0x4) {
41 41
42 for (XCIPartition partition : 42 for (XCIPartition partition :
43 {XCIPartition::Update, XCIPartition::Normal, XCIPartition::Secure, XCIPartition::Logo}) { 43 {XCIPartition::Update, XCIPartition::Normal, XCIPartition::Secure, XCIPartition::Logo}) {
44 auto raw = main_hfs.GetFile(partition_names[static_cast<size_t>(partition)]); 44 auto raw = main_hfs.GetFile(partition_names[static_cast<std::size_t>(partition)]);
45 if (raw != nullptr) 45 if (raw != nullptr)
46 partitions[static_cast<size_t>(partition)] = std::make_shared<PartitionFilesystem>(raw); 46 partitions[static_cast<std::size_t>(partition)] =
47 std::make_shared<PartitionFilesystem>(raw);
47 } 48 }
48 49
49 secure_partition = std::make_shared<NSP>( 50 secure_partition = std::make_shared<NSP>(
50 main_hfs.GetFile(partition_names[static_cast<size_t>(XCIPartition::Secure)])); 51 main_hfs.GetFile(partition_names[static_cast<std::size_t>(XCIPartition::Secure)]));
51 52
52 const auto secure_ncas = secure_partition->GetNCAsCollapsed(); 53 const auto secure_ncas = secure_partition->GetNCAsCollapsed();
53 std::copy(secure_ncas.begin(), secure_ncas.end(), std::back_inserter(ncas)); 54 std::copy(secure_ncas.begin(), secure_ncas.end(), std::back_inserter(ncas));
@@ -92,7 +93,7 @@ Loader::ResultStatus XCI::GetProgramNCAStatus() const {
92} 93}
93 94
94VirtualDir XCI::GetPartition(XCIPartition partition) const { 95VirtualDir XCI::GetPartition(XCIPartition partition) const {
95 return partitions[static_cast<size_t>(partition)]; 96 return partitions[static_cast<std::size_t>(partition)];
96} 97}
97 98
98std::shared_ptr<NSP> XCI::GetSecurePartitionNSP() const { 99std::shared_ptr<NSP> XCI::GetSecurePartitionNSP() const {
@@ -168,11 +169,11 @@ bool XCI::ReplaceFileWithSubdirectory(VirtualFile file, VirtualDir dir) {
168} 169}
169 170
170Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) { 171Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) {
171 if (partitions[static_cast<size_t>(part)] == nullptr) { 172 if (partitions[static_cast<std::size_t>(part)] == nullptr) {
172 return Loader::ResultStatus::ErrorXCIMissingPartition; 173 return Loader::ResultStatus::ErrorXCIMissingPartition;
173 } 174 }
174 175
175 for (const VirtualFile& file : partitions[static_cast<size_t>(part)]->GetFiles()) { 176 for (const VirtualFile& file : partitions[static_cast<std::size_t>(part)]->GetFiles()) {
176 if (file->GetExtension() != "nca") 177 if (file->GetExtension() != "nca")
177 continue; 178 continue;
178 auto nca = std::make_shared<NCA>(file); 179 auto nca = std::make_shared<NCA>(file);
@@ -187,7 +188,7 @@ Loader::ResultStatus XCI::AddNCAFromPartition(XCIPartition part) {
187 } else { 188 } else {
188 const u16 error_id = static_cast<u16>(nca->GetStatus()); 189 const u16 error_id = static_cast<u16>(nca->GetStatus());
189 LOG_CRITICAL(Loader, "Could not load NCA {}/{}, failed with error code {:04X} ({})", 190 LOG_CRITICAL(Loader, "Could not load NCA {}/{}, failed with error code {:04X} ({})",
190 partition_names[static_cast<size_t>(part)], nca->GetName(), error_id, 191 partition_names[static_cast<std::size_t>(part)], nca->GetName(), error_id,
191 nca->GetStatus()); 192 nca->GetStatus());
192 } 193 }
193 } 194 }
diff --git a/src/core/file_sys/content_archive.cpp b/src/core/file_sys/content_archive.cpp
index 79bfb6fec..45fc0b574 100644
--- a/src/core/file_sys/content_archive.cpp
+++ b/src/core/file_sys/content_archive.cpp
@@ -298,11 +298,11 @@ NCA::NCA(VirtualFile file_, VirtualFile bktr_base_romfs_, u64 bktr_base_ivfc_off
298 auto section = sections[i]; 298 auto section = sections[i];
299 299
300 if (section.raw.header.filesystem_type == NCASectionFilesystemType::ROMFS) { 300 if (section.raw.header.filesystem_type == NCASectionFilesystemType::ROMFS) {
301 const size_t base_offset = 301 const std::size_t base_offset =
302 header.section_tables[i].media_offset * MEDIA_OFFSET_MULTIPLIER; 302 header.section_tables[i].media_offset * MEDIA_OFFSET_MULTIPLIER;
303 ivfc_offset = section.romfs.ivfc.levels[IVFC_MAX_LEVEL - 1].offset; 303 ivfc_offset = section.romfs.ivfc.levels[IVFC_MAX_LEVEL - 1].offset;
304 const size_t romfs_offset = base_offset + ivfc_offset; 304 const std::size_t romfs_offset = base_offset + ivfc_offset;
305 const size_t romfs_size = section.romfs.ivfc.levels[IVFC_MAX_LEVEL - 1].size; 305 const std::size_t romfs_size = section.romfs.ivfc.levels[IVFC_MAX_LEVEL - 1].size;
306 auto raw = std::make_shared<OffsetVfsFile>(file, romfs_size, romfs_offset); 306 auto raw = std::make_shared<OffsetVfsFile>(file, romfs_size, romfs_offset);
307 auto dec = Decrypt(section, raw, romfs_offset); 307 auto dec = Decrypt(section, raw, romfs_offset);
308 308
diff --git a/src/core/file_sys/directory.h b/src/core/file_sys/directory.h
index 3759e743a..12bb90ec8 100644
--- a/src/core/file_sys/directory.h
+++ b/src/core/file_sys/directory.h
@@ -25,7 +25,7 @@ enum EntryType : u8 {
25struct Entry { 25struct Entry {
26 Entry(std::string_view view, EntryType entry_type, u64 entry_size) 26 Entry(std::string_view view, EntryType entry_type, u64 entry_size)
27 : type{entry_type}, file_size{entry_size} { 27 : type{entry_type}, file_size{entry_size} {
28 const size_t copy_size = view.copy(filename, std::size(filename) - 1); 28 const std::size_t copy_size = view.copy(filename, std::size(filename) - 1);
29 filename[copy_size] = '\0'; 29 filename[copy_size] = '\0';
30 } 30 }
31 31
diff --git a/src/core/file_sys/nca_metadata.cpp b/src/core/file_sys/nca_metadata.cpp
index cdfbc5aaf..479916b69 100644
--- a/src/core/file_sys/nca_metadata.cpp
+++ b/src/core/file_sys/nca_metadata.cpp
@@ -11,11 +11,11 @@
11namespace FileSys { 11namespace FileSys {
12 12
13bool operator>=(TitleType lhs, TitleType rhs) { 13bool operator>=(TitleType lhs, TitleType rhs) {
14 return static_cast<size_t>(lhs) >= static_cast<size_t>(rhs); 14 return static_cast<std::size_t>(lhs) >= static_cast<std::size_t>(rhs);
15} 15}
16 16
17bool operator<=(TitleType lhs, TitleType rhs) { 17bool operator<=(TitleType lhs, TitleType rhs) {
18 return static_cast<size_t>(lhs) <= static_cast<size_t>(rhs); 18 return static_cast<std::size_t>(lhs) <= static_cast<std::size_t>(rhs);
19} 19}
20 20
21CNMT::CNMT(VirtualFile file) { 21CNMT::CNMT(VirtualFile file) {
diff --git a/src/core/file_sys/nca_patch.cpp b/src/core/file_sys/nca_patch.cpp
index 6fc5bd7d8..0090cc6c4 100644
--- a/src/core/file_sys/nca_patch.cpp
+++ b/src/core/file_sys/nca_patch.cpp
@@ -22,11 +22,11 @@ BKTR::BKTR(VirtualFile base_romfs_, VirtualFile bktr_romfs_, RelocationBlock rel
22 base_romfs(std::move(base_romfs_)), bktr_romfs(std::move(bktr_romfs_)), 22 base_romfs(std::move(base_romfs_)), bktr_romfs(std::move(bktr_romfs_)),
23 encrypted(is_encrypted_), key(key_), base_offset(base_offset_), ivfc_offset(ivfc_offset_), 23 encrypted(is_encrypted_), key(key_), base_offset(base_offset_), ivfc_offset(ivfc_offset_),
24 section_ctr(section_ctr_) { 24 section_ctr(section_ctr_) {
25 for (size_t i = 0; i < relocation.number_buckets - 1; ++i) { 25 for (std::size_t i = 0; i < relocation.number_buckets - 1; ++i) {
26 relocation_buckets[i].entries.push_back({relocation.base_offsets[i + 1], 0, 0}); 26 relocation_buckets[i].entries.push_back({relocation.base_offsets[i + 1], 0, 0});
27 } 27 }
28 28
29 for (size_t i = 0; i < subsection.number_buckets - 1; ++i) { 29 for (std::size_t i = 0; i < subsection.number_buckets - 1; ++i) {
30 subsection_buckets[i].entries.push_back({subsection_buckets[i + 1].entries[0].address_patch, 30 subsection_buckets[i].entries.push_back({subsection_buckets[i + 1].entries[0].address_patch,
31 {0}, 31 {0},
32 subsection_buckets[i + 1].entries[0].ctr}); 32 subsection_buckets[i + 1].entries[0].ctr});
@@ -37,7 +37,7 @@ BKTR::BKTR(VirtualFile base_romfs_, VirtualFile bktr_romfs_, RelocationBlock rel
37 37
38BKTR::~BKTR() = default; 38BKTR::~BKTR() = default;
39 39
40size_t BKTR::Read(u8* data, size_t length, size_t offset) const { 40std::size_t BKTR::Read(u8* data, std::size_t length, std::size_t offset) const {
41 // Read out of bounds. 41 // Read out of bounds.
42 if (offset >= relocation.size) 42 if (offset >= relocation.size)
43 return 0; 43 return 0;
@@ -69,14 +69,14 @@ size_t BKTR::Read(u8* data, size_t length, size_t offset) const {
69 std::vector<u8> iv(16); 69 std::vector<u8> iv(16);
70 auto subsection_ctr = subsection.ctr; 70 auto subsection_ctr = subsection.ctr;
71 auto offset_iv = section_offset + base_offset; 71 auto offset_iv = section_offset + base_offset;
72 for (size_t i = 0; i < section_ctr.size(); ++i) 72 for (std::size_t i = 0; i < section_ctr.size(); ++i)
73 iv[i] = section_ctr[0x8 - i - 1]; 73 iv[i] = section_ctr[0x8 - i - 1];
74 offset_iv >>= 4; 74 offset_iv >>= 4;
75 for (size_t i = 0; i < sizeof(u64); ++i) { 75 for (std::size_t i = 0; i < sizeof(u64); ++i) {
76 iv[0xF - i] = static_cast<u8>(offset_iv & 0xFF); 76 iv[0xF - i] = static_cast<u8>(offset_iv & 0xFF);
77 offset_iv >>= 8; 77 offset_iv >>= 8;
78 } 78 }
79 for (size_t i = 0; i < sizeof(u32); ++i) { 79 for (std::size_t i = 0; i < sizeof(u32); ++i) {
80 iv[0x7 - i] = static_cast<u8>(subsection_ctr & 0xFF); 80 iv[0x7 - i] = static_cast<u8>(subsection_ctr & 0xFF);
81 subsection_ctr >>= 8; 81 subsection_ctr >>= 8;
82 } 82 }
@@ -110,8 +110,8 @@ size_t BKTR::Read(u8* data, size_t length, size_t offset) const {
110} 110}
111 111
112template <bool Subsection, typename BlockType, typename BucketType> 112template <bool Subsection, typename BlockType, typename BucketType>
113std::pair<size_t, size_t> BKTR::SearchBucketEntry(u64 offset, BlockType block, 113std::pair<std::size_t, std::size_t> BKTR::SearchBucketEntry(u64 offset, BlockType block,
114 BucketType buckets) const { 114 BucketType buckets) const {
115 if constexpr (Subsection) { 115 if constexpr (Subsection) {
116 const auto last_bucket = buckets[block.number_buckets - 1]; 116 const auto last_bucket = buckets[block.number_buckets - 1];
117 if (offset >= last_bucket.entries[last_bucket.number_entries].address_patch) 117 if (offset >= last_bucket.entries[last_bucket.number_entries].address_patch)
@@ -120,18 +120,18 @@ std::pair<size_t, size_t> BKTR::SearchBucketEntry(u64 offset, BlockType block,
120 ASSERT_MSG(offset <= block.size, "Offset is out of bounds in BKTR relocation block."); 120 ASSERT_MSG(offset <= block.size, "Offset is out of bounds in BKTR relocation block.");
121 } 121 }
122 122
123 size_t bucket_id = std::count_if(block.base_offsets.begin() + 1, 123 std::size_t bucket_id = std::count_if(
124 block.base_offsets.begin() + block.number_buckets, 124 block.base_offsets.begin() + 1, block.base_offsets.begin() + block.number_buckets,
125 [&offset](u64 base_offset) { return base_offset <= offset; }); 125 [&offset](u64 base_offset) { return base_offset <= offset; });
126 126
127 const auto bucket = buckets[bucket_id]; 127 const auto bucket = buckets[bucket_id];
128 128
129 if (bucket.number_entries == 1) 129 if (bucket.number_entries == 1)
130 return {bucket_id, 0}; 130 return {bucket_id, 0};
131 131
132 size_t low = 0; 132 std::size_t low = 0;
133 size_t mid = 0; 133 std::size_t mid = 0;
134 size_t high = bucket.number_entries - 1; 134 std::size_t high = bucket.number_entries - 1;
135 while (low <= high) { 135 while (low <= high) {
136 mid = (low + high) / 2; 136 mid = (low + high) / 2;
137 if (bucket.entries[mid].address_patch > offset) { 137 if (bucket.entries[mid].address_patch > offset) {
@@ -179,11 +179,11 @@ std::string BKTR::GetName() const {
179 return base_romfs->GetName(); 179 return base_romfs->GetName();
180} 180}
181 181
182size_t BKTR::GetSize() const { 182std::size_t BKTR::GetSize() const {
183 return relocation.size; 183 return relocation.size;
184} 184}
185 185
186bool BKTR::Resize(size_t new_size) { 186bool BKTR::Resize(std::size_t new_size) {
187 return false; 187 return false;
188} 188}
189 189
@@ -199,7 +199,7 @@ bool BKTR::IsReadable() const {
199 return true; 199 return true;
200} 200}
201 201
202size_t BKTR::Write(const u8* data, size_t length, size_t offset) { 202std::size_t BKTR::Write(const u8* data, std::size_t length, std::size_t offset) {
203 return 0; 203 return 0;
204} 204}
205 205
diff --git a/src/core/file_sys/nca_patch.h b/src/core/file_sys/nca_patch.h
index 381f3504f..8e64e8378 100644
--- a/src/core/file_sys/nca_patch.h
+++ b/src/core/file_sys/nca_patch.h
@@ -98,13 +98,13 @@ public:
98 Core::Crypto::Key128 key, u64 base_offset, u64 ivfc_offset, std::array<u8, 8> section_ctr); 98 Core::Crypto::Key128 key, u64 base_offset, u64 ivfc_offset, std::array<u8, 8> section_ctr);
99 ~BKTR() override; 99 ~BKTR() override;
100 100
101 size_t Read(u8* data, size_t length, size_t offset) const override; 101 std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override;
102 102
103 std::string GetName() const override; 103 std::string GetName() const override;
104 104
105 size_t GetSize() const override; 105 std::size_t GetSize() const override;
106 106
107 bool Resize(size_t new_size) override; 107 bool Resize(std::size_t new_size) override;
108 108
109 std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; 109 std::shared_ptr<VfsDirectory> GetContainingDirectory() const override;
110 110
@@ -112,14 +112,14 @@ public:
112 112
113 bool IsReadable() const override; 113 bool IsReadable() const override;
114 114
115 size_t Write(const u8* data, size_t length, size_t offset) override; 115 std::size_t Write(const u8* data, std::size_t length, std::size_t offset) override;
116 116
117 bool Rename(std::string_view name) override; 117 bool Rename(std::string_view name) override;
118 118
119private: 119private:
120 template <bool Subsection, typename BlockType, typename BucketType> 120 template <bool Subsection, typename BlockType, typename BucketType>
121 std::pair<size_t, size_t> SearchBucketEntry(u64 offset, BlockType block, 121 std::pair<std::size_t, std::size_t> SearchBucketEntry(u64 offset, BlockType block,
122 BucketType buckets) const; 122 BucketType buckets) const;
123 123
124 RelocationEntry GetRelocationEntry(u64 offset) const; 124 RelocationEntry GetRelocationEntry(u64 offset) const;
125 RelocationEntry GetNextRelocationEntry(u64 offset) const; 125 RelocationEntry GetNextRelocationEntry(u64 offset) const;
diff --git a/src/core/file_sys/partition_filesystem.cpp b/src/core/file_sys/partition_filesystem.cpp
index c377edc9c..f5b3b0175 100644
--- a/src/core/file_sys/partition_filesystem.cpp
+++ b/src/core/file_sys/partition_filesystem.cpp
@@ -42,21 +42,21 @@ PartitionFilesystem::PartitionFilesystem(std::shared_ptr<VfsFile> file) {
42 42
43 is_hfs = pfs_header.magic == Common::MakeMagic('H', 'F', 'S', '0'); 43 is_hfs = pfs_header.magic == Common::MakeMagic('H', 'F', 'S', '0');
44 44
45 size_t entry_size = is_hfs ? sizeof(HFSEntry) : sizeof(PFSEntry); 45 std::size_t entry_size = is_hfs ? sizeof(HFSEntry) : sizeof(PFSEntry);
46 size_t metadata_size = 46 std::size_t metadata_size =
47 sizeof(Header) + (pfs_header.num_entries * entry_size) + pfs_header.strtab_size; 47 sizeof(Header) + (pfs_header.num_entries * entry_size) + pfs_header.strtab_size;
48 48
49 // Actually read in now... 49 // Actually read in now...
50 std::vector<u8> file_data = file->ReadBytes(metadata_size); 50 std::vector<u8> file_data = file->ReadBytes(metadata_size);
51 const size_t total_size = file_data.size(); 51 const std::size_t total_size = file_data.size();
52 52
53 if (total_size != metadata_size) { 53 if (total_size != metadata_size) {
54 status = Loader::ResultStatus::ErrorIncorrectPFSFileSize; 54 status = Loader::ResultStatus::ErrorIncorrectPFSFileSize;
55 return; 55 return;
56 } 56 }
57 57
58 size_t entries_offset = sizeof(Header); 58 std::size_t entries_offset = sizeof(Header);
59 size_t strtab_offset = entries_offset + (pfs_header.num_entries * entry_size); 59 std::size_t strtab_offset = entries_offset + (pfs_header.num_entries * entry_size);
60 content_offset = strtab_offset + pfs_header.strtab_size; 60 content_offset = strtab_offset + pfs_header.strtab_size;
61 for (u16 i = 0; i < pfs_header.num_entries; i++) { 61 for (u16 i = 0; i < pfs_header.num_entries; i++) {
62 FSEntry entry; 62 FSEntry entry;
diff --git a/src/core/file_sys/partition_filesystem.h b/src/core/file_sys/partition_filesystem.h
index be7bc32a8..e80d2456b 100644
--- a/src/core/file_sys/partition_filesystem.h
+++ b/src/core/file_sys/partition_filesystem.h
@@ -79,7 +79,7 @@ private:
79 79
80 Header pfs_header{}; 80 Header pfs_header{};
81 bool is_hfs = false; 81 bool is_hfs = false;
82 size_t content_offset = 0; 82 std::size_t content_offset = 0;
83 83
84 std::vector<VirtualFile> pfs_files; 84 std::vector<VirtualFile> pfs_files;
85 std::vector<VirtualDir> pfs_dirs; 85 std::vector<VirtualDir> pfs_dirs;
diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp
index 6cecab336..b37b4c68b 100644
--- a/src/core/file_sys/patch_manager.cpp
+++ b/src/core/file_sys/patch_manager.cpp
@@ -21,7 +21,7 @@ constexpr u64 SINGLE_BYTE_MODULUS = 0x100;
21std::string FormatTitleVersion(u32 version, TitleVersionFormat format) { 21std::string FormatTitleVersion(u32 version, TitleVersionFormat format) {
22 std::array<u8, sizeof(u32)> bytes{}; 22 std::array<u8, sizeof(u32)> bytes{};
23 bytes[0] = version % SINGLE_BYTE_MODULUS; 23 bytes[0] = version % SINGLE_BYTE_MODULUS;
24 for (size_t i = 1; i < bytes.size(); ++i) { 24 for (std::size_t i = 1; i < bytes.size(); ++i) {
25 version /= SINGLE_BYTE_MODULUS; 25 version /= SINGLE_BYTE_MODULUS;
26 bytes[i] = version % SINGLE_BYTE_MODULUS; 26 bytes[i] = version % SINGLE_BYTE_MODULUS;
27 } 27 }
@@ -36,7 +36,7 @@ constexpr std::array<const char*, 1> PATCH_TYPE_NAMES{
36}; 36};
37 37
38std::string FormatPatchTypeName(PatchType type) { 38std::string FormatPatchTypeName(PatchType type) {
39 return PATCH_TYPE_NAMES.at(static_cast<size_t>(type)); 39 return PATCH_TYPE_NAMES.at(static_cast<std::size_t>(type));
40} 40}
41 41
42PatchManager::PatchManager(u64 title_id) : title_id(title_id) {} 42PatchManager::PatchManager(u64 title_id) : title_id(title_id) {}
diff --git a/src/core/file_sys/program_metadata.cpp b/src/core/file_sys/program_metadata.cpp
index ccb685526..9d19aaa6d 100644
--- a/src/core/file_sys/program_metadata.cpp
+++ b/src/core/file_sys/program_metadata.cpp
@@ -13,7 +13,7 @@
13namespace FileSys { 13namespace FileSys {
14 14
15Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) { 15Loader::ResultStatus ProgramMetadata::Load(VirtualFile file) {
16 size_t total_size = static_cast<size_t>(file->GetSize()); 16 std::size_t total_size = static_cast<std::size_t>(file->GetSize());
17 if (total_size < sizeof(Header)) 17 if (total_size < sizeof(Header))
18 return Loader::ResultStatus::ErrorBadNPDMHeader; 18 return Loader::ResultStatus::ErrorBadNPDMHeader;
19 19
diff --git a/src/core/file_sys/registered_cache.cpp b/src/core/file_sys/registered_cache.cpp
index 7361a67be..dad7ae10b 100644
--- a/src/core/file_sys/registered_cache.cpp
+++ b/src/core/file_sys/registered_cache.cpp
@@ -62,11 +62,11 @@ static std::string GetCNMTName(TitleType type, u64 title_id) {
62 "" ///< Currently unknown 'DeltaTitle' 62 "" ///< Currently unknown 'DeltaTitle'
63 }; 63 };
64 64
65 auto index = static_cast<size_t>(type); 65 auto index = static_cast<std::size_t>(type);
66 // If the index is after the jump in TitleType, subtract it out. 66 // If the index is after the jump in TitleType, subtract it out.
67 if (index >= static_cast<size_t>(TitleType::Application)) { 67 if (index >= static_cast<std::size_t>(TitleType::Application)) {
68 index -= static_cast<size_t>(TitleType::Application) - 68 index -= static_cast<std::size_t>(TitleType::Application) -
69 static_cast<size_t>(TitleType::FirmwarePackageB); 69 static_cast<std::size_t>(TitleType::FirmwarePackageB);
70 } 70 }
71 return fmt::format("{}_{:016x}.cnmt", TITLE_TYPE_NAMES[index], title_id); 71 return fmt::format("{}_{:016x}.cnmt", TITLE_TYPE_NAMES[index], title_id);
72} 72}
@@ -105,7 +105,7 @@ VirtualFile RegisteredCache::OpenFileOrDirectoryConcat(const VirtualDir& dir,
105 } else { 105 } else {
106 std::vector<VirtualFile> concat; 106 std::vector<VirtualFile> concat;
107 // Since the files are a two-digit hex number, max is FF. 107 // Since the files are a two-digit hex number, max is FF.
108 for (size_t i = 0; i < 0x100; ++i) { 108 for (std::size_t i = 0; i < 0x100; ++i) {
109 auto next = nca_dir->GetFile(fmt::format("{:02X}", i)); 109 auto next = nca_dir->GetFile(fmt::format("{:02X}", i));
110 if (next != nullptr) { 110 if (next != nullptr) {
111 concat.push_back(std::move(next)); 111 concat.push_back(std::move(next));
diff --git a/src/core/file_sys/romfs.cpp b/src/core/file_sys/romfs.cpp
index e490c8ace..9f6e41cdf 100644
--- a/src/core/file_sys/romfs.cpp
+++ b/src/core/file_sys/romfs.cpp
@@ -49,7 +49,7 @@ struct FileEntry {
49static_assert(sizeof(FileEntry) == 0x20, "FileEntry has incorrect size."); 49static_assert(sizeof(FileEntry) == 0x20, "FileEntry has incorrect size.");
50 50
51template <typename Entry> 51template <typename Entry>
52static std::pair<Entry, std::string> GetEntry(const VirtualFile& file, size_t offset) { 52static std::pair<Entry, std::string> GetEntry(const VirtualFile& file, std::size_t offset) {
53 Entry entry{}; 53 Entry entry{};
54 if (file->ReadObject(&entry, offset) != sizeof(Entry)) 54 if (file->ReadObject(&entry, offset) != sizeof(Entry))
55 return {}; 55 return {};
@@ -59,8 +59,8 @@ static std::pair<Entry, std::string> GetEntry(const VirtualFile& file, size_t of
59 return {entry, string}; 59 return {entry, string};
60} 60}
61 61
62void ProcessFile(VirtualFile file, size_t file_offset, size_t data_offset, u32 this_file_offset, 62void ProcessFile(VirtualFile file, std::size_t file_offset, std::size_t data_offset,
63 std::shared_ptr<VectorVfsDirectory> parent) { 63 u32 this_file_offset, std::shared_ptr<VectorVfsDirectory> parent) {
64 while (true) { 64 while (true) {
65 auto entry = GetEntry<FileEntry>(file, file_offset + this_file_offset); 65 auto entry = GetEntry<FileEntry>(file, file_offset + this_file_offset);
66 66
@@ -74,8 +74,9 @@ void ProcessFile(VirtualFile file, size_t file_offset, size_t data_offset, u32 t
74 } 74 }
75} 75}
76 76
77void ProcessDirectory(VirtualFile file, size_t dir_offset, size_t file_offset, size_t data_offset, 77void ProcessDirectory(VirtualFile file, std::size_t dir_offset, std::size_t file_offset,
78 u32 this_dir_offset, std::shared_ptr<VectorVfsDirectory> parent) { 78 std::size_t data_offset, u32 this_dir_offset,
79 std::shared_ptr<VectorVfsDirectory> parent) {
79 while (true) { 80 while (true) {
80 auto entry = GetEntry<DirectoryEntry>(file, dir_offset + this_dir_offset); 81 auto entry = GetEntry<DirectoryEntry>(file, dir_offset + this_dir_offset);
81 auto current = std::make_shared<VectorVfsDirectory>( 82 auto current = std::make_shared<VectorVfsDirectory>(
diff --git a/src/core/file_sys/vfs.cpp b/src/core/file_sys/vfs.cpp
index 146c839f4..d7b52abfd 100644
--- a/src/core/file_sys/vfs.cpp
+++ b/src/core/file_sys/vfs.cpp
@@ -167,18 +167,18 @@ std::string VfsFile::GetExtension() const {
167 167
168VfsDirectory::~VfsDirectory() = default; 168VfsDirectory::~VfsDirectory() = default;
169 169
170boost::optional<u8> VfsFile::ReadByte(size_t offset) const { 170boost::optional<u8> VfsFile::ReadByte(std::size_t offset) const {
171 u8 out{}; 171 u8 out{};
172 size_t size = Read(&out, 1, offset); 172 std::size_t size = Read(&out, 1, offset);
173 if (size == 1) 173 if (size == 1)
174 return out; 174 return out;
175 175
176 return boost::none; 176 return boost::none;
177} 177}
178 178
179std::vector<u8> VfsFile::ReadBytes(size_t size, size_t offset) const { 179std::vector<u8> VfsFile::ReadBytes(std::size_t size, std::size_t offset) const {
180 std::vector<u8> out(size); 180 std::vector<u8> out(size);
181 size_t read_size = Read(out.data(), size, offset); 181 std::size_t read_size = Read(out.data(), size, offset);
182 out.resize(read_size); 182 out.resize(read_size);
183 return out; 183 return out;
184} 184}
@@ -187,11 +187,11 @@ std::vector<u8> VfsFile::ReadAllBytes() const {
187 return ReadBytes(GetSize()); 187 return ReadBytes(GetSize());
188} 188}
189 189
190bool VfsFile::WriteByte(u8 data, size_t offset) { 190bool VfsFile::WriteByte(u8 data, std::size_t offset) {
191 return Write(&data, 1, offset) == 1; 191 return Write(&data, 1, offset) == 1;
192} 192}
193 193
194size_t VfsFile::WriteBytes(const std::vector<u8>& data, size_t offset) { 194std::size_t VfsFile::WriteBytes(const std::vector<u8>& data, std::size_t offset) {
195 return Write(data.data(), data.size(), offset); 195 return Write(data.data(), data.size(), offset);
196} 196}
197 197
@@ -215,7 +215,7 @@ std::shared_ptr<VfsFile> VfsDirectory::GetFileRelative(std::string_view path) co
215 } 215 }
216 216
217 auto dir = GetSubdirectory(vec[0]); 217 auto dir = GetSubdirectory(vec[0]);
218 for (size_t component = 1; component < vec.size() - 1; ++component) { 218 for (std::size_t component = 1; component < vec.size() - 1; ++component) {
219 if (dir == nullptr) { 219 if (dir == nullptr) {
220 return nullptr; 220 return nullptr;
221 } 221 }
@@ -249,7 +249,7 @@ std::shared_ptr<VfsDirectory> VfsDirectory::GetDirectoryRelative(std::string_vie
249 } 249 }
250 250
251 auto dir = GetSubdirectory(vec[0]); 251 auto dir = GetSubdirectory(vec[0]);
252 for (size_t component = 1; component < vec.size(); ++component) { 252 for (std::size_t component = 1; component < vec.size(); ++component) {
253 if (dir == nullptr) { 253 if (dir == nullptr) {
254 return nullptr; 254 return nullptr;
255 } 255 }
@@ -286,7 +286,7 @@ bool VfsDirectory::IsRoot() const {
286 return GetParentDirectory() == nullptr; 286 return GetParentDirectory() == nullptr;
287} 287}
288 288
289size_t VfsDirectory::GetSize() const { 289std::size_t VfsDirectory::GetSize() const {
290 const auto& files = GetFiles(); 290 const auto& files = GetFiles();
291 const auto sum_sizes = [](const auto& range) { 291 const auto sum_sizes = [](const auto& range) {
292 return std::accumulate(range.begin(), range.end(), 0ULL, 292 return std::accumulate(range.begin(), range.end(), 0ULL,
@@ -434,13 +434,13 @@ bool ReadOnlyVfsDirectory::Rename(std::string_view name) {
434 return false; 434 return false;
435} 435}
436 436
437bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, size_t block_size) { 437bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, std::size_t block_size) {
438 if (file1->GetSize() != file2->GetSize()) 438 if (file1->GetSize() != file2->GetSize())
439 return false; 439 return false;
440 440
441 std::vector<u8> f1_v(block_size); 441 std::vector<u8> f1_v(block_size);
442 std::vector<u8> f2_v(block_size); 442 std::vector<u8> f2_v(block_size);
443 for (size_t i = 0; i < file1->GetSize(); i += block_size) { 443 for (std::size_t i = 0; i < file1->GetSize(); i += block_size) {
444 auto f1_vs = file1->Read(f1_v.data(), block_size, i); 444 auto f1_vs = file1->Read(f1_v.data(), block_size, i);
445 auto f2_vs = file2->Read(f2_v.data(), block_size, i); 445 auto f2_vs = file2->Read(f2_v.data(), block_size, i);
446 446
diff --git a/src/core/file_sys/vfs.h b/src/core/file_sys/vfs.h
index 5142a3e86..74489b452 100644
--- a/src/core/file_sys/vfs.h
+++ b/src/core/file_sys/vfs.h
@@ -92,9 +92,9 @@ public:
92 // Retrieves the extension of the file name. 92 // Retrieves the extension of the file name.
93 virtual std::string GetExtension() const; 93 virtual std::string GetExtension() const;
94 // Retrieves the size of the file. 94 // Retrieves the size of the file.
95 virtual size_t GetSize() const = 0; 95 virtual std::size_t GetSize() const = 0;
96 // Resizes the file to new_size. Returns whether or not the operation was successful. 96 // Resizes the file to new_size. Returns whether or not the operation was successful.
97 virtual bool Resize(size_t new_size) = 0; 97 virtual bool Resize(std::size_t new_size) = 0;
98 // Gets a pointer to the directory containing this file, returning nullptr if there is none. 98 // Gets a pointer to the directory containing this file, returning nullptr if there is none.
99 virtual std::shared_ptr<VfsDirectory> GetContainingDirectory() const = 0; 99 virtual std::shared_ptr<VfsDirectory> GetContainingDirectory() const = 0;
100 100
@@ -105,15 +105,15 @@ public:
105 105
106 // The primary method of reading from the file. Reads length bytes into data starting at offset 106 // The primary method of reading from the file. Reads length bytes into data starting at offset
107 // into file. Returns number of bytes successfully read. 107 // into file. Returns number of bytes successfully read.
108 virtual size_t Read(u8* data, size_t length, size_t offset = 0) const = 0; 108 virtual std::size_t Read(u8* data, std::size_t length, std::size_t offset = 0) const = 0;
109 // The primary method of writing to the file. Writes length bytes from data starting at offset 109 // The primary method of writing to the file. Writes length bytes from data starting at offset
110 // into file. Returns number of bytes successfully written. 110 // into file. Returns number of bytes successfully written.
111 virtual size_t Write(const u8* data, size_t length, size_t offset = 0) = 0; 111 virtual std::size_t Write(const u8* data, std::size_t length, std::size_t offset = 0) = 0;
112 112
113 // Reads exactly one byte at the offset provided, returning boost::none on error. 113 // Reads exactly one byte at the offset provided, returning boost::none on error.
114 virtual boost::optional<u8> ReadByte(size_t offset = 0) const; 114 virtual boost::optional<u8> ReadByte(std::size_t offset = 0) const;
115 // Reads size bytes starting at offset in file into a vector. 115 // Reads size bytes starting at offset in file into a vector.
116 virtual std::vector<u8> ReadBytes(size_t size, size_t offset = 0) const; 116 virtual std::vector<u8> ReadBytes(std::size_t size, std::size_t offset = 0) const;
117 // Reads all the bytes from the file into a vector. Equivalent to 'file->Read(file->GetSize(), 117 // Reads all the bytes from the file into a vector. Equivalent to 'file->Read(file->GetSize(),
118 // 0)' 118 // 0)'
119 virtual std::vector<u8> ReadAllBytes() const; 119 virtual std::vector<u8> ReadAllBytes() const;
@@ -121,7 +121,7 @@ public:
121 // Reads an array of type T, size number_elements starting at offset. 121 // Reads an array of type T, size number_elements starting at offset.
122 // Returns the number of bytes (sizeof(T)*number_elements) read successfully. 122 // Returns the number of bytes (sizeof(T)*number_elements) read successfully.
123 template <typename T> 123 template <typename T>
124 size_t ReadArray(T* data, size_t number_elements, size_t offset = 0) const { 124 std::size_t ReadArray(T* data, std::size_t number_elements, std::size_t offset = 0) const {
125 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); 125 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
126 126
127 return Read(reinterpret_cast<u8*>(data), number_elements * sizeof(T), offset); 127 return Read(reinterpret_cast<u8*>(data), number_elements * sizeof(T), offset);
@@ -130,7 +130,7 @@ public:
130 // Reads size bytes into the memory starting at data starting at offset into the file. 130 // Reads size bytes into the memory starting at data starting at offset into the file.
131 // Returns the number of bytes read successfully. 131 // Returns the number of bytes read successfully.
132 template <typename T> 132 template <typename T>
133 size_t ReadBytes(T* data, size_t size, size_t offset = 0) const { 133 std::size_t ReadBytes(T* data, std::size_t size, std::size_t offset = 0) const {
134 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); 134 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
135 return Read(reinterpret_cast<u8*>(data), size, offset); 135 return Read(reinterpret_cast<u8*>(data), size, offset);
136 } 136 }
@@ -138,22 +138,22 @@ public:
138 // Reads one object of type T starting at offset in file. 138 // Reads one object of type T starting at offset in file.
139 // Returns the number of bytes read successfully (sizeof(T)). 139 // Returns the number of bytes read successfully (sizeof(T)).
140 template <typename T> 140 template <typename T>
141 size_t ReadObject(T* data, size_t offset = 0) const { 141 std::size_t ReadObject(T* data, std::size_t offset = 0) const {
142 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); 142 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
143 return Read(reinterpret_cast<u8*>(data), sizeof(T), offset); 143 return Read(reinterpret_cast<u8*>(data), sizeof(T), offset);
144 } 144 }
145 145
146 // Writes exactly one byte to offset in file and retuns whether or not the byte was written 146 // Writes exactly one byte to offset in file and retuns whether or not the byte was written
147 // successfully. 147 // successfully.
148 virtual bool WriteByte(u8 data, size_t offset = 0); 148 virtual bool WriteByte(u8 data, std::size_t offset = 0);
149 // Writes a vector of bytes to offset in file and returns the number of bytes successfully 149 // Writes a vector of bytes to offset in file and returns the number of bytes successfully
150 // written. 150 // written.
151 virtual size_t WriteBytes(const std::vector<u8>& data, size_t offset = 0); 151 virtual std::size_t WriteBytes(const std::vector<u8>& data, std::size_t offset = 0);
152 152
153 // Writes an array of type T, size number_elements to offset in file. 153 // Writes an array of type T, size number_elements to offset in file.
154 // Returns the number of bytes (sizeof(T)*number_elements) written successfully. 154 // Returns the number of bytes (sizeof(T)*number_elements) written successfully.
155 template <typename T> 155 template <typename T>
156 size_t WriteArray(const T* data, size_t number_elements, size_t offset = 0) { 156 std::size_t WriteArray(const T* data, std::size_t number_elements, std::size_t offset = 0) {
157 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); 157 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
158 return Write(data, number_elements * sizeof(T), offset); 158 return Write(data, number_elements * sizeof(T), offset);
159 } 159 }
@@ -161,7 +161,7 @@ public:
161 // Writes size bytes starting at memory location data to offset in file. 161 // Writes size bytes starting at memory location data to offset in file.
162 // Returns the number of bytes written successfully. 162 // Returns the number of bytes written successfully.
163 template <typename T> 163 template <typename T>
164 size_t WriteBytes(const T* data, size_t size, size_t offset = 0) { 164 std::size_t WriteBytes(const T* data, std::size_t size, std::size_t offset = 0) {
165 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); 165 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
166 return Write(reinterpret_cast<const u8*>(data), size, offset); 166 return Write(reinterpret_cast<const u8*>(data), size, offset);
167 } 167 }
@@ -169,7 +169,7 @@ public:
169 // Writes one object of type T to offset in file. 169 // Writes one object of type T to offset in file.
170 // Returns the number of bytes written successfully (sizeof(T)). 170 // Returns the number of bytes written successfully (sizeof(T)).
171 template <typename T> 171 template <typename T>
172 size_t WriteObject(const T& data, size_t offset = 0) { 172 std::size_t WriteObject(const T& data, std::size_t offset = 0) {
173 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable."); 173 static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
174 return Write(&data, sizeof(T), offset); 174 return Write(&data, sizeof(T), offset);
175 } 175 }
@@ -221,7 +221,7 @@ public:
221 // Returns the name of the directory. 221 // Returns the name of the directory.
222 virtual std::string GetName() const = 0; 222 virtual std::string GetName() const = 0;
223 // Returns the total size of all files and subdirectories in this directory. 223 // Returns the total size of all files and subdirectories in this directory.
224 virtual size_t GetSize() const; 224 virtual std::size_t GetSize() const;
225 // Returns the parent directory of this directory. Returns nullptr if this directory is root or 225 // Returns the parent directory of this directory. Returns nullptr if this directory is root or
226 // has no parent. 226 // has no parent.
227 virtual std::shared_ptr<VfsDirectory> GetParentDirectory() const = 0; 227 virtual std::shared_ptr<VfsDirectory> GetParentDirectory() const = 0;
@@ -311,7 +311,7 @@ public:
311}; 311};
312 312
313// Compare the two files, byte-for-byte, in increments specificed by block_size 313// Compare the two files, byte-for-byte, in increments specificed by block_size
314bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, size_t block_size = 0x200); 314bool DeepEquals(const VirtualFile& file1, const VirtualFile& file2, std::size_t block_size = 0x200);
315 315
316// A method that copies the raw data between two different implementations of VirtualFile. If you 316// A method that copies the raw data between two different implementations of VirtualFile. If you
317// are using the same implementation, it is probably better to use the Copy method in the parent 317// are using the same implementation, it is probably better to use the Copy method in the parent
diff --git a/src/core/file_sys/vfs_concat.cpp b/src/core/file_sys/vfs_concat.cpp
index e6bf586a3..25a980cbb 100644
--- a/src/core/file_sys/vfs_concat.cpp
+++ b/src/core/file_sys/vfs_concat.cpp
@@ -20,7 +20,7 @@ VirtualFile ConcatenateFiles(std::vector<VirtualFile> files, std::string name) {
20 20
21ConcatenatedVfsFile::ConcatenatedVfsFile(std::vector<VirtualFile> files_, std::string name) 21ConcatenatedVfsFile::ConcatenatedVfsFile(std::vector<VirtualFile> files_, std::string name)
22 : name(std::move(name)) { 22 : name(std::move(name)) {
23 size_t next_offset = 0; 23 std::size_t next_offset = 0;
24 for (const auto& file : files_) { 24 for (const auto& file : files_) {
25 files[next_offset] = file; 25 files[next_offset] = file;
26 next_offset += file->GetSize(); 26 next_offset += file->GetSize();
@@ -35,13 +35,13 @@ std::string ConcatenatedVfsFile::GetName() const {
35 return files.begin()->second->GetName(); 35 return files.begin()->second->GetName();
36} 36}
37 37
38size_t ConcatenatedVfsFile::GetSize() const { 38std::size_t ConcatenatedVfsFile::GetSize() const {
39 if (files.empty()) 39 if (files.empty())
40 return 0; 40 return 0;
41 return files.rbegin()->first + files.rbegin()->second->GetSize(); 41 return files.rbegin()->first + files.rbegin()->second->GetSize();
42} 42}
43 43
44bool ConcatenatedVfsFile::Resize(size_t new_size) { 44bool ConcatenatedVfsFile::Resize(std::size_t new_size) {
45 return false; 45 return false;
46} 46}
47 47
@@ -59,7 +59,7 @@ bool ConcatenatedVfsFile::IsReadable() const {
59 return true; 59 return true;
60} 60}
61 61
62size_t ConcatenatedVfsFile::Read(u8* data, size_t length, size_t offset) const { 62std::size_t ConcatenatedVfsFile::Read(u8* data, std::size_t length, std::size_t offset) const {
63 auto entry = files.end(); 63 auto entry = files.end();
64 for (auto iter = files.begin(); iter != files.end(); ++iter) { 64 for (auto iter = files.begin(); iter != files.end(); ++iter) {
65 if (iter->first > offset) { 65 if (iter->first > offset) {
@@ -84,7 +84,7 @@ size_t ConcatenatedVfsFile::Read(u8* data, size_t length, size_t offset) const {
84 return entry->second->Read(data, length, offset - entry->first); 84 return entry->second->Read(data, length, offset - entry->first);
85} 85}
86 86
87size_t ConcatenatedVfsFile::Write(const u8* data, size_t length, size_t offset) { 87std::size_t ConcatenatedVfsFile::Write(const u8* data, std::size_t length, std::size_t offset) {
88 return 0; 88 return 0;
89} 89}
90 90
diff --git a/src/core/file_sys/vfs_concat.h b/src/core/file_sys/vfs_concat.h
index 686d32515..31775db7e 100644
--- a/src/core/file_sys/vfs_concat.h
+++ b/src/core/file_sys/vfs_concat.h
@@ -23,13 +23,13 @@ class ConcatenatedVfsFile : public VfsFile {
23 23
24public: 24public:
25 std::string GetName() const override; 25 std::string GetName() const override;
26 size_t GetSize() const override; 26 std::size_t GetSize() const override;
27 bool Resize(size_t new_size) override; 27 bool Resize(std::size_t new_size) override;
28 std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; 28 std::shared_ptr<VfsDirectory> GetContainingDirectory() const override;
29 bool IsWritable() const override; 29 bool IsWritable() const override;
30 bool IsReadable() const override; 30 bool IsReadable() const override;
31 size_t Read(u8* data, size_t length, size_t offset) const override; 31 std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override;
32 size_t Write(const u8* data, size_t length, size_t offset) override; 32 std::size_t Write(const u8* data, std::size_t length, std::size_t offset) override;
33 bool Rename(std::string_view name) override; 33 bool Rename(std::string_view name) override;
34 34
35private: 35private:
diff --git a/src/core/file_sys/vfs_offset.cpp b/src/core/file_sys/vfs_offset.cpp
index 847cde2f5..f5ed291ea 100644
--- a/src/core/file_sys/vfs_offset.cpp
+++ b/src/core/file_sys/vfs_offset.cpp
@@ -9,7 +9,7 @@
9 9
10namespace FileSys { 10namespace FileSys {
11 11
12OffsetVfsFile::OffsetVfsFile(std::shared_ptr<VfsFile> file_, size_t size_, size_t offset_, 12OffsetVfsFile::OffsetVfsFile(std::shared_ptr<VfsFile> file_, std::size_t size_, std::size_t offset_,
13 std::string name_, VirtualDir parent_) 13 std::string name_, VirtualDir parent_)
14 : file(file_), offset(offset_), size(size_), name(std::move(name_)), 14 : file(file_), offset(offset_), size(size_), name(std::move(name_)),
15 parent(parent_ == nullptr ? file->GetContainingDirectory() : std::move(parent_)) {} 15 parent(parent_ == nullptr ? file->GetContainingDirectory() : std::move(parent_)) {}
@@ -18,11 +18,11 @@ std::string OffsetVfsFile::GetName() const {
18 return name.empty() ? file->GetName() : name; 18 return name.empty() ? file->GetName() : name;
19} 19}
20 20
21size_t OffsetVfsFile::GetSize() const { 21std::size_t OffsetVfsFile::GetSize() const {
22 return size; 22 return size;
23} 23}
24 24
25bool OffsetVfsFile::Resize(size_t new_size) { 25bool OffsetVfsFile::Resize(std::size_t new_size) {
26 if (offset + new_size < file->GetSize()) { 26 if (offset + new_size < file->GetSize()) {
27 size = new_size; 27 size = new_size;
28 } else { 28 } else {
@@ -47,22 +47,22 @@ bool OffsetVfsFile::IsReadable() const {
47 return file->IsReadable(); 47 return file->IsReadable();
48} 48}
49 49
50size_t OffsetVfsFile::Read(u8* data, size_t length, size_t r_offset) const { 50std::size_t OffsetVfsFile::Read(u8* data, std::size_t length, std::size_t r_offset) const {
51 return file->Read(data, TrimToFit(length, r_offset), offset + r_offset); 51 return file->Read(data, TrimToFit(length, r_offset), offset + r_offset);
52} 52}
53 53
54size_t OffsetVfsFile::Write(const u8* data, size_t length, size_t r_offset) { 54std::size_t OffsetVfsFile::Write(const u8* data, std::size_t length, std::size_t r_offset) {
55 return file->Write(data, TrimToFit(length, r_offset), offset + r_offset); 55 return file->Write(data, TrimToFit(length, r_offset), offset + r_offset);
56} 56}
57 57
58boost::optional<u8> OffsetVfsFile::ReadByte(size_t r_offset) const { 58boost::optional<u8> OffsetVfsFile::ReadByte(std::size_t r_offset) const {
59 if (r_offset < size) 59 if (r_offset < size)
60 return file->ReadByte(offset + r_offset); 60 return file->ReadByte(offset + r_offset);
61 61
62 return boost::none; 62 return boost::none;
63} 63}
64 64
65std::vector<u8> OffsetVfsFile::ReadBytes(size_t r_size, size_t r_offset) const { 65std::vector<u8> OffsetVfsFile::ReadBytes(std::size_t r_size, std::size_t r_offset) const {
66 return file->ReadBytes(TrimToFit(r_size, r_offset), offset + r_offset); 66 return file->ReadBytes(TrimToFit(r_size, r_offset), offset + r_offset);
67} 67}
68 68
@@ -70,14 +70,14 @@ std::vector<u8> OffsetVfsFile::ReadAllBytes() const {
70 return file->ReadBytes(size, offset); 70 return file->ReadBytes(size, offset);
71} 71}
72 72
73bool OffsetVfsFile::WriteByte(u8 data, size_t r_offset) { 73bool OffsetVfsFile::WriteByte(u8 data, std::size_t r_offset) {
74 if (r_offset < size) 74 if (r_offset < size)
75 return file->WriteByte(data, offset + r_offset); 75 return file->WriteByte(data, offset + r_offset);
76 76
77 return false; 77 return false;
78} 78}
79 79
80size_t OffsetVfsFile::WriteBytes(const std::vector<u8>& data, size_t r_offset) { 80std::size_t OffsetVfsFile::WriteBytes(const std::vector<u8>& data, std::size_t r_offset) {
81 return file->Write(data.data(), TrimToFit(data.size(), r_offset), offset + r_offset); 81 return file->Write(data.data(), TrimToFit(data.size(), r_offset), offset + r_offset);
82} 82}
83 83
@@ -85,12 +85,12 @@ bool OffsetVfsFile::Rename(std::string_view name) {
85 return file->Rename(name); 85 return file->Rename(name);
86} 86}
87 87
88size_t OffsetVfsFile::GetOffset() const { 88std::size_t OffsetVfsFile::GetOffset() const {
89 return offset; 89 return offset;
90} 90}
91 91
92size_t OffsetVfsFile::TrimToFit(size_t r_size, size_t r_offset) const { 92std::size_t OffsetVfsFile::TrimToFit(std::size_t r_size, std::size_t r_offset) const {
93 return std::clamp(r_size, size_t{0}, size - r_offset); 93 return std::clamp(r_size, std::size_t{0}, size - r_offset);
94} 94}
95 95
96} // namespace FileSys 96} // namespace FileSys
diff --git a/src/core/file_sys/vfs_offset.h b/src/core/file_sys/vfs_offset.h
index cb92d1570..34cb180b3 100644
--- a/src/core/file_sys/vfs_offset.h
+++ b/src/core/file_sys/vfs_offset.h
@@ -17,33 +17,33 @@ namespace FileSys {
17// the size of this wrapper. 17// the size of this wrapper.
18class OffsetVfsFile : public VfsFile { 18class OffsetVfsFile : public VfsFile {
19public: 19public:
20 OffsetVfsFile(std::shared_ptr<VfsFile> file, size_t size, size_t offset = 0, 20 OffsetVfsFile(std::shared_ptr<VfsFile> file, std::size_t size, std::size_t offset = 0,
21 std::string new_name = "", VirtualDir new_parent = nullptr); 21 std::string new_name = "", VirtualDir new_parent = nullptr);
22 22
23 std::string GetName() const override; 23 std::string GetName() const override;
24 size_t GetSize() const override; 24 std::size_t GetSize() const override;
25 bool Resize(size_t new_size) override; 25 bool Resize(std::size_t new_size) override;
26 std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; 26 std::shared_ptr<VfsDirectory> GetContainingDirectory() const override;
27 bool IsWritable() const override; 27 bool IsWritable() const override;
28 bool IsReadable() const override; 28 bool IsReadable() const override;
29 size_t Read(u8* data, size_t length, size_t offset) const override; 29 std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override;
30 size_t Write(const u8* data, size_t length, size_t offset) override; 30 std::size_t Write(const u8* data, std::size_t length, std::size_t offset) override;
31 boost::optional<u8> ReadByte(size_t offset) const override; 31 boost::optional<u8> ReadByte(std::size_t offset) const override;
32 std::vector<u8> ReadBytes(size_t size, size_t offset) const override; 32 std::vector<u8> ReadBytes(std::size_t size, std::size_t offset) const override;
33 std::vector<u8> ReadAllBytes() const override; 33 std::vector<u8> ReadAllBytes() const override;
34 bool WriteByte(u8 data, size_t offset) override; 34 bool WriteByte(u8 data, std::size_t offset) override;
35 size_t WriteBytes(const std::vector<u8>& data, size_t offset) override; 35 std::size_t WriteBytes(const std::vector<u8>& data, std::size_t offset) override;
36 36
37 bool Rename(std::string_view name) override; 37 bool Rename(std::string_view name) override;
38 38
39 size_t GetOffset() const; 39 std::size_t GetOffset() const;
40 40
41private: 41private:
42 size_t TrimToFit(size_t r_size, size_t r_offset) const; 42 std::size_t TrimToFit(std::size_t r_size, std::size_t r_offset) const;
43 43
44 std::shared_ptr<VfsFile> file; 44 std::shared_ptr<VfsFile> file;
45 size_t offset; 45 std::size_t offset;
46 size_t size; 46 std::size_t size;
47 std::string name; 47 std::string name;
48 VirtualDir parent; 48 VirtualDir parent;
49}; 49};
diff --git a/src/core/file_sys/vfs_real.cpp b/src/core/file_sys/vfs_real.cpp
index 89b101145..5e242e20f 100644
--- a/src/core/file_sys/vfs_real.cpp
+++ b/src/core/file_sys/vfs_real.cpp
@@ -227,11 +227,11 @@ std::string RealVfsFile::GetName() const {
227 return path_components.back(); 227 return path_components.back();
228} 228}
229 229
230size_t RealVfsFile::GetSize() const { 230std::size_t RealVfsFile::GetSize() const {
231 return backing->GetSize(); 231 return backing->GetSize();
232} 232}
233 233
234bool RealVfsFile::Resize(size_t new_size) { 234bool RealVfsFile::Resize(std::size_t new_size) {
235 return backing->Resize(new_size); 235 return backing->Resize(new_size);
236} 236}
237 237
@@ -247,13 +247,13 @@ bool RealVfsFile::IsReadable() const {
247 return (perms & Mode::ReadWrite) != 0; 247 return (perms & Mode::ReadWrite) != 0;
248} 248}
249 249
250size_t RealVfsFile::Read(u8* data, size_t length, size_t offset) const { 250std::size_t RealVfsFile::Read(u8* data, std::size_t length, std::size_t offset) const {
251 if (!backing->Seek(offset, SEEK_SET)) 251 if (!backing->Seek(offset, SEEK_SET))
252 return 0; 252 return 0;
253 return backing->ReadBytes(data, length); 253 return backing->ReadBytes(data, length);
254} 254}
255 255
256size_t RealVfsFile::Write(const u8* data, size_t length, size_t offset) { 256std::size_t RealVfsFile::Write(const u8* data, std::size_t length, std::size_t offset) {
257 if (!backing->Seek(offset, SEEK_SET)) 257 if (!backing->Seek(offset, SEEK_SET))
258 return 0; 258 return 0;
259 return backing->WriteBytes(data, length); 259 return backing->WriteBytes(data, length);
diff --git a/src/core/file_sys/vfs_real.h b/src/core/file_sys/vfs_real.h
index 7db86691f..681c43e82 100644
--- a/src/core/file_sys/vfs_real.h
+++ b/src/core/file_sys/vfs_real.h
@@ -48,13 +48,13 @@ public:
48 ~RealVfsFile() override; 48 ~RealVfsFile() override;
49 49
50 std::string GetName() const override; 50 std::string GetName() const override;
51 size_t GetSize() const override; 51 std::size_t GetSize() const override;
52 bool Resize(size_t new_size) override; 52 bool Resize(std::size_t new_size) override;
53 std::shared_ptr<VfsDirectory> GetContainingDirectory() const override; 53 std::shared_ptr<VfsDirectory> GetContainingDirectory() const override;
54 bool IsWritable() const override; 54 bool IsWritable() const override;
55 bool IsReadable() const override; 55 bool IsReadable() const override;
56 size_t Read(u8* data, size_t length, size_t offset) const override; 56 std::size_t Read(u8* data, std::size_t length, std::size_t offset) const override;
57 size_t Write(const u8* data, size_t length, size_t offset) override; 57 std::size_t Write(const u8* data, std::size_t length, std::size_t offset) override;
58 bool Rename(std::string_view name) override; 58 bool Rename(std::string_view name) override;
59 59
60private: 60private:
diff --git a/src/core/file_sys/xts_archive.cpp b/src/core/file_sys/xts_archive.cpp
index 4dbc25c55..0173f71c1 100644
--- a/src/core/file_sys/xts_archive.cpp
+++ b/src/core/file_sys/xts_archive.cpp
@@ -25,8 +25,8 @@ namespace FileSys {
25constexpr u64 NAX_HEADER_PADDING_SIZE = 0x4000; 25constexpr u64 NAX_HEADER_PADDING_SIZE = 0x4000;
26 26
27template <typename SourceData, typename SourceKey, typename Destination> 27template <typename SourceData, typename SourceKey, typename Destination>
28static bool CalculateHMAC256(Destination* out, const SourceKey* key, size_t key_length, 28static bool CalculateHMAC256(Destination* out, const SourceKey* key, std::size_t key_length,
29 const SourceData* data, size_t data_length) { 29 const SourceData* data, std::size_t data_length) {
30 mbedtls_md_context_t context; 30 mbedtls_md_context_t context;
31 mbedtls_md_init(&context); 31 mbedtls_md_init(&context);
32 32
@@ -91,7 +91,7 @@ Loader::ResultStatus NAX::Parse(std::string_view path) {
91 91
92 const auto enc_keys = header->key_area; 92 const auto enc_keys = header->key_area;
93 93
94 size_t i = 0; 94 std::size_t i = 0;
95 for (; i < sd_keys.size(); ++i) { 95 for (; i < sd_keys.size(); ++i) {
96 std::array<Core::Crypto::Key128, 2> nax_keys{}; 96 std::array<Core::Crypto::Key128, 2> nax_keys{};
97 if (!CalculateHMAC256(nax_keys.data(), sd_keys[i].data(), 0x10, std::string(path).c_str(), 97 if (!CalculateHMAC256(nax_keys.data(), sd_keys[i].data(), 0x10, std::string(path).c_str(),
@@ -99,7 +99,7 @@ Loader::ResultStatus NAX::Parse(std::string_view path) {
99 return Loader::ResultStatus::ErrorNAXKeyHMACFailed; 99 return Loader::ResultStatus::ErrorNAXKeyHMACFailed;
100 } 100 }
101 101
102 for (size_t j = 0; j < nax_keys.size(); ++j) { 102 for (std::size_t j = 0; j < nax_keys.size(); ++j) {
103 Core::Crypto::AESCipher<Core::Crypto::Key128> cipher(nax_keys[j], 103 Core::Crypto::AESCipher<Core::Crypto::Key128> cipher(nax_keys[j],
104 Core::Crypto::Mode::ECB); 104 Core::Crypto::Mode::ECB);
105 cipher.Transcode(enc_keys[j].data(), 0x10, header->key_area[j].data(), 105 cipher.Transcode(enc_keys[j].data(), 0x10, header->key_area[j].data(),
diff --git a/src/core/gdbstub/gdbstub.cpp b/src/core/gdbstub/gdbstub.cpp
index 332e5c3d0..cfaf20a88 100644
--- a/src/core/gdbstub/gdbstub.cpp
+++ b/src/core/gdbstub/gdbstub.cpp
@@ -292,7 +292,7 @@ static u8 NibbleToHex(u8 n) {
292 * @param src Pointer to array of output hex string characters. 292 * @param src Pointer to array of output hex string characters.
293 * @param len Length of src array. 293 * @param len Length of src array.
294 */ 294 */
295static u32 HexToInt(const u8* src, size_t len) { 295static u32 HexToInt(const u8* src, std::size_t len) {
296 u32 output = 0; 296 u32 output = 0;
297 while (len-- > 0) { 297 while (len-- > 0) {
298 output = (output << 4) | HexCharToValue(src[0]); 298 output = (output << 4) | HexCharToValue(src[0]);
@@ -307,7 +307,7 @@ static u32 HexToInt(const u8* src, size_t len) {
307 * @param src Pointer to array of output hex string characters. 307 * @param src Pointer to array of output hex string characters.
308 * @param len Length of src array. 308 * @param len Length of src array.
309 */ 309 */
310static u64 HexToLong(const u8* src, size_t len) { 310static u64 HexToLong(const u8* src, std::size_t len) {
311 u64 output = 0; 311 u64 output = 0;
312 while (len-- > 0) { 312 while (len-- > 0) {
313 output = (output << 4) | HexCharToValue(src[0]); 313 output = (output << 4) | HexCharToValue(src[0]);
@@ -323,7 +323,7 @@ static u64 HexToLong(const u8* src, size_t len) {
323 * @param src Pointer to array of u8 bytes. 323 * @param src Pointer to array of u8 bytes.
324 * @param len Length of src array. 324 * @param len Length of src array.
325 */ 325 */
326static void MemToGdbHex(u8* dest, const u8* src, size_t len) { 326static void MemToGdbHex(u8* dest, const u8* src, std::size_t len) {
327 while (len-- > 0) { 327 while (len-- > 0) {
328 u8 tmp = *src++; 328 u8 tmp = *src++;
329 *dest++ = NibbleToHex(tmp >> 4); 329 *dest++ = NibbleToHex(tmp >> 4);
@@ -338,7 +338,7 @@ static void MemToGdbHex(u8* dest, const u8* src, size_t len) {
338 * @param src Pointer to array of output hex string characters. 338 * @param src Pointer to array of output hex string characters.
339 * @param len Length of src array. 339 * @param len Length of src array.
340 */ 340 */
341static void GdbHexToMem(u8* dest, const u8* src, size_t len) { 341static void GdbHexToMem(u8* dest, const u8* src, std::size_t len) {
342 while (len-- > 0) { 342 while (len-- > 0) {
343 *dest++ = (HexCharToValue(src[0]) << 4) | HexCharToValue(src[1]); 343 *dest++ = (HexCharToValue(src[0]) << 4) | HexCharToValue(src[1]);
344 src += 2; 344 src += 2;
@@ -406,7 +406,7 @@ static u64 GdbHexToLong(const u8* src) {
406/// Read a byte from the gdb client. 406/// Read a byte from the gdb client.
407static u8 ReadByte() { 407static u8 ReadByte() {
408 u8 c; 408 u8 c;
409 size_t received_size = recv(gdbserver_socket, reinterpret_cast<char*>(&c), 1, MSG_WAITALL); 409 std::size_t received_size = recv(gdbserver_socket, reinterpret_cast<char*>(&c), 1, MSG_WAITALL);
410 if (received_size != 1) { 410 if (received_size != 1) {
411 LOG_ERROR(Debug_GDBStub, "recv failed: {}", received_size); 411 LOG_ERROR(Debug_GDBStub, "recv failed: {}", received_size);
412 Shutdown(); 412 Shutdown();
@@ -416,7 +416,7 @@ static u8 ReadByte() {
416} 416}
417 417
418/// Calculate the checksum of the current command buffer. 418/// Calculate the checksum of the current command buffer.
419static u8 CalculateChecksum(const u8* buffer, size_t length) { 419static u8 CalculateChecksum(const u8* buffer, std::size_t length) {
420 return static_cast<u8>(std::accumulate(buffer, buffer + length, 0, std::plus<u8>())); 420 return static_cast<u8>(std::accumulate(buffer, buffer + length, 0, std::plus<u8>()));
421} 421}
422 422
@@ -518,7 +518,7 @@ bool CheckBreakpoint(VAddr addr, BreakpointType type) {
518 * @param packet Packet to be sent to client. 518 * @param packet Packet to be sent to client.
519 */ 519 */
520static void SendPacket(const char packet) { 520static void SendPacket(const char packet) {
521 size_t sent_size = send(gdbserver_socket, &packet, 1, 0); 521 std::size_t sent_size = send(gdbserver_socket, &packet, 1, 0);
522 if (sent_size != 1) { 522 if (sent_size != 1) {
523 LOG_ERROR(Debug_GDBStub, "send failed"); 523 LOG_ERROR(Debug_GDBStub, "send failed");
524 } 524 }
diff --git a/src/core/hle/ipc.h b/src/core/hle/ipc.h
index 545cd884a..419f45896 100644
--- a/src/core/hle/ipc.h
+++ b/src/core/hle/ipc.h
@@ -12,7 +12,7 @@
12namespace IPC { 12namespace IPC {
13 13
14/// Size of the command buffer area, in 32-bit words. 14/// Size of the command buffer area, in 32-bit words.
15constexpr size_t COMMAND_BUFFER_LENGTH = 0x100 / sizeof(u32); 15constexpr std::size_t COMMAND_BUFFER_LENGTH = 0x100 / sizeof(u32);
16 16
17// These errors are commonly returned by invalid IPC translations, so alias them here for 17// These errors are commonly returned by invalid IPC translations, so alias them here for
18// convenience. 18// convenience.
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h
index 0f3ffdb60..7545ecf2a 100644
--- a/src/core/hle/ipc_helpers.h
+++ b/src/core/hle/ipc_helpers.h
@@ -152,8 +152,8 @@ public:
152 } 152 }
153 153
154 void ValidateHeader() { 154 void ValidateHeader() {
155 const size_t num_domain_objects = context->NumDomainObjects(); 155 const std::size_t num_domain_objects = context->NumDomainObjects();
156 const size_t num_move_objects = context->NumMoveObjects(); 156 const std::size_t num_move_objects = context->NumMoveObjects();
157 ASSERT_MSG(!num_domain_objects || !num_move_objects, 157 ASSERT_MSG(!num_domain_objects || !num_move_objects,
158 "cannot move normal handles and domain objects"); 158 "cannot move normal handles and domain objects");
159 ASSERT_MSG((index - datapayload_index) == normal_params_size, 159 ASSERT_MSG((index - datapayload_index) == normal_params_size,
@@ -329,10 +329,10 @@ public:
329 T PopRaw(); 329 T PopRaw();
330 330
331 template <typename T> 331 template <typename T>
332 Kernel::SharedPtr<T> GetMoveObject(size_t index); 332 Kernel::SharedPtr<T> GetMoveObject(std::size_t index);
333 333
334 template <typename T> 334 template <typename T>
335 Kernel::SharedPtr<T> GetCopyObject(size_t index); 335 Kernel::SharedPtr<T> GetCopyObject(std::size_t index);
336 336
337 template <class T> 337 template <class T>
338 std::shared_ptr<T> PopIpcInterface() { 338 std::shared_ptr<T> PopIpcInterface() {
@@ -406,12 +406,12 @@ void RequestParser::Pop(First& first_value, Other&... other_values) {
406} 406}
407 407
408template <typename T> 408template <typename T>
409Kernel::SharedPtr<T> RequestParser::GetMoveObject(size_t index) { 409Kernel::SharedPtr<T> RequestParser::GetMoveObject(std::size_t index) {
410 return context->GetMoveObject<T>(index); 410 return context->GetMoveObject<T>(index);
411} 411}
412 412
413template <typename T> 413template <typename T>
414Kernel::SharedPtr<T> RequestParser::GetCopyObject(size_t index) { 414Kernel::SharedPtr<T> RequestParser::GetCopyObject(std::size_t index) {
415 return context->GetCopyObject<T>(index); 415 return context->GetCopyObject<T>(index);
416} 416}
417 417
diff --git a/src/core/hle/kernel/address_arbiter.cpp b/src/core/hle/kernel/address_arbiter.cpp
index 6657accd5..93577591f 100644
--- a/src/core/hle/kernel/address_arbiter.cpp
+++ b/src/core/hle/kernel/address_arbiter.cpp
@@ -35,16 +35,17 @@ static ResultCode WaitForAddress(VAddr address, s64 timeout) {
35 35
36// Gets the threads waiting on an address. 36// Gets the threads waiting on an address.
37static std::vector<SharedPtr<Thread>> GetThreadsWaitingOnAddress(VAddr address) { 37static std::vector<SharedPtr<Thread>> GetThreadsWaitingOnAddress(VAddr address) {
38 const auto RetrieveWaitingThreads = 38 const auto RetrieveWaitingThreads = [](std::size_t core_index,
39 [](size_t core_index, std::vector<SharedPtr<Thread>>& waiting_threads, VAddr arb_addr) { 39 std::vector<SharedPtr<Thread>>& waiting_threads,
40 const auto& scheduler = Core::System::GetInstance().Scheduler(core_index); 40 VAddr arb_addr) {
41 auto& thread_list = scheduler->GetThreadList(); 41 const auto& scheduler = Core::System::GetInstance().Scheduler(core_index);
42 42 auto& thread_list = scheduler->GetThreadList();
43 for (auto& thread : thread_list) { 43
44 if (thread->arb_wait_address == arb_addr) 44 for (auto& thread : thread_list) {
45 waiting_threads.push_back(thread); 45 if (thread->arb_wait_address == arb_addr)
46 } 46 waiting_threads.push_back(thread);
47 }; 47 }
48 };
48 49
49 // Retrieve all threads that are waiting for this address. 50 // Retrieve all threads that are waiting for this address.
50 std::vector<SharedPtr<Thread>> threads; 51 std::vector<SharedPtr<Thread>> threads;
@@ -66,12 +67,12 @@ static std::vector<SharedPtr<Thread>> GetThreadsWaitingOnAddress(VAddr address)
66static void WakeThreads(std::vector<SharedPtr<Thread>>& waiting_threads, s32 num_to_wake) { 67static void WakeThreads(std::vector<SharedPtr<Thread>>& waiting_threads, s32 num_to_wake) {
67 // Only process up to 'target' threads, unless 'target' is <= 0, in which case process 68 // Only process up to 'target' threads, unless 'target' is <= 0, in which case process
68 // them all. 69 // them all.
69 size_t last = waiting_threads.size(); 70 std::size_t last = waiting_threads.size();
70 if (num_to_wake > 0) 71 if (num_to_wake > 0)
71 last = num_to_wake; 72 last = num_to_wake;
72 73
73 // Signal the waiting threads. 74 // Signal the waiting threads.
74 for (size_t i = 0; i < last; i++) { 75 for (std::size_t i = 0; i < last; i++) {
75 ASSERT(waiting_threads[i]->status == ThreadStatus::WaitArb); 76 ASSERT(waiting_threads[i]->status == ThreadStatus::WaitArb);
76 waiting_threads[i]->SetWaitSynchronizationResult(RESULT_SUCCESS); 77 waiting_threads[i]->SetWaitSynchronizationResult(RESULT_SUCCESS);
77 waiting_threads[i]->arb_wait_address = 0; 78 waiting_threads[i]->arb_wait_address = 0;
diff --git a/src/core/hle/kernel/handle_table.cpp b/src/core/hle/kernel/handle_table.cpp
index 3a079b9a9..5ee5c05e3 100644
--- a/src/core/hle/kernel/handle_table.cpp
+++ b/src/core/hle/kernel/handle_table.cpp
@@ -65,7 +65,7 @@ ResultCode HandleTable::Close(Handle handle) {
65} 65}
66 66
67bool HandleTable::IsValid(Handle handle) const { 67bool HandleTable::IsValid(Handle handle) const {
68 size_t slot = GetSlot(handle); 68 std::size_t slot = GetSlot(handle);
69 u16 generation = GetGeneration(handle); 69 u16 generation = GetGeneration(handle);
70 70
71 return slot < MAX_COUNT && objects[slot] != nullptr && generations[slot] == generation; 71 return slot < MAX_COUNT && objects[slot] != nullptr && generations[slot] == generation;
diff --git a/src/core/hle/kernel/handle_table.h b/src/core/hle/kernel/handle_table.h
index cac928adb..9e2f33e8a 100644
--- a/src/core/hle/kernel/handle_table.h
+++ b/src/core/hle/kernel/handle_table.h
@@ -93,7 +93,7 @@ private:
93 * This is the maximum limit of handles allowed per process in CTR-OS. It can be further 93 * This is the maximum limit of handles allowed per process in CTR-OS. It can be further
94 * reduced by ExHeader values, but this is not emulated here. 94 * reduced by ExHeader values, but this is not emulated here.
95 */ 95 */
96 static const size_t MAX_COUNT = 4096; 96 static const std::size_t MAX_COUNT = 4096;
97 97
98 static u16 GetSlot(Handle handle) { 98 static u16 GetSlot(Handle handle) {
99 return handle >> 15; 99 return handle >> 15;
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index 7264be906..72fb9d250 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -42,9 +42,9 @@ SharedPtr<Event> HLERequestContext::SleepClientThread(SharedPtr<Thread> thread,
42 Kernel::SharedPtr<Kernel::Event> event) { 42 Kernel::SharedPtr<Kernel::Event> event) {
43 43
44 // Put the client thread to sleep until the wait event is signaled or the timeout expires. 44 // Put the client thread to sleep until the wait event is signaled or the timeout expires.
45 thread->wakeup_callback = 45 thread->wakeup_callback = [context = *this, callback](
46 [context = *this, callback](ThreadWakeupReason reason, SharedPtr<Thread> thread, 46 ThreadWakeupReason reason, SharedPtr<Thread> thread,
47 SharedPtr<WaitObject> object, size_t index) mutable -> bool { 47 SharedPtr<WaitObject> object, std::size_t index) mutable -> bool {
48 ASSERT(thread->status == ThreadStatus::WaitHLEEvent); 48 ASSERT(thread->status == ThreadStatus::WaitHLEEvent);
49 callback(thread, context, reason); 49 callback(thread, context, reason);
50 context.WriteToOutgoingCommandBuffer(*thread); 50 context.WriteToOutgoingCommandBuffer(*thread);
@@ -199,8 +199,8 @@ ResultCode HLERequestContext::PopulateFromIncomingCommandBuffer(u32_le* src_cmdb
199 } 199 }
200 200
201 // The data_size already includes the payload header, the padding and the domain header. 201 // The data_size already includes the payload header, the padding and the domain header.
202 size_t size = data_payload_offset + command_header->data_size - 202 std::size_t size = data_payload_offset + command_header->data_size -
203 sizeof(IPC::DataPayloadHeader) / sizeof(u32) - 4; 203 sizeof(IPC::DataPayloadHeader) / sizeof(u32) - 4;
204 if (domain_message_header) 204 if (domain_message_header)
205 size -= sizeof(IPC::DomainMessageHeader) / sizeof(u32); 205 size -= sizeof(IPC::DomainMessageHeader) / sizeof(u32);
206 std::copy_n(src_cmdbuf, size, cmd_buf.begin()); 206 std::copy_n(src_cmdbuf, size, cmd_buf.begin());
@@ -217,8 +217,8 @@ ResultCode HLERequestContext::WriteToOutgoingCommandBuffer(const Thread& thread)
217 ParseCommandBuffer(cmd_buf.data(), false); 217 ParseCommandBuffer(cmd_buf.data(), false);
218 218
219 // The data_size already includes the payload header, the padding and the domain header. 219 // The data_size already includes the payload header, the padding and the domain header.
220 size_t size = data_payload_offset + command_header->data_size - 220 std::size_t size = data_payload_offset + command_header->data_size -
221 sizeof(IPC::DataPayloadHeader) / sizeof(u32) - 4; 221 sizeof(IPC::DataPayloadHeader) / sizeof(u32) - 4;
222 if (domain_message_header) 222 if (domain_message_header)
223 size -= sizeof(IPC::DomainMessageHeader) / sizeof(u32); 223 size -= sizeof(IPC::DomainMessageHeader) / sizeof(u32);
224 224
@@ -229,7 +229,7 @@ ResultCode HLERequestContext::WriteToOutgoingCommandBuffer(const Thread& thread)
229 "Handle descriptor bit set but no handles to translate"); 229 "Handle descriptor bit set but no handles to translate");
230 // We write the translated handles at a specific offset in the command buffer, this space 230 // We write the translated handles at a specific offset in the command buffer, this space
231 // was already reserved when writing the header. 231 // was already reserved when writing the header.
232 size_t current_offset = 232 std::size_t current_offset =
233 (sizeof(IPC::CommandHeader) + sizeof(IPC::HandleDescriptorHeader)) / sizeof(u32); 233 (sizeof(IPC::CommandHeader) + sizeof(IPC::HandleDescriptorHeader)) / sizeof(u32);
234 ASSERT_MSG(!handle_descriptor_header->send_current_pid, "Sending PID is not implemented"); 234 ASSERT_MSG(!handle_descriptor_header->send_current_pid, "Sending PID is not implemented");
235 235
@@ -258,7 +258,7 @@ ResultCode HLERequestContext::WriteToOutgoingCommandBuffer(const Thread& thread)
258 ASSERT(domain_message_header->num_objects == domain_objects.size()); 258 ASSERT(domain_message_header->num_objects == domain_objects.size());
259 // Write the domain objects to the command buffer, these go after the raw untranslated data. 259 // Write the domain objects to the command buffer, these go after the raw untranslated data.
260 // TODO(Subv): This completely ignores C buffers. 260 // TODO(Subv): This completely ignores C buffers.
261 size_t domain_offset = size - domain_message_header->num_objects; 261 std::size_t domain_offset = size - domain_message_header->num_objects;
262 auto& request_handlers = server_session->domain_request_handlers; 262 auto& request_handlers = server_session->domain_request_handlers;
263 263
264 for (auto& object : domain_objects) { 264 for (auto& object : domain_objects) {
@@ -291,14 +291,15 @@ std::vector<u8> HLERequestContext::ReadBuffer(int buffer_index) const {
291 return buffer; 291 return buffer;
292} 292}
293 293
294size_t HLERequestContext::WriteBuffer(const void* buffer, size_t size, int buffer_index) const { 294std::size_t HLERequestContext::WriteBuffer(const void* buffer, std::size_t size,
295 int buffer_index) const {
295 if (size == 0) { 296 if (size == 0) {
296 LOG_WARNING(Core, "skip empty buffer write"); 297 LOG_WARNING(Core, "skip empty buffer write");
297 return 0; 298 return 0;
298 } 299 }
299 300
300 const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[buffer_index].Size()}; 301 const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[buffer_index].Size()};
301 const size_t buffer_size{GetWriteBufferSize(buffer_index)}; 302 const std::size_t buffer_size{GetWriteBufferSize(buffer_index)};
302 if (size > buffer_size) { 303 if (size > buffer_size) {
303 LOG_CRITICAL(Core, "size ({:016X}) is greater than buffer_size ({:016X})", size, 304 LOG_CRITICAL(Core, "size ({:016X}) is greater than buffer_size ({:016X})", size,
304 buffer_size); 305 buffer_size);
@@ -314,13 +315,13 @@ size_t HLERequestContext::WriteBuffer(const void* buffer, size_t size, int buffe
314 return size; 315 return size;
315} 316}
316 317
317size_t HLERequestContext::GetReadBufferSize(int buffer_index) const { 318std::size_t HLERequestContext::GetReadBufferSize(int buffer_index) const {
318 const bool is_buffer_a{BufferDescriptorA().size() && BufferDescriptorA()[buffer_index].Size()}; 319 const bool is_buffer_a{BufferDescriptorA().size() && BufferDescriptorA()[buffer_index].Size()};
319 return is_buffer_a ? BufferDescriptorA()[buffer_index].Size() 320 return is_buffer_a ? BufferDescriptorA()[buffer_index].Size()
320 : BufferDescriptorX()[buffer_index].Size(); 321 : BufferDescriptorX()[buffer_index].Size();
321} 322}
322 323
323size_t HLERequestContext::GetWriteBufferSize(int buffer_index) const { 324std::size_t HLERequestContext::GetWriteBufferSize(int buffer_index) const {
324 const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[buffer_index].Size()}; 325 const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[buffer_index].Size()};
325 return is_buffer_b ? BufferDescriptorB()[buffer_index].Size() 326 return is_buffer_b ? BufferDescriptorB()[buffer_index].Size()
326 : BufferDescriptorC()[buffer_index].Size(); 327 : BufferDescriptorC()[buffer_index].Size();
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index f0d07f1b6..894479ee0 100644
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -170,7 +170,7 @@ public:
170 std::vector<u8> ReadBuffer(int buffer_index = 0) const; 170 std::vector<u8> ReadBuffer(int buffer_index = 0) const;
171 171
172 /// Helper function to write a buffer using the appropriate buffer descriptor 172 /// Helper function to write a buffer using the appropriate buffer descriptor
173 size_t WriteBuffer(const void* buffer, size_t size, int buffer_index = 0) const; 173 std::size_t WriteBuffer(const void* buffer, std::size_t size, int buffer_index = 0) const;
174 174
175 /* Helper function to write a buffer using the appropriate buffer descriptor 175 /* Helper function to write a buffer using the appropriate buffer descriptor
176 * 176 *
@@ -182,7 +182,7 @@ public:
182 */ 182 */
183 template <typename ContiguousContainer, 183 template <typename ContiguousContainer,
184 typename = std::enable_if_t<!std::is_pointer_v<ContiguousContainer>>> 184 typename = std::enable_if_t<!std::is_pointer_v<ContiguousContainer>>>
185 size_t WriteBuffer(const ContiguousContainer& container, int buffer_index = 0) const { 185 std::size_t WriteBuffer(const ContiguousContainer& container, int buffer_index = 0) const {
186 using ContiguousType = typename ContiguousContainer::value_type; 186 using ContiguousType = typename ContiguousContainer::value_type;
187 187
188 static_assert(std::is_trivially_copyable_v<ContiguousType>, 188 static_assert(std::is_trivially_copyable_v<ContiguousType>,
@@ -193,19 +193,19 @@ public:
193 } 193 }
194 194
195 /// Helper function to get the size of the input buffer 195 /// Helper function to get the size of the input buffer
196 size_t GetReadBufferSize(int buffer_index = 0) const; 196 std::size_t GetReadBufferSize(int buffer_index = 0) const;
197 197
198 /// Helper function to get the size of the output buffer 198 /// Helper function to get the size of the output buffer
199 size_t GetWriteBufferSize(int buffer_index = 0) const; 199 std::size_t GetWriteBufferSize(int buffer_index = 0) const;
200 200
201 template <typename T> 201 template <typename T>
202 SharedPtr<T> GetCopyObject(size_t index) { 202 SharedPtr<T> GetCopyObject(std::size_t index) {
203 ASSERT(index < copy_objects.size()); 203 ASSERT(index < copy_objects.size());
204 return DynamicObjectCast<T>(copy_objects[index]); 204 return DynamicObjectCast<T>(copy_objects[index]);
205 } 205 }
206 206
207 template <typename T> 207 template <typename T>
208 SharedPtr<T> GetMoveObject(size_t index) { 208 SharedPtr<T> GetMoveObject(std::size_t index) {
209 ASSERT(index < move_objects.size()); 209 ASSERT(index < move_objects.size());
210 return DynamicObjectCast<T>(move_objects[index]); 210 return DynamicObjectCast<T>(move_objects[index]);
211 } 211 }
@@ -223,7 +223,7 @@ public:
223 } 223 }
224 224
225 template <typename T> 225 template <typename T>
226 std::shared_ptr<T> GetDomainRequestHandler(size_t index) const { 226 std::shared_ptr<T> GetDomainRequestHandler(std::size_t index) const {
227 return std::static_pointer_cast<T>(domain_request_handlers[index]); 227 return std::static_pointer_cast<T>(domain_request_handlers[index]);
228 } 228 }
229 229
@@ -240,15 +240,15 @@ public:
240 domain_objects.clear(); 240 domain_objects.clear();
241 } 241 }
242 242
243 size_t NumMoveObjects() const { 243 std::size_t NumMoveObjects() const {
244 return move_objects.size(); 244 return move_objects.size();
245 } 245 }
246 246
247 size_t NumCopyObjects() const { 247 std::size_t NumCopyObjects() const {
248 return copy_objects.size(); 248 return copy_objects.size();
249 } 249 }
250 250
251 size_t NumDomainObjects() const { 251 std::size_t NumDomainObjects() const {
252 return domain_objects.size(); 252 return domain_objects.size();
253 } 253 }
254 254
diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp
index b025e323f..7a272d031 100644
--- a/src/core/hle/kernel/process.cpp
+++ b/src/core/hle/kernel/process.cpp
@@ -40,8 +40,8 @@ SharedPtr<Process> Process::Create(KernelCore& kernel, std::string&& name) {
40 return process; 40 return process;
41} 41}
42 42
43void Process::ParseKernelCaps(const u32* kernel_caps, size_t len) { 43void Process::ParseKernelCaps(const u32* kernel_caps, std::size_t len) {
44 for (size_t i = 0; i < len; ++i) { 44 for (std::size_t i = 0; i < len; ++i) {
45 u32 descriptor = kernel_caps[i]; 45 u32 descriptor = kernel_caps[i];
46 u32 type = descriptor >> 20; 46 u32 type = descriptor >> 20;
47 47
@@ -211,7 +211,7 @@ ResultCode Process::MirrorMemory(VAddr dst_addr, VAddr src_addr, u64 size) {
211 "Shared memory exceeds bounds of mapped block"); 211 "Shared memory exceeds bounds of mapped block");
212 212
213 const std::shared_ptr<std::vector<u8>>& backing_block = vma->second.backing_block; 213 const std::shared_ptr<std::vector<u8>>& backing_block = vma->second.backing_block;
214 size_t backing_block_offset = vma->second.offset + vma_offset; 214 std::size_t backing_block_offset = vma->second.offset + vma_offset;
215 215
216 CASCADE_RESULT(auto new_vma, 216 CASCADE_RESULT(auto new_vma,
217 vm_manager.MapMemoryBlock(dst_addr, backing_block, backing_block_offset, size, 217 vm_manager.MapMemoryBlock(dst_addr, backing_block, backing_block_offset, size,
diff --git a/src/core/hle/kernel/process.h b/src/core/hle/kernel/process.h
index 1587d40c1..81538f70c 100644
--- a/src/core/hle/kernel/process.h
+++ b/src/core/hle/kernel/process.h
@@ -59,7 +59,7 @@ class ResourceLimit;
59 59
60struct CodeSet final : public Object { 60struct CodeSet final : public Object {
61 struct Segment { 61 struct Segment {
62 size_t offset = 0; 62 std::size_t offset = 0;
63 VAddr addr = 0; 63 VAddr addr = 0;
64 u32 size = 0; 64 u32 size = 0;
65 }; 65 };
@@ -164,7 +164,7 @@ public:
164 * Parses a list of kernel capability descriptors (as found in the ExHeader) and applies them 164 * Parses a list of kernel capability descriptors (as found in the ExHeader) and applies them
165 * to this process. 165 * to this process.
166 */ 166 */
167 void ParseKernelCaps(const u32* kernel_caps, size_t len); 167 void ParseKernelCaps(const u32* kernel_caps, std::size_t len);
168 168
169 /** 169 /**
170 * Applies address space changes and launches the process main thread. 170 * Applies address space changes and launches the process main thread.
diff --git a/src/core/hle/kernel/shared_memory.h b/src/core/hle/kernel/shared_memory.h
index 2c729afe3..2c06bb7ce 100644
--- a/src/core/hle/kernel/shared_memory.h
+++ b/src/core/hle/kernel/shared_memory.h
@@ -119,7 +119,7 @@ public:
119 /// Backing memory for this shared memory block. 119 /// Backing memory for this shared memory block.
120 std::shared_ptr<std::vector<u8>> backing_block; 120 std::shared_ptr<std::vector<u8>> backing_block;
121 /// Offset into the backing block for this shared memory. 121 /// Offset into the backing block for this shared memory.
122 size_t backing_block_offset; 122 std::size_t backing_block_offset;
123 /// Size of the memory block. Page-aligned. 123 /// Size of the memory block. Page-aligned.
124 u64 size; 124 u64 size;
125 /// Permission restrictions applied to the process which created the block. 125 /// Permission restrictions applied to the process which created the block.
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index f500fd2e7..a5aaa089d 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -146,7 +146,7 @@ static ResultCode GetProcessId(u32* process_id, Handle process_handle) {
146 146
147/// Default thread wakeup callback for WaitSynchronization 147/// Default thread wakeup callback for WaitSynchronization
148static bool DefaultThreadWakeupCallback(ThreadWakeupReason reason, SharedPtr<Thread> thread, 148static bool DefaultThreadWakeupCallback(ThreadWakeupReason reason, SharedPtr<Thread> thread,
149 SharedPtr<WaitObject> object, size_t index) { 149 SharedPtr<WaitObject> object, std::size_t index) {
150 ASSERT(thread->status == ThreadStatus::WaitSynchAny); 150 ASSERT(thread->status == ThreadStatus::WaitSynchAny);
151 151
152 if (reason == ThreadWakeupReason::Timeout) { 152 if (reason == ThreadWakeupReason::Timeout) {
@@ -647,16 +647,17 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target
647 LOG_TRACE(Kernel_SVC, "called, condition_variable_addr=0x{:X}, target=0x{:08X}", 647 LOG_TRACE(Kernel_SVC, "called, condition_variable_addr=0x{:X}, target=0x{:08X}",
648 condition_variable_addr, target); 648 condition_variable_addr, target);
649 649
650 auto RetrieveWaitingThreads = 650 auto RetrieveWaitingThreads = [](std::size_t core_index,
651 [](size_t core_index, std::vector<SharedPtr<Thread>>& waiting_threads, VAddr condvar_addr) { 651 std::vector<SharedPtr<Thread>>& waiting_threads,
652 const auto& scheduler = Core::System::GetInstance().Scheduler(core_index); 652 VAddr condvar_addr) {
653 auto& thread_list = scheduler->GetThreadList(); 653 const auto& scheduler = Core::System::GetInstance().Scheduler(core_index);
654 auto& thread_list = scheduler->GetThreadList();
654 655
655 for (auto& thread : thread_list) { 656 for (auto& thread : thread_list) {
656 if (thread->condvar_wait_address == condvar_addr) 657 if (thread->condvar_wait_address == condvar_addr)
657 waiting_threads.push_back(thread); 658 waiting_threads.push_back(thread);
658 } 659 }
659 }; 660 };
660 661
661 // Retrieve a list of all threads that are waiting for this condition variable. 662 // Retrieve a list of all threads that are waiting for this condition variable.
662 std::vector<SharedPtr<Thread>> waiting_threads; 663 std::vector<SharedPtr<Thread>> waiting_threads;
@@ -672,7 +673,7 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target
672 673
673 // Only process up to 'target' threads, unless 'target' is -1, in which case process 674 // Only process up to 'target' threads, unless 'target' is -1, in which case process
674 // them all. 675 // them all.
675 size_t last = waiting_threads.size(); 676 std::size_t last = waiting_threads.size();
676 if (target != -1) 677 if (target != -1)
677 last = target; 678 last = target;
678 679
@@ -680,12 +681,12 @@ static ResultCode SignalProcessWideKey(VAddr condition_variable_addr, s32 target
680 if (last > waiting_threads.size()) 681 if (last > waiting_threads.size())
681 return RESULT_SUCCESS; 682 return RESULT_SUCCESS;
682 683
683 for (size_t index = 0; index < last; ++index) { 684 for (std::size_t index = 0; index < last; ++index) {
684 auto& thread = waiting_threads[index]; 685 auto& thread = waiting_threads[index];
685 686
686 ASSERT(thread->condvar_wait_address == condition_variable_addr); 687 ASSERT(thread->condvar_wait_address == condition_variable_addr);
687 688
688 size_t current_core = Core::System::GetInstance().CurrentCoreIndex(); 689 std::size_t current_core = Core::System::GetInstance().CurrentCoreIndex();
689 690
690 auto& monitor = Core::System::GetInstance().Monitor(); 691 auto& monitor = Core::System::GetInstance().Monitor();
691 692
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp
index 3f12a84dc..89cd5f401 100644
--- a/src/core/hle/kernel/thread.cpp
+++ b/src/core/hle/kernel/thread.cpp
@@ -275,7 +275,7 @@ ResultVal<SharedPtr<Thread>> Thread::Create(KernelCore& kernel, std::string name
275 available_slot = 0; // Use the first slot in the new page 275 available_slot = 0; // Use the first slot in the new page
276 276
277 // Allocate some memory from the end of the linear heap for this region. 277 // Allocate some memory from the end of the linear heap for this region.
278 const size_t offset = thread->tls_memory->size(); 278 const std::size_t offset = thread->tls_memory->size();
279 thread->tls_memory->insert(thread->tls_memory->end(), Memory::PAGE_SIZE, 0); 279 thread->tls_memory->insert(thread->tls_memory->end(), Memory::PAGE_SIZE, 0);
280 280
281 auto& vm_manager = owner_process->vm_manager; 281 auto& vm_manager = owner_process->vm_manager;
diff --git a/src/core/hle/kernel/thread.h b/src/core/hle/kernel/thread.h
index cb57ee78a..df4748942 100644
--- a/src/core/hle/kernel/thread.h
+++ b/src/core/hle/kernel/thread.h
@@ -254,7 +254,7 @@ public:
254 Handle callback_handle; 254 Handle callback_handle;
255 255
256 using WakeupCallback = bool(ThreadWakeupReason reason, SharedPtr<Thread> thread, 256 using WakeupCallback = bool(ThreadWakeupReason reason, SharedPtr<Thread> thread,
257 SharedPtr<WaitObject> object, size_t index); 257 SharedPtr<WaitObject> object, std::size_t index);
258 // Callback that will be invoked when the thread is resumed from a waiting state. If the thread 258 // Callback that will be invoked when the thread is resumed from a waiting state. If the thread
259 // was waiting via WaitSynchronizationN then the object will be the last object that became 259 // was waiting via WaitSynchronizationN then the object will be the last object that became
260 // available. In case of a timeout, the object will be nullptr. 260 // available. In case of a timeout, the object will be nullptr.
diff --git a/src/core/hle/kernel/vm_manager.cpp b/src/core/hle/kernel/vm_manager.cpp
index 479cacb62..608cbd57b 100644
--- a/src/core/hle/kernel/vm_manager.cpp
+++ b/src/core/hle/kernel/vm_manager.cpp
@@ -86,7 +86,7 @@ VMManager::VMAHandle VMManager::FindVMA(VAddr target) const {
86 86
87ResultVal<VMManager::VMAHandle> VMManager::MapMemoryBlock(VAddr target, 87ResultVal<VMManager::VMAHandle> VMManager::MapMemoryBlock(VAddr target,
88 std::shared_ptr<std::vector<u8>> block, 88 std::shared_ptr<std::vector<u8>> block,
89 size_t offset, u64 size, 89 std::size_t offset, u64 size,
90 MemoryState state) { 90 MemoryState state) {
91 ASSERT(block != nullptr); 91 ASSERT(block != nullptr);
92 ASSERT(offset + size <= block->size()); 92 ASSERT(offset + size <= block->size());
diff --git a/src/core/hle/kernel/vm_manager.h b/src/core/hle/kernel/vm_manager.h
index 98bd04bea..de75036c0 100644
--- a/src/core/hle/kernel/vm_manager.h
+++ b/src/core/hle/kernel/vm_manager.h
@@ -81,7 +81,7 @@ struct VirtualMemoryArea {
81 /// Memory block backing this VMA. 81 /// Memory block backing this VMA.
82 std::shared_ptr<std::vector<u8>> backing_block = nullptr; 82 std::shared_ptr<std::vector<u8>> backing_block = nullptr;
83 /// Offset into the backing_memory the mapping starts from. 83 /// Offset into the backing_memory the mapping starts from.
84 size_t offset = 0; 84 std::size_t offset = 0;
85 85
86 // Settings for type = BackingMemory 86 // Settings for type = BackingMemory
87 /// Pointer backing this VMA. It will not be destroyed or freed when the VMA is removed. 87 /// Pointer backing this VMA. It will not be destroyed or freed when the VMA is removed.
@@ -147,7 +147,7 @@ public:
147 * @param state MemoryState tag to attach to the VMA. 147 * @param state MemoryState tag to attach to the VMA.
148 */ 148 */
149 ResultVal<VMAHandle> MapMemoryBlock(VAddr target, std::shared_ptr<std::vector<u8>> block, 149 ResultVal<VMAHandle> MapMemoryBlock(VAddr target, std::shared_ptr<std::vector<u8>> block,
150 size_t offset, u64 size, MemoryState state); 150 std::size_t offset, u64 size, MemoryState state);
151 151
152 /** 152 /**
153 * Maps an unmanaged host memory pointer at a given address. 153 * Maps an unmanaged host memory pointer at a given address.
diff --git a/src/core/hle/kernel/wait_object.cpp b/src/core/hle/kernel/wait_object.cpp
index eef00b729..b190ceb98 100644
--- a/src/core/hle/kernel/wait_object.cpp
+++ b/src/core/hle/kernel/wait_object.cpp
@@ -81,7 +81,7 @@ void WaitObject::WakeupWaitingThread(SharedPtr<Thread> thread) {
81 } 81 }
82 } 82 }
83 83
84 size_t index = thread->GetWaitObjectIndex(this); 84 std::size_t index = thread->GetWaitObjectIndex(this);
85 85
86 for (auto& object : thread->wait_objects) 86 for (auto& object : thread->wait_objects)
87 object->RemoveWaitingThread(thread.get()); 87 object->RemoveWaitingThread(thread.get());
diff --git a/src/core/hle/service/acc/profile_manager.cpp b/src/core/hle/service/acc/profile_manager.cpp
index 4ccebef23..0071ca613 100644
--- a/src/core/hle/service/acc/profile_manager.cpp
+++ b/src/core/hle/service/acc/profile_manager.cpp
@@ -33,7 +33,7 @@ ProfileManager::~ProfileManager() = default;
33 33
34/// After a users creation it needs to be "registered" to the system. AddToProfiles handles the 34/// After a users creation it needs to be "registered" to the system. AddToProfiles handles the
35/// internal management of the users profiles 35/// internal management of the users profiles
36boost::optional<size_t> ProfileManager::AddToProfiles(const ProfileInfo& user) { 36boost::optional<std::size_t> ProfileManager::AddToProfiles(const ProfileInfo& user) {
37 if (user_count >= MAX_USERS) { 37 if (user_count >= MAX_USERS) {
38 return boost::none; 38 return boost::none;
39 } 39 }
@@ -42,7 +42,7 @@ boost::optional<size_t> ProfileManager::AddToProfiles(const ProfileInfo& user) {
42} 42}
43 43
44/// Deletes a specific profile based on it's profile index 44/// Deletes a specific profile based on it's profile index
45bool ProfileManager::RemoveProfileAtIndex(size_t index) { 45bool ProfileManager::RemoveProfileAtIndex(std::size_t index) {
46 if (index >= MAX_USERS || index >= user_count) { 46 if (index >= MAX_USERS || index >= user_count) {
47 return false; 47 return false;
48 } 48 }
@@ -101,7 +101,7 @@ ResultCode ProfileManager::CreateNewUser(UUID uuid, const std::string& username)
101} 101}
102 102
103/// Returns a users profile index based on their user id. 103/// Returns a users profile index based on their user id.
104boost::optional<size_t> ProfileManager::GetUserIndex(const UUID& uuid) const { 104boost::optional<std::size_t> ProfileManager::GetUserIndex(const UUID& uuid) const {
105 if (!uuid) { 105 if (!uuid) {
106 return boost::none; 106 return boost::none;
107 } 107 }
@@ -110,16 +110,17 @@ boost::optional<size_t> ProfileManager::GetUserIndex(const UUID& uuid) const {
110 if (iter == profiles.end()) { 110 if (iter == profiles.end()) {
111 return boost::none; 111 return boost::none;
112 } 112 }
113 return static_cast<size_t>(std::distance(profiles.begin(), iter)); 113 return static_cast<std::size_t>(std::distance(profiles.begin(), iter));
114} 114}
115 115
116/// Returns a users profile index based on their profile 116/// Returns a users profile index based on their profile
117boost::optional<size_t> ProfileManager::GetUserIndex(const ProfileInfo& user) const { 117boost::optional<std::size_t> ProfileManager::GetUserIndex(const ProfileInfo& user) const {
118 return GetUserIndex(user.user_uuid); 118 return GetUserIndex(user.user_uuid);
119} 119}
120 120
121/// Returns the data structure used by the switch when GetProfileBase is called on acc:* 121/// Returns the data structure used by the switch when GetProfileBase is called on acc:*
122bool ProfileManager::GetProfileBase(boost::optional<size_t> index, ProfileBase& profile) const { 122bool ProfileManager::GetProfileBase(boost::optional<std::size_t> index,
123 ProfileBase& profile) const {
123 if (index == boost::none || index >= MAX_USERS) { 124 if (index == boost::none || index >= MAX_USERS) {
124 return false; 125 return false;
125 } 126 }
@@ -143,14 +144,16 @@ bool ProfileManager::GetProfileBase(const ProfileInfo& user, ProfileBase& profil
143 144
144/// Returns the current user count on the system. We keep a variable which tracks the count so we 145/// Returns the current user count on the system. We keep a variable which tracks the count so we
145/// don't have to loop the internal profile array every call. 146/// don't have to loop the internal profile array every call.
146size_t ProfileManager::GetUserCount() const { 147
148std::size_t ProfileManager::GetUserCount() const {
147 return user_count; 149 return user_count;
148} 150}
149 151
150/// Lists the current "opened" users on the system. Users are typically not open until they sign 152/// Lists the current "opened" users on the system. Users are typically not open until they sign
151/// into something or pick a profile. As of right now users should all be open until qlaunch is 153/// into something or pick a profile. As of right now users should all be open until qlaunch is
152/// booting 154/// booting
153size_t ProfileManager::GetOpenUserCount() const { 155
156std::size_t ProfileManager::GetOpenUserCount() const {
154 return std::count_if(profiles.begin(), profiles.end(), 157 return std::count_if(profiles.begin(), profiles.end(),
155 [](const ProfileInfo& p) { return p.is_open; }); 158 [](const ProfileInfo& p) { return p.is_open; });
156} 159}
@@ -206,7 +209,7 @@ UUID ProfileManager::GetLastOpenedUser() const {
206} 209}
207 210
208/// Return the users profile base and the unknown arbitary data. 211/// Return the users profile base and the unknown arbitary data.
209bool ProfileManager::GetProfileBaseAndData(boost::optional<size_t> index, ProfileBase& profile, 212bool ProfileManager::GetProfileBaseAndData(boost::optional<std::size_t> index, ProfileBase& profile,
210 ProfileData& data) const { 213 ProfileData& data) const {
211 if (GetProfileBase(index, profile)) { 214 if (GetProfileBase(index, profile)) {
212 data = profiles[index.get()].data; 215 data = profiles[index.get()].data;
diff --git a/src/core/hle/service/acc/profile_manager.h b/src/core/hle/service/acc/profile_manager.h
index cd8df93a5..bffd4cf4d 100644
--- a/src/core/hle/service/acc/profile_manager.h
+++ b/src/core/hle/service/acc/profile_manager.h
@@ -12,8 +12,8 @@
12#include "core/hle/result.h" 12#include "core/hle/result.h"
13 13
14namespace Service::Account { 14namespace Service::Account {
15constexpr size_t MAX_USERS = 8; 15constexpr std::size_t MAX_USERS = 8;
16constexpr size_t MAX_DATA = 128; 16constexpr std::size_t MAX_DATA = 128;
17constexpr u128 INVALID_UUID{{0, 0}}; 17constexpr u128 INVALID_UUID{{0, 0}};
18 18
19struct UUID { 19struct UUID {
@@ -87,18 +87,18 @@ public:
87 ResultCode AddUser(const ProfileInfo& user); 87 ResultCode AddUser(const ProfileInfo& user);
88 ResultCode CreateNewUser(UUID uuid, const ProfileUsername& username); 88 ResultCode CreateNewUser(UUID uuid, const ProfileUsername& username);
89 ResultCode CreateNewUser(UUID uuid, const std::string& username); 89 ResultCode CreateNewUser(UUID uuid, const std::string& username);
90 boost::optional<size_t> GetUserIndex(const UUID& uuid) const; 90 boost::optional<std::size_t> GetUserIndex(const UUID& uuid) const;
91 boost::optional<size_t> GetUserIndex(const ProfileInfo& user) const; 91 boost::optional<std::size_t> GetUserIndex(const ProfileInfo& user) const;
92 bool GetProfileBase(boost::optional<size_t> index, ProfileBase& profile) const; 92 bool GetProfileBase(boost::optional<std::size_t> index, ProfileBase& profile) const;
93 bool GetProfileBase(UUID uuid, ProfileBase& profile) const; 93 bool GetProfileBase(UUID uuid, ProfileBase& profile) const;
94 bool GetProfileBase(const ProfileInfo& user, ProfileBase& profile) const; 94 bool GetProfileBase(const ProfileInfo& user, ProfileBase& profile) const;
95 bool GetProfileBaseAndData(boost::optional<size_t> index, ProfileBase& profile, 95 bool GetProfileBaseAndData(boost::optional<std::size_t> index, ProfileBase& profile,
96 ProfileData& data) const; 96 ProfileData& data) const;
97 bool GetProfileBaseAndData(UUID uuid, ProfileBase& profile, ProfileData& data) const; 97 bool GetProfileBaseAndData(UUID uuid, ProfileBase& profile, ProfileData& data) const;
98 bool GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile, 98 bool GetProfileBaseAndData(const ProfileInfo& user, ProfileBase& profile,
99 ProfileData& data) const; 99 ProfileData& data) const;
100 size_t GetUserCount() const; 100 std::size_t GetUserCount() const;
101 size_t GetOpenUserCount() const; 101 std::size_t GetOpenUserCount() const;
102 bool UserExists(UUID uuid) const; 102 bool UserExists(UUID uuid) const;
103 void OpenUser(UUID uuid); 103 void OpenUser(UUID uuid);
104 void CloseUser(UUID uuid); 104 void CloseUser(UUID uuid);
@@ -110,9 +110,9 @@ public:
110 110
111private: 111private:
112 std::array<ProfileInfo, MAX_USERS> profiles{}; 112 std::array<ProfileInfo, MAX_USERS> profiles{};
113 size_t user_count = 0; 113 std::size_t user_count = 0;
114 boost::optional<size_t> AddToProfiles(const ProfileInfo& profile); 114 boost::optional<std::size_t> AddToProfiles(const ProfileInfo& profile);
115 bool RemoveProfileAtIndex(size_t index); 115 bool RemoveProfileAtIndex(std::size_t index);
116 UUID last_opened_user{INVALID_UUID}; 116 UUID last_opened_user{INVALID_UUID};
117}; 117};
118 118
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index a57ed3042..d1f7007ec 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -456,7 +456,7 @@ private:
456 IPC::RequestParser rp{ctx}; 456 IPC::RequestParser rp{ctx};
457 457
458 const u64 offset{rp.Pop<u64>()}; 458 const u64 offset{rp.Pop<u64>()};
459 const size_t size{ctx.GetWriteBufferSize()}; 459 const std::size_t size{ctx.GetWriteBufferSize()};
460 460
461 ASSERT(offset + size <= buffer.size()); 461 ASSERT(offset + size <= buffer.size());
462 462
diff --git a/src/core/hle/service/audio/hwopus.cpp b/src/core/hle/service/audio/hwopus.cpp
index 668fef145..fc6067e59 100644
--- a/src/core/hle/service/audio/hwopus.cpp
+++ b/src/core/hle/service/audio/hwopus.cpp
@@ -61,7 +61,7 @@ private:
61 61
62 bool Decoder_DecodeInterleaved(u32& consumed, u32& sample_count, const std::vector<u8>& input, 62 bool Decoder_DecodeInterleaved(u32& consumed, u32& sample_count, const std::vector<u8>& input,
63 std::vector<opus_int16>& output) { 63 std::vector<opus_int16>& output) {
64 size_t raw_output_sz = output.size() * sizeof(opus_int16); 64 std::size_t raw_output_sz = output.size() * sizeof(opus_int16);
65 if (sizeof(OpusHeader) > input.size()) 65 if (sizeof(OpusHeader) > input.size())
66 return false; 66 return false;
67 OpusHeader hdr{}; 67 OpusHeader hdr{};
@@ -96,7 +96,7 @@ private:
96 u32 channel_count; 96 u32 channel_count;
97}; 97};
98 98
99static size_t WorkerBufferSize(u32 channel_count) { 99static std::size_t WorkerBufferSize(u32 channel_count) {
100 ASSERT_MSG(channel_count == 1 || channel_count == 2, "Invalid channel count"); 100 ASSERT_MSG(channel_count == 1 || channel_count == 2, "Invalid channel count");
101 return opus_decoder_get_size(static_cast<int>(channel_count)); 101 return opus_decoder_get_size(static_cast<int>(channel_count));
102} 102}
@@ -129,7 +129,7 @@ void HwOpus::OpenOpusDecoder(Kernel::HLERequestContext& ctx) {
129 "Invalid sample rate"); 129 "Invalid sample rate");
130 ASSERT_MSG(channel_count == 1 || channel_count == 2, "Invalid channel count"); 130 ASSERT_MSG(channel_count == 1 || channel_count == 2, "Invalid channel count");
131 131
132 size_t worker_sz = WorkerBufferSize(channel_count); 132 std::size_t worker_sz = WorkerBufferSize(channel_count);
133 ASSERT_MSG(buffer_sz < worker_sz, "Worker buffer too large"); 133 ASSERT_MSG(buffer_sz < worker_sz, "Worker buffer too large");
134 std::unique_ptr<OpusDecoder, OpusDeleter> decoder{ 134 std::unique_ptr<OpusDecoder, OpusDeleter> decoder{
135 static_cast<OpusDecoder*>(operator new(worker_sz))}; 135 static_cast<OpusDecoder*>(operator new(worker_sz))};
diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp
index a8e0c869f..ab2f17db9 100644
--- a/src/core/hle/service/hid/hid.cpp
+++ b/src/core/hle/service/hid/hid.cpp
@@ -89,7 +89,7 @@ private:
89 controller_header.left_color_body = JOYCON_BODY_NEON_BLUE; 89 controller_header.left_color_body = JOYCON_BODY_NEON_BLUE;
90 controller_header.left_color_buttons = JOYCON_BUTTONS_NEON_BLUE; 90 controller_header.left_color_buttons = JOYCON_BUTTONS_NEON_BLUE;
91 91
92 for (size_t controller = 0; controller < mem.controllers.size(); controller++) { 92 for (std::size_t controller = 0; controller < mem.controllers.size(); controller++) {
93 for (auto& layout : mem.controllers[controller].layouts) { 93 for (auto& layout : mem.controllers[controller].layouts) {
94 layout.header.num_entries = HID_NUM_ENTRIES; 94 layout.header.num_entries = HID_NUM_ENTRIES;
95 layout.header.max_entry_index = HID_NUM_ENTRIES - 1; 95 layout.header.max_entry_index = HID_NUM_ENTRIES - 1;
diff --git a/src/core/hle/service/lm/lm.cpp b/src/core/hle/service/lm/lm.cpp
index 098da2a41..c89157a4d 100644
--- a/src/core/hle/service/lm/lm.cpp
+++ b/src/core/hle/service/lm/lm.cpp
@@ -99,7 +99,7 @@ private:
99 std::string thread; 99 std::string thread;
100 while (addr < end_addr) { 100 while (addr < end_addr) {
101 const Field field{static_cast<Field>(Memory::Read8(addr++))}; 101 const Field field{static_cast<Field>(Memory::Read8(addr++))};
102 const size_t length{Memory::Read8(addr++)}; 102 const std::size_t length{Memory::Read8(addr++)};
103 103
104 if (static_cast<Field>(Memory::Read8(addr)) == Field::Skip) { 104 if (static_cast<Field>(Memory::Read8(addr)) == Field::Skip) {
105 ++addr; 105 ++addr;
diff --git a/src/core/hle/service/ns/pl_u.cpp b/src/core/hle/service/ns/pl_u.cpp
index 447689a1a..1069d103f 100644
--- a/src/core/hle/service/ns/pl_u.cpp
+++ b/src/core/hle/service/ns/pl_u.cpp
@@ -78,7 +78,7 @@ enum class LoadState : u32 {
78}; 78};
79 79
80static void DecryptSharedFont(const std::vector<u32>& input, std::vector<u8>& output, 80static void DecryptSharedFont(const std::vector<u32>& input, std::vector<u8>& output,
81 size_t& offset) { 81 std::size_t& offset) {
82 ASSERT_MSG(offset + (input.size() * sizeof(u32)) < SHARED_FONT_MEM_SIZE, 82 ASSERT_MSG(offset + (input.size() * sizeof(u32)) < SHARED_FONT_MEM_SIZE,
83 "Shared fonts exceeds 17mb!"); 83 "Shared fonts exceeds 17mb!");
84 ASSERT_MSG(input[0] == EXPECTED_MAGIC, "Failed to derive key, unexpected magic number"); 84 ASSERT_MSG(input[0] == EXPECTED_MAGIC, "Failed to derive key, unexpected magic number");
@@ -95,7 +95,7 @@ static void DecryptSharedFont(const std::vector<u32>& input, std::vector<u8>& ou
95} 95}
96 96
97static void EncryptSharedFont(const std::vector<u8>& input, std::vector<u8>& output, 97static void EncryptSharedFont(const std::vector<u8>& input, std::vector<u8>& output,
98 size_t& offset) { 98 std::size_t& offset) {
99 ASSERT_MSG(offset + input.size() + 8 < SHARED_FONT_MEM_SIZE, "Shared fonts exceeds 17mb!"); 99 ASSERT_MSG(offset + input.size() + 8 < SHARED_FONT_MEM_SIZE, "Shared fonts exceeds 17mb!");
100 const u32 KEY = EXPECTED_MAGIC ^ EXPECTED_RESULT; 100 const u32 KEY = EXPECTED_MAGIC ^ EXPECTED_RESULT;
101 std::memcpy(output.data() + offset, &EXPECTED_RESULT, sizeof(u32)); // Magic header 101 std::memcpy(output.data() + offset, &EXPECTED_RESULT, sizeof(u32)); // Magic header
@@ -113,7 +113,7 @@ static u32 GetU32Swapped(const u8* data) {
113} 113}
114 114
115struct PL_U::Impl { 115struct PL_U::Impl {
116 const FontRegion& GetSharedFontRegion(size_t index) const { 116 const FontRegion& GetSharedFontRegion(std::size_t index) const {
117 if (index >= shared_font_regions.size() || shared_font_regions.empty()) { 117 if (index >= shared_font_regions.size() || shared_font_regions.empty()) {
118 // No font fallback 118 // No font fallback
119 return EMPTY_REGION; 119 return EMPTY_REGION;
@@ -126,7 +126,7 @@ struct PL_U::Impl {
126 // based on the shared memory dump 126 // based on the shared memory dump
127 unsigned cur_offset = 0; 127 unsigned cur_offset = 0;
128 128
129 for (size_t i = 0; i < SHARED_FONTS.size(); i++) { 129 for (std::size_t i = 0; i < SHARED_FONTS.size(); i++) {
130 // Out of shared fonts/invalid font 130 // Out of shared fonts/invalid font
131 if (GetU32Swapped(input.data() + cur_offset) != EXPECTED_RESULT) { 131 if (GetU32Swapped(input.data() + cur_offset) != EXPECTED_RESULT) {
132 break; 132 break;
@@ -162,7 +162,7 @@ PL_U::PL_U() : ServiceFramework("pl:u"), impl{std::make_unique<Impl>()} {
162 RegisterHandlers(functions); 162 RegisterHandlers(functions);
163 // Attempt to load shared font data from disk 163 // Attempt to load shared font data from disk
164 const auto nand = FileSystem::GetSystemNANDContents(); 164 const auto nand = FileSystem::GetSystemNANDContents();
165 size_t offset = 0; 165 std::size_t offset = 0;
166 // Rebuild shared fonts from data ncas 166 // Rebuild shared fonts from data ncas
167 if (nand->HasEntry(static_cast<u64>(FontArchives::Standard), 167 if (nand->HasEntry(static_cast<u64>(FontArchives::Standard),
168 FileSys::ContentRecordType::Data)) { 168 FileSys::ContentRecordType::Data)) {
@@ -344,7 +344,7 @@ void PL_U::GetSharedFontInOrderOfPriority(Kernel::HLERequestContext& ctx) {
344 std::vector<u32> font_sizes; 344 std::vector<u32> font_sizes;
345 345
346 // TODO(ogniK): Have actual priority order 346 // TODO(ogniK): Have actual priority order
347 for (size_t i = 0; i < impl->shared_font_regions.size(); i++) { 347 for (std::size_t i = 0; i < impl->shared_font_regions.size(); i++) {
348 font_codes.push_back(static_cast<u32>(i)); 348 font_codes.push_back(static_cast<u32>(i));
349 auto region = impl->GetSharedFontRegion(i); 349 auto region = impl->GetSharedFontRegion(i);
350 font_offsets.push_back(region.offset); 350 font_offsets.push_back(region.offset);
diff --git a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
index 25d5a93fa..d8b8037a8 100644
--- a/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
+++ b/src/core/hle/service/nvdrv/devices/nvhost_as_gpu.cpp
@@ -71,7 +71,7 @@ u32 nvhost_as_gpu::AllocateSpace(const std::vector<u8>& input, std::vector<u8>&
71} 71}
72 72
73u32 nvhost_as_gpu::Remap(const std::vector<u8>& input, std::vector<u8>& output) { 73u32 nvhost_as_gpu::Remap(const std::vector<u8>& input, std::vector<u8>& output) {
74 size_t num_entries = input.size() / sizeof(IoctlRemapEntry); 74 std::size_t num_entries = input.size() / sizeof(IoctlRemapEntry);
75 75
76 LOG_WARNING(Service_NVDRV, "(STUBBED) called, num_entries=0x{:X}", num_entries); 76 LOG_WARNING(Service_NVDRV, "(STUBBED) called, num_entries=0x{:X}", num_entries);
77 77
diff --git a/src/core/hle/service/nvflinger/nvflinger.cpp b/src/core/hle/service/nvflinger/nvflinger.cpp
index 7455ddd19..d47b6f659 100644
--- a/src/core/hle/service/nvflinger/nvflinger.cpp
+++ b/src/core/hle/service/nvflinger/nvflinger.cpp
@@ -23,7 +23,7 @@
23 23
24namespace Service::NVFlinger { 24namespace Service::NVFlinger {
25 25
26constexpr size_t SCREEN_REFRESH_RATE = 60; 26constexpr std::size_t SCREEN_REFRESH_RATE = 60;
27constexpr u64 frame_ticks = static_cast<u64>(CoreTiming::BASE_CLOCK_RATE / SCREEN_REFRESH_RATE); 27constexpr u64 frame_ticks = static_cast<u64>(CoreTiming::BASE_CLOCK_RATE / SCREEN_REFRESH_RATE);
28 28
29NVFlinger::NVFlinger() { 29NVFlinger::NVFlinger() {
diff --git a/src/core/hle/service/service.cpp b/src/core/hle/service/service.cpp
index 9bb7c7b26..5c007d9f1 100644
--- a/src/core/hle/service/service.cpp
+++ b/src/core/hle/service/service.cpp
@@ -129,9 +129,9 @@ Kernel::SharedPtr<Kernel::ClientPort> ServiceFrameworkBase::CreatePort() {
129 return client_port; 129 return client_port;
130} 130}
131 131
132void ServiceFrameworkBase::RegisterHandlersBase(const FunctionInfoBase* functions, size_t n) { 132void ServiceFrameworkBase::RegisterHandlersBase(const FunctionInfoBase* functions, std::size_t n) {
133 handlers.reserve(handlers.size() + n); 133 handlers.reserve(handlers.size() + n);
134 for (size_t i = 0; i < n; ++i) { 134 for (std::size_t i = 0; i < n; ++i) {
135 // Usually this array is sorted by id already, so hint to insert at the end 135 // Usually this array is sorted by id already, so hint to insert at the end
136 handlers.emplace_hint(handlers.cend(), functions[i].expected_header, functions[i]); 136 handlers.emplace_hint(handlers.cend(), functions[i].expected_header, functions[i]);
137 } 137 }
diff --git a/src/core/hle/service/service.h b/src/core/hle/service/service.h
index 7a051523e..2fc57a82e 100644
--- a/src/core/hle/service/service.h
+++ b/src/core/hle/service/service.h
@@ -88,7 +88,7 @@ private:
88 ServiceFrameworkBase(const char* service_name, u32 max_sessions, InvokerFn* handler_invoker); 88 ServiceFrameworkBase(const char* service_name, u32 max_sessions, InvokerFn* handler_invoker);
89 ~ServiceFrameworkBase(); 89 ~ServiceFrameworkBase();
90 90
91 void RegisterHandlersBase(const FunctionInfoBase* functions, size_t n); 91 void RegisterHandlersBase(const FunctionInfoBase* functions, std::size_t n);
92 void ReportUnimplementedFunction(Kernel::HLERequestContext& ctx, const FunctionInfoBase* info); 92 void ReportUnimplementedFunction(Kernel::HLERequestContext& ctx, const FunctionInfoBase* info);
93 93
94 /// Identifier string used to connect to the service. 94 /// Identifier string used to connect to the service.
@@ -152,7 +152,7 @@ protected:
152 : ServiceFrameworkBase(service_name, max_sessions, Invoker) {} 152 : ServiceFrameworkBase(service_name, max_sessions, Invoker) {}
153 153
154 /// Registers handlers in the service. 154 /// Registers handlers in the service.
155 template <size_t N> 155 template <std::size_t N>
156 void RegisterHandlers(const FunctionInfo (&functions)[N]) { 156 void RegisterHandlers(const FunctionInfo (&functions)[N]) {
157 RegisterHandlers(functions, N); 157 RegisterHandlers(functions, N);
158 } 158 }
@@ -161,7 +161,7 @@ protected:
161 * Registers handlers in the service. Usually prefer using the other RegisterHandlers 161 * Registers handlers in the service. Usually prefer using the other RegisterHandlers
162 * overload in order to avoid needing to specify the array size. 162 * overload in order to avoid needing to specify the array size.
163 */ 163 */
164 void RegisterHandlers(const FunctionInfo* functions, size_t n) { 164 void RegisterHandlers(const FunctionInfo* functions, std::size_t n) {
165 RegisterHandlersBase(functions, n); 165 RegisterHandlersBase(functions, n);
166 } 166 }
167 167
diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp
index 59eb20155..9e5af7839 100644
--- a/src/core/hle/service/set/set.cpp
+++ b/src/core/hle/service/set/set.cpp
@@ -32,21 +32,21 @@ constexpr std::array<LanguageCode, 17> available_language_codes = {{
32 LanguageCode::ZH_HANT, 32 LanguageCode::ZH_HANT,
33}}; 33}};
34 34
35constexpr size_t pre4_0_0_max_entries = 0xF; 35constexpr std::size_t pre4_0_0_max_entries = 0xF;
36constexpr size_t post4_0_0_max_entries = 0x40; 36constexpr std::size_t post4_0_0_max_entries = 0x40;
37 37
38LanguageCode GetLanguageCodeFromIndex(size_t index) { 38LanguageCode GetLanguageCodeFromIndex(std::size_t index) {
39 return available_language_codes.at(index); 39 return available_language_codes.at(index);
40} 40}
41 41
42template <size_t size> 42template <std::size_t size>
43static std::array<LanguageCode, size> MakeLanguageCodeSubset() { 43static std::array<LanguageCode, size> MakeLanguageCodeSubset() {
44 std::array<LanguageCode, size> arr; 44 std::array<LanguageCode, size> arr;
45 std::copy_n(available_language_codes.begin(), size, arr.begin()); 45 std::copy_n(available_language_codes.begin(), size, arr.begin());
46 return arr; 46 return arr;
47} 47}
48 48
49static void PushResponseLanguageCode(Kernel::HLERequestContext& ctx, size_t max_size) { 49static void PushResponseLanguageCode(Kernel::HLERequestContext& ctx, std::size_t max_size) {
50 IPC::ResponseBuilder rb{ctx, 3}; 50 IPC::ResponseBuilder rb{ctx, 3};
51 rb.Push(RESULT_SUCCESS); 51 rb.Push(RESULT_SUCCESS);
52 if (available_language_codes.size() > max_size) 52 if (available_language_codes.size() > max_size)
diff --git a/src/core/hle/service/set/set.h b/src/core/hle/service/set/set.h
index 5f0214359..266f13e46 100644
--- a/src/core/hle/service/set/set.h
+++ b/src/core/hle/service/set/set.h
@@ -28,7 +28,7 @@ enum class LanguageCode : u64 {
28 ZH_HANS = 0x00736E61482D687A, 28 ZH_HANS = 0x00736E61482D687A,
29 ZH_HANT = 0x00746E61482D687A, 29 ZH_HANT = 0x00746E61482D687A,
30}; 30};
31LanguageCode GetLanguageCodeFromIndex(size_t idx); 31LanguageCode GetLanguageCodeFromIndex(std::size_t idx);
32 32
33class SET final : public ServiceFramework<SET> { 33class SET final : public ServiceFramework<SET> {
34public: 34public:
diff --git a/src/core/hle/service/spl/module.cpp b/src/core/hle/service/spl/module.cpp
index 0d8441fb1..44a6717d0 100644
--- a/src/core/hle/service/spl/module.cpp
+++ b/src/core/hle/service/spl/module.cpp
@@ -21,7 +21,7 @@ Module::Interface::~Interface() = default;
21void Module::Interface::GetRandomBytes(Kernel::HLERequestContext& ctx) { 21void Module::Interface::GetRandomBytes(Kernel::HLERequestContext& ctx) {
22 IPC::RequestParser rp{ctx}; 22 IPC::RequestParser rp{ctx};
23 23
24 size_t size = ctx.GetWriteBufferSize(); 24 std::size_t size = ctx.GetWriteBufferSize();
25 25
26 std::vector<u8> data(size); 26 std::vector<u8> data(size);
27 std::generate(data.begin(), data.end(), std::rand); 27 std::generate(data.begin(), data.end(), std::rand);
diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp
index cf94b00e6..13545d50a 100644
--- a/src/core/hle/service/vi/vi.cpp
+++ b/src/core/hle/service/vi/vi.cpp
@@ -38,7 +38,7 @@ static_assert(sizeof(DisplayInfo) == 0x60, "DisplayInfo has wrong size");
38class Parcel { 38class Parcel {
39public: 39public:
40 // This default size was chosen arbitrarily. 40 // This default size was chosen arbitrarily.
41 static constexpr size_t DefaultBufferSize = 0x40; 41 static constexpr std::size_t DefaultBufferSize = 0x40;
42 Parcel() : buffer(DefaultBufferSize) {} 42 Parcel() : buffer(DefaultBufferSize) {}
43 explicit Parcel(std::vector<u8> data) : buffer(std::move(data)) {} 43 explicit Parcel(std::vector<u8> data) : buffer(std::move(data)) {}
44 virtual ~Parcel() = default; 44 virtual ~Parcel() = default;
@@ -66,7 +66,7 @@ public:
66 return val; 66 return val;
67 } 67 }
68 68
69 std::vector<u8> ReadBlock(size_t length) { 69 std::vector<u8> ReadBlock(std::size_t length) {
70 ASSERT(read_index + length <= buffer.size()); 70 ASSERT(read_index + length <= buffer.size());
71 const u8* const begin = buffer.data() + read_index; 71 const u8* const begin = buffer.data() + read_index;
72 const u8* const end = begin + length; 72 const u8* const end = begin + length;
@@ -156,8 +156,8 @@ private:
156 static_assert(sizeof(Header) == 16, "ParcelHeader has wrong size"); 156 static_assert(sizeof(Header) == 16, "ParcelHeader has wrong size");
157 157
158 std::vector<u8> buffer; 158 std::vector<u8> buffer;
159 size_t read_index = 0; 159 std::size_t read_index = 0;
160 size_t write_index = 0; 160 std::size_t write_index = 0;
161}; 161};
162 162
163class NativeWindow : public Parcel { 163class NativeWindow : public Parcel {
diff --git a/src/core/loader/elf.cpp b/src/core/loader/elf.cpp
index 120e1e133..0e2af20b4 100644
--- a/src/core/loader/elf.cpp
+++ b/src/core/loader/elf.cpp
@@ -300,7 +300,7 @@ SharedPtr<CodeSet> ElfReader::LoadInto(u32 vaddr) {
300 } 300 }
301 301
302 std::vector<u8> program_image(total_image_size); 302 std::vector<u8> program_image(total_image_size);
303 size_t current_image_position = 0; 303 std::size_t current_image_position = 0;
304 304
305 auto& kernel = Core::System::GetInstance().Kernel(); 305 auto& kernel = Core::System::GetInstance().Kernel();
306 SharedPtr<CodeSet> codeset = CodeSet::Create(kernel, ""); 306 SharedPtr<CodeSet> codeset = CodeSet::Create(kernel, "");
diff --git a/src/core/loader/loader.cpp b/src/core/loader/loader.cpp
index fa43a2650..f2a183ba1 100644
--- a/src/core/loader/loader.cpp
+++ b/src/core/loader/loader.cpp
@@ -155,7 +155,7 @@ constexpr std::array<const char*, 58> RESULT_MESSAGES{
155}; 155};
156 156
157std::ostream& operator<<(std::ostream& os, ResultStatus status) { 157std::ostream& operator<<(std::ostream& os, ResultStatus status) {
158 os << RESULT_MESSAGES.at(static_cast<size_t>(status)); 158 os << RESULT_MESSAGES.at(static_cast<std::size_t>(status));
159 return os; 159 return os;
160} 160}
161 161
diff --git a/src/core/memory.cpp b/src/core/memory.cpp
index 0e4e0157c..316b46820 100644
--- a/src/core/memory.cpp
+++ b/src/core/memory.cpp
@@ -370,16 +370,16 @@ u64 Read64(const VAddr addr) {
370} 370}
371 371
372void ReadBlock(const Kernel::Process& process, const VAddr src_addr, void* dest_buffer, 372void ReadBlock(const Kernel::Process& process, const VAddr src_addr, void* dest_buffer,
373 const size_t size) { 373 const std::size_t size) {
374 auto& page_table = process.vm_manager.page_table; 374 auto& page_table = process.vm_manager.page_table;
375 375
376 size_t remaining_size = size; 376 std::size_t remaining_size = size;
377 size_t page_index = src_addr >> PAGE_BITS; 377 std::size_t page_index = src_addr >> PAGE_BITS;
378 size_t page_offset = src_addr & PAGE_MASK; 378 std::size_t page_offset = src_addr & PAGE_MASK;
379 379
380 while (remaining_size > 0) { 380 while (remaining_size > 0) {
381 const size_t copy_amount = 381 const std::size_t copy_amount =
382 std::min(static_cast<size_t>(PAGE_SIZE) - page_offset, remaining_size); 382 std::min(static_cast<std::size_t>(PAGE_SIZE) - page_offset, remaining_size);
383 const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); 383 const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset);
384 384
385 switch (page_table.attributes[page_index]) { 385 switch (page_table.attributes[page_index]) {
@@ -414,7 +414,7 @@ void ReadBlock(const Kernel::Process& process, const VAddr src_addr, void* dest_
414 } 414 }
415} 415}
416 416
417void ReadBlock(const VAddr src_addr, void* dest_buffer, const size_t size) { 417void ReadBlock(const VAddr src_addr, void* dest_buffer, const std::size_t size) {
418 ReadBlock(*Core::CurrentProcess(), src_addr, dest_buffer, size); 418 ReadBlock(*Core::CurrentProcess(), src_addr, dest_buffer, size);
419} 419}
420 420
@@ -435,15 +435,15 @@ void Write64(const VAddr addr, const u64 data) {
435} 435}
436 436
437void WriteBlock(const Kernel::Process& process, const VAddr dest_addr, const void* src_buffer, 437void WriteBlock(const Kernel::Process& process, const VAddr dest_addr, const void* src_buffer,
438 const size_t size) { 438 const std::size_t size) {
439 auto& page_table = process.vm_manager.page_table; 439 auto& page_table = process.vm_manager.page_table;
440 size_t remaining_size = size; 440 std::size_t remaining_size = size;
441 size_t page_index = dest_addr >> PAGE_BITS; 441 std::size_t page_index = dest_addr >> PAGE_BITS;
442 size_t page_offset = dest_addr & PAGE_MASK; 442 std::size_t page_offset = dest_addr & PAGE_MASK;
443 443
444 while (remaining_size > 0) { 444 while (remaining_size > 0) {
445 const size_t copy_amount = 445 const std::size_t copy_amount =
446 std::min(static_cast<size_t>(PAGE_SIZE) - page_offset, remaining_size); 446 std::min(static_cast<std::size_t>(PAGE_SIZE) - page_offset, remaining_size);
447 const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); 447 const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset);
448 448
449 switch (page_table.attributes[page_index]) { 449 switch (page_table.attributes[page_index]) {
@@ -477,19 +477,19 @@ void WriteBlock(const Kernel::Process& process, const VAddr dest_addr, const voi
477 } 477 }
478} 478}
479 479
480void WriteBlock(const VAddr dest_addr, const void* src_buffer, const size_t size) { 480void WriteBlock(const VAddr dest_addr, const void* src_buffer, const std::size_t size) {
481 WriteBlock(*Core::CurrentProcess(), dest_addr, src_buffer, size); 481 WriteBlock(*Core::CurrentProcess(), dest_addr, src_buffer, size);
482} 482}
483 483
484void ZeroBlock(const Kernel::Process& process, const VAddr dest_addr, const size_t size) { 484void ZeroBlock(const Kernel::Process& process, const VAddr dest_addr, const std::size_t size) {
485 auto& page_table = process.vm_manager.page_table; 485 auto& page_table = process.vm_manager.page_table;
486 size_t remaining_size = size; 486 std::size_t remaining_size = size;
487 size_t page_index = dest_addr >> PAGE_BITS; 487 std::size_t page_index = dest_addr >> PAGE_BITS;
488 size_t page_offset = dest_addr & PAGE_MASK; 488 std::size_t page_offset = dest_addr & PAGE_MASK;
489 489
490 while (remaining_size > 0) { 490 while (remaining_size > 0) {
491 const size_t copy_amount = 491 const std::size_t copy_amount =
492 std::min(static_cast<size_t>(PAGE_SIZE) - page_offset, remaining_size); 492 std::min(static_cast<std::size_t>(PAGE_SIZE) - page_offset, remaining_size);
493 const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); 493 const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset);
494 494
495 switch (page_table.attributes[page_index]) { 495 switch (page_table.attributes[page_index]) {
@@ -522,15 +522,16 @@ void ZeroBlock(const Kernel::Process& process, const VAddr dest_addr, const size
522 } 522 }
523} 523}
524 524
525void CopyBlock(const Kernel::Process& process, VAddr dest_addr, VAddr src_addr, const size_t size) { 525void CopyBlock(const Kernel::Process& process, VAddr dest_addr, VAddr src_addr,
526 const std::size_t size) {
526 auto& page_table = process.vm_manager.page_table; 527 auto& page_table = process.vm_manager.page_table;
527 size_t remaining_size = size; 528 std::size_t remaining_size = size;
528 size_t page_index = src_addr >> PAGE_BITS; 529 std::size_t page_index = src_addr >> PAGE_BITS;
529 size_t page_offset = src_addr & PAGE_MASK; 530 std::size_t page_offset = src_addr & PAGE_MASK;
530 531
531 while (remaining_size > 0) { 532 while (remaining_size > 0) {
532 const size_t copy_amount = 533 const std::size_t copy_amount =
533 std::min(static_cast<size_t>(PAGE_SIZE) - page_offset, remaining_size); 534 std::min(static_cast<std::size_t>(PAGE_SIZE) - page_offset, remaining_size);
534 const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset); 535 const VAddr current_vaddr = static_cast<VAddr>((page_index << PAGE_BITS) + page_offset);
535 536
536 switch (page_table.attributes[page_index]) { 537 switch (page_table.attributes[page_index]) {
@@ -565,7 +566,7 @@ void CopyBlock(const Kernel::Process& process, VAddr dest_addr, VAddr src_addr,
565 } 566 }
566} 567}
567 568
568void CopyBlock(VAddr dest_addr, VAddr src_addr, size_t size) { 569void CopyBlock(VAddr dest_addr, VAddr src_addr, std::size_t size) {
569 CopyBlock(*Core::CurrentProcess(), dest_addr, src_addr, size); 570 CopyBlock(*Core::CurrentProcess(), dest_addr, src_addr, size);
570} 571}
571 572
diff --git a/src/core/memory.h b/src/core/memory.h
index f06e04a75..2a27c0251 100644
--- a/src/core/memory.h
+++ b/src/core/memory.h
@@ -22,11 +22,11 @@ namespace Memory {
22 * Page size used by the ARM architecture. This is the smallest granularity with which memory can 22 * Page size used by the ARM architecture. This is the smallest granularity with which memory can
23 * be mapped. 23 * be mapped.
24 */ 24 */
25constexpr size_t PAGE_BITS = 12; 25constexpr std::size_t PAGE_BITS = 12;
26constexpr u64 PAGE_SIZE = 1 << PAGE_BITS; 26constexpr u64 PAGE_SIZE = 1 << PAGE_BITS;
27constexpr u64 PAGE_MASK = PAGE_SIZE - 1; 27constexpr u64 PAGE_MASK = PAGE_SIZE - 1;
28constexpr size_t ADDRESS_SPACE_BITS = 36; 28constexpr std::size_t ADDRESS_SPACE_BITS = 36;
29constexpr size_t PAGE_TABLE_NUM_ENTRIES = 1ULL << (ADDRESS_SPACE_BITS - PAGE_BITS); 29constexpr std::size_t PAGE_TABLE_NUM_ENTRIES = 1ULL << (ADDRESS_SPACE_BITS - PAGE_BITS);
30 30
31enum class PageType : u8 { 31enum class PageType : u8 {
32 /// Page is unmapped and should cause an access error. 32 /// Page is unmapped and should cause an access error.
@@ -154,13 +154,13 @@ void Write16(VAddr addr, u16 data);
154void Write32(VAddr addr, u32 data); 154void Write32(VAddr addr, u32 data);
155void Write64(VAddr addr, u64 data); 155void Write64(VAddr addr, u64 data);
156 156
157void ReadBlock(const Kernel::Process& process, VAddr src_addr, void* dest_buffer, size_t size); 157void ReadBlock(const Kernel::Process& process, VAddr src_addr, void* dest_buffer, std::size_t size);
158void ReadBlock(VAddr src_addr, void* dest_buffer, size_t size); 158void ReadBlock(VAddr src_addr, void* dest_buffer, std::size_t size);
159void WriteBlock(const Kernel::Process& process, VAddr dest_addr, const void* src_buffer, 159void WriteBlock(const Kernel::Process& process, VAddr dest_addr, const void* src_buffer,
160 size_t size); 160 std::size_t size);
161void WriteBlock(VAddr dest_addr, const void* src_buffer, size_t size); 161void WriteBlock(VAddr dest_addr, const void* src_buffer, std::size_t size);
162void ZeroBlock(const Kernel::Process& process, VAddr dest_addr, size_t size); 162void ZeroBlock(const Kernel::Process& process, VAddr dest_addr, std::size_t size);
163void CopyBlock(VAddr dest_addr, VAddr src_addr, size_t size); 163void CopyBlock(VAddr dest_addr, VAddr src_addr, std::size_t size);
164 164
165u8* GetPointer(VAddr vaddr); 165u8* GetPointer(VAddr vaddr);
166 166
diff --git a/src/core/memory_hook.h b/src/core/memory_hook.h
index e8ea19333..0269c7ff1 100644
--- a/src/core/memory_hook.h
+++ b/src/core/memory_hook.h
@@ -32,14 +32,14 @@ public:
32 virtual boost::optional<u32> Read32(VAddr addr) = 0; 32 virtual boost::optional<u32> Read32(VAddr addr) = 0;
33 virtual boost::optional<u64> Read64(VAddr addr) = 0; 33 virtual boost::optional<u64> Read64(VAddr addr) = 0;
34 34
35 virtual bool ReadBlock(VAddr src_addr, void* dest_buffer, size_t size) = 0; 35 virtual bool ReadBlock(VAddr src_addr, void* dest_buffer, std::size_t size) = 0;
36 36
37 virtual bool Write8(VAddr addr, u8 data) = 0; 37 virtual bool Write8(VAddr addr, u8 data) = 0;
38 virtual bool Write16(VAddr addr, u16 data) = 0; 38 virtual bool Write16(VAddr addr, u16 data) = 0;
39 virtual bool Write32(VAddr addr, u32 data) = 0; 39 virtual bool Write32(VAddr addr, u32 data) = 0;
40 virtual bool Write64(VAddr addr, u64 data) = 0; 40 virtual bool Write64(VAddr addr, u64 data) = 0;
41 41
42 virtual bool WriteBlock(VAddr dest_addr, const void* src_buffer, size_t size) = 0; 42 virtual bool WriteBlock(VAddr dest_addr, const void* src_buffer, std::size_t size) = 0;
43}; 43};
44 44
45using MemoryHookPointer = std::shared_ptr<MemoryHook>; 45using MemoryHookPointer = std::shared_ptr<MemoryHook>;
diff --git a/src/core/tracer/recorder.cpp b/src/core/tracer/recorder.cpp
index af032f0c9..73cacb47f 100644
--- a/src/core/tracer/recorder.cpp
+++ b/src/core/tracer/recorder.cpp
@@ -76,7 +76,7 @@ void Recorder::Finish(const std::string& filename) {
76 try { 76 try {
77 // Open file and write header 77 // Open file and write header
78 FileUtil::IOFile file(filename, "wb"); 78 FileUtil::IOFile file(filename, "wb");
79 size_t written = file.WriteObject(header); 79 std::size_t written = file.WriteObject(header);
80 if (written != 1 || file.Tell() != initial.gpu_registers) 80 if (written != 1 || file.Tell() != initial.gpu_registers)
81 throw "Failed to write header"; 81 throw "Failed to write header";
82 82