📄 os_core.src
字号:
.CPU 300
.IMPORT $DIVUL$3
.IMPORT $SLI$3
.IMPORT $sp_regsv$3
.IMPORT $PRIL$3
.IMPORT $MV4$3
.IMPORT $spregld2$3
.IMPORT _OSCPUSaveSR
.IMPORT _OSCPURestoreSR
.IMPORT _OSTaskCreate
.IMPORT _OSTimeDly
.IMPORT _OSInitHookBegin
.IMPORT _OSInitHookEnd
.IMPORT _OSIntCtxSw
.IMPORT _OSStartHighRdy
.IMPORT _OSTaskCreateHook
.IMPORT _OSTaskIdleHook
.IMPORT _OSTaskStatHook
.IMPORT _OSTCBInitHook
.IMPORT _OSTimeTickHook
.IMPORT _OSCtxSw
.EXPORT _OSCtxSwCtr
.EXPORT _OSEventFreeList
.EXPORT _OSEventTbl
.EXPORT _OSCPUUsage
.EXPORT _OSIdleCtrMax
.EXPORT _OSIdleCtrRun
.EXPORT _OSStatRdy
.EXPORT _OSTaskStatStk
.EXPORT _OSIntNesting
.EXPORT _OSLockNesting
.EXPORT _OSPrioCur
.EXPORT _OSPrioHighRdy
.EXPORT _OSRdyGrp
.EXPORT _OSRdyTbl
.EXPORT _OSRunning
.EXPORT _OSTaskCtr
.EXPORT _OSIdleCtr
.EXPORT _OSTaskIdleStk
.EXPORT _OSTCBCur
.EXPORT _OSTCBFreeList
.EXPORT _OSTCBHighRdy
.EXPORT _OSTCBList
.EXPORT _OSTCBPrioTbl
.EXPORT _OSTCBTbl
.EXPORT _OSUnMapTbl
.EXPORT _OSTimeTick
.EXPORT _OSInit
.EXPORT _OSIntEnter
.EXPORT _OSIntExit
.EXPORT _OSStart
.EXPORT _OSStatInit
.EXPORT _OSVersion
.EXPORT _OS_EventTaskRdy
.EXPORT _OS_EventTaskWait
.EXPORT _OS_EventTO
.EXPORT _OS_EventWaitListInit
.EXPORT _OS_MemClr
.EXPORT _OS_MemCopy
.EXPORT _OS_Sched
.EXPORT _OS_TaskIdle
.EXPORT _OS_TaskStat
.EXPORT _OS_TCBInit
.SECTION P,CODE,ALIGN=2
.LINE "E:\Study\ucOS-II\ucOS-II\ucOS kernel\Task\os_core.c",223
_OSInit: ; function: OSInit
.STACK _OSInit=2
.LINE 224
.LINE 226
JSR @_OSInitHookBegin:16
.LINE 229
JSR @__$OS_InitMisc:16
.LINE 231
JSR @__$OS_InitRdyList:16
.LINE 233
JSR @__$OS_InitTCBList:16
.LINE 235
JSR @__$OS_InitEventList:16
.LINE 249
JSR @__$OS_InitTaskIdle:16
.LINE 251
JSR @__$OS_InitTaskStat:16
.LINE 255
JMP @_OSInitHookEnd:16
.LINE 261
.LINE 288
_OSIntEnter: ; function: OSIntEnter
.STACK _OSIntEnter=2
.LINE 289
.LINE 290
MOV.B @_OSRunning:16,R0L
CMP.B #1,R0L
BNE L195
.LINE 290
.LINE 291
MOV.W #_OSIntNesting,R1
MOV.B @R1,R0L
CMP.B #-1,R0L
BHS L195
.LINE 291
.LINE 292
INC.B R0L
MOV.B R0L,@R1
L195:
.LINE 295
RTS
.LINE 316
_OSIntExit: ; function: OSIntExit
.STACK _OSIntExit=6
PUSH.W R6
PUSH.W R5
.LINE 317
MOV.W #_OSIntNesting,R6
.LINE 324
MOV.B @_OSRunning:16,R0L
CMP.B #1,R0L
BNE L197
.LINE 324
.LINE 325
JSR @_OSCPUSaveSR:16
MOV.B R0L,R5H
.LINE 326
MOV.B @R6,R0L
BEQ L198
.LINE 326
.LINE 327
DEC.B R0L
MOV.B R0L,@R6
L198:
.LINE 329
MOV.B @R6,R0L
BNE L199
.LINE 329
.LINE 330
MOV.B @_OSLockNesting:16,R0L
BNE L199
.LINE 330
.LINE 331
JSR @__$OS_SchedNew:16
.LINE 332
MOV.B @_OSPrioHighRdy:16,R5L
MOV.B @_OSPrioCur:16,R0L
CMP.B R0L,R5L
BEQ L199
.LINE 332
.LINE 333
MOV.B R5L,R0L
SUB.B R0H,R0H
ADD.W R0,R0
MOV.W @(_OSTCBPrioTbl:16,R0),R0
MOV.W R0,@_OSTCBHighRdy:16
.LINE 337
MOV.W #_OSCtxSwCtr,R0
JSR @$PRIL$3:16
.LINE 338
JSR @_OSIntCtxSw:16
L199:
.LINE 342
MOV.B R5H,R0L
JSR @_OSCPURestoreSR:16
L197:
.LINE 344
POP.W R5
POP.W R6
RTS
.LINE 448
_OSStart: ; function: OSStart
.STACK _OSStart=2
.LINE 449
.LINE 450
MOV.B @_OSRunning:16,R0L
BNE L202
.LINE 450
.LINE 451
JSR @__$OS_SchedNew:16
MOV.B @_OSPrioHighRdy:16,R0L
.LINE 452
MOV.B R0L,@_OSPrioCur:16
.LINE 453
SUB.B R0H,R0H
ADD.W R0,R0
MOV.W @(_OSTCBPrioTbl:16,R0),R0
MOV.W R0,@_OSTCBHighRdy:16
.LINE 454
MOV.W R0,@_OSTCBCur:16
.LINE 455
JSR @_OSStartHighRdy:16
L202:
.LINE 457
RTS
.LINE 480
_OSStatInit: ; function: OSStatInit
.STACK _OSStatInit=4
PUSH.W R6
.LINE 481
.LINE 488
MOV.W #2,R0
JSR @_OSTimeDly:16
.LINE 489
JSR @_OSCPUSaveSR:16
.LINE 490
SUB.W R1,R1
MOV.W R1,@_OSIdleCtr:16
MOV.W R1,@_OSIdleCtr+2:16
.LINE 491
JSR @_OSCPURestoreSR:16
.LINE 492
MOV.W #7,R0
JSR @_OSTimeDly:16
.LINE 493
JSR @_OSCPUSaveSR:16
MOV.B R0L,R6L
.LINE 494
MOV.W #_OSIdleCtr,R0
MOV.W #_OSIdleCtrMax,R1
JSR @$MV4$3:16
.LINE 495
MOV.B #1,R0L
MOV.B R0L,@_OSStatRdy:16
.LINE 496
MOV.B R6L,R0L
JSR @_OSCPURestoreSR:16
.LINE 497
POP.W R6
RTS
.LINE 514
_OSTimeTick: ; function: OSTimeTick
.STACK _OSTimeTick=12
JSR @$sp_regsv$3:16
.LINE 515
MOV.W #_OSRdyGrp,R4
.LINE 527
JSR @_OSTimeTickHook:16
.LINE 534
MOV.B @_OSRunning:16,R0L
CMP.B #1,R0L
BNE L204
.LINE 534
.LINE 559
MOV.W @_OSTCBList:16,R6
.LINE 560
BRA L206
L205:
.LINE 560
.LINE 561
JSR @_OSCPUSaveSR:16
MOV.B R0L,R5L
.LINE 562
MOV.W @(10:16,R6),R0
BEQ L207
.LINE 562
.LINE 563
SUBS.W #1,R0
MOV.W R0,@(10:16,R6)
BNE L207
.LINE 563
.LINE 565
MOV.B @(12:16,R6),R0L
AND.B #55,R0L
BEQ L209
.LINE 565
.LINE 566
MOV.B @(12:16,R6),R0L
AND.B #-56,R0L
MOV.B R0L,@(12:16,R6)
.LINE 567
MOV.B #1,R0L
BRA L244
L209:
.LINE 568
.LINE 569
SUB.B R0L,R0L
L244:
MOV.B R0L,@(13:16,R6)
.LINE 572
MOV.B @(12:16,R6),R0L
BTST.B #3,R0L
BNE L207
.LINE 572
.LINE 573
MOV.B @(18:16,R6),R0L
MOV.B @R4,R0H
OR.B R0L,R0H
MOV.B R0H,@R4
.LINE 574
MOV.B @(16:16,R6),R0L
SUB.B R0H,R0H
MOV.B @(17:16,R6),R1L
MOV.B @(_OSRdyTbl:16,R0),R1H
OR.B R1L,R1H
MOV.B R1H,@(_OSRdyTbl:16,R0)
L207:
.LINE 578
MOV.W @(2:16,R6),R6
.LINE 579
MOV.B R5L,R0L
JSR @_OSCPURestoreSR:16
L206:
.LINE 560
MOV.B @(14:16,R6),R0L
CMP.B #4,R0L
BNE L205
L204:
.LINE 582
JMP @$spregld2$3:16
.LINE 598
_OSVersion: ; function: OSVersion
.STACK _OSVersion=2
.LINE 599
.LINE 600
MOV.W #280,R0
.LINE 601
RTS
.LINE 645
_OS_EventTaskRdy: ; function: OS_EventTaskRdy
.STACK _OS_EventTaskRdy=18
JSR @$sp_regsv$3:16
SUBS.W #2,SP
SUBS.W #2,SP
.LINE 646
MOV.W R0,R6
MOV.W R1,@SP
.LINE 662
MOV.B @(6:16,R6),R2L
SUB.B R2H,R2H
MOV.B @(_OSUnMapTbl:16,R2),R5L
.LINE 663
MOV.B R5L,R1L
MOV.W #1,R0
JSR @$SLI$3:16
MOV.B R0L,R4H
.LINE 664
SUB.B R5H,R5H
MOV.W R5,R2
MOV.W #7,R3
ADD.W R6,R3
ADD.W R5,R3
MOV.B @R3,R0L
SUB.B R0H,R0H
MOV.B @(_OSUnMapTbl:16,R0),R5H
.LINE 665
MOV.B R5H,R1L
MOV.B #1,R0L
JSR @$SLI$3:16
MOV.B R0L,R4L
.LINE 666
MOV.B R5L,R1L
MOV.B #8,R1H
MULXU.B R1H,R1
ADD.B R5H,R1L
MOV.B R1L,R5L
.LINE 684
SUB.B R0H,R0H
NOT.B R0L
NOT.B R0H
MOV.B @R3,R0H
AND.B R0L,R0H
MOV.B R0H,@R3
.LINE 685
MOV.W #7,R0
ADD.W R6,R0
MOV.W R2,R1
ADD.W R1,R0
MOV.B @R0,R1L
BNE L213
.LINE 685
.LINE 686
MOV.B R4H,R0L
SUB.B R0H,R0H
NOT.B R0L
NOT.B R0H
MOV.B @(6:16,R6),R0H
AND.B R0L,R0H
MOV.B R0H,@(6:16,R6)
L213:
.LINE 688
MOV.B R5L,R6L
SUB.B R6H,R6H
ADD.W R6,R6
MOV.W @(_OSTCBPrioTbl:16,R6),R6
.LINE 689
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -