X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fcommon%2Fstartup.c;h=256863ff213709d42ed8526f87fb2b796e2d2d8b;hb=b0ba131fbae07787bcac2149464eebb0c6272aa3;hp=daa8906c38f1c36fa7f8127095772bf2cc168791;hpb=d899a72babb4c2d80fe6e46a77e570864218b46f;p=gps-watch.git diff --git a/src/common/startup.c b/src/common/startup.c index daa8906..256863f 100644 --- a/src/common/startup.c +++ b/src/common/startup.c @@ -150,3 +150,18 @@ Dummy_Handler (void) for (;;) { } } + +__attribute__ ((noreturn)) +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 (;;) { + } +}