Fix games like Paper Mario Color Splash from crashing with the message "Kernel copy thread stack allocation failed"

This commit is contained in:
BullyWiiPlaza 2017-08-20 22:03:08 +02:00
parent 029bb4b14e
commit c276347b62
2 changed files with 13 additions and 9 deletions

View File

@ -67,22 +67,26 @@ int kernelCopyService(int argc, void *argv) {
} }
} }
// This is here to avoid the warning
return 0; return 0;
} }
void startKernelCopyService() { void startKernelCopyService() {
unsigned int stack = (unsigned int) memalign(0x40, 0x100); unsigned int stack = (unsigned int) memalign(0x40, 0x100);
ASSERT_ALLOCATED(stack, "Kernel copy thread stack")
if (stack != 0) {
stack += 0x100; stack += 0x100;
void *thread = memalign(0x40, 0x1000); void *thread = memalign(0x40, 0x1000);
ASSERT_ALLOCATED(thread, "Kernel copy thread") ASSERT_ALLOCATED(thread, "Kernel copy thread")
int status = OSCreateThread(thread, kernelCopyService, 1, NULL, (u32) stack + sizeof(stack), sizeof(stack), 31, int status = OSCreateThread(thread, kernelCopyService, 1, NULL, (u32) stack + sizeof(stack), sizeof(stack), 31,
OS_THREAD_ATTR_AFFINITY_CORE1 | OS_THREAD_ATTR_PINNED_AFFINITY | OS_THREAD_ATTR_DETACH); OS_THREAD_ATTR_AFFINITY_CORE1 | OS_THREAD_ATTR_PINNED_AFFINITY |
OS_THREAD_ATTR_DETACH);
ASSERT_INTEGER(status, 1, "Creating kernel copy thread") ASSERT_INTEGER(status, 1, "Creating kernel copy thread")
// OSSetThreadName(thread, "Kernel Copier"); // OSSetThreadName(thread, "Kernel Copier");
OSResumeThread(thread); OSResumeThread(thread);
} }
}
#define MINIMUM_KERNEL_COMPARE_LENGTH 4 #define MINIMUM_KERNEL_COMPARE_LENGTH 4
#define KERNEL_MEMORY_COMPARE_STEP_SIZE 1 #define KERNEL_MEMORY_COMPARE_STEP_SIZE 1

Binary file not shown.