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

master
Lioncash 2015-04-06 13:01:19 +07:00
parent c3ffe8f9c3
commit 8004d35ea1
2 changed files with 5 additions and 8 deletions

@ -139,16 +139,8 @@ void ARMul_Reset(ARMul_State* state)
state->Bank = SVCBANK; state->Bank = SVCBANK;
FLUSHPIPE; FLUSHPIPE;
// Reset CP15
ResetMPCoreCP15Registers(state); 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->EndCondition = 0;
state->ErrorCode = 0; state->ErrorCode = 0;

@ -7,6 +7,7 @@
#include "core/core.h" #include "core/core.h"
#include "core/core_timing.h" #include "core/core_timing.h"
#include "core/mem_map.h"
#include "core/settings.h" #include "core/settings.h"
#include "core/arm/arm_interface.h" #include "core/arm/arm_interface.h"
#include "core/arm/disassembler/arm_disasm.h" #include "core/arm/disassembler/arm_disasm.h"
@ -59,6 +60,10 @@ int Init() {
g_sys_core = new ARM_DynCom(USER32MODE); g_sys_core = new ARM_DynCom(USER32MODE);
g_app_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"); LOG_DEBUG(Core, "Initialized OK");
return 0; return 0;
} }