diff options
| author | 2018-04-02 13:05:25 -0400 | |
|---|---|---|
| committer | 2018-04-02 13:05:25 -0400 | |
| commit | f92594d744eedc6f8b01c5d5f761b55b7035be1f (patch) | |
| tree | 487a643bbd523b37e95ba1fc1bd3baa576831485 /src/core/hle/kernel | |
| parent | Merge pull request #288 from Subv/macro_interpreter (diff) | |
| parent | hle_ipc, fsp_srv: Cleanup logging. (diff) | |
| download | yuzu-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.cpp | 7 | ||||
| -rw-r--r-- | src/core/hle/kernel/process.cpp | 5 | ||||
| -rw-r--r-- | src/core/hle/kernel/thread.cpp | 2 |
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 | ||
| 269 | size_t HLERequestContext::WriteBuffer(const void* buffer, size_t size) const { | 269 | size_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 | ||