Attempt to fix the boot issue

This commit is contained in:
TuxSH 2017-01-24 21:59:02 +01:00
parent 61ecd9a617
commit 6c5f6ac475
3 changed files with 10 additions and 10 deletions

View File

@ -49,17 +49,17 @@ void __attribute__((naked)) arm11Stub(void)
{ {
//Disable interrupts //Disable interrupts
__asm(".word 0xF10C01C0"); __asm(".word 0xF10C01C0");
WAIT_FOR_ARM9(); WAIT_FOR_ARM9();
} }
static void invokeArm11Function(void (*func)()) static void invokeArm11Function(void (*func)())
{ {
static bool hasCopiedStub = false; static bool hasCopiedStub = false;
if(!hasCopiedStub) if(!hasCopiedStub)
{ {
memcpy((void *)ARM11_STUB_ADDRESS, arm11Stub, 0x30); memcpy((void *)ARM11_STUB_ADDRESS, arm11Stub, 0x2C);
hasCopiedStub = true; hasCopiedStub = true;
} }
@ -83,7 +83,7 @@ void deinitScreens(void)
WAIT_FOR_ARM9(); WAIT_FOR_ARM9();
} }
if(ARESCREENSINITED) invokeArm11Function(ARM11); if(ARESCREENSINITIALIZED) invokeArm11Function(ARM11);
} }
void updateBrightness(u32 brightnessIndex) void updateBrightness(u32 brightnessIndex)
@ -277,7 +277,7 @@ void initScreens(void)
if(needToSetup) if(needToSetup)
{ {
if(!ARESCREENSINITED) if(!ARESCREENSINITIALIZED)
{ {
flushDCacheRange(&configData, sizeof(CfgData)); flushDCacheRange(&configData, sizeof(CfgData));
invokeArm11Function(initSequence); invokeArm11Function(initSequence);

View File

@ -31,9 +31,9 @@
#define PDN_GPU_CNT (*(vu8 *)0x10141200) #define PDN_GPU_CNT (*(vu8 *)0x10141200)
#define ARESCREENSINITED (PDN_GPU_CNT != 1) #define ARESCREENSINITIALIZED (PDN_GPU_CNT != 1)
#define ARM11_STUB_ADDRESS 0x1FFFFFC8 #define ARM11_STUB_ADDRESS 0x1FFFFC00
#define WAIT_FOR_ARM9() *arm11Entry = 0; while(!*arm11Entry); ((void (*)())*arm11Entry)(); #define WAIT_FOR_ARM9() *arm11Entry = 0; while(!*arm11Entry); ((void (*)())*arm11Entry)();
#define SCREEN_TOP_WIDTH 400 #define SCREEN_TOP_WIDTH 400
@ -54,4 +54,4 @@ void deinitScreens(void);
void swapFramebuffers(bool isAlternate); void swapFramebuffers(bool isAlternate);
void updateBrightness(u32 brightnessIndex); void updateBrightness(u32 brightnessIndex);
void clearScreens(bool isAlternate); void clearScreens(bool isAlternate);
void initScreens(void); void initScreens(void);

View File

@ -89,7 +89,7 @@ u32 waitInput(bool isMenu)
void mcuPowerOff(void) void mcuPowerOff(void)
{ {
if(!ISFIRMLAUNCH && ARESCREENSINITED) clearScreens(false); if(!ISFIRMLAUNCH && ARESCREENSINITIALIZED) clearScreens(false);
//Ensure that all memory transfers have completed and that the data cache has been flushed //Ensure that all memory transfers have completed and that the data cache has been flushed
flushEntireDCache(); flushEntireDCache();
@ -118,4 +118,4 @@ void error(const char *message)
} }
mcuPowerOff(); mcuPowerOff();
} }