drc: align size passed to mprotect
authornotaz <notasas@gmail.com>
Sat, 22 Jan 2022 23:24:36 +0000 (01:24 +0200)
committernotaz <notasas@gmail.com>
Sun, 23 Jan 2022 21:18:20 +0000 (23:18 +0200)
Maybe this makes svcControlProcessMemory() not do it's work there?
It doesn't seem to be failing though.

libpcsxcore/new_dynarec/new_dynarec.c

index 8fe3f93..bcbc009 100644 (file)
@@ -6789,7 +6789,7 @@ static void new_dynarec_test(void)
     SysPrintf("linkage_arm* miscompilation/breakage detected.\n");
   }
 
-  SysPrintf("testing if we can run recompiled code...\n");
+  SysPrintf("testing if we can run recompiled code @%p...\n", out);
   ((volatile u_int *)out)[0]++; // make cache dirty
 
   for (i = 0; i < ARRAY_SIZE(ret); i++) {
@@ -6874,7 +6874,8 @@ void new_dynarec_init(void)
 #else
   #ifndef NO_WRITE_EXEC
   // not all systems allow execute in data segment by default
-  if (mprotect(ndrc, sizeof(ndrc->translation_cache) + sizeof(ndrc->tramp.ops),
+  // size must be 4K aligned for 3DS?
+  if (mprotect(ndrc, sizeof(*ndrc),
                PROT_READ | PROT_WRITE | PROT_EXEC) != 0)
     SysPrintf("mprotect() failed: %s\n", strerror(errno));
   #endif