📄 os_core.txt
字号:
; generated by ARM/Thumb C/C++ Compiler with , RVCT3.1 [Build 903] for uVision
; commandline ArmCC [--debug -c --asm --interleave -oos_core.o --depend=os_core.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\Source\os_core.c]
ARM
AREA ||.text||, CODE, READONLY, ALIGN=2
OS_StrCopy PROC
;;;1298 INT8U OS_StrCopy (INT8U *pdest, INT8U *psrc)
;;;1299 {
000000 e1a02000 MOV r2,r0
;;;1300 INT8U len;
;;;1301
;;;1302
;;;1303 len = 0;
000004 e3a00000 MOV r0,#0
;;;1304 while (*psrc != OS_ASCII_NUL) {
000008 ea000003 B |L1.28|
|L1.12|
;;;1305 *pdest++ = *psrc++;
00000c e4d13001 LDRB r3,[r1],#1
000010 e4c23001 STRB r3,[r2],#1
;;;1306 len++;
000014 e2803001 ADD r3,r0,#1
000018 e20300ff AND r0,r3,#0xff
|L1.28|
00001c e5d13000 LDRB r3,[r1,#0]
000020 e3530000 CMP r3,#0
000024 1afffff8 BNE |L1.12|
;;;1307 }
;;;1308 *pdest = OS_ASCII_NUL;
000028 e3a03000 MOV r3,#0
00002c e5c23000 STRB r3,[r2,#0]
;;;1309 return (len);
;;;1310 }
000030 e12fff1e BX lr
ENDP
OSEventNameGet PROC
;;;108 INT8U OSEventNameGet (OS_EVENT *pevent, INT8U *pname, INT8U *err)
;;;109 {
000034 e92d41f0 PUSH {r4-r8,lr}
000038 e1a04000 MOV r4,r0
00003c e1a05001 MOV r5,r1
000040 e1a06002 MOV r6,r2
;;;110 INT8U len;
;;;111 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;112 OS_CPU_SR cpu_sr = 0;
000044 e3a07000 MOV r7,#0
;;;113 #endif
;;;114
;;;115
;;;116
;;;117 #if OS_ARG_CHK_EN > 0
;;;118 if (err == (INT8U *)0) { /* Validate 'err' */
000048 e3560000 CMP r6,#0
00004c 1a000002 BNE |L1.92|
;;;119 return (0);
000050 e3a00000 MOV r0,#0
|L1.84|
000054 e8bd41f0 POP {r4-r8,lr}
;;;120 }
;;;121 if (pevent == (OS_EVENT *)0) { /* Is 'pevent' a NULL pointer? */
;;;122 *err = OS_ERR_PEVENT_NULL;
;;;123 return (0);
;;;124 }
;;;125 if (pname == (INT8U *)0) { /* Is 'pname' a NULL pointer? */
;;;126 *err = OS_ERR_PNAME_NULL;
;;;127 return (0);
;;;128 }
;;;129 #endif
;;;130 switch (pevent->OSEventType) {
;;;131 case OS_EVENT_TYPE_SEM:
;;;132 case OS_EVENT_TYPE_MUTEX:
;;;133 case OS_EVENT_TYPE_MBOX:
;;;134 case OS_EVENT_TYPE_Q:
;;;135 break;
;;;136
;;;137 default:
;;;138 *err = OS_ERR_EVENT_TYPE;
;;;139 return (0);
;;;140 }
;;;141 OS_ENTER_CRITICAL();
;;;142 len = OS_StrCopy(pname, pevent->OSEventName); /* Copy name from OS_EVENT */
;;;143 OS_EXIT_CRITICAL();
;;;144 *err = OS_ERR_NONE;
;;;145 return (len);
;;;146 }
000058 e12fff1e BX lr
|L1.92|
00005c e3540000 CMP r4,#0
000060 1a000003 BNE |L1.116|
000064 e3a00004 MOV r0,#4
000068 e5c60000 STRB r0,[r6,#0]
00006c e3a00000 MOV r0,#0
000070 eafffff7 B |L1.84|
|L1.116|
000074 e3550000 CMP r5,#0
000078 1a000003 BNE |L1.140|
00007c e3a0000c MOV r0,#0xc
000080 e5c60000 STRB r0,[r6,#0]
000084 e3a00000 MOV r0,#0
000088 eafffff1 B |L1.84|
|L1.140|
00008c e5d40000 LDRB r0,[r4,#0]
000090 e3500001 CMP r0,#1
000094 0a000009 BEQ |L1.192|
000098 e3500002 CMP r0,#2
00009c 0a000008 BEQ |L1.196|
0000a0 e3500003 CMP r0,#3
0000a4 0a000002 BEQ |L1.180|
0000a8 e3500004 CMP r0,#4
0000ac 1a000005 BNE |L1.200|
0000b0 ea000001 B |L1.188|
|L1.180|
0000b4 e1a00000 MOV r0,r0
0000b8 e1a00000 MOV r0,r0
|L1.188|
0000bc e1a00000 MOV r0,r0
|L1.192|
0000c0 e1a00000 MOV r0,r0
|L1.196|
0000c4 ea000004 B |L1.220|
|L1.200|
0000c8 e1a00000 MOV r0,r0
0000cc e3a00001 MOV r0,#1
0000d0 e5c60000 STRB r0,[r6,#0]
0000d4 e3a00000 MOV r0,#0
0000d8 eaffffdd B |L1.84|
|L1.220|
0000dc e1a00000 MOV r0,r0
0000e0 ebfffffe BL OS_CPU_SR_Save
0000e4 e1a07000 MOV r7,r0
0000e8 e284100f ADD r1,r4,#0xf
0000ec e1a00005 MOV r0,r5
0000f0 ebfffffe BL OS_StrCopy
0000f4 e1a08000 MOV r8,r0
0000f8 e1a00007 MOV r0,r7
0000fc ebfffffe BL OS_CPU_SR_Restore
000100 e3a00000 MOV r0,#0
000104 e5c60000 STRB r0,[r6,#0]
000108 e1a00008 MOV r0,r8
00010c eaffffd0 B |L1.84|
ENDP
OS_StrLen PROC
;;;1330 INT8U OS_StrLen (INT8U *psrc)
;;;1331 {
000110 e1a01000 MOV r1,r0
;;;1332 INT8U len;
;;;1333
;;;1334
;;;1335 len = 0;
000114 e3a00000 MOV r0,#0
;;;1336 while (*psrc != OS_ASCII_NUL) {
000118 ea000002 B |L1.296|
|L1.284|
;;;1337 psrc++;
00011c e2811001 ADD r1,r1,#1
;;;1338 len++;
000120 e2802001 ADD r2,r0,#1
000124 e20200ff AND r0,r2,#0xff
|L1.296|
000128 e5d12000 LDRB r2,[r1,#0]
00012c e3520000 CMP r2,#0
000130 1afffff9 BNE |L1.284|
;;;1339 }
;;;1340 return (len);
;;;1341 }
000134 e12fff1e BX lr
ENDP
OSEventNameSet PROC
;;;177 void OSEventNameSet (OS_EVENT *pevent, INT8U *pname, INT8U *err)
;;;178 {
000138 e92d41f0 PUSH {r4-r8,lr}
00013c e1a04000 MOV r4,r0
000140 e1a05001 MOV r5,r1
000144 e1a06002 MOV r6,r2
;;;179 INT8U len;
;;;180 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;;;181 OS_CPU_SR cpu_sr = 0;
000148 e3a08000 MOV r8,#0
;;;182 #endif
;;;183
;;;184
;;;185
;;;186 #if OS_ARG_CHK_EN > 0
;;;187 if (err == (INT8U *)0) { /* Validate 'err' */
00014c e3560000 CMP r6,#0
000150 1a000001 BNE |L1.348|
|L1.340|
;;;188 return;
;;;189 }
;;;190 if (pevent == (OS_EVENT *)0) { /* Is 'pevent' a NULL pointer? */
;;;191 *err = OS_ERR_PEVENT_NULL;
;;;192 return;
;;;193 }
;;;194 if (pname == (INT8U *)0) { /* Is 'pname' a NULL pointer? */
;;;195 *err = OS_ERR_PNAME_NULL;
;;;196 return;
;;;197 }
;;;198 #endif
;;;199 switch (pevent->OSEventType) {
;;;200 case OS_EVENT_TYPE_SEM:
;;;201 case OS_EVENT_TYPE_MUTEX:
;;;202 case OS_EVENT_TYPE_MBOX:
;;;203 case OS_EVENT_TYPE_Q:
;;;204 break;
;;;205
;;;206 default:
;;;207 *err = OS_ERR_EVENT_TYPE;
;;;208 return;
;;;209 }
;;;210 OS_ENTER_CRITICAL();
;;;211 len = OS_StrLen(pname); /* Can we fit the string in the storage area? */
;;;212 if (len > (OS_EVENT_NAME_SIZE - 1)) { /* No */
;;;213 OS_EXIT_CRITICAL();
;;;214 *err = OS_ERR_EVENT_NAME_TOO_LONG;
;;;215 return;
;;;216 }
;;;217 (void)OS_StrCopy(pevent->OSEventName, pname); /* Yes, copy name to the event control block */
;;;218 OS_EXIT_CRITICAL();
;;;219 *err = OS_ERR_NONE;
;;;220 }
000154 e8bd41f0 POP {r4-r8,lr}
000158 e12fff1e BX lr
|L1.348|
00015c e3540000 CMP r4,#0
000160 1a000002 BNE |L1.368|
000164 e3a00004 MOV r0,#4
000168 e5c60000 STRB r0,[r6,#0]
00016c eafffff8 B |L1.340|
|L1.368|
000170 e3550000 CMP r5,#0
000174 1a000002 BNE |L1.388|
000178 e3a0000c MOV r0,#0xc
00017c e5c60000 STRB r0,[r6,#0]
000180 eafffff3 B |L1.340|
|L1.388|
000184 e5d40000 LDRB r0,[r4,#0]
000188 e3500001 CMP r0,#1
00018c 0a000009 BEQ |L1.440|
000190 e3500002 CMP r0,#2
000194 0a000008 BEQ |L1.444|
000198 e3500003 CMP r0,#3
00019c 0a000002 BEQ |L1.428|
0001a0 e3500004 CMP r0,#4
0001a4 1a000005 BNE |L1.448|
0001a8 ea000001 B |L1.436|
|L1.428|
0001ac e1a00000 MOV r0,r0
0001b0 e1a00000 MOV r0,r0
|L1.436|
0001b4 e1a00000 MOV r0,r0
|L1.440|
0001b8 e1a00000 MOV r0,r0
|L1.444|
0001bc ea000003 B |L1.464|
|L1.448|
0001c0 e1a00000 MOV r0,r0
0001c4 e3a00001 MOV r0,#1
0001c8 e5c60000 STRB r0,[r6,#0]
0001cc eaffffe0 B |L1.340|
|L1.464|
0001d0 e1a00000 MOV r0,r0
0001d4 ebfffffe BL OS_CPU_SR_Save
0001d8 e1a08000 MOV r8,r0
0001dc e1a00005 MOV r0,r5
0001e0 ebfffffe BL OS_StrLen
0001e4 e1a07000 MOV r7,r0
0001e8 e357000f CMP r7,#0xf
0001ec da000004 BLE |L1.516|
0001f0 e1a00008 MOV r0,r8
0001f4 ebfffffe BL OS_CPU_SR_Restore
0001f8 e3a0000b MOV r0,#0xb
0001fc e5c60000 STRB r0,[r6,#0]
000200 eaffffd3 B |L1.340|
|L1.516|
000204 e1a01005 MOV r1,r5
000208 e284000f ADD r0,r4,#0xf
00020c ebfffffe BL OS_StrCopy
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -