diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-01-25 01:22:40 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-01-25 01:22:40 +0100 |
commit | 06c4f980e915c2ec6c685ca2ba8781b9af547239 (patch) | |
tree | 94634dc4798809e0fa6180ed44e655afcab5b1a3 /kernel/sched/mcu | |
parent | 9a10159e96a13585f9040ac5b15a3520f3d93ec8 (diff) | |
download | mux-06c4f980e915c2ec6c685ca2ba8781b9af547239.tar.gz mux-06c4f980e915c2ec6c685ca2ba8781b9af547239.tar.bz2 mux-06c4f980e915c2ec6c685ca2ba8781b9af547239.zip |
fix freezing
Diffstat (limited to 'kernel/sched/mcu')
-rw-r--r-- | kernel/sched/mcu/atmega2560/context.c | 3 | ||||
-rw-r--r-- | kernel/sched/mcu/atmega2560/include/mcu/sched/context.h | 1 |
2 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched/mcu/atmega2560/context.c b/kernel/sched/mcu/atmega2560/context.c index ef7e172..10f16a9 100644 --- a/kernel/sched/mcu/atmega2560/context.c +++ b/kernel/sched/mcu/atmega2560/context.c @@ -4,6 +4,7 @@ char* init_stack(const char* const mem_low, const char* const mem_high, void (*e char* sp = (char*) mem_high; unsigned long address = (unsigned long) entry; + // pattern for debugging purposes *sp = (char) 0x1; sp--; *sp = (char) 0x2; @@ -13,6 +14,7 @@ char* init_stack(const char* const mem_low, const char* const mem_high, void (*e *sp = (char) 0x2; sp--; + // put return address on stack *sp = (char) ( address & (unsigned short) 0x00ff ); sp--; @@ -22,6 +24,7 @@ char* init_stack(const char* const mem_low, const char* const mem_high, void (*e *sp = (char) ( (address >> 16) & ( unsigned short ) 0x00ff ); sp--; + // save registers *sp = (char) 0x00; //r0 sp--; *sp = (char) 0x80; //SREG, enable interrupts when task starts diff --git a/kernel/sched/mcu/atmega2560/include/mcu/sched/context.h b/kernel/sched/mcu/atmega2560/include/mcu/sched/context.h index d3b324c..437e7f3 100644 --- a/kernel/sched/mcu/atmega2560/include/mcu/sched/context.h +++ b/kernel/sched/mcu/atmega2560/include/mcu/sched/context.h @@ -13,7 +13,6 @@ asm volatile ( \ "push r0 \n\t" \ "in r0, __SREG__ \n\t" \ - "cli \n\t" \ "push r0 \n\t" \ "push r1 \n\t" \ "clr r1 \n\t" \ |