From b27ab46bde8bd0c376747284435fcfa2b35aea75 Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 31 Mar 2018 15:03:28 -0400 Subject: memory: Fix stack region. --- src/core/hle/kernel/process.cpp | 5 +++-- src/core/hle/kernel/thread.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src/core/hle/kernel') 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) { // TODO(bunnei): This is heap area that should be allocated by the kernel and not mapped as part // of the user address space. vm_manager - .MapMemoryBlock(Memory::STACK_VADDR, std::make_shared>(stack_size, 0), 0, - stack_size, MemoryState::Mapped) + .MapMemoryBlock(Memory::STACK_AREA_VADDR_END - stack_size, + std::make_shared>(stack_size, 0), 0, stack_size, + MemoryState::Mapped) .Unwrap(); misc_memory_used += stack_size; 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 SetupMainThread(VAddr entry_point, u32 priority, // Initialize new "main" thread auto thread_res = Thread::Create("main", entry_point, priority, 0, THREADPROCESSORID_0, - Memory::STACK_VADDR_END, owner_process); + Memory::STACK_AREA_VADDR_END, owner_process); SharedPtr thread = std::move(thread_res).Unwrap(); -- cgit v1.2.3 From eef097bdc7dfbc0738ed3cacaded0773a223885b Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 31 Mar 2018 16:05:19 -0400 Subject: hle_ipc: Do not ensure write buffer size. --- src/core/hle/kernel/hle_ipc.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/core/hle/kernel') diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index ffcbfe64f..4bbeb0a16 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp @@ -268,8 +268,11 @@ std::vector HLERequestContext::ReadBuffer() const { size_t HLERequestContext::WriteBuffer(const void* buffer, size_t size) const { const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[0].Size()}; - - ASSERT_MSG(size <= GetWriteBufferSize(), "Size %lx is too big", size); + const size_t buffer_size{GetWriteBufferSize()}; + if (size > buffer_size) { + LOG_CRITICAL(Core, "size=%08x is greater than buffer_size=%08x", size, buffer_size); + size = buffer_size; // TODO(bunnei): This needs to be HW tested + } if (is_buffer_b) { Memory::WriteBlock(BufferDescriptorB()[0].Address(), buffer, size); -- cgit v1.2.3 From f4ba523992a61bbdec6c849d462389b938beff87 Mon Sep 17 00:00:00 2001 From: bunnei Date: Sat, 31 Mar 2018 23:30:00 -0400 Subject: hle_ipc, fsp_srv: Cleanup logging. --- src/core/hle/kernel/hle_ipc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/core/hle/kernel') diff --git a/src/core/hle/kernel/hle_ipc.cpp b/src/core/hle/kernel/hle_ipc.cpp index 4bbeb0a16..bef4f15f5 100644 --- a/src/core/hle/kernel/hle_ipc.cpp +++ b/src/core/hle/kernel/hle_ipc.cpp @@ -270,7 +270,7 @@ size_t HLERequestContext::WriteBuffer(const void* buffer, size_t size) const { const bool is_buffer_b{BufferDescriptorB().size() && BufferDescriptorB()[0].Size()}; const size_t buffer_size{GetWriteBufferSize()}; if (size > buffer_size) { - LOG_CRITICAL(Core, "size=%08x is greater than buffer_size=%08x", size, buffer_size); + LOG_CRITICAL(Core, "size (%016zx) is greater than buffer_size (%016zx)", size, buffer_size); size = buffer_size; // TODO(bunnei): This needs to be HW tested } -- cgit v1.2.3