Tim Exton-McGuinness
/
round-robin-rtos
Round robin Scheduler
rtos.s
- Committer:
- timexton
- Date:
- 2010-09-09
- Revision:
- 0:cf2d4c337b6f
File content as of revision 0:cf2d4c337b6f:
AREA |.text|, CODE, READONLY ;------------------------------------------------------------------- itask PROC EXPORT itask stmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} mov r2,sp ;save this stack pointer mov sp,r0 ;load new task stack pointer mov lr,r1 ;load link address (start of task) stmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} mov r0,r13 ;return new stack pointer mov sp,r2 ;restore real stack pointer ldmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} bx lr ENDP align ;------------------------------------------------------------- sleep_task PROC EXPORT sleep_task ;r0=savesp r1=*tasksp stmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} str sp,[r1] ;save this stack pointer mov sp,r0 ;load new task stack pointer ldmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} bx lr ENDP align ;------------------------------------------------------------- run_task PROC EXPORT run_task ;r0=*savesp r1=newsp stmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} str sp,[r0] ;save this stack pointer mov sp,r1 ;load new task stack pointer ldmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} bx lr ENDP align END