os_cpu_a.s
来自「这是一个嵌入式系统的ucos-ii的移植程序。」· S 代码 · 共 115 行
S
115 行
.global OSTickISR
.global OSStartHighRdy
.global OSCtxSw
.global OSIntCtxSw
OSStartHighRdy:
xcall OSTaskSwHook
xld.w %r1,OSRunning
ld.w %r2,0x1
xld.b [%r1],%r2
xld.w %r1,[OSTCBHighRdy]
ld.w %r2,[%r1]
ld.w %sp,%r2
popn %r1
ld.w %ahr,%r0
ld.w %alr,%r1
popn %r15
reti ; Run task
OSCtxSw:
pushn %r15
ld.w %r1,%alr
ld.w %r0,%ahr
pushn %r1
ld.w %r2,%sp
xld.w %r3,[OSTCBCur]
ld.w [%r3],%r2
xcall OSTaskSwHook
xld.w %r3,[OSTCBHighRdy]
xld.w %r4,OSTCBCur
ld.w [%r4],%r3
xld.w %r3,[OSPrioHighRdy]
xld.w %r4,OSPrioCur
ld.b [%r4],%r3
xld.w %r5,[OSTCBHighRdy]
ld.w %r4,[%r5]
ld.w %sp,%r4
popn %r1
ld.w %ahr,%r0
ld.w %alr,%r1
popn %r15
reti
OSIntCtxSw:
xcall OSTaskSwHook
xld.w %r3,[OSTCBHighRdy]
xld.w %r4,OSTCBCur
ld.w [%r4],%r3
xld.w %r3,[OSPrioHighRdy]
xld.w %r4,OSPrioCur
ld.b [%r4],%r3
xld.w %r5,[OSTCBHighRdy]
ld.w %r4,[%r5]
ld.w %sp,%r4
popn %r1
ld.w %ahr,%r0
ld.w %alr,%r1
popn %r15
reti ; Return to new task
;
OSTickISR:
pushn %r15
ld.w %r1,%alr
ld.w %r0,%ahr
pushn %r1
xld.w %r4,0x00040282
xld.w %r5,0x08
xld.b [%r4],%r5
xcall OSIntEnter
xld.b %r1,[OSIntNesting]
cmp %r1,0x1
jrne ppp
ld.w %r2,%sp
xld.w %r3,[OSTCBCur]
ld.w [%r3],%r2
ppp:
xcall OSTimeTick
xcall OSIntExit
popn %r1
ld.w %ahr,%r0
ld.w %alr,%r1
popn %r15
reti ; Return to interrupted task
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?