-
Notifications
You must be signed in to change notification settings - Fork 0
/
osKernel.s
42 lines (39 loc) · 1.44 KB
/
osKernel.s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
; VER01
AREA |.text|, CODE, READONLY, ALIGN=2
THUMB
PRESERVE8
EXTERN currentPt
EXPORT SysTick_Handler
EXPORT osSchedulerLaunch
IMPORT osScheduerRoundRobin ;osSchedulerRoundRobinSinglePeriodicTask if to run only 1 periodic task
;IMPORT osSchedulerRoundRobinSinglePeriodicTask
SysTick_Handler ;save r0,r1,r2,r3,r12,lr,pc,psr
CPSID I
PUSH {R4-R11} ;save r4,r5,r6,r7,r8,r9,r10,r11
LDR R0, =currentPt ; r0 points to currentPt
LDR R1, [R0] ; r1= currentPt
STR SP, [R1]
;LDR R1, [R1,#4] ; r1 =currentPt->next -->CHANGED IN version v3.2
;STR R1, [R0] ;currentPt =r1 -->CHANGED IN version v3.2
PUSH {R0,LR}
BL osScheduerRoundRobin ;osSchedulerRoundRobinSinglePeriodicTask if to run only 1 periodic task
;BL osSchedulerRoundRobinSinglePeriodicTask
POP {LR,R0}
LDR SP, [R1] ;SP= currentPt->stackPt
POP {R4-R11}
CPSIE I
BX LR
osSchedulerLaunch
LDR R0, =currentPt
LDR R2, [R0] ; R2 =currentPt
LDR SP, [R2] ;SP = currentPt->stackPt
POP {R4-R11}
POP {R0-R3}
POP {R12}
ADD SP, SP,#4
POP {LR}
ADD SP, SP,#4
CPSIE I
BX LR
ALIGN
END