Tim Exton-McGuinness
/
round-robin-rtos
Round robin Scheduler
rtos.s@0:cf2d4c337b6f, 2010-09-09 (annotated)
- Committer:
- timexton
- Date:
- Thu Sep 09 14:09:14 2010 +0000
- Revision:
- 0:cf2d4c337b6f
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
timexton | 0:cf2d4c337b6f | 1 | AREA |.text|, CODE, READONLY |
timexton | 0:cf2d4c337b6f | 2 | |
timexton | 0:cf2d4c337b6f | 3 | |
timexton | 0:cf2d4c337b6f | 4 | ;------------------------------------------------------------------- |
timexton | 0:cf2d4c337b6f | 5 | itask PROC |
timexton | 0:cf2d4c337b6f | 6 | EXPORT itask |
timexton | 0:cf2d4c337b6f | 7 | stmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} |
timexton | 0:cf2d4c337b6f | 8 | |
timexton | 0:cf2d4c337b6f | 9 | mov r2,sp ;save this stack pointer |
timexton | 0:cf2d4c337b6f | 10 | mov sp,r0 ;load new task stack pointer |
timexton | 0:cf2d4c337b6f | 11 | mov lr,r1 ;load link address (start of task) |
timexton | 0:cf2d4c337b6f | 12 | |
timexton | 0:cf2d4c337b6f | 13 | stmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} |
timexton | 0:cf2d4c337b6f | 14 | mov r0,r13 ;return new stack pointer |
timexton | 0:cf2d4c337b6f | 15 | |
timexton | 0:cf2d4c337b6f | 16 | mov sp,r2 ;restore real stack pointer |
timexton | 0:cf2d4c337b6f | 17 | |
timexton | 0:cf2d4c337b6f | 18 | ldmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} |
timexton | 0:cf2d4c337b6f | 19 | |
timexton | 0:cf2d4c337b6f | 20 | bx lr |
timexton | 0:cf2d4c337b6f | 21 | ENDP |
timexton | 0:cf2d4c337b6f | 22 | align |
timexton | 0:cf2d4c337b6f | 23 | |
timexton | 0:cf2d4c337b6f | 24 | ;------------------------------------------------------------- |
timexton | 0:cf2d4c337b6f | 25 | sleep_task PROC |
timexton | 0:cf2d4c337b6f | 26 | EXPORT sleep_task ;r0=savesp r1=*tasksp |
timexton | 0:cf2d4c337b6f | 27 | stmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} |
timexton | 0:cf2d4c337b6f | 28 | |
timexton | 0:cf2d4c337b6f | 29 | str sp,[r1] ;save this stack pointer |
timexton | 0:cf2d4c337b6f | 30 | mov sp,r0 ;load new task stack pointer |
timexton | 0:cf2d4c337b6f | 31 | |
timexton | 0:cf2d4c337b6f | 32 | ldmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} |
timexton | 0:cf2d4c337b6f | 33 | |
timexton | 0:cf2d4c337b6f | 34 | bx lr |
timexton | 0:cf2d4c337b6f | 35 | ENDP |
timexton | 0:cf2d4c337b6f | 36 | align |
timexton | 0:cf2d4c337b6f | 37 | |
timexton | 0:cf2d4c337b6f | 38 | ;------------------------------------------------------------- |
timexton | 0:cf2d4c337b6f | 39 | run_task PROC |
timexton | 0:cf2d4c337b6f | 40 | EXPORT run_task ;r0=*savesp r1=newsp |
timexton | 0:cf2d4c337b6f | 41 | |
timexton | 0:cf2d4c337b6f | 42 | stmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} |
timexton | 0:cf2d4c337b6f | 43 | |
timexton | 0:cf2d4c337b6f | 44 | str sp,[r0] ;save this stack pointer |
timexton | 0:cf2d4c337b6f | 45 | mov sp,r1 ;load new task stack pointer |
timexton | 0:cf2d4c337b6f | 46 | |
timexton | 0:cf2d4c337b6f | 47 | ldmfd sp!,{r1,r2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,lr} |
timexton | 0:cf2d4c337b6f | 48 | |
timexton | 0:cf2d4c337b6f | 49 | bx lr |
timexton | 0:cf2d4c337b6f | 50 | ENDP |
timexton | 0:cf2d4c337b6f | 51 | align |
timexton | 0:cf2d4c337b6f | 52 | |
timexton | 0:cf2d4c337b6f | 53 | END |