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.c98
1 files changed, 0 insertions, 98 deletions
diff --git a/kernel/sched/mcu/atmega2560/context.c b/kernel/sched/mcu/atmega2560/context.c
deleted file mode 100644
index 10f16a9..0000000
--- a/kernel/sched/mcu/atmega2560/context.c
+++ /dev/null
@@ -1,98 +0,0 @@
-#include "mcu/sched/context.h"
-
-char* init_stack(const char* const mem_low, const char* const mem_high, void (*entry)(char), char args) {
- char* sp = (char*) mem_high;
- unsigned long address = (unsigned long) entry;
-
- // pattern for debugging purposes
- *sp = (char) 0x1;
- sp--;
- *sp = (char) 0x2;
- sp--;
- *sp = (char) 0x1;
- sp--;
- *sp = (char) 0x2;
- sp--;
-
- // put return address on stack
- *sp = (char) ( address & (unsigned short) 0x00ff );
- sp--;
-
- *sp = (char) ( (address >> 8) & ( unsigned short ) 0x00ff );
- sp--;
-
- *sp = (char) ( (address >> 16) & ( unsigned short ) 0x00ff );
- sp--;
-
- // save registers
- *sp = (char) 0x00; //r0
- sp--;
- *sp = (char) 0x80; //SREG, enable interrupts when task starts
- sp--;
- *sp = ( char ) 0x00; //r1
- sp--;
- *sp = ( char ) 0x00; //r2
- sp--;
- *sp = ( char ) 0x00; //r3
- sp--;
- *sp = ( char ) 0x00; //r4
- sp--;
- *sp = ( char ) 0x00; //r5
- sp--;
- *sp = ( char ) 0x00; //r6
- sp--;
- *sp = ( char ) 0x00; //r7
- sp--;
- *sp = ( char ) 0x00; //r8
- sp--;
- *sp = ( char ) 0x00; //r9
- sp--;
- *sp = ( char ) 0x00; //r10
- sp--;
- *sp = ( char ) 0x00; //r11
- sp--;
- *sp = ( char ) 0x00; //r12
- sp--;
- *sp = ( char ) 0x00; //r13
- sp--;
- *sp = ( char ) 0x00; //r14
- sp--;
- *sp = ( char ) 0x00; //r15
- sp--;
- *sp = ( char ) 0x00; //r16
- sp--;
- *sp = ( char ) 0x00; //r17
- sp--;
- *sp = ( char ) 0x00; //r18
- sp--;
- *sp = ( char ) 0x00; //r19
- sp--;
- *sp = ( char ) 0x00; //r20
- sp--;
- *sp = ( char ) 0x00; //r21
- sp--;
- *sp = ( char ) 0x00; //r22
- sp--;
- *sp = ( char ) 0x00; //r23
- sp--;
-
- *sp = (char) ( args ); //place first argument in register 24
- sp--;
-
- *sp = ( char ) 0x00; //r25
- sp--;
- *sp = ( char ) 0x00; //r26
- sp--;
- *sp = ( char ) 0x00; //r27
- sp--;
- *sp = ( char ) 0x00; //r28
- sp--;
- *sp = ( char ) 0x00; //r29
- sp--;
- *sp = ( char ) 0x00; //r30
- sp--;
- *sp = ( char ) 0x00; //r31
- sp--;
-
- return sp;
-}