diff options
author | NIIBE Yutaka <gniibe@fsij.org> | 2014-07-30 16:09:39 +0900 |
---|---|---|
committer | NIIBE Yutaka <gniibe@fsij.org> | 2014-12-10 18:50:09 +0900 |
commit | 5137db82902ded4cabb4667ade17d1732f73c736 (patch) | |
tree | 19c16f9d6b6d0320765d15f3d988f10810712155 /entry.c | |
parent | 522380097ea768e7474c0de8195cc0ced03904e8 (diff) |
Cortex-M0 works.
Diffstat (limited to 'entry.c')
-rw-r--r-- | entry.c | 16 |
1 files changed, 16 insertions, 0 deletions
@@ -379,9 +379,22 @@ static void nmi (void) for (;;); } +extern void svc (void); + static void hard_fault (void) { +#if 1 + register uint32_t primask; + + asm ("mrs %0, PRIMASK" : "=r" (primask)); + + if (primask) + asm volatile ("b svc"); + else + for (;;); +#else for (;;); +#endif } static void mem_manage (void) @@ -462,8 +475,11 @@ void entry (void) "bl chx_systick_init\n\t" "bl gpio_init\n\t" /* Enable interrupts. */ +#if __ARM_ARCH_6M__ +#else "mov r0, #0\n\t" "msr BASEPRI, r0\n\t" +#endif "cpsie i\n\t" /* Call main. */ "mov r1, r0\n\t" |