armcm_boot: Use armcm_main() instead of main() to start board code
The main() function has a special meaning to gcc and using it can result in different code generation. Use armcm_main() to avoid that. Also, invoke SystemInit() from the board specific armcm_main() code. This gives the board code more control over board initialization. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
@@ -6,8 +6,8 @@
|
||||
|
||||
#include "armcm_boot.h" // DECL_ARMCM_IRQ
|
||||
#include "autoconf.h" // CONFIG_MCU
|
||||
#include "board/internal.h" // SystemInit
|
||||
#include "command.h" // DECL_CONSTANT_STR
|
||||
#include "misc.h" // dynmem_start
|
||||
|
||||
// Export MCU type
|
||||
DECL_CONSTANT_STR("MCU", CONFIG_MCU);
|
||||
@@ -37,14 +37,10 @@ ResetHandler(void)
|
||||
// Initializing the C library isn't needed...
|
||||
//__libc_init_array();
|
||||
|
||||
// Initialize the machine
|
||||
SystemInit();
|
||||
// Run the main board specific code
|
||||
armcm_main();
|
||||
|
||||
// Run the main code
|
||||
extern int main(void);
|
||||
main();
|
||||
|
||||
// The main() call should not return
|
||||
// The armcm_main() call should not return
|
||||
for (;;)
|
||||
;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#include "ctr.h" // DECL_CTR_INT
|
||||
|
||||
void armcm_main(void);
|
||||
|
||||
// Declare an IRQ handler
|
||||
#define DECL_ARMCM_IRQ(FUNC, NUM) \
|
||||
DECL_CTR_INT("DECL_ARMCM_IRQ " __stringify(FUNC), 1, CTR_INT(NUM))
|
||||
|
||||
Reference in New Issue
Block a user