📄 os_core.exp
字号:
.CPU 300
.IMPORT $DIVUL$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 _OSCPUUsage
.EXPORT _OSIdleCtrMax
.EXPORT _OSIdleCtrRun
.EXPORT _OSStatRdy
.EXPORT _OSTaskStatStk
.EXPORT _OSIntNesting
.EXPORT _OSIntExitY
.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 _OSMapTbl
.EXPORT _OSUnMapTbl
.EXPORT _OSTimeTick
.EXPORT _OSInit
.EXPORT _OSIntEnter
.EXPORT _OSIntExit
.EXPORT _OSStart
.EXPORT _OSStatInit
.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",87
_OSInit: ; function: OSInit
.STACK _OSInit=2
.LINE 88
.LINE 90
JSR @_OSInitHookBegin:16
.LINE 93
JSR @__$OS_InitMisc:16
.LINE 95
JSR @__$OS_InitRdyList:16
.LINE 97
JSR @__$OS_InitTCBList:16
.LINE 99
JSR @__$OS_InitTaskIdle:16
.LINE 102
JSR @__$OS_InitTaskStat:16
.LINE 106
JMP @_OSInitHookEnd:16
.LINE 108
.LINE 135
_OSIntEnter: ; function: OSIntEnter
.STACK _OSIntEnter=2
.LINE 136
.LINE 137
MOV.B @_OSRunning:16,R0L
CMP.B #1,R0L
BNE L149
.LINE 137
.LINE 138
MOV.W #_OSIntNesting,R1
MOV.B @R1,R0L
CMP.B #-1,R0L
BHS L149
.LINE 138
.LINE 139
INC.B R0L
MOV.B R0L,@R1
L149:
.LINE 142
RTS
.LINE 163
_OSIntExit: ; function: OSIntExit
.STACK _OSIntExit=6
PUSH.W R6
PUSH.W R5
.LINE 164
MOV.W #_OSIntNesting,R5
.LINE 170
MOV.B @_OSRunning:16,R0L
CMP.B #1,R0L
BNE L151
.LINE 170
.LINE 171
JSR @_OSCPUSaveSR:16
MOV.B R0L,R6H
.LINE 172
MOV.B @R5,R0L
BEQ L152
.LINE 172
.LINE 173
DEC.B R0L
MOV.B R0L,@R5
L152:
.LINE 175
MOV.B @R5,R0L
BNE L153
.LINE 175
.LINE 176
MOV.B @_OSLockNesting:16,R0L
BNE L153
.LINE 176
.LINE 177
MOV.B @_OSRdyGrp:16,R0L
SUB.B R0H,R0H
MOV.B @(_OSUnMapTbl:16,R0),R6L
.LINE 178
MOV.B R6L,R0L
MOV.B #8,R0H
MULXU.B R0H,R0
MOV.B R6L,R1L
SUB.B R1H,R1H
MOV.B @(_OSRdyTbl:16,R1),R1L
MOV.B @(_OSUnMapTbl:16,R1),R1L
ADD.B R1L,R0L
MOV.B R0L,@_OSPrioHighRdy:16
MOV.B R6L,@_OSIntExitY:16
.LINE 179
MOV.B @_OSPrioCur:16,R0H
CMP.B R0H,R0L
BEQ L153
.LINE 179
.LINE 180
SUB.B R0H,R0H
ADD.W R0,R0
MOV.W @(_OSTCBPrioTbl:16,R0),R0
MOV.W R0,@_OSTCBHighRdy:16
.LINE 184
MOV.W #_OSCtxSwCtr,R0
JSR @$PRIL$3:16
.LINE 185
JSR @_OSIntCtxSw:16
L153:
.LINE 189
MOV.B R6H,R0L
JSR @_OSCPURestoreSR:16
L151:
.LINE 191
POP.W R5
POP.W R6
RTS
.LINE 213
_OSStart: ; function: OSStart
.STACK _OSStart=2
.LINE 214
.LINE 219
MOV.B @_OSRunning:16,R0L
BNE L156
.LINE 219
.LINE 220
MOV.B @_OSRdyGrp:16,R0L
SUB.B R0H,R0H
MOV.B @(_OSUnMapTbl:16,R0),R1L
.LINE 221
SUB.B R1H,R1H
MOV.B @(_OSRdyTbl:16,R1),R0L
MOV.B @(_OSUnMapTbl:16,R0),R1H
.LINE 222
MOV.B R1L,R0L
MOV.B #8,R0H
MULXU.B R0H,R0
ADD.B R1H,R0L
MOV.B R0L,R1L
.LINE 223
MOV.B R0L,@_OSPrioCur:16
.LINE 224
SUB.B R0H,R0H
ADD.W R0,R0
MOV.W @(_OSTCBPrioTbl:16,R0),R0
MOV.W R0,@_OSTCBHighRdy:16
MOV.B R1L,@_OSPrioHighRdy:16
.LINE 225
MOV.W R0,@_OSTCBCur:16
.LINE 226
JSR @_OSStartHighRdy:16
L156:
.LINE 228
RTS
.LINE 251
_OSStatInit: ; function: OSStatInit
.STACK _OSStatInit=4
PUSH.W R6
.LINE 252
.LINE 258
MOV.W #2,R0
JSR @_OSTimeDly:16
.LINE 259
JSR @_OSCPUSaveSR:16
.LINE 260
SUB.W R1,R1
MOV.W R1,@_OSIdleCtr:16
MOV.W R1,@_OSIdleCtr+2:16
.LINE 261
JSR @_OSCPURestoreSR:16
.LINE 262
MOV.W #7,R0
JSR @_OSTimeDly:16
.LINE 263
JSR @_OSCPUSaveSR:16
MOV.B R0L,R6L
.LINE 264
MOV.W #_OSIdleCtr,R0
MOV.W #_OSIdleCtrMax,R1
JSR @$MV4$3:16
.LINE 265
MOV.B #1,R0L
MOV.B R0L,@_OSStatRdy:16
.LINE 266
MOV.B R6L,R0L
JSR @_OSCPURestoreSR:16
.LINE 267
POP.W R6
RTS
.LINE 284
_OSTimeTick: ; function: OSTimeTick
.STACK _OSTimeTick=12
JSR @$sp_regsv$3:16
.LINE 285
MOV.W #_OSRdyGrp,R4
.LINE 294
JSR @_OSTimeTickHook:16
.LINE 301
MOV.B @_OSRunning:16,R0L
CMP.B #1,R0L
BNE L158
.LINE 301
.LINE 302
MOV.W @_OSTCBList:16,R6
.LINE 303
BRA L160
L159:
.LINE 303
.LINE 304
JSR @_OSCPUSaveSR:16
MOV.B R0L,R5L
.LINE 305
MOV.W @(6:16,R6),R0
BEQ L161
.LINE 305
.LINE 306
SUBS.W #1,R0
MOV.W R0,@(6:16,R6)
BNE L161
.LINE 306
.LINE 307
MOV.B @(8:16,R6),R0L
BTST.B #3,R0L
BNE L163
.LINE 307
.LINE 308
MOV.B @(13:16,R6),R0L
MOV.B @R4,R0H
OR.B R0L,R0H
MOV.B R0H,@R4
.LINE 309
MOV.B @(11:16,R6),R0L
SUB.B R0H,R0H
MOV.B @(12:16,R6),R1L
MOV.B @(_OSRdyTbl:16,R0),R1H
OR.B R1L,R1H
MOV.B R1H,@(_OSRdyTbl:16,R0)
BRA L161
L163:
.LINE 310
.LINE 311
MOV.W #1,R0
MOV.W R0,@(6:16,R6)
L161:
.LINE 315
MOV.W @(2:16,R6),R6
.LINE 316
MOV.B R5L,R0L
JSR @_OSCPURestoreSR:16
L160:
.LINE 303
MOV.B @(9:16,R6),R0L
CMP.B #4,R0L
BNE L159
L158:
.LINE 319
JMP @$spregld2$3:16
.LINE 353
__$OS_InitMisc: ; function: OS_InitMisc
.STACK __$OS_InitMisc=2
.LINE 354
.LINE 361
SUB.B R0L,R0L
MOV.B R0L,@_OSRunning:16
MOV.B R0L,@_OSTaskCtr:16
.LINE 363
SUB.W R1,R1
MOV.W R1,@_OSCtxSwCtr:16
MOV.W R1,@_OSCtxSwCtr+2:16
.LINE 364
MOV.W R1,@_OSIdleCtr:16
MOV.W R1,@_OSIdleCtr+2:16
.LINE 368
MOV.W R1,@_OSIdleCtrMax:16
MOV.W R1,@_OSIdleCtrMax+2:16
MOV.W R1,@_OSIdleCtrRun:16
MOV.W R1,@_OSIdleCtrRun+2:16
.LINE 369
MOV.B R0L,@_OSStatRdy:16
.LINE 371
RTS
.LINE 386
__$OS_InitRdyList: ; function: OS_InitRdyList
.STACK __$OS_InitRdyList=4
PUSH.W R5
.LINE 387
.LINE 392
SUB.B R0L,R0L
MOV.B R0L,@_OSRdyGrp:16
.LINE 393
MOV.W #_OSRdyTbl,R1
.LINE 394
SUB.W R5,R5
.LINE 394
L165:
.LINE 394
.LINE 395
MOV.B R0L,@R1
ADDS.W #1,R1
.LINE 394
ADDS.W #1,R5
.LINE 394
MOV.W R5,R5
BEQ L165
.LINE 399
SUB.B R0H,R0H
MOV.B R0L,@_OSPrioHighRdy:16
MOV.B R0L,@_OSPrioCur:16
.LINE 402
MOV.W R0,@_OSTCBCur:16
MOV.W R0,@_OSTCBHighRdy:16
.LINE 403
POP.W R5
RTS
.LINE 419
__$OS_InitTaskIdle: ; function: OS_InitTaskIdle
.STACK __$OS_InitTaskIdle=2
.LINE 420
.LINE 448
MOV.B #4,R0L
PUSH.W R0
MOV.W #_OSTaskIdleStk+48,R0
PUSH.W R0
SUB.W R1,R1
MOV.W #_OS_TaskIdle,R0
JSR @_OSTaskCreate:16
ADDS.W #2,SP
ADDS.W #2,SP
.LINE 456
RTS
.LINE 472
__$OS_InitTaskStat: ; function: OS_InitTaskStat
.STACK __$OS_InitTaskStat=2
.LINE 473
.LINE 501
MOV.B #3,R0L
PUSH.W R0
MOV.W #_OSTaskStatStk+98,R0
PUSH.W R0
SUB.W R1,R1
MOV.W #_OS_TaskStat,R0
JSR @_OSTaskCreate:16
ADDS.W #2,SP
ADDS.W #2,SP
.LINE 509
RTS
.LINE 525
__$OS_InitTCBList: ; function: OS_InitTCBList
.STACK __$OS_InitTCBList=4
PUSH.W R4
.LINE 526
.LINE 532
MOV.W #56,R1
MOV.W #_OSTCBTbl,R0
BSR _OS_MemClr
.LINE 533
MOV.W #10,R1
MOV.W #_OSTCBPrioTbl,R0
BSR _OS_MemClr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -