X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcpu%2Fcortex-m3%2Fhw%2Finit_lm3s.c;h=caac9d0905cfcf5608603942fab56ebb4e610ff1;hb=d9630fbb14997e3980bf0e4af4f0320a9bf69c12;hp=26ceeb7b091105c736354e8f71f755ceb91d94d5;hpb=77958b8e9d27594aa22e76132b4bbb8d0335bfc2;p=bertos.git diff --git a/bertos/cpu/cortex-m3/hw/init_lm3s.c b/bertos/cpu/cortex-m3/hw/init_lm3s.c index 26ceeb7b..caac9d09 100644 --- a/bertos/cpu/cortex-m3/hw/init_lm3s.c +++ b/bertos/cpu/cortex-m3/hw/init_lm3s.c @@ -42,64 +42,15 @@ #include /* PAUSE */ #include /* IRQ_DISABLE */ #include -#include "drv/irq_lm3s.h" -#include "drv/clock_lm3s.h" -#include "io/lm3s.h" +#include +#include +#include +#include "switch_ctx_cm3.h" extern size_t __text_end, __data_start, __data_end, __bss_start, __bss_end; extern void __init2(void); -#if CONFIG_KERN_PREEMPT -/* - * Voluntary context switch handler. - */ -static void NAKED svcall_handler(void) -{ - asm volatile ( - /* Save context */ - "mrs r3, basepri\n\t" - "mrs ip, psp\n\t" - "stmdb ip!, {r3-r11, lr}\n\t" - /* Stack switch */ - "str ip, [r1]\n\t" - "ldr ip, [r0]\n\t" - /* Restore context */ - "ldmia ip!, {r3-r11, lr}\n\t" - "msr psp, ip\n\t" - "msr basepri, r3\n\t" - "bx lr" : : : "memory"); -} - -/* - * Preemptible context switch handler. - */ -static void NAKED pendsv_handler(void) -{ - register cpu_stack_t *stack asm("ip"); - - asm volatile ( - "mrs r3, basepri\n\t" - "mov %0, %2\n\t" - "msr basepri, %0\n\t" - "mrs %0, psp\n\t" - "stmdb %0!, {r3-r11, lr}\n\t" - : "=r"(stack) - : "r"(stack), "i"(IRQ_PRIO_DISABLED) - : "r3", "memory"); - proc_current()->stack = stack; - proc_preempt(); - stack = proc_current()->stack; - asm volatile ( - "ldmia %0!, {r3-r11, lr}\n\t" - "msr psp, %0\n\t" - "msr basepri, r3\n\t" - "bx lr" - : "=r"(stack) : "r"(stack) - : "memory"); -} -#endif - /* Architecture's entry point */ void __init2(void) {