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

📄 os_cpu_a.lst

📁 at91sam7x256的TC已经编译好
💻 LST
📖 第 1 页 / 共 3 页
字号:
  270    00000030 08002DE9             STMFD   SP!, {R3}                      ;
                                                      Push task's CPSR (i.e.
                                                   IRQ's SPSR)
  271    00000034              
  272    00000034                                                             ;
                                HANDLE NESTING COUNTER
  273    00000034 ........             LDR     R0, ??OS_IntNesting            ;
                                                    OSIntNesting++;
  274    00000038 0010D0E5             LDRB    R1, [R0]
  275    0000003C 011081E2             ADD     R1, R1,#1
  276    00000040 0010C0E5             STRB    R1, [R0]
  277    00000044              
  278    00000044 010051E3             CMP     R1, #1                         ;
                                                    if (OSIntNesting == 1)
                                                    {
  279    00000048 0200001A             BNE     OS_CPU_IRQ_ISR_1
  280    0000004C              
  281    0000004C ........             LDR     R4, ??OS_TCBCur                ;
                                                        OSTCBCur->OSTCBStkPtr =
                                                    SP
  282    00000050 005094E5             LDR     R5, [R4]
  283    00000054 00D085E5             STR     SP, [R5]                       ;
                                                    }
  284    00000058              
  285    00000058              OS_CPU_IRQ_ISR_1
  286    00000058 D2F021E3             MSR     CPSR_c, #(NO_INT | IRQ32_MODE) ;
                                                        Change to IRQ mode (to
                                                        use the IRQ stack to
                                                        handle interrupt)
  287    0000005C              
  288    0000005C ........             LDR     R0, ??OS_CPU_IRQ_ISR_Handler   ;
                                                    OS_CPU_IRQ_ISR_Handler();
  289    00000060 0FE0A0E1             MOV     LR, PC
  290    00000064 10FF2FE1             BX      R0
  291    00000068              
  292    00000068 D3F021E3             MSR     CPSR_c, #(NO_INT | SVC32_MODE) ;
                                                        Change to SVC
                                                        mode
  293    0000006C              
  294    0000006C ........             LDR     R0, ??OS_IntExit               ;
                                                    OSIntExit();
  295    00000070 0FE0A0E1             MOV     LR, PC
  296    00000074 10FF2FE1             BX      R0
  297    00000078              
  298    00000078                                                             ;
                                RESTORE NEW TASK'S CONTEXT
  299    00000078 1000BDE8             LDMFD   SP!, {R4}                      ;
                                                      Pop new task's CPSR
  300    0000007C 04F06FE1             MSR     SPSR_cxsf, R4
  301    00000080              
  302    00000080 FFDFFDE8             LDMFD   SP!, {R0-R12,LR,PC}^           ;
                                                      Pop new task's context
  303    00000084              
  304    00000084              
  305    00000084              ;***********************************************
                               ************************************************
                               **********
  306    00000084              ;                                      FIQ
                                Interrupt Service Routine
  307    00000084              ;***********************************************
                               ************************************************
                               **********
  308    00000084              
  309    00000000                      RSEG CODE:CODE:NOROOT(2)
  310    00000000                      CODE32
  311    00000000              
  312    00000000              OS_CPU_FIQ_ISR
  313    00000000              
  314    00000000 0E002DE9             STMFD   SP!, {R1-R3}                   ;
                                                   PUSH WORKING REGISTERS ONTO
                                                   FIQ STACK
  315    00000004              
  316    00000004 0D10A0E1             MOV     R1, SP                         ;
                                                    Save   FIQ stack pointer
  317    00000008              
  318    00000008 0CD08DE2             ADD     SP, SP,#12                     ;
                                                    Adjust FIQ stack pointer
  319    0000000C              
  320    0000000C 04204EE2             SUB     R2, LR,#4                      ;
                                                    Adjust PC for return
                                                    address to task
  321    00000010              
  322    00000010 00304FE1             MRS     R3, SPSR                       ;
                                                    Copy SPSR (i.e. interrupted
                                                    task's CPSR) to R3
  323    00000014              
  324    00000014 D3F021E3             MSR     CPSR_c, #(NO_INT | SVC32_MODE) ;
                                                        Change to SVC
                                                        mode
  325    00000018              
  326    00000018                                                             ;
                                SAVE TASK'S CONTEXT ONTO TASK'S STACK
  327    00000018 04002DE9             STMFD   SP!, {R2}                      ;
                                                      Push task's Return
                                                   PC
  328    0000001C 00402DE9             STMFD   SP!, {LR}                      ;
                                                      Push task's LR
  329    00000020 F01F2DE9             STMFD   SP!, {R4-R12}                  ;
                                                      Push task's R12-R4
  330    00000024              
  331    00000024 7000B1E8             LDMFD   R1!, {R4-R6}                   ;
                                                      Move task's R1-R3 from
                                                   FIQ stack to SVC stack
  332    00000028 70002DE9             STMFD   SP!, {R4-R6}
  333    0000002C 01002DE9             STMFD   SP!, {R0}                      ;
                                                      Push task's R0    onto
                                                   task's stack
  334    00000030 08002DE9             STMFD   SP!, {R3}                      ;
                                                      Push task's CPSR (i.e.
                                                   FIQ's SPSR)
  335    00000034              
  336    00000034                                                             ;
                                HANDLE NESTING COUNTER
  337    00000034 58009FE5             LDR     R0, ??OS_IntNesting            ;
                                                    OSIntNesting++;
  338    00000038 0010D0E5             LDRB    R1, [R0]
  339    0000003C 011081E2             ADD     R1, R1,#1
  340    00000040 0010C0E5             STRB    R1, [R0]
  341    00000044              
  342    00000044 010051E3             CMP     R1, #1                         ;
                                                    if (OSIntNesting == 1)
                                                    {
  343    00000048 0200001A             BNE     OS_CPU_FIQ_ISR_1
  344    0000004C              
  345    0000004C 50409FE5             LDR     R4, ??OS_TCBCur                ;
                                                        OSTCBCur->OSTCBStkPtr =
                                                    SP
  346    00000050 005094E5             LDR     R5, [R4]
  347    00000054 00D085E5             STR     SP, [R5]                       ;
                                                    }
  348    00000058              
  349    00000058              OS_CPU_FIQ_ISR_1
  350    00000058 D1F021E3             MSR     CPSR_c, #(NO_INT | FIQ32_MODE) ;
                                                        Change to FIQ mode (to
                                                        use the FIQ stack to
                                                        handle interrupt)
  351    0000005C              
  352    0000005C 28009FE5             LDR     R0, ??OS_CPU_FIQ_ISR_Handler   ;
                                                    OS_CPU_FIQ_ISR_Handler();
  353    00000060 0FE0A0E1             MOV     LR, PC
  354    00000064 10FF2FE1             BX      R0
  355    00000068              
  356    00000068 D3F021E3             MSR     CPSR_c, #(NO_INT | SVC32_MODE) ;
                                                        Change to SVC
                                                        mode
  357    0000006C              
  358    0000006C 1C009FE5             LDR     R0, ??OS_IntExit               ;
                                                    OSIntExit();
  359    00000070 0FE0A0E1             MOV     LR, PC
  360    00000074 10FF2FE1             BX      R0
  361    00000078              
  362    00000078                                                             ;
                                RESTORE NEW TASK'S CONTEXT
  363    00000078 1000BDE8             LDMFD   SP!, {R4}                      ;
                                                      Pop new task's CPSR
  364    0000007C 04F06FE1             MSR     SPSR_cxsf, R4
  365    00000080              
  366    00000080 FFDFFDE8             LDMFD   SP!, {R0-R12,LR,PC}^           ;
                                                      Pop new task's context
  367    00000084              
  368    00000084              
  369    00000084              ;***********************************************
                               ************************************************
                               **********
  370    00000084              ;                                     POINTERS
                                TO VARIABLES
  371    00000084              ;***********************************************
                               ************************************************
                               **********
  372    00000084              
  373    00000084                      DATA
  374    00000084              
  375    00000084              ??OS_TaskSwHook:
  376    00000084 ........             DC32    OSTaskSwHook
  377    00000088              
  378    00000088              ??OS_CPU_IRQ_ISR_Handler:
  379    00000088 ........             DC32    OS_CPU_IRQ_ISR_Handler
  380    0000008C              
  381    0000008C              ??OS_CPU_FIQ_ISR_Handler:
  382    0000008C ........             DC32    OS_CPU_FIQ_ISR_Handler
  383    00000090              
  384    00000090              ??OS_IntExit:
  385    00000090 ........             DC32    OSIntExit
  386    00000094              
  387    00000094              ??OS_IntNesting:
  388    00000094 ........             DC32    OSIntNesting
  389    00000098              
  390    00000098              ??OS_PrioCur:
  391    00000098 ........             DC32    OSPrioCur
  392    0000009C              
  393    0000009C              ??OS_PrioHighRdy:
  394    0000009C ........             DC32    OSPrioHighRdy
  395    000000A0              
  396    000000A0              ??OS_Running:
  397    000000A0 ........             DC32    OSRunning
  398    000000A4              
  399    000000A4              ??OS_TCBCur:
  400    000000A4 ........             DC32    OSTCBCur
  401    000000A8              
  402    000000A8              ??OS_TCBHighRdy:
  403    000000A8 ........             DC32    OSTCBHighRdy
  404    000000AC              
  405    000000AC                      END
##############################
#          CRC:A02B          #
#        Errors:   0         #
#        Warnings: 0         #
#         Bytes: 556         #
##############################





⌨️ 快捷键说明

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