aboutsummaryrefslogtreecommitdiff
path: root/kernel/sched/mcu/atmega2560/context.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched/mcu/atmega2560/context.c')
-rw-r--r--kernel/sched/mcu/atmega2560/context.c3
1 files changed, 3 insertions, 0 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