Round robin Scheduler

Dependencies:   mbed

Committer:
timexton
Date:
Thu Sep 09 14:09:14 2010 +0000
Revision:
0:cf2d4c337b6f

        

Who changed what in which revision?

UserRevisionLine numberNew 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