X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;ds=sidebyside;f=bertos%2Fcpu%2Fframe.h;h=e8d0f898973458fe214c4ad1e5272b86ccda1ad1;hb=a9104748fe30c5efd63962c1bb8e8f1d2a8001d6;hp=9fd55b0b4b006eb94f3cc503c10017fe7a7ff991;hpb=0b38ba2ac1fe2fc44ee6b417235fdc0f42f65867;p=bertos.git diff --git a/bertos/cpu/frame.h b/bertos/cpu/frame.h index 9fd55b0b..e8d0f898 100644 --- a/bertos/cpu/frame.h +++ b/bertos/cpu/frame.h @@ -69,7 +69,7 @@ #elif CPU_CM3 - #define CPU_SAVED_REGS_CNT fixme + #define CPU_SAVED_REGS_CNT 8 #define CPU_STACK_GROWS_UPWARD 0 #define CPU_SP_ON_EMPTY_SLOT 0 @@ -155,6 +155,15 @@ CPU_PUSH_WORD((sp), 0x100); \ } while (0); +#elif CPU_CM3 + + + #define CPU_PUSH_CALL_FRAME(sp, func) \ + do { \ + CPU_PUSH_WORD((sp), 0x01000000); /* xPSR */ \ + CPU_PUSH_WORD((sp), (cpu_stack_t)(func)); /* lr */ \ + } while (0); + #elif CPU_AVR /* * On AVR, addresses are pushed into the stack as little-endian, while