📄 artx_config.lst
字号:
00000004 ENDP ; 'os_alloc_TMR?T'
*** CODE SEGMENT '?PR?os_free_TMR?T?ARTX_Config':
400: } /* end of os_free_TMR */
00000000 4770 BX R14
00000002 ENDP ; 'os_free_TMR?T'
*** CODE SEGMENT '?PR?os_init_context?T?ARTX_Config':
404: 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
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' ----
405: FUNCP task_body, U8 full_context) {
0000000A ; SCOPE-START
413: p_TCB->cb_type = TCB;
0000000A 2100 MOV R1,#0x0
0000000C 1C28 MOV R0,R5 ; p_TCB
ARM COMPILER V2.32a, ARTX_Config 15/03/07 08:58:24 PAGE 16
0000000E 7001 STRB R1,[R0,#0x0] ; p_TCB
414: p_TCB->state = READY;
00000010 2101 MOV R1,#0x1
00000012 1C28 MOV R0,R5 ; p_TCB
00000014 7041 STRB R1,[R0,#0x1]
415: p_TCB->prio = priority;
00000016 1C11 MOV R1,R2 ; priority
00000018 1C28 MOV R0,R5 ; p_TCB
0000001A 7081 STRB R1,[R0,#0x2]
416: p_TCB->p_lnk = NULL;
0000001C 2100 MOV R1,#0x0
0000001E 1C28 MOV R0,R5 ; p_TCB
00000020 6041 STR R1,[R0,#0x4]
417: p_TCB->p_rlnk = NULL;
00000022 2100 MOV R1,#0x0
00000024 1C28 MOV R0,R5 ; p_TCB
00000026 6081 STR R1,[R0,#0x8]
418: p_TCB->p_dlnk = NULL;
00000028 2100 MOV R1,#0x0
0000002A 1C28 MOV R0,R5 ; p_TCB
0000002C 60C1 STR R1,[R0,#0xC]
419: p_TCB->p_blnk = NULL;
0000002E 2100 MOV R1,#0x0
00000030 1C28 MOV R0,R5 ; p_TCB
00000032 6101 STR R1,[R0,#0x10]
420: p_TCB->delta_time = 0;
00000034 2100 MOV R1,#0x0
00000036 1C28 MOV R0,R5 ; p_TCB
00000038 8281 STRH R1,[R0,#0x14]
421: p_TCB->interval_time = 0;
0000003A 2100 MOV R1,#0x0
0000003C 1C28 MOV R0,R5 ; p_TCB
0000003E 82C1 STRH R1,[R0,#0x16]
422: p_TCB->events = 0;
00000040 2100 MOV R1,#0x0
00000042 1C28 MOV R0,R5 ; p_TCB
00000044 8301 STRH R1,[R0,#0x18]
423: p_TCB->waits = 0;
00000046 2100 MOV R1,#0x0
00000048 1C28 MOV R0,R5 ; p_TCB
0000004A 8341 STRH R1,[R0,#0x1A]
426: 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]
429: 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
431: stk = &p_TCB->stack[p_TCB->priv_stack>>2];
0000005E 0889 LSR R1,R1,#0x2
00000060 0089 LSL R1,R1,#0x2
00000062 1C28 MOV R0,R5 ; p_TCB
00000064 6A84 LDR R4,[R0,#0x28]
00000066 1864 ADD R4,R1
432: }
00000068 E006 B L_22 ; T=0x00000078
0000006A L_21:
435: 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]
ARM COMPILER V2.32a, ARTX_Config 15/03/07 08:58:24 PAGE 17
437: stk = &p_TCB->stack[OS_STKSIZE];
00000072 1C28 MOV R0,R5 ; p_TCB
00000074 6A84 LDR R4,[R0,#0x28]
00000076 34C8 ADD R4,#0xC8
438: }
00000078 L_22:
441: *--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]
442: i = INITIAL_CPSR;
00000082 4800 LDR R0,=0x40000010
00000084 ---- Variable 'i' assigned to Register 'R0' ----
445: if ((U32)task_body & 1) {
00000084 1C31 MOV R1,R6 ; task_body
00000086 2201 MOV R2,#0x1
00000088 4211 TST R1,R2
0000008A D000 BEQ L_23 ; T=0x0000008E
446: i |= 0x00000020;
0000008C 4800 LDR R0,=0x40000030
447: }
0000008E L_23:
448: *--stk = i;
0000008E 1C02 MOV R2,R0 ; i
00000090 1C21 MOV R1,R4 ; stk
00000092 3904 SUB R1,#0x4
00000094 1C0C MOV R4,R1 ; stk
00000096 600A STR R2,[R1,#0x0]
451: for (i = full_context ? 13 : 4; i; i--) {
00000098 1C39 MOV R1,R7 ; full_context
0000009A 2900 CMP R1,#0x0 ; full_context
0000009C D002 BEQ L_29 ; T=0x000000A4
0000009E 210D MOV R1,#0xD
000000A0 1C08 MOV R0,R1
000000A2 E000 B L_30 ; T=0x000000A6
000000A4 L_29:
000000A4 2004 MOV R0,#0x4
000000A6 L_30:
000000A6 E005 B L_26 ; T=0x000000B4
000000A8 L_27:
452: *--stk = 0;
000000A8 2200 MOV R2,#0x0
000000AA 1C21 MOV R1,R4 ; stk
000000AC 3904 SUB R1,#0x4
000000AE 1C0C MOV R4,R1 ; stk
000000B0 600A STR R2,[R1,#0x0]
453: }
000000B2 3801 SUB R0,#0x1
000000B4 L_26:
000000B4 1C01 MOV R1,R0 ; i
000000B6 2900 CMP R1,#0x0 ; i
000000B8 D1F6 BNE L_27 ; T=0x000000A8
456: if (full_context) {
000000BA 1C38 MOV R0,R7 ; full_context
000000BC 2800 CMP R0,#0x0 ; full_context
000000BE D005 BEQ L_31 ; T=0x000000CC
457: *--stk = (U32)p_TCB->p_msg;
000000C0 1C28 MOV R0,R5 ; p_TCB
000000C2 69C1 LDR R1,[R0,#0x1C]
000000C4 1C20 MOV R0,R4 ; stk
000000C6 3804 SUB R0,#0x4
000000C8 1C04 MOV R4,R0 ; stk
000000CA 6001 STR R1,[R0,#0x0]
458: }
ARM COMPILER V2.32a, ARTX_Config 15/03/07 08:58:24 PAGE 18
000000CC L_31:
461: p_TCB->tsk_stack = (U32)stk;
000000CC 1C21 MOV R1,R4 ; stk
000000CE 1C28 MOV R0,R5 ; p_TCB
000000D0 6241 STR R1,[R0,#0x24]
464: p_TCB->ptask = task_body;
000000D2 1C31 MOV R1,R6 ; task_body
000000D4 1C28 MOV R0,R5 ; p_TCB
000000D6 62C1 STR R1,[R0,#0x2C]
468: p_TCB->stack[0] = MAGIC_WORD;
000000D8 4800 LDR R1,=0xE25A2EA5
000000DA 1C28 MOV R0,R5 ; p_TCB
000000DC 6A80 LDR R0,[R0,#0x28]
000000DE 6001 STR R1,[R0,#0x0]
000000E0 ; SCOPE-END
470: } /* end of os_init_context */
000000E0 BCF0 POP {R4-R7}
000000E2 BC08 POP {R3}
000000E4 4718 BX R3
000000E6 ENDP ; 'os_init_context?T'
*** CODE SEGMENT '?PR?os_set_env?T?ARTX_Config':
480: LDR R0,[R0,#TCB_TSTACK] ; p_TCB in R0
00000000 6A40 LDR R0,[R0,#0x24]
481: MOV SP,R0
00000002 4685 MOV R13,R0
482: ADD SP,SP,#24 ; ignore default context
00000004 B006 ADD R13,R13,#0x18
484: } /* end of os_set_env */
00000006 4770 BX R14
00000008 ENDP ; 'os_set_env?T'
*** CODE SEGMENT '?PR?os_switch_tasks?T?ARTX_Config':
489: 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' ----
494: 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
496: 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:
498: os_stk_overflow ();
00000024 F7FF BL os_stk_overflow?T ; T=0x0001 (1)
00000026 FFEC BL os_stk_overflow?T ; T=0x0001 (2)
500: }
00000028 L_32:
502: 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]
503: os_runtask = p_new;
ARM COMPILER V2.32a, ARTX_Config 15/03/07 08:58:24 PAGE 19
00000032 1C21 MOV R1,R4 ; p_new
00000034 4800 LDR R0,=os_runtask ; os_runtask
00000036 6001 STR R1,[R0,#0x0] ; os_runtask
504: p_new->state = RUNNING;
00000038 2102 MOV R1,#0x2
0000003A 1C20 MOV R0,R4 ; p_new
0000003C 7041 STRB R1,[R0,#0x1]
506: 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
509: OS_UNLOCK();
00000044 2210 MOV R2,#0x10
00000046 4800 LDR R0,=0xFFFFF010
00000048 6801 LDR R1,[R0,#0x0]
0000004A 4311 ORR R1,R2
0000004C 6001 STR R1,[R0,#0x0]
510: } /* 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':
515: void os_chk_robin (void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
521: 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 D006 BEQ L_35 ; T=0x0000001C
522: 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 4800 LDR R0,=os_robin_time ; os_robin_time
00000018 8001 STRH R1,[R0,#0x0] ; os_robin_time
523: return;
0000001A E012 B L_36 ; T=0x00000042
524: }
0000001C L_35:
525: if (os_robin_time == os_time) {
0000001C 4800 LDR R0,=os_time ; os_time
0000001E 8800 LDRH R0,[R0,#0x0] ; os_time
00000020 1C02 MOV R2,R0
00000022 4800 LDR R0,=os_robin_time ; os_robin_time
00000024 8801 LDRH R1,[R0,#0x0] ; os_robin_time
00000026 1C08 MOV R0,R1
00000028 4290 CMP R0,R2
0000002A D10A BNE L_36 ; T=0x00000042
527: os_robin_time += OS_ROBINTOUT;
0000002C 3105 ADD R1,#0x5
0000002E 4800 LDR R0,=os_robin_time ; os_robin_time
00000030 8001 STRH R1,[R0,#0x0] ; os_robin_time
528: p_new = os_get_first (&os_rdy);
00000032 4800 LDR R0,=os_rdy ; os_rdy
00000034 F7FF BL os_get_first?T ; T=0x0001 (1)
00000036 FFE4 BL os_get_first?T ; T=0x0001 (2)
00000038 1C02 MOV R2,R0 ; p_new
0000003A ---- Variable 'p_new' assigned to Register 'R2' ----
529: os_put_prio ((P_XCB)&os_rdy, p_new);
0000003A 4800 LDR R0,=os_rdy ; os_rdy
0000003C 1C11 MOV R1,R2 ; p_new
ARM COMPILER V2.32a, ARTX_Config 15/03/07 08:58:24 PAGE 20
0000003E F7FF BL os_put_prio?T ; T=0x0001 (1)
00000040 FFDF BL os_put_prio?T ; T=0x0001 (2)
530: }
00000042 ; SCOPE-END
532: } /* end of os_chk_robin */
00000042 L_36:
00000042 BC08 POP {R3}
00000044 4718 BX R3
00000046 ENDP ; 'os_chk_robin?T'
Module Information Static
----------------------------------
code size = ------
data size = 1947
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 + -