?? artx_config.lst
字號:
00000002 4770 BX R14
00000004 ENDP ; 'os_alloc_TMR?T'
*** CODE SEGMENT '?PR?os_free_TMR?T?ARTX_Config':
404: } /* end of os_free_TMR */
00000000 4770 BX R14
00000002 ENDP ; 'os_free_TMR?T'
*** CODE SEGMENT '?PR?os_init_context?T?ARTX_Config':
408: void os_init_context (P_TCB p_TCB, U8 priority,
00000000 B5F0 PUSH {R4-R7,LR}
00000002 1C1F MOV R7,R3 ; full_context
00000004 ---- Variable 'full_context' assigned to Register 'R7' ----
00000004 1C16 MOV R6,R2 ; task_body
ARM COMPILER V2.42, ARTX_Config 20/01/06 15:26:03 PAGE 16
00000006 ---- Variable 'task_body' assigned to Register 'R6' ----
00000006 1C0A MOV R2,R1 ; priority
00000008 ---- Variable 'priority' assigned to Register 'R2' ----
00000008 1C05 MOV R5,R0 ; p_TCB
0000000A ---- Variable 'p_TCB' assigned to Register 'R5' ----
0000000A ---- Variable 'stk' assigned to Register 'R4' ----
409: FUNCP task_body, U8 full_context) {
0000000A ; SCOPE-START
417: p_TCB->cb_type = TCB;
0000000A 2100 MOV R1,#0x0
0000000C 1C28 MOV R0,R5 ; p_TCB
0000000E 7001 STRB R1,[R0,#0x0] ; p_TCB
418: p_TCB->state = READY;
00000010 2101 MOV R1,#0x1
00000012 1C28 MOV R0,R5 ; p_TCB
00000014 7041 STRB R1,[R0,#0x1]
419: p_TCB->prio = priority;
00000016 1C11 MOV R1,R2 ; priority
00000018 1C28 MOV R0,R5 ; p_TCB
0000001A 7081 STRB R1,[R0,#0x2]
420: p_TCB->p_lnk = NULL;
0000001C 2100 MOV R1,#0x0
0000001E 1C28 MOV R0,R5 ; p_TCB
00000020 6041 STR R1,[R0,#0x4]
421: p_TCB->p_rlnk = NULL;
00000022 2100 MOV R1,#0x0
00000024 1C28 MOV R0,R5 ; p_TCB
00000026 6081 STR R1,[R0,#0x8]
422: p_TCB->p_dlnk = NULL;
00000028 2100 MOV R1,#0x0
0000002A 1C28 MOV R0,R5 ; p_TCB
0000002C 60C1 STR R1,[R0,#0xC]
423: p_TCB->p_blnk = NULL;
0000002E 2100 MOV R1,#0x0
00000030 1C28 MOV R0,R5 ; p_TCB
00000032 6101 STR R1,[R0,#0x10]
424: p_TCB->delta_time = 0;
00000034 2100 MOV R1,#0x0
00000036 1C28 MOV R0,R5 ; p_TCB
00000038 8281 STRH R1,[R0,#0x14]
425: p_TCB->interval_time = 0;
0000003A 2100 MOV R1,#0x0
0000003C 1C28 MOV R0,R5 ; p_TCB
0000003E 82C1 STRH R1,[R0,#0x16]
426: p_TCB->events = 0;
00000040 2100 MOV R1,#0x0
00000042 1C28 MOV R0,R5 ; p_TCB
00000044 8301 STRH R1,[R0,#0x18]
427: p_TCB->waits = 0;
00000046 2100 MOV R1,#0x0
00000048 1C28 MOV R0,R5 ; p_TCB
0000004A 8341 STRH R1,[R0,#0x1A]
430: p_TCB->full_ctx = full_context;
0000004C 1C39 MOV R1,R7 ; full_context
0000004E 1C28 MOV R0,R5 ; p_TCB
00000050 3021 ADD R0,#0x21
00000052 7001 STRB R1,[R0,#0x0]
433: if (p_TCB->priv_stack != 0) {
00000054 1C28 MOV R0,R5 ; p_TCB
00000056 8C40 LDRH R0,[R0,#0x22]
00000058 1C01 MOV R1,R0
0000005A 2900 CMP R1,#0x0
0000005C D005 BEQ L_21 ; T=0x0000006A
435: stk = &p_TCB->stack[p_TCB->priv_stack>>2];
0000005E 0889 LSR R1,R1,#0x2
00000060 0089 LSL R1,R1,#0x2
ARM COMPILER V2.42, ARTX_Config 20/01/06 15:26:03 PAGE 17
00000062 1C28 MOV R0,R5 ; p_TCB
00000064 6A84 LDR R4,[R0,#0x28]
00000066 1864 ADD R4,R1
436: }
00000068 E006 B L_22 ; T=0x00000078
0000006A L_21:
439: p_TCB->stack = _alloc_box (m_stk);
0000006A 4800 LDR R0,=m_stk ; m_stk
0000006C DF06 SWI 0x6 ; _alloc_box?T
0000006E 1C29 MOV R1,R5 ; p_TCB
00000070 6288 STR R0,[R1,#0x28]
441: stk = &p_TCB->stack[OS_STKSIZE];
00000072 1C28 MOV R0,R5 ; p_TCB
00000074 6A84 LDR R4,[R0,#0x28]
00000076 34C8 ADD R4,#0xC8
442: }
00000078 L_22:
445: *--stk = (U32)task_body;
00000078 1C31 MOV R1,R6 ; task_body
0000007A 1C20 MOV R0,R4 ; stk
0000007C 3804 SUB R0,#0x4
0000007E 1C04 MOV R4,R0 ; stk
00000080 6001 STR R1,[R0,#0x0]
446: i = INITIAL_CPSR;
00000082 4800 LDR R0,=0x40000010
00000084 ---- Variable 'i' assigned to Register 'R0' ----
449: if ((U32)task_body & 1) {
00000084 1C31 MOV R1,R6 ; task_body
00000086 2201 MOV R2,#0x1
00000088 4211 TST R1,R2
0000008A D001 BEQ L_23 ; T=0x00000090
450: i |= 0x00000020;
0000008C 2120 MOV R1,#0x20
0000008E 4308 ORR R0,R1
451: }
00000090 L_23:
452: *--stk = i;
00000090 1C02 MOV R2,R0 ; i
00000092 1C21 MOV R1,R4 ; stk
00000094 3904 SUB R1,#0x4
00000096 1C0C MOV R4,R1 ; stk
00000098 600A STR R2,[R1,#0x0]
455: for (i = full_context ? 13 : 4; i; i--) {
0000009A 1C39 MOV R1,R7 ; full_context
0000009C 2900 CMP R1,#0x0 ; full_context
0000009E D002 BEQ L_29 ; T=0x000000A6
000000A0 210D MOV R1,#0xD
000000A2 1C08 MOV R0,R1
000000A4 E000 B L_30 ; T=0x000000A8
000000A6 L_29:
000000A6 2004 MOV R0,#0x4
000000A8 L_30:
000000A8 E005 B L_26 ; T=0x000000B6
000000AA L_27:
456: *--stk = 0;
000000AA 2200 MOV R2,#0x0
000000AC 1C21 MOV R1,R4 ; stk
000000AE 3904 SUB R1,#0x4
000000B0 1C0C MOV R4,R1 ; stk
000000B2 600A STR R2,[R1,#0x0]
457: }
000000B4 3801 SUB R0,#0x1
000000B6 L_26:
000000B6 1C01 MOV R1,R0 ; i
000000B8 2900 CMP R1,#0x0 ; i
000000BA D1F6 BNE L_27 ; T=0x000000AA
ARM COMPILER V2.42, ARTX_Config 20/01/06 15:26:03 PAGE 18
460: if (full_context) {
000000BC 1C38 MOV R0,R7 ; full_context
000000BE 2800 CMP R0,#0x0 ; full_context
000000C0 D005 BEQ L_31 ; T=0x000000CE
461: *--stk = (U32)p_TCB->p_msg;
000000C2 1C28 MOV R0,R5 ; p_TCB
000000C4 69C1 LDR R1,[R0,#0x1C]
000000C6 1C20 MOV R0,R4 ; stk
000000C8 3804 SUB R0,#0x4
000000CA 1C04 MOV R4,R0 ; stk
000000CC 6001 STR R1,[R0,#0x0]
462: }
000000CE L_31:
465: p_TCB->tsk_stack = (U32)stk;
000000CE 1C21 MOV R1,R4 ; stk
000000D0 1C28 MOV R0,R5 ; p_TCB
000000D2 6241 STR R1,[R0,#0x24]
468: p_TCB->ptask = task_body;
000000D4 1C31 MOV R1,R6 ; task_body
000000D6 1C28 MOV R0,R5 ; p_TCB
000000D8 62C1 STR R1,[R0,#0x2C]
471: p_TCB->stack[0] = MAGIC_WORD;
000000DA 4800 LDR R1,=0xE25A2EA5
000000DC 1C28 MOV R0,R5 ; p_TCB
000000DE 6A80 LDR R0,[R0,#0x28]
000000E0 6001 STR R1,[R0,#0x0]
000000E2 ; SCOPE-END
473: } /* end of os_init_context */
000000E2 BCF0 POP {R4-R7}
000000E4 BC08 POP {R3}
000000E6 4718 BX R3
000000E8 ENDP ; 'os_init_context?T'
*** CODE SEGMENT '?PR?os_set_env?T?ARTX_Config':
483: LDR R0,[R0,#TCB_TSTACK] ; p_TCB in R0
00000000 6A40 LDR R0,[R0,#0x24]
484: MOV SP,R0
00000002 4685 MOV R13,R0
485: ADD SP,SP,#24 ; ignore default context
00000004 B006 ADD R13,R13,#0x18
487: } /* end of os_set_env */
00000006 4770 BX R14
00000008 ENDP ; 'os_set_env?T'
*** CODE SEGMENT '?PR?os_switch_tasks?T?ARTX_Config':
492: void os_switch_tasks (P_TCB p_new) __swi (0) {
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; p_new
00000004 ---- Variable 'p_new' assigned to Register 'R4' ----
497: if (tstclrb (&os_del_flag) == __FALSE) {
00000004 4800 LDR R0,=os_del_flag ; os_del_flag
00000006 F7FF BL tstclrb?T ; T=0x0001 (1)
00000008 FFFB BL tstclrb?T ; T=0x0001 (2)
0000000A 2800 CMP R0,#0x0 ; tstclrb?T
0000000C D10C BNE L_32 ; T=0x00000028
499: if ((os_runtask->tsk_stack < (U32)os_runtask->stack) ||
0000000E 4800 LDR R0,=os_runtask ; os_runtask
00000010 6803 LDR R3,[R0,#0x0] ; os_runtask
00000012 6A98 LDR R0,[R3,#0x28]
00000014 1C02 MOV R2,R0
00000016 6A59 LDR R1,[R3,#0x24]
00000018 4291 CMP R1,R2
0000001A D303 BCC L_34 ; T=0x00000024
0000001C 6800 LDR R0,[R0,#0x0]
0000001E 4800 LDR R1,=0xE25A2EA5
00000020 4288 CMP R0,R1
00000022 D001 BEQ L_32 ; T=0x00000028
00000024 L_34:
ARM COMPILER V2.42, ARTX_Config 20/01/06 15:26:03 PAGE 19
501: os_stk_overflow ();
00000024 F7FF BL os_stk_overflow?T ; T=0x0001 (1)
00000026 FFEC BL os_stk_overflow?T ; T=0x0001 (2)
503: }
00000028 L_32:
505: os_runtask->full_ctx = __FALSE;
00000028 2100 MOV R1,#0x0
0000002A 4800 LDR R0,=os_runtask ; os_runtask
0000002C 6800 LDR R0,[R0,#0x0] ; os_runtask
0000002E 3021 ADD R0,#0x21
00000030 7001 STRB R1,[R0,#0x0]
506: os_runtask = p_new;
00000032 1C21 MOV R1,R4 ; p_new
00000034 4800 LDR R0,=os_runtask ; os_runtask
00000036 6001 STR R1,[R0,#0x0] ; os_runtask
507: p_new->state = RUNNING;
00000038 2102 MOV R1,#0x2
0000003A 1C20 MOV R0,R4 ; p_new
0000003C 7041 STRB R1,[R0,#0x1]
509: os_tsk_robin = p_new;
0000003E 1C21 MOV R1,R4 ; p_new
00000040 4800 LDR R0,=os_tsk_robin ; os_tsk_robin
00000042 6001 STR R1,[R0,#0x0] ; os_tsk_robin
512: OS_UNLOCK();
00000044 2220 MOV R2,#0x20
00000046 4800 LDR R0,=0xFFFFF010
00000048 6801 LDR R1,[R0,#0x0]
0000004A 4311 ORR R1,R2
0000004C 6001 STR R1,[R0,#0x0]
513: } /* end of os_switch_tasks */
0000004E BC10 POP {R4}
00000050 BC08 POP {R3}
00000052 4718 BX R3
00000054 ENDP ; 'os_switch_tasks?T'
*** CODE SEGMENT '?PR?os_chk_robin?T?ARTX_Config':
518: void os_chk_robin (void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
524: if (os_rdy.p_lnk != os_tsk_robin) {
00000002 4800 LDR R0,=os_tsk_robin ; os_tsk_robin
00000004 6801 LDR R1,[R0,#0x0] ; os_tsk_robin
00000006 4800 LDR R0,=os_rdy + 0x4 ; os_rdy+4
00000008 6800 LDR R0,[R0,#0x0] ; os_rdy+4
0000000A 4288 CMP R0,R1
0000000C D008 BEQ L_35 ; T=0x00000020
525: os_robin_time = os_time + OS_ROBINTOUT;
0000000E 4800 LDR R0,=os_time ; os_time
00000010 8800 LDRH R0,[R0,#0x0] ; os_time
00000012 1C01 MOV R1,R0
00000014 3105 ADD R1,#0x5
00000016 0409 LSL R1,R1,#0x10
00000018 0C09 LSR R1,R1,#0x10
0000001A 4800 LDR R0,=os_robin_time ; os_robin_time
0000001C 8001 STRH R1,[R0,#0x0] ; os_robin_time
526: return;
0000001E E012 B L_36 ; T=0x00000046
527: }
00000020 L_35:
528: if (os_robin_time == os_time) {
00000020 4800 LDR R0,=os_time ; os_time
00000022 8800 LDRH R0,[R0,#0x0] ; os_time
00000024 1C02 MOV R2,R0
00000026 4800 LDR R0,=os_robin_time ; os_robin_time
00000028 8801 LDRH R1,[R0,#0x0] ; os_robin_time
0000002A 1C08 MOV R0,R1
0000002C 4290 CMP R0,R2
ARM COMPILER V2.42, ARTX_Config 20/01/06 15:26:03 PAGE 20
0000002E D10A BNE L_36 ; T=0x00000046
530: os_robin_time += OS_ROBINTOUT;
00000030 3105 ADD R1,#0x5
00000032 4800 LDR R0,=os_robin_time ; os_robin_time
00000034 8001 STRH R1,[R0,#0x0] ; os_robin_time
531: p_new = os_get_first (&os_rdy);
00000036 4800 LDR R0,=os_rdy ; os_rdy
00000038 F7FF BL os_get_first?T ; T=0x0001 (1)
0000003A FFE2 BL os_get_first?T ; T=0x0001 (2)
0000003C 1C02 MOV R2,R0 ; p_new
0000003E ---- Variable 'p_new' assigned to Register 'R2' ----
532: os_put_prio ((P_XCB)&os_rdy, p_new);
0000003E 4800 LDR R0,=os_rdy ; os_rdy
00000040 1C11 MOV R1,R2 ; p_new
00000042 F7FF BL os_put_prio?T ; T=0x0001 (1)
00000044 FFDD BL os_put_prio?T ; T=0x0001 (2)
533: }
00000046 ; SCOPE-END
535: } /* end of os_chk_robin */
00000046 L_36:
00000046 BC08 POP {R3}
00000048 4718 BX R3
0000004A ENDP ; 'os_chk_robin?T'
Module Information Static
----------------------------------
code size = ------
data size = 2955
const size = 18
End of Module Information.
ARM COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -