mirror of
https://github.com/wheremyfoodat/Panda3DS.git
synced 2025-07-27 17:10:47 +12:00
[APT] Implement new 3DS check, [OS] Fix mem allog bug & impl more of HID
This commit is contained in:
parent
c4cb20f846
commit
0aaf1c317d
14 changed files with 143 additions and 60 deletions
src/core/kernel
|
@ -138,7 +138,7 @@ void Kernel::outputDebugString() {
|
|||
const u32 size = regs[1];
|
||||
|
||||
std::string message = mem.readString(pointer, size);
|
||||
logSVC("[OutputDebugString] %s\n", message.c_str());
|
||||
logDebugString("[OutputDebugString] %s\n", message.c_str());
|
||||
regs[0] = SVCResult::Success;
|
||||
}
|
||||
|
||||
|
|
|
@ -92,15 +92,23 @@ void Kernel::mapMemoryBlock() {
|
|||
const u32 addr = regs[1];
|
||||
const u32 myPerms = regs[2];
|
||||
const u32 otherPerms = regs[3];
|
||||
logSVC("MapMemoryBlock(block = %d, addr = %08X, myPerms = %X, otherPerms = %X\n", block, addr, myPerms, otherPerms);
|
||||
logSVC("MapMemoryBlock(block = %X, addr = %08X, myPerms = %X, otherPerms = %X\n", block, addr, myPerms, otherPerms);
|
||||
|
||||
if (!isAligned(addr)) [[unlikely]] {
|
||||
Helpers::panic("MapMemoryBlock: Unaligned address");
|
||||
}
|
||||
|
||||
if (block == KernelHandles::GSPSharedMemHandle) {
|
||||
mem.mapGSPSharedMemory(addr, myPerms, otherPerms);
|
||||
serviceManager.setGSPSharedMem(static_cast<u8*>(mem.getReadPointer(addr)));
|
||||
if (KernelHandles::isSharedMemHandle(block)) {
|
||||
u8* ptr = mem.mapSharedMemory(block, addr, myPerms, otherPerms); // Map shared memory block
|
||||
|
||||
// Pass pointer to shared memory to the appropriate service
|
||||
if (block == KernelHandles::HIDSharedMemHandle) {
|
||||
serviceManager.setHIDSharedMem(ptr);
|
||||
} else if (block == KernelHandles::GSPSharedMemHandle) {
|
||||
serviceManager.setGSPSharedMem(ptr);
|
||||
} else {
|
||||
Helpers::panic("Mapping unknown shared memory block: %X", block);
|
||||
}
|
||||
} else {
|
||||
Helpers::panic("MapMemoryBlock where the handle does not refer to GSP memory");
|
||||
}
|
||||
|
|
|
@ -6,7 +6,6 @@ Handle Kernel::makePort(const char* name) {
|
|||
portHandles.push_back(ret); // Push the port handle to our cache of port handles
|
||||
objects[ret].data = new Port(name);
|
||||
|
||||
// printf("Created %s port \"%s\" with handle %d\n", data->isPublic ? "public" : "private", data->name, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue