📄 os_cpu_c.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -oos_cpu_c.o --depend=os_cpu_c.d --device=DARMP --apcs=interwork -I. -I..\BSP -I..\..\..\..\..\uCOS-II\Ports\ARM\Generic\RVMDK -I..\..\..\..\..\uCOS-II\Source -I..\..\..\..\..\uC-CPU -I..\..\..\..\..\uC-CPU\ARM\RVMDK -I..\..\..\..\..\uC-LIB -I..\..\..\..\..\uCOSView\Source -I..\..\..\..\..\uCOSView\Ports\ARM7\LPC2468\IAR -Id:\Keil\ARM\INC\Philips ..\..\..\..\..\uCOS-II\Ports\ARM\Generic\RVMDK\os_cpu_c.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
OSInitHookBegin PROC
;;;133 #if OS_TMR_EN > 0
;;;134 OSTmrCtr = 0;
000000 e3a00000 MOV r0,#0
000004 e59f1228 LDR r1,|L1.564|
000008 e1c100b0 STRH r0,[r1,#0] ; OSTmrCtr
;;;135 #endif
;;;136 }
00000c e12fff1e BX lr
ENDP
OSInitHookEnd PROC
;;;160 #endif
;;;161 }
000010 e12fff1e BX lr
ENDP
OSTaskCreateHook PROC
;;;176 void OSTaskCreateHook (OS_TCB *ptcb)
;;;177 {
000014 e92d4010 PUSH {r4,lr}
000018 e1a04000 MOV r4,r0
;;;178 #if OS_CPU_FPU_EN > 0
;;;179 INT8U err;
;;;180 void *pblk;
;;;181 #endif
;;;182
;;;183
;;;184 #if OS_CPU_FPU_EN > 0
;;;185 if (ptcb->OSTCBOpt & OS_TASK_OPT_SAVE_FP) { /* See if task needs FP support */
;;;186 pblk = OSMemGet(OSFPPartPtr, &err); /* Yes, Get storage for VFP registers */
;;;187 if (pblk != (void *)0) { /* Did we get a memory block? */
;;;188 ptcb->OSTCBExtPtr = pblk; /* Yes, Link to task's TCB */
;;;189 OS_CPU_FP_Save(pblk); /* Save the VFP registers in block */
;;;190 }
;;;191 }
;;;192 #endif
;;;193
;;;194 #if OS_VIEW_MODULE > 0
;;;195 OSView_TaskCreateHook(ptcb);
00001c e1a00004 MOV r0,r4
000020 ebfffffe BL OSView_TaskCreateHook
;;;196 #else
;;;197 (void)ptcb; /* Prevent compiler warning */
;;;198 #endif
;;;199 }
000024 e8bd4010 POP {r4,lr}
000028 e12fff1e BX lr
ENDP
OSTaskDelHook PROC
;;;225 (void)ptcb; /* Prevent compiler warning */
;;;226 }
00002c e12fff1e BX lr
ENDP
OSTaskIdleHook PROC
;;;246 #endif
;;;247 }
000030 e12fff1e BX lr
ENDP
OSTaskStatHook PROC
;;;263 {
;;;264 }
000034 e12fff1e BX lr
ENDP
OSTaskStkInit PROC
;;;296 OS_STK *OSTaskStkInit (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT16U opt)
;;;297 {
000038 e92d4030 PUSH {r4,r5,lr}
00003c e1a0c000 MOV r12,r0
;;;298 OS_STK *stk;
;;;299 INT32U task_addr;
;;;300
;;;301
;;;302 opt = opt; /* 'opt' is not used, prevent warning */
000040 e1a00000 MOV r0,r0
;;;303 stk = ptos; /* Load stack pointer */
000044 e1a00002 MOV r0,r2
;;;304 task_addr = (INT32U)task & ~1; /* Mask off lower bit in case task is thumb mode */
000048 e3cce001 BIC lr,r12,#1
;;;305 *(stk) = (INT32U)task_addr; /* Entry Point */
00004c e580e000 STR lr,[r0,#0]
;;;306 *(--stk) = (INT32U)0x14141414L; /* R14 (LR) */
000050 e59f41e0 LDR r4,|L1.568|
000054 e2405004 SUB r5,r0,#4
000058 e1a00005 MOV r0,r5
00005c e5854000 STR r4,[r5,#0]
;;;307 *(--stk) = (INT32U)0x12121212L; /* R12 */
000060 e59f41d4 LDR r4,|L1.572|
000064 e2405004 SUB r5,r0,#4
000068 e1a00005 MOV r0,r5
00006c e5854000 STR r4,[r5,#0]
;;;308 *(--stk) = (INT32U)0x11111111L; /* R11 */
000070 e59f41c8 LDR r4,|L1.576|
000074 e2405004 SUB r5,r0,#4
000078 e1a00005 MOV r0,r5
00007c e5854000 STR r4,[r5,#0]
;;;309 *(--stk) = (INT32U)0x10101010L; /* R10 */
000080 e59f41bc LDR r4,|L1.580|
000084 e2405004 SUB r5,r0,#4
000088 e1a00005 MOV r0,r5
00008c e5854000 STR r4,[r5,#0]
;;;310 *(--stk) = (INT32U)0x09090909L; /* R9 */
000090 e59f41b0 LDR r4,|L1.584|
000094 e2405004 SUB r5,r0,#4
000098 e1a00005 MOV r0,r5
00009c e5854000 STR r4,[r5,#0]
;;;311 *(--stk) = (INT32U)0x08080808L; /* R8 */
0000a0 e1c441c4 BIC r4,r4,r4,ASR #3
0000a4 e2405004 SUB r5,r0,#4
0000a8 e1a00005 MOV r0,r5
0000ac e5854000 STR r4,[r5,#0]
;;;312 *(--stk) = (INT32U)0x07070707L; /* R7 */
0000b0 e04441c4 SUB r4,r4,r4,ASR #3
0000b4 e2405004 SUB r5,r0,#4
0000b8 e1a00005 MOV r0,r5
0000bc e5854000 STR r4,[r5,#0]
;;;313 *(--stk) = (INT32U)0x06060606L; /* R6 */
0000c0 e1c44144 BIC r4,r4,r4,ASR #2
0000c4 e2405004 SUB r5,r0,#4
0000c8 e1a00005 MOV r0,r5
0000cc e5854000 STR r4,[r5,#0]
;;;314 *(--stk) = (INT32U)0x05050505L; /* R5 */
0000d0 e02440c4 EOR r4,r4,r4,ASR #1
0000d4 e2405004 SUB r5,r0,#4
0000d8 e1a00005 MOV r0,r5
0000dc e5854000 STR r4,[r5,#0]
;;;315 *(--stk) = (INT32U)0x04040404L; /* R4 */
0000e0 e1c44144 BIC r4,r4,r4,ASR #2
0000e4 e2405004 SUB r5,r0,#4
0000e8 e1a00005 MOV r0,r5
0000ec e5854000 STR r4,[r5,#0]
;;;316 *(--stk) = (INT32U)0x03030303L; /* R3 */
0000f0 e0444144 SUB r4,r4,r4,ASR #2
0000f4 e2405004 SUB r5,r0,#4
0000f8 e1a00005 MOV r0,r5
0000fc e5854000 STR r4,[r5,#0]
;;;317 *(--stk) = (INT32U)0x02020202L; /* R2 */
000100 e1c440c4 BIC r4,r4,r4,ASR #1
000104 e2405004 SUB r5,r0,#4
000108 e1a00005 MOV r0,r5
00010c e5854000 STR r4,[r5,#0]
;;;318 *(--stk) = (INT32U)0x01010101L; /* R1 */
000110 e1a040c4 ASR r4,r4,#1
000114 e2405004 SUB r5,r0,#4
000118 e1a00005 MOV r0,r5
00011c e5854000 STR r4,[r5,#0]
;;;319 *(--stk) = (INT32U)p_arg; /* R0 : argument */
000120 e2404004 SUB r4,r0,#4
000124 e1a00004 MOV r0,r4
000128 e5841000 STR r1,[r4,#0]
;;;320 if ((INT32U)task & 0x01) { /* See if task runs in Thumb or ARM mode */
00012c e31c0001 TST r12,#1
000130 0a000004 BEQ |L1.328|
;;;321 *(--stk) = (INT32U)ARM_SVC_MODE_THUMB; /* CPSR (Enable both IRQ and FIQ interrupts, THUMB-mode) */
000134 e3a04033 MOV r4,#0x33
000138 e2405004 SUB r5,r0,#4
00013c e1a00005 MOV r0,r5
000140 e5854000 STR r4,[r5,#0]
000144 ea000003 B |L1.344|
|L1.328|
;;;322 } else {
;;;323 *(--stk) = (INT32U)ARM_SVC_MODE_ARM; /* CPSR (Enable both IRQ and FIQ interrupts, ARM-mode) */
000148 e3a04013 MOV r4,#0x13
00014c e2405004 SUB r5,r0,#4
000150 e1a00005 MOV r0,r5
000154 e5854000 STR r4,[r5,#0]
|L1.344|
;;;324 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -