aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/service/csnd_snd.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2016-05-13 15:33:44 -0400
committerbunnei <bunneidev@gmail.com>2016-05-13 15:33:44 -0400
commit18b517e236b7f6710567e57dab6a7c5329db948f (patch)
tree5257e9ace394fa6062768c27b95e807df87c61b2 /src/core/hle/service/csnd_snd.cpp
parent193ea9df29e40f8ba3f75a9b8abb92e760e943d0 (diff)
parentac2de12ed8a7cc2759e25325f388db92b3f356a6 (diff)
Merge pull request #1689 from Subv/shmem
Kernel: Implemented shared memory.
Diffstat (limited to 'src/core/hle/service/csnd_snd.cpp')
-rw-r--r--src/core/hle/service/csnd_snd.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/core/hle/service/csnd_snd.cpp b/src/core/hle/service/csnd_snd.cpp
index 6318bf2a7..d2bb8941c 100644
--- a/src/core/hle/service/csnd_snd.cpp
+++ b/src/core/hle/service/csnd_snd.cpp
@@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include <cstring>
+#include "common/alignment.h"
#include "core/hle/hle.h"
#include "core/hle/kernel/mutex.h"
#include "core/hle/kernel/shared_memory.h"
@@ -41,14 +42,16 @@ static Kernel::SharedPtr<Kernel::Mutex> mutex = nullptr;
void Initialize(Service::Interface* self) {
u32* cmd_buff = Kernel::GetCommandBuffer();
- shared_memory = Kernel::SharedMemory::Create(cmd_buff[1],
- Kernel::MemoryPermission::ReadWrite,
- Kernel::MemoryPermission::ReadWrite, "CSNDSharedMem");
+ u32 size = Common::AlignUp(cmd_buff[1], Memory::PAGE_SIZE);
+ using Kernel::MemoryPermission;
+ shared_memory = Kernel::SharedMemory::Create(nullptr, size,
+ MemoryPermission::ReadWrite, MemoryPermission::ReadWrite,
+ 0, Kernel::MemoryRegion::BASE, "CSND:SharedMemory");
mutex = Kernel::Mutex::Create(false);
- cmd_buff[1] = 0;
- cmd_buff[2] = 0x4000000;
+ cmd_buff[1] = RESULT_SUCCESS.raw;
+ cmd_buff[2] = IPC::MoveHandleDesc(2);
cmd_buff[3] = Kernel::g_handle_table.Create(mutex).MoveFrom();
cmd_buff[4] = Kernel::g_handle_table.Create(shared_memory).MoveFrom();
}