⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ggt_cpu_c.lst

📁 ARM下的多任务操作系统源码:GogotoOS
💻 LST
📖 第 1 页 / 共 3 页
字号:
  216:     T0MR0 = OSGetFPCLK() / OSGetTick();
 00000034  EBFFFFF1  BL          OSGetTick?A  ; Targ=0x0
 00000038  E1A04000  MOV         R4,R0
 0000003C  EBFFFFEF  BL          OSGetFPCLK?A  ; Targ=0x0
 00000040  E1A01004  MOV         R1,R4 ; OSGetTick?A
 00000044  EBFFFFED  BL          ?C?SDIV?A  ; Targ=0x0 ; ?C?SDIV?A
 00000048  E1A00001  MOV         R0,R1
 0000004C  E1A01000  MOV         R1,R0
 00000050  E5100000  LDR         R0,=0xE0004018
 00000054  E5801000  STR         R1,[R0,#0x0]
  217:     VICVectAddr0  = (UINT32)OSClockInt;
 00000058  E5101000  LDR         R1,=OSClockInt?A ; OSClockInt?A
 0000005C  E5100000  LDR         R0,=0xFFFFF100
 00000060  E5801000  STR         R1,[R0,#0x0]
  218:     VICVectCntl0  = 0x20 | 4;
 00000064  E3A01024  MOV         R1,#0x24
 00000068  E5100000  LDR         R0,=0xFFFFF200
 0000006C  E5801000  STR         R1,[R0,#0x0]
  219:     VICIntEnable  |= (1 << 4);
 00000070  E5100000  LDR         R0,=0xFFFFF010
 00000074  E5901000  LDR         R1,[R0,#0x0]
 00000078  E3811010  ORR         R1,R1,#0x0010
 0000007C  E5801000  STR         R1,[R0,#0x0]
  220: }
 00000080  E8BD0010  LDMIA       R13!,{R4}
 00000084  E8BD0008  LDMIA       R13!,{R3}
 00000088  E12FFF13  BX          R3
 0000008C          ENDP ; 'OSClockInit?A'


*** CODE SEGMENT '?PR?OSStackAlloc?A?GGT_CPU_c':
  237: UINT32* OSStackAlloc(void)
ARM COMPILER V2.32a,  GGT_CPU_c                                                            28/02/08  23:05:54  PAGE 10  

 00000000  E92D4010  STMDB       R13!,{R4,LR}
  240:     return((UINT32*)(((UINT32)BoxAlloc(OSGetBoxStack())) + OSGetSizeStack()));
 00000004  EBFFFFFD  BL          OSGetBoxStack?A  ; Targ=0x0
 00000008  EBFFFFFC  BL          BoxAlloc?A  ; Targ=0x0
 0000000C  E1A04000  MOV         R4,R0 ; BoxAlloc?A
 00000010  EBFFFFFA  BL          OSGetSizeStack?A  ; Targ=0x0
 00000014  E0840000  ADD         R0,R4,R0 ; OSGetSizeStack?A
  241: }
 00000018  E8BD0010  LDMIA       R13!,{R4}
 0000001C  E8BD0008  LDMIA       R13!,{R3}
 00000020  E12FFF13  BX          R3
 00000024          ENDP ; 'OSStackAlloc?A'


*** CODE SEGMENT '?PR?OSStackInit?A?GGT_CPU_c':
  258: UINT32* OSStackInit(void *pTaskBody, UINT32 *pStack, UINT32 Mode, UINT32 TaskParam)
 00000000  E92D0030  STMDB       R13!,{R4-R5}
 00000004  ---- Variable 'TaskParam' assigned to Register 'R3' ----
 00000004  E1A04002  MOV         R4,R2 ; Mode
 00000008  ---- Variable 'Mode' assigned to Register 'R4' ----
 00000008  ---- Variable 'pStack' assigned to Register 'R1' ----
 00000008  ---- Variable 'pTaskBody' assigned to Register 'R0' ----
  261:     *--pStack = (UINT32 *)pTaskBody;           /*  pc  */
 00000008  E1A05000  MOV         R5,R0 ; pTaskBody
 0000000C  E1A02001  MOV         R2,R1 ; pStack
 00000010  E2422004  SUB         R2,R2,#0x0004 ; pStack
 00000014  E1A01002  MOV         R1,R2 ; pStack
 00000018  E5825000  STR         R5,[R2,#0x0]
  262:     *--pStack = (UINT32 *)pTaskBody;           /*  lr  */
 0000001C  E1A02000  MOV         R2,R0 ; pTaskBody
 00000020  E1A00001  MOV         R0,R1 ; pStack
 00000024  E2400004  SUB         R0,R0,#0x0004 ; pStack
 00000028  E1A01000  MOV         R1,R0 ; pStack
 0000002C  E5802000  STR         R2,[R0,#0x0]
  263:     *--pStack = 0;                             /*  r12  */
 00000030  E3A02000  MOV         R2,#0x0
 00000034  E1A00001  MOV         R0,R1 ; pStack
 00000038  E2400004  SUB         R0,R0,#0x0004 ; pStack
 0000003C  E1A01000  MOV         R1,R0 ; pStack
 00000040  E5802000  STR         R2,[R0,#0x0]
  264:     *--pStack = 0;                             /*  r11  */
 00000044  E3A02000  MOV         R2,#0x0
 00000048  E1A00001  MOV         R0,R1 ; pStack
 0000004C  E2400004  SUB         R0,R0,#0x0004 ; pStack
 00000050  E1A01000  MOV         R1,R0 ; pStack
 00000054  E5802000  STR         R2,[R0,#0x0]
  265:     *--pStack = 0;                             /*  r10  */
 00000058  E3A02000  MOV         R2,#0x0
 0000005C  E1A00001  MOV         R0,R1 ; pStack
 00000060  E2400004  SUB         R0,R0,#0x0004 ; pStack
 00000064  E1A01000  MOV         R1,R0 ; pStack
 00000068  E5802000  STR         R2,[R0,#0x0]
  266:     *--pStack = 0;                             /*  r9   */
 0000006C  E3A02000  MOV         R2,#0x0
 00000070  E1A00001  MOV         R0,R1 ; pStack
 00000074  E2400004  SUB         R0,R0,#0x0004 ; pStack
 00000078  E1A01000  MOV         R1,R0 ; pStack
 0000007C  E5802000  STR         R2,[R0,#0x0]
  267:     *--pStack = 0;                             /*  r8   */
 00000080  E3A02000  MOV         R2,#0x0
 00000084  E1A00001  MOV         R0,R1 ; pStack
 00000088  E2400004  SUB         R0,R0,#0x0004 ; pStack
 0000008C  E1A01000  MOV         R1,R0 ; pStack
 00000090  E5802000  STR         R2,[R0,#0x0]
  268:     *--pStack = 0;                             /*  r7   */
 00000094  E3A02000  MOV         R2,#0x0
 00000098  E1A00001  MOV         R0,R1 ; pStack
 0000009C  E2400004  SUB         R0,R0,#0x0004 ; pStack
ARM COMPILER V2.32a,  GGT_CPU_c                                                            28/02/08  23:05:54  PAGE 11  

 000000A0  E1A01000  MOV         R1,R0 ; pStack
 000000A4  E5802000  STR         R2,[R0,#0x0]
  269:     *--pStack = 0;                             /*  r6   */
 000000A8  E3A02000  MOV         R2,#0x0
 000000AC  E1A00001  MOV         R0,R1 ; pStack
 000000B0  E2400004  SUB         R0,R0,#0x0004 ; pStack
 000000B4  E1A01000  MOV         R1,R0 ; pStack
 000000B8  E5802000  STR         R2,[R0,#0x0]
  270:     *--pStack = 0;                             /*  r5   */
 000000BC  E3A02000  MOV         R2,#0x0
 000000C0  E1A00001  MOV         R0,R1 ; pStack
 000000C4  E2400004  SUB         R0,R0,#0x0004 ; pStack
 000000C8  E1A01000  MOV         R1,R0 ; pStack
 000000CC  E5802000  STR         R2,[R0,#0x0]
  271:     *--pStack = 0;                             /*  r4   */
 000000D0  E3A02000  MOV         R2,#0x0
 000000D4  E1A00001  MOV         R0,R1 ; pStack
 000000D8  E2400004  SUB         R0,R0,#0x0004 ; pStack
 000000DC  E1A01000  MOV         R1,R0 ; pStack
 000000E0  E5802000  STR         R2,[R0,#0x0]
  272:     *--pStack = 0;                             /*  r3   */
 000000E4  E3A02000  MOV         R2,#0x0
 000000E8  E1A00001  MOV         R0,R1 ; pStack
 000000EC  E2400004  SUB         R0,R0,#0x0004 ; pStack
 000000F0  E1A01000  MOV         R1,R0 ; pStack
 000000F4  E5802000  STR         R2,[R0,#0x0]
  273:     *--pStack = 0;                             /*  r2   */
 000000F8  E3A02000  MOV         R2,#0x0
 000000FC  E1A00001  MOV         R0,R1 ; pStack
 00000100  E2400004  SUB         R0,R0,#0x0004 ; pStack
 00000104  E1A01000  MOV         R1,R0 ; pStack
 00000108  E5802000  STR         R2,[R0,#0x0]
  274:     *--pStack = 0;                              /*  r1   */
 0000010C  E3A02000  MOV         R2,#0x0
 00000110  E1A00001  MOV         R0,R1 ; pStack
 00000114  E2400004  SUB         R0,R0,#0x0004 ; pStack
 00000118  E1A01000  MOV         R1,R0 ; pStack
 0000011C  E5802000  STR         R2,[R0,#0x0]
  275:     *--pStack = TaskParam;                      /*  r0   */
 00000120  E1A02003  MOV         R2,R3 ; TaskParam
 00000124  E1A00001  MOV         R0,R1 ; pStack
 00000128  E2400004  SUB         R0,R0,#0x0004 ; pStack
 0000012C  E1A01000  MOV         R1,R0 ; pStack
 00000130  E5802000  STR         R2,[R0,#0x0]
  276:     *--pStack = Mode;
 00000134  E1A02004  MOV         R2,R4 ; Mode
 00000138  E1A00001  MOV         R0,R1 ; pStack
 0000013C  E2400004  SUB         R0,R0,#0x0004 ; pStack
 00000140  E1A01000  MOV         R1,R0 ; pStack
 00000144  E5802000  STR         R2,[R0,#0x0]
  277:     return(pStack);
 00000148  E1A00001  MOV         R0,R1 ; pStack
  278: }
 0000014C  E8BD0030  LDMIA       R13!,{R4-R5}
 00000150  E12FFF1E  BX          R14
 00000154          ENDP ; 'OSStackInit?A'


*** CODE SEGMENT '?PR?main?GGT_CPU_c':
  337:     OSInit();
 00000000  EBFFFFFE  BL          OSInit?A  ; Targ=0x0
  340:     pOSTskMain->pTskStack -= 10;       // 指向空栈
 00000004  E5100000  LDR         R0,=pOSTskMain ; pOSTskMain
 00000008  E5901000  LDR         R1,[R0,#0x0] ; pOSTskMain
 0000000C  E5910004  LDR         R0,[R1,#0x4]
 00000010  E2400028  SUB         R0,R0,#0x0028
 00000014  E5810004  STR         R0,[R1,#0x4]
  343:         LDR     R4,=pOSTskMain      // mian任务变量地址
ARM COMPILER V2.32a,  GGT_CPU_c                                                            28/02/08  23:05:54  PAGE 12  

 00000018  E51F4000  LDR         R4,=pOSTskMain
  344:         LDR     R4,[R4, #0]         // main任务数据区地址
 0000001C  E5944000  LDR         R4,[R4,#0x0]
  345:         LDR     R4,[R4, #4]         // R4=堆栈指针
 00000020  E5944004  LDR         R4,[R4,#0x4]
  346:         STR     SP, [R4]            // 把SP指向main任务堆栈区,
 00000024  E584D000  STR         R13,[R4]
  352:     OSClockInit();
 00000028  EBFFFFF4  BL          OSClockInit?A  ; Targ=0x0
  355:     OSTaskCreate(TaskUasrMain, 0, 255);
 0000002C  E5100000  LDR         R0,=TaskUasrMain?A ; TaskUasrMain?A
 00000030  E3A01000  MOV         R1,#0x0
 00000034  E3A020FF  MOV         R2,#0xFF
 00000038  EBFFFFF0  BL          OSTaskCreate?A  ; Targ=0x0
  358:     pOSTskMain->PrioTick = 1000 * 90000;
 0000003C  E5100000  LDR         R0,=0x55D4A80
 00000040  E5101000  LDR         R1,=pOSTskMain ; pOSTskMain
 00000044  E5911000  LDR         R1,[R1,#0x0] ; pOSTskMain
 00000048  E5810010  STR         R0,[R1,#0x10]
  359:     while(1)
 0000004C          L_8:
  362:         pOSTskMain->StateValue = 1000 * 90000;
 0000004C  E5100000  LDR         R0,=0x55D4A80
 00000050  E5101000  LDR         R1,=pOSTskMain ; pOSTskMain
 00000054  E5911000  LDR         R1,[R1,#0x0] ; pOSTskMain
 00000058  E5810018  STR         R0,[R1,#0x18]
  364:         (PCON = PCON | 0x01);
 0000005C  E5100000  LDR         R0,=0xE01FC0C0
 00000060  E5D00000  LDRB        R0,[R0,#0x0]
 00000064  E1A01000  MOV         R1,R0
 00000068  E3811001  ORR         R1,R1,#0x0001
 0000006C  E5100000  LDR         R0,=0xE01FC0C0
 00000070  E5C01000  STRB        R1,[R0,#0x0]
  365:     }
 00000074  EAFFFFF4  B           L_8  ; Targ=0x4C
  366: }
 00000078          ENDP ; 'main'


*** CODE SEGMENT '?PR?OSTaskCreate?A?GGT_CPU_c':
  383: UINT32 OSTaskCreate(void *pTaskBody, const UINT32 Prio, const UINT32 TaskParam)
 00000000  E92D4000  STMDB       R13!,{LR}
 00000004  ---- Variable 'TaskParam' assigned to Register 'R2' ----
 00000004  E1A03001  MOV         R3,R1 ; Prio
 00000008  ---- Variable 'Prio' assigned to Register 'R3' ----
 00000008  E1A01000  MOV         R1,R0 ; pTaskBody
 0000000C  ---- Variable 'pTaskBody' assigned to Register 'R1' ----
  385:     return(OSTaskUserCreate(pTaskBody, Prio, USR32MODE, TaskParam));
 0000000C  E1A00001  MOV         R0,R1 ; pTaskBody
 00000010  E1A01003  MOV         R1,R3 ; Prio
 00000014  E1A03002  MOV         R3,R2 ; TaskParam
 00000018  E3A02010  MOV         R2,#0x10
 0000001C  EBFFFFF7  BL          OSTaskUserCreate?A  ; Targ=0x0
  386: }
 00000020  E8BD0008  LDMIA       R13!,{R3}
 00000024  E12FFF13  BX          R3
 00000028          ENDP ; 'OSTaskCreate?A'


*** CODE SEGMENT '?PR?OSIsrBegin?A?GGT_CPU_c':
  406:     OSIrqCount++;
 00000000  E5100000  LDR         R0,=OSIrqCount ; OSIrqCount
 00000004  E5901000  LDR         R1,[R0,#0x0] ; OSIrqCount
 00000008  E2811001  ADD         R1,R1,#0x0001
 0000000C  E5801000  STR         R1,[R0,#0x0] ; OSIrqCount
  408: }
 00000010  E12FFF1E  BX          R14
 00000014          ENDP ; 'OSIsrBegin?A'


*** CODE SEGMENT '?PR?OSIsrEnd?A?GGT_CPU_c':
  427: void OSIsrEnd(BOOL DoSW)
ARM COMPILER V2.32a,  GGT_CPU_c                                                            28/02/08  23:05:54  PAGE 13  

 00000000  E92D4000  STMDB       R13!,{LR}
 00000004  E1A01000  MOV         R1,R0 ; DoSW
 00000008  ---- Variable 'DoSW' assigned to Register 'R1' ----
  430:     if(OSIrqCount)
 00000008  E5100000  LDR         R0,=OSIrqCount ; OSIrqCount
 0000000C  E5902000  LDR         R2,[R0,#0x0] ; OSIrqCount
 00000010  E3520000  CMP         R2,#0x0000
 00000014  0A000002  BEQ         L_11  ; Targ=0x24
  431:         OSIrqCount++;
 00000018  E5100000  LDR         R0,=OSIrqCount ; OSIrqCount
 0000001C  E2822001  ADD         R2,R2,#0x0001
 00000020  E5802000  STR         R2,[R0,#0x0] ; OSIrqCount
 00000024          L_11:
  435:     if(DoSW)
 00000024  E1A00001  MOV         R0,R1 ; DoSW
 00000028  E3500000  CMP         R0,#0x0000 ; DoSW
 0000002C  0A000002  BEQ         L_12  ; Targ=0x3C
  437:         OSTaskIsNULLLoadDef();
 00000030  EBFFFFF2  BL          OSTaskIsNULLLoadDef?A  ; Targ=0x0
  438:         OSTaskSW();
 00000034  E3A00000  MOV         R0,#0x0
 00000038  EF000000  SWI         0x0 ; SWI_Handler?A
  439:     }
 0000003C          L_12:
  440: }
 0000003C  E8BD0008  LDMIA       R13!,{R3}
 00000040  E12FFF13  BX          R3
 00000044          ENDP ; 'OSIsrEnd?A'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =         4
  const size           =    ------
End of Module Information.


ARM COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -