diff --git a/arm11/source/gic.c b/arm11/source/gic.c index 25e426d..d7da669 100644 --- a/arm11/source/gic.c +++ b/arm11/source/gic.c @@ -13,8 +13,8 @@ irq_handler GIC_AckIRQ(void) irq_handler ret = NULL; if (xrq < MAX_IRQ && handler_table[xrq]) { ret = handler_table[xrq]; - *GIC_IRQEND = xrq; } + *GIC_IRQEND = xrq; return ret; } diff --git a/arm11/source/irq.s b/arm11/source/irq.s index 3d53fc5..22a452d 100644 --- a/arm11/source/irq.s +++ b/arm11/source/irq.s @@ -23,5 +23,5 @@ main_irq_handler: .Lskip_irq: pop {r1,lr} add sp, sp, r1 @ Restore stack pointer - pop {r0-r3,lr} @ Restore registers + pop {r0-r3,r12} @ Restore registers rfeia sp! @ Return From Exception diff --git a/arm9/source/godmode.c b/arm9/source/godmode.c index 1c117c8..ad48be5 100644 --- a/arm9/source/godmode.c +++ b/arm9/source/godmode.c @@ -1783,7 +1783,6 @@ u32 GodMode(int entrypoint) { return exit_mode; } - I2C_init(); InitSDCardFS(); AutoEmuNandBase(true); InitNandCrypto(entrypoint != ENTRY_B9S); @@ -2293,7 +2292,6 @@ u32 ScriptRunner(int entrypoint) { SplashInit("scriptrunner mode"); u64 timer = timer_start(); - I2C_init(); InitSDCardFS(); AutoEmuNandBase(true); InitNandCrypto(entrypoint != ENTRY_B9S); diff --git a/arm9/source/main.c b/arm9/source/main.c index 8dc0f5c..d4ecc53 100644 --- a/arm9/source/main.c +++ b/arm9/source/main.c @@ -8,6 +8,9 @@ void main(int argc, char** argv, int entrypoint) (void) argc; (void) argv; + PXI_Reset(); + I2C_init(); + // Wait for ARM11 PXI_WaitRemote(PXI_READY);