X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fcommon%2Fstartup.c;h=0a5507ac9a0524264d062447b3d9047693fc2501;hb=206f765a129a285e5db70505d2c1154564046ac8;hp=daa8906c38f1c36fa7f8127095772bf2cc168791;hpb=2b618b466f5ba3df4bb97afb732d10469c5da3c0;p=gps-watch.git diff --git a/src/common/startup.c b/src/common/startup.c index daa8906..0a5507a 100644 --- a/src/common/startup.c +++ b/src/common/startup.c @@ -150,3 +150,17 @@ Dummy_Handler (void) for (;;) { } } + +void +jump_to_application (volatile uint32_t *address) +{ + volatile uint32_t *vtor = (uint32_t *) 0xe000ed08; + *vtor = (uint32_t) address; + + asm volatile ("" ::: "memory"); + asm volatile ("msr msp, %0" :: "r" (*(address + 0)) : "sp"); + asm volatile ("bx %0" :: "r" (*(address + 1))); + + for (;;) { + } +}