Просмотр исходного кода

core: Migrate 3DS-specific CP15 register setting into Init

Lioncash 11 лет назад
Родитель
Сommit
8004d35ea1
2 измененных файлов с 5 добавлено и 8 удалено
  1. 0 8
      src/core/arm/interpreter/arminit.cpp
  2. 5 0
      src/core/core.cpp

+ 0 - 8
src/core/arm/interpreter/arminit.cpp

@@ -139,16 +139,8 @@ void ARMul_Reset(ARMul_State* state)
     state->Bank = SVCBANK;
     FLUSHPIPE;
 
-    // Reset CP15
     ResetMPCoreCP15Registers(state);
 
-    // This is separate from the CP15 register reset function, as
-    // this isn't an ARM-defined reset value; it's set by the 3DS.
-    //
-    // TODO: Whenever TLS is implemented, this should contain
-    // the address of the 0x200-byte TLS
-    state->CP15[CP15_THREAD_URO] = Memory::KERNEL_MEMORY_VADDR;
-
     state->EndCondition = 0;
     state->ErrorCode = 0;
 

+ 5 - 0
src/core/core.cpp

@@ -7,6 +7,7 @@
 #include "core/core.h"
 #include "core/core_timing.h"
 
+#include "core/mem_map.h"
 #include "core/settings.h"
 #include "core/arm/arm_interface.h"
 #include "core/arm/disassembler/arm_disasm.h"
@@ -59,6 +60,10 @@ int Init() {
     g_sys_core = new ARM_DynCom(USER32MODE);
     g_app_core = new ARM_DynCom(USER32MODE);
 
+    // TODO: Whenever TLS is implemented, this should contain
+    // the address of the 0x200-byte TLS
+    g_app_core->SetCP15Register(CP15_THREAD_URO, Memory::KERNEL_MEMORY_VADDR);
+
     LOG_DEBUG(Core, "Initialized OK");
     return 0;
 }