📄 artx_config.lst
字号:
*** CODE SEGMENT '?PR?os_free_TCB?T?ARTX_Config':
371: void os_free_TCB (P_TCB p_TCB) {
00000000 B510 PUSH {R4,LR}
00000002 1C04 MOV R4,R0 ; p_TCB
00000004 ---- Variable 'p_TCB' assigned to Register 'R4' ----
373: _free_box (m_stk, p_TCB->stack);
00000004 1C20 MOV R0,R4 ; p_TCB
00000006 6A81 LDR R1,[R0,#0x28]
00000008 4800 LDR R0,=m_stk ; m_stk
0000000A DF07 SWI 0x7 ; _free_box?T
374: _free_box (m_tcb, p_TCB);
0000000C 4800 LDR R0,=m_tcb ; m_tcb
0000000E 1C21 MOV R1,R4 ; p_TCB
00000010 DF07 SWI 0x7 ; _free_box?T
376: if (os_runtask == p_TCB) {
00000012 1C21 MOV R1,R4 ; p_TCB
00000014 4800 LDR R0,=os_runtask ; os_runtask
00000016 6800 LDR R0,[R0,#0x0] ; os_runtask
00000018 4288 CMP R0,R1 ; p_TCB
0000001A D102 BNE L_19 ; T=0x00000022
378: os_del_flag = __TRUE;
0000001C 2101 MOV R1,#0x1
0000001E 4800 LDR R0,=os_del_flag ; os_del_flag
00000020 7001 STRB R1,[R0,#0x0] ; os_del_flag
379: }
00000022 L_19:
381: } /* end of os_free_TCB */
00000022 BC10 POP {R4}
00000024 BC08 POP {R3}
00000026 4718 BX R3
00000028 ENDP ; 'os_free_TCB?T'
*** CODE SEGMENT '?PR?os_alloc_TMR?T?ARTX_Config':
389: return (NULL);
00000000 2000 MOV R0,#0x0
391: } /* end of os_alloc_TMR */
00000002 4770 BX R14
00000004 ENDP ; 'os_alloc_TMR?T'
*** CODE SEGMENT '?PR?os_free_TMR?T?ARTX_Config':
402: } /* end of os_free_TMR */
00000000 4770 BX R14
00000002 ENDP ; 'os_free_TMR?T'
*** CODE SEGMENT '?PR?os_init_context?T?ARTX_Config':
406: 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' ----
407: FUNCP task_body, U8 full_context) {
0000000A ; SCOPE-START
415: 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
416: p_TCB->state = READY;
00000010 2101 MOV R1,#0x1
00000012 1C28 MOV R0,R5 ; p_TCB
00000014 7041 STRB R1,[R0,#0x1]
417: p_TCB->prio = priority;
ARM COMPILER V2.42, ARTX_Config 17/01/06 16:24:22 PAGE 16
00000016 1C11 MOV R1,R2 ; priority
00000018 1C28 MOV R0,R5 ; p_TCB
0000001A 7081 STRB R1,[R0,#0x2]
418: p_TCB->p_lnk = NULL;
0000001C 2100 MOV R1,#0x0
0000001E 1C28 MOV R0,R5 ; p_TCB
00000020 6041 STR R1,[R0,#0x4]
419: p_TCB->p_rlnk = NULL;
00000022 2100 MOV R1,#0x0
00000024 1C28 MOV R0,R5 ; p_TCB
00000026 6081 STR R1,[R0,#0x8]
420: p_TCB->p_dlnk = NULL;
00000028 2100 MOV R1,#0x0
0000002A 1C28 MOV R0,R5 ; p_TCB
0000002C 60C1 STR R1,[R0,#0xC]
421: p_TCB->p_blnk = NULL;
0000002E 2100 MOV R1,#0x0
00000030 1C28 MOV R0,R5 ; p_TCB
00000032 6101 STR R1,[R0,#0x10]
422: p_TCB->delta_time = 0;
00000034 2100 MOV R1,#0x0
00000036 1C28 MOV R0,R5 ; p_TCB
00000038 8281 STRH R1,[R0,#0x14]
423: p_TCB->interval_time = 0;
0000003A 2100 MOV R1,#0x0
0000003C 1C28 MOV R0,R5 ; p_TCB
0000003E 82C1 STRH R1,[R0,#0x16]
424: p_TCB->events = 0;
00000040 2100 MOV R1,#0x0
00000042 1C28 MOV R0,R5 ; p_TCB
00000044 8301 STRH R1,[R0,#0x18]
425: p_TCB->waits = 0;
00000046 2100 MOV R1,#0x0
00000048 1C28 MOV R0,R5 ; p_TCB
0000004A 8341 STRH R1,[R0,#0x1A]
428: 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]
431: 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
433: 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
434: }
00000068 E006 B L_22 ; T=0x00000078
0000006A L_21:
437: 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]
439: stk = &p_TCB->stack[OS_STKSIZE];
00000072 1C28 MOV R0,R5 ; p_TCB
00000074 6A84 LDR R4,[R0,#0x28]
00000076 34C8 ADD R4,#0xC8
440: }
00000078 L_22:
ARM COMPILER V2.42, ARTX_Config 17/01/06 16:24:22 PAGE 17
443: *--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]
444: i = INITIAL_CPSR;
00000082 4800 LDR R0,=0x40000010
00000084 ---- Variable 'i' assigned to Register 'R0' ----
447: 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
448: i |= 0x00000020;
0000008C 2120 MOV R1,#0x20
0000008E 4308 ORR R0,R1
449: }
00000090 L_23:
450: *--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]
453: 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:
454: *--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]
455: }
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
458: if (full_context) {
000000BC 1C38 MOV R0,R7 ; full_context
000000BE 2800 CMP R0,#0x0 ; full_context
000000C0 D005 BEQ L_31 ; T=0x000000CE
459: *--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]
460: }
000000CE L_31:
463: 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]
ARM COMPILER V2.42, ARTX_Config 17/01/06 16:24:22 PAGE 18
466: 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]
469: 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
471: } /* 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':
481: LDR R0,[R0,#TCB_TSTACK] ; p_TCB in R0
00000000 6A40 LDR R0,[R0,#0x24]
482: MOV SP,R0
00000002 4685 MOV R13,R0
483: ADD SP,SP,#24 ; ignore default context
00000004 B006 ADD R13,R13,#0x18
485: } /* end of os_set_env */
00000006 4770 BX R14
00000008 ENDP ; 'os_set_env?T'
*** CODE SEGMENT '?PR?os_switch_tasks?T?ARTX_Config':
490: 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' ----
495: 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
497: 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:
499: os_stk_overflow ();
00000024 F7FF BL os_stk_overflow?T ; T=0x0001 (1)
00000026 FFEC BL os_stk_overflow?T ; T=0x0001 (2)
501: }
00000028 L_32:
503: 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]
504: 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
505: p_new->state = RUNNING;
00000038 2102 MOV R1,#0x2
ARM COMPILER V2.42, ARTX_Config 17/01/06 16:24:22 PAGE 19
0000003A 1C20 MOV R0,R4 ; p_new
0000003C 7041 STRB R1,[R0,#0x1]
510: OS_UNLOCK();
0000003E 2220 MOV R2,#0x20
00000040 4800 LDR R0,=0xFFFFF010
00000042 6801 LDR R1,[R0,#0x0]
00000044 4311 ORR R1,R2
00000046 6001 STR R1,[R0,#0x0]
511: } /* end of os_switch_tasks */
00000048 BC10 POP {R4}
0000004A BC08 POP {R3}
0000004C 4718 BX R3
0000004E ENDP ; 'os_switch_tasks?T'
*** CODE SEGMENT '?PR?os_chk_robin?T?ARTX_Config':
533: } /* end of os_chk_robin */
00000000 4770 BX R14
00000002 ENDP ; 'os_chk_robin?T'
Module Information Static
----------------------------------
code size = ------
data size = 1437
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 + -