diff --git a/include/arm9/firm.h b/include/arm9/firm.h index 700de8f..af5b9d1 100644 --- a/include/arm9/firm.h +++ b/include/arm9/firm.h @@ -41,9 +41,6 @@ }; */ -extern void NORETURN (*firmLaunchEntry9)(void); -extern void NORETURN (*firmLaunchEntry11)(void); - bool firm_load_verify(u32 firmSize); -void NORETURN firm_launch(void); +noreturn void firm_launch(void); diff --git a/include/types.h b/include/types.h index b07b343..89d6554 100644 --- a/include/types.h +++ b/include/types.h @@ -4,11 +4,11 @@ #include #include #include -#include // alignas(alignment_in_bytes) +#include // alignas(alignment_in_bytes) +#include // noreturn keyword -#define NORETURN __attribute__((noreturn)) #define PACKED __attribute__((packed)) #define UNUSED __attribute__((unused)) #define NAKED __attribute__((naked)) diff --git a/source/arm9/debug.c b/source/arm9/debug.c index 75ecef4..95d1e5d 100644 --- a/source/arm9/debug.c +++ b/source/arm9/debug.c @@ -23,7 +23,7 @@ debugHash += *ptr; } -void NORETURN panic() +noreturn void panic() { register u32 lr __asm__("lr"); @@ -39,7 +39,7 @@ // Expects the registers in the exception stack to be in the following order: // cpsr, pc (unmodified), r0-r14 -void NORETURN guruMeditation(u8 type, u32 *excStack) +noreturn void guruMeditation(u8 type, u32 *excStack) { const char *typeStr[3] = {"Undefined instruction", "Prefetch abort", "Data abort"}; u32 realPc, instSize = 4; diff --git a/source/arm9/firm.c b/source/arm9/firm.c index 67e206b..df44a87 100644 --- a/source/arm9/firm.c +++ b/source/arm9/firm.c @@ -52,11 +52,9 @@ void NAKED firmLaunchStub(void) { firm_header *firm_hdr = (firm_header*)FIRM_LOAD_ADDR; - register void (*entry9)(void) = firmLaunchEntry9; - if(firmLaunchEntry9 == NULL) entry9 = (void (*)(void))firm_hdr->entrypointarm9; + register u32 entry9 = firm_hdr->entrypointarm9; register u32 ret = firm_hdr->entrypointarm9; - register void (*entry11)(void) = firmLaunchEntry11; - if(firmLaunchEntry11 == NULL) entry11 = (void (*)(void))firm_hdr->entrypointarm11; + register u32 entry11 = firm_hdr->entrypointarm11; for(int i = 0; i < 4; i++) @@ -158,7 +156,7 @@ return retval; } -void NORETURN firm_launch(void) +noreturn void firm_launch(void) { PXI_sendWord(0x544F4F42); diff --git a/source/arm9/start.s b/source/arm9/start.s index f0e7c13..9fad3cd 100644 --- a/source/arm9/start.s +++ b/source/arm9/start.s @@ -8,8 +8,6 @@ .global _start .global clearMem .global _init -.global firmLaunchEntry9 -.global firmLaunchEntry11 .type _start STT_FUNC .type clearMem STT_FUNC @@ -37,11 +35,6 @@ .string "3DS BOOTLOADER " .word BOOTLOADER_VERSION - .word 0 @ Flags -firmLaunchEntry9: - .word 0 @ Entrypoint override field -firmLaunchEntry11: - .word 0 skip_pool: ldr sp, =A9_STACK_END