📄 os_cpu_c.txt
字号:
;;;325
;;;326 return (stk);
000158 e8bd4030 POP {r4,r5,lr}
;;;327 }
00015c e12fff1e BX lr
ENDP
OSTaskSwHook PROC
;;;345 void OSTaskSwHook (void)
;;;346 {
000160 e92d4010 PUSH {r4,lr}
;;;347 #if OS_CPU_FPU_EN > 0
;;;348 void *pblk;
;;;349 #endif
;;;350
;;;351 #if OS_CPU_FPU_EN > 0 /* Save VFP context of preempted task */
;;;352 if (OSRunning == OS_TRUE) { /* Don't save on OSStart()! */
;;;353 if (OSTCBCur->OSTCBOpt & OS_TASK_OPT_SAVE_FP) { /* See if task used FP */
;;;354 pblk = OSTCBCur->OSTCBExtPtr; /* Yes, Get pointer to FP storage area */
;;;355 if (pblk != (void *)0) { /* Make sure we have storage */
;;;356 OS_CPU_FP_Save(pblk); /* Save the VFP registers in block */
;;;357 }
;;;358 }
;;;359 }
;;;360 /* Restore VFP context of new task */
;;;361 if (OSTCBHighRdy->OSTCBOpt & OS_TASK_OPT_SAVE_FP) { /* See if new task uses FP */
;;;362 pblk = OSTCBHighRdy->OSTCBExtPtr; /* Yes, Get pointer to FP storage area */
;;;363 if (pblk != (void *)0) { /* Make sure we have storage */
;;;364 OS_CPU_FP_Restore(pblk); /* Get contents of VFP registers */
;;;365 }
;;;366 }
;;;367 #endif
;;;368
;;;369 #if OS_VIEW_MODULE > 0
;;;370 OSView_TaskSwHook();
000164 ebfffffe BL OSView_TaskSwHook
;;;371 #endif
;;;372 }
000168 e8bd4010 POP {r4,lr}
00016c e12fff1e BX lr
ENDP
OSTCBInitHook PROC
;;;389 (void)ptcb; /* Prevent Compiler warning */
;;;390 }
000170 e12fff1e BX lr
ENDP
OSTimeTickHook PROC
;;;406 void OSTimeTickHook (void)
;;;407 {
000174 e92d4010 PUSH {r4,lr}
;;;408 #if OS_VIEW_MODULE > 0
;;;409 OSView_TickHook();
000178 ebfffffe BL OSView_TickHook
;;;410 #endif
;;;411
;;;412 #if OS_TMR_EN > 0
;;;413 OSTmrCtr++;
00017c e59f00b0 LDR r0,|L1.564|
000180 e1d000b0 LDRH r0,[r0,#0] ; OSTmrCtr
000184 e2800001 ADD r0,r0,#1
000188 e3c00801 BIC r0,r0,#0x10000
00018c e59f10a0 LDR r1,|L1.564|
000190 e1c100b0 STRH r0,[r1,#0] ; OSTmrCtr
;;;414 if (OSTmrCtr >= (OS_TICKS_PER_SEC / OS_TMR_CFG_TICKS_PER_SEC)) {
000194 e2810000 ADD r0,r1,#0
000198 e1d000b0 LDRH r0,[r0,#0] ; OSTmrCtr
00019c e3500064 CMP r0,#0x64
0001a0 ba000003 BLT |L1.436|
;;;415 OSTmrCtr = 0;
0001a4 e3a00000 MOV r0,#0
0001a8 e59f1084 LDR r1,|L1.564|
0001ac e1c100b0 STRH r0,[r1,#0] ; OSTmrCtr
;;;416 OSTmrSignal();
0001b0 ebfffffe BL OSTmrSignal
|L1.436|
;;;417 }
;;;418 #endif
;;;419
;;;420 #if OS_CPU_ARM_DCC_EN > 0
;;;421 OSDCC_Handler();
;;;422 #endif
;;;423 }
0001b4 e8bd4010 POP {r4,lr}
0001b8 e12fff1e BX lr
ENDP
OS_CPU_InitExceptVect PROC
;;;492
;;;493 (*(INT32U *)OS_CPU_ARM_EXCEPT_UNDEF_INSTR_VECT_ADDR) = OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
0001bc e59f0088 LDR r0,|L1.588|
0001c0 e3a01000 MOV r1,#0
0001c4 e5810004 STR r0,[r1,#4]
;;;494 (*(INT32U *)OS_CPU_ARM_EXCEPT_UNDEF_INSTR_HANDLER_ADDR) = (INT32U)OS_CPU_ARM_ExceptUndefInstrHndlr;
0001c8 e59f0080 LDR r0,|L1.592|
0001cc e5810024 STR r0,[r1,#0x24]
;;;495
;;;496 (*(INT32U *)OS_CPU_ARM_EXCEPT_SWI_VECT_ADDR) = OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
0001d0 e59f0074 LDR r0,|L1.588|
0001d4 e5810008 STR r0,[r1,#8]
;;;497 (*(INT32U *)OS_CPU_ARM_EXCEPT_SWI_HANDLER_ADDR) = (INT32U)OS_CPU_ARM_ExceptSwiHndlr;
0001d8 e59f0074 LDR r0,|L1.596|
0001dc e5810028 STR r0,[r1,#0x28]
;;;498
;;;499 (*(INT32U *)OS_CPU_ARM_EXCEPT_PREFETCH_ABORT_VECT_ADDR) = OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
0001e0 e59f0064 LDR r0,|L1.588|
0001e4 e581000c STR r0,[r1,#0xc]
;;;500 (*(INT32U *)OS_CPU_ARM_EXCEPT_PREFETCH_ABORT_HANDLER_ADDR) = (INT32U)OS_CPU_ARM_ExceptPrefetchAbortHndlr;
0001e8 e59f0068 LDR r0,|L1.600|
0001ec e581002c STR r0,[r1,#0x2c]
;;;501
;;;502 (*(INT32U *)OS_CPU_ARM_EXCEPT_DATA_ABORT_VECT_ADDR) = OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
0001f0 e59f0054 LDR r0,|L1.588|
0001f4 e5810010 STR r0,[r1,#0x10]
;;;503 (*(INT32U *)OS_CPU_ARM_EXCEPT_DATA_ABORT_HANDLER_ADDR) = (INT32U)OS_CPU_ARM_ExceptDataAbortHndlr;
0001f8 e59f005c LDR r0,|L1.604|
0001fc e5810030 STR r0,[r1,#0x30]
;;;504
;;;505 (*(INT32U *)OS_CPU_ARM_EXCEPT_ADDR_ABORT_VECT_ADDR) = OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
000200 e59f0044 LDR r0,|L1.588|
000204 e5810014 STR r0,[r1,#0x14]
;;;506 (*(INT32U *)OS_CPU_ARM_EXCEPT_ADDR_ABORT_HANDLER_ADDR) = (INT32U)OS_CPU_ARM_ExceptAddrAbortHndlr;
000208 e59f0050 LDR r0,|L1.608|
00020c e5810034 STR r0,[r1,#0x34]
;;;507
;;;508 (*(INT32U *)OS_CPU_ARM_EXCEPT_IRQ_VECT_ADDR) = OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
000210 e59f0034 LDR r0,|L1.588|
000214 e5810018 STR r0,[r1,#0x18]
;;;509 (*(INT32U *)OS_CPU_ARM_EXCEPT_IRQ_HANDLER_ADDR) = (INT32U)OS_CPU_ARM_ExceptIrqHndlr;
000218 e59f0044 LDR r0,|L1.612|
00021c e5810038 STR r0,[r1,#0x38]
;;;510
;;;511 (*(INT32U *)OS_CPU_ARM_EXCEPT_FIQ_VECT_ADDR) = OS_CPU_ARM_INSTR_JUMP_TO_HANDLER;
000220 e59f0024 LDR r0,|L1.588|
000224 e581001c STR r0,[r1,#0x1c]
;;;512 (*(INT32U *)OS_CPU_ARM_EXCEPT_FIQ_HANDLER_ADDR) = (INT32U)OS_CPU_ARM_ExceptFiqHndlr;
000228 e59f0038 LDR r0,|L1.616|
00022c e581003c STR r0,[r1,#0x3c]
;;;513 }
000230 e12fff1e BX lr
ENDP
|L1.564|
000234 00000000 DCD ||.data||
|L1.568|
000238 14141414 DCD 0x14141414
|L1.572|
00023c 12121212 DCD 0x12121212
|L1.576|
000240 11111111 DCD 0x11111111
|L1.580|
000244 10101010 DCD 0x10101010
|L1.584|
000248 09090909 DCD 0x09090909
|L1.588|
00024c e59ff018 DCD 0xe59ff018
|L1.592|
000250 00000000 DCD OS_CPU_ARM_ExceptUndefInstrHndlr
|L1.596|
000254 00000000 DCD OS_CPU_ARM_ExceptSwiHndlr
|L1.600|
000258 00000000 DCD OS_CPU_ARM_ExceptPrefetchAbortHndlr
|L1.604|
00025c 00000000 DCD OS_CPU_ARM_ExceptDataAbortHndlr
|L1.608|
000260 00000000 DCD OS_CPU_ARM_ExceptAddrAbortHndlr
|L1.612|
000264 00000000 DCD OS_CPU_ARM_ExceptIrqHndlr
|L1.616|
000268 00000000 DCD OS_CPU_ARM_ExceptFiqHndlr
AREA ||.data||, DATA, ALIGN=1
OSTmrCtr
000000 0000 DCB 0x00,0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -