summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorGravatar bunnei2018-04-02 13:05:25 -0400
committerGravatar GitHub2018-04-02 13:05:25 -0400
commitf92594d744eedc6f8b01c5d5f761b55b7035be1f (patch)
tree487a643bbd523b37e95ba1fc1bd3baa576831485 /src/core/hle/kernel
parentMerge pull request #288 from Subv/macro_interpreter (diff)
parenthle_ipc, fsp_srv: Cleanup logging. (diff)
downloadyuzu-f92594d744eedc6f8b01c5d5f761b55b7035be1f.tar.gz
yuzu-f92594d744eedc6f8b01c5d5f761b55b7035be1f.tar.xz
yuzu-f92594d744eedc6f8b01c5d5f761b55b7035be1f.zip
Merge pull request #296 from bunnei/misc-mem-fsp-fixes
Fix stack region, implement FSP GetSize/SetSize, and some stubs
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/hle_ipc.cpp7
-rw-r--r--src/core/hle/kernel/process.cpp5
-rw-r--r--src/core/hle/kernel/thread.cpp2
3 files changed, 9 insertions, 5 deletions
diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp
index ffcbfe64f..bef4f15f5 100644
--- a/src/core/hle/kernel/hle_ipc.cpp
+++ b/src/core/hle/kernel/hle_ipc.cpp
@@ -268,8 +268,11 @@ std::vector<u8> HLERequestContext::ReadBuffer() const {
268 268
269size_t HLERequestContext::WriteBuffer(const void* buffer, size_t size) const { 269size_t HLERequestContext::WriteBuffer(const void* buffer, size_t size) const {
270 const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[0].Size()}; 270 const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[0].Size()};
271 271 const size_t buffer_size{GetWriteBufferSize()};
272 ASSERT_MSG(size <= GetWriteBufferSize(), "Size %lx is too big", size); 272 if (size > buffer_size) {
273 LOG_CRITICAL(Core, "size (%016zx) is greater than buffer_size (%016zx)", size, buffer_size);
274 size = buffer_size; // TODO(bunnei): This needs to be HW tested
275 }
273 276
274 if (is_buffer_b) { 277 if (is_buffer_b) {
275 Memory::WriteBlock(BufferDescriptorB()[0].Address(), buffer, size); 278 Memory::WriteBlock(BufferDescriptorB()[0].Address(), buffer, size);
diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp
index 3694afc60..2cffec198 100644
--- a/src/core/hle/kernel/process.cpp
+++ b/src/core/hle/kernel/process.cpp
@@ -121,8 +121,9 @@ void Process::Run(VAddr entry_point, s32 main_thread_priority, u32 stack_size) {
121 // TODO(bunnei): This is heap area that should be allocated by the kernel and not mapped as part 121 // TODO(bunnei): This is heap area that should be allocated by the kernel and not mapped as part
122 // of the user address space. 122 // of the user address space.
123 vm_manager 123 vm_manager
124 .MapMemoryBlock(Memory::STACK_VADDR, std::make_shared<std::vector<u8>>(stack_size, 0), 0, 124 .MapMemoryBlock(Memory::STACK_AREA_VADDR_END - stack_size,
125 stack_size, MemoryState::Mapped) 125 std::make_shared<std::vector<u8>>(stack_size, 0), 0, stack_size,
126 MemoryState::Mapped)
126 .Unwrap(); 127 .Unwrap();
127 misc_memory_used += stack_size; 128 misc_memory_used += stack_size;
128 memory_region->used += stack_size; 129 memory_region->used += stack_size;
diff --git a/src/core/hle/kernel/thread.cpp b/src/core/hle/kernel/thread.cpp
index 145f50887..f3a8aa4aa 100644
--- a/src/core/hle/kernel/thread.cpp
+++ b/src/core/hle/kernel/thread.cpp
@@ -342,7 +342,7 @@ SharedPtr<Thread> SetupMainThread(VAddr entry_point, u32 priority,
342 342
343 // Initialize new "main" thread 343 // Initialize new "main" thread
344 auto thread_res = Thread::Create("main", entry_point, priority, 0, THREADPROCESSORID_0, 344 auto thread_res = Thread::Create("main", entry_point, priority, 0, THREADPROCESSORID_0,
345 Memory::STACK_VADDR_END, owner_process); 345 Memory::STACK_AREA_VADDR_END, owner_process);
346 346
347 SharedPtr<Thread> thread = std::move(thread_res).Unwrap(); 347 SharedPtr<Thread> thread = std::move(thread_res).Unwrap();
348 348