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

📄 os_cpu_a.lst

📁 CortexM0上移植UCOS-II
💻 LST
📖 第 1 页 / 共 2 页
字号:



ARM Macro Assembler    Page 1 


    1 00000000         
    2 00000000                 EXTERN           OSRunning   ; External referenc
                                                            es
    3 00000000                 EXTERN           OSPrioCur
    4 00000000                 EXTERN           OSPrioHighRdy
    5 00000000                 EXTERN           OSTCBCur
    6 00000000                 EXTERN           OSTCBHighRdy
    7 00000000                 EXTERN           OSIntNesting
    8 00000000                 EXTERN           OSIntExit
    9 00000000                 EXTERN           OSTaskSwHook
   10 00000000         
   11 00000000         
   12 00000000                 EXPORT           OS_CPU_SR_Save ; Functions decl
                                                            ared in this file
   13 00000000                 EXPORT           OS_CPU_SR_Restore
   14 00000000                 EXPORT           OSStartHighRdy
   15 00000000                 EXPORT           OSCtxSw
   16 00000000                 EXPORT           OSIntCtxSw
   17 00000000         
   18 00000000         
   19 00000000                 AREA             |.text|, CODE, READONLY, ALIGN=
2
   20 00000000                 THUMB
   21 00000000                 REQUIRE8
   22 00000000                 PRESERVE8
   23 00000000         
   24 00000000         ;************************************
   25 00000000         ;保存和恢复中断屏蔽寄存器子函数定义
   26 00000000         ;************************************
   27 00000000         
   28 00000000         OS_CPU_SR_Save
   29 00000000 F3EF 8010       MRS              R0, PRIMASK ; Set prio int mask
                                                             to mask all (excep
                                                            t faults)
   30 00000004 B672            CPSID            I
   31 00000006 4770            BX               LR
   32 00000008         
   33 00000008         
   34 00000008         OS_CPU_SR_Restore
   35 00000008 F380 8810       MSR              PRIMASK, R0
   36 0000000C 4770            BX               LR
   37 0000000E         
   38 0000000E         
   39 0000000E         ;************************************
   40 0000000E         ;启动多任务
   41 0000000E         ;************************************
   42 0000000E         
   43 0000000E         OSStartHighRdy
   44 0000000E 4841            LDR              R0, __OS_TaskSwHook 
                                                            ; OSTaskSwHook();
   45 00000010 4780            BLX              R0
   46 00000012         
   47 00000012 4845            LDR              R0, __OS_Running 
                                                            ; OSRunning = TRUE;
                                                            
   48 00000014 2101            MOVS             R1, #1
   49 00000016 7001            STRB             R1, [R0]
   50 00000018         
   51 00000018         ; SWITCH TO HIGHEST PRIORITY TASK:



ARM Macro Assembler    Page 2 


   52 00000018 4845            LDR              R0, __OS_TCBHighRdy ;   Get hig
                                                            hest priority task 
                                                            TCB address,
   53 0000001A 6801            LDR              R1, [R0]    ;   Get stack point
                                                            er,
   54 0000001C 680A            LDR              R2, [R1]
   55 0000001E F382 8808       MSR              MSP, R2     ;   Switch to the n
                                                            ew stack,
   56 00000022         
   57 00000022 BCFF            POP              {R0-R7}     ;   Pop new task's 
                                                            R8-R11 (into R0-R3)
                                                            , R4-R7
   58 00000024 4680            MOV              R8,  R0
   59 00000026 4689            MOV              R9,  R1
   60 00000028 4692            MOV              R10, R2
   61 0000002A 469B            MOV              R11, R3
   62 0000002C         
   63 0000002C         ; NORMAL FUNCTION RETURN (see Note #2)
   64 0000002C B004            ADD              SP, #0x10
   65 0000002E BC0F            POP              {R0-R3}     ;   Pop new task's 
                                                            R12, PC, LR, PSR in
                                                            to (R0, R1, R2, R3,
                                                             respectively)
   66 00000030 4684            MOV              R12, R0
   67 00000032 468E            MOV              LR,  R1
   68 00000034 F383 8803       MSR              PSR, R3
   69 00000038         
   70 00000038 B404            PUSH             {R2}        ;   Save PC
   71 0000003A         
   72 0000003A B087            SUB              SP, #0x1C
   73 0000003C BC0F            POP              {R0-R3}     ;   Pop new task's 
                                                            R0-R3
   74 0000003E B003            ADD              SP, #0x0C
   75 00000040         
   76 00000040 B662            CPSIE            I           ;   Enable interrup
                                                            ts
   77 00000042         
   78 00000042 BD00            POP              {PC}        ;   Pop new task's 
                                                            PC
   79 00000044         
   80 00000044         
   81 00000044         
   82 00000044         ;************************************
   83 00000044         ;任务级别下的任务切换
   84 00000044         ;************************************
   85 00000044         
   86 00000044         OSCtxSw
   87 00000044 B672            CPSID            I
   88 00000046 B084            SUB              SP,#0x10
   89 00000048 B40F            PUSH             {R0-R3}
   90 0000004A         
   91 0000004A B008            ADD              SP,#0x20
   92 0000004C F3EF 8303       MRS              R3, PSR
   93 00000050 4672            MOV              R2, LR
   94 00000052 4671            MOV              R1, LR
   95 00000054 4660            MOV              R0, R12
   96 00000056 B40F            PUSH             {R0-R3}
   97 00000058         
   98 00000058 B084            SUB              SP, #0x10



ARM Macro Assembler    Page 3 


   99 0000005A 4640            MOV              R0, R8
  100 0000005C 4649            MOV              R1, R9
  101 0000005E 4652            MOV              R2, R10
  102 00000060 465B            MOV              R3, R11
  103 00000062 B4FF            PUSH             {R0-R7}
  104 00000064         
  105 00000064         
  106 00000064 F3EF 8008       MRS              R0, MSP
  107 00000068 4930            LDR              R1, __OS_TCBCur ; OSTCBCur->OST
                                                            CBStkPtr = SP;
  108 0000006A 6809            LDR              R1, [R1]
  109 0000006C 6008            STR              R0, [R1]
  110 0000006E         
  111 0000006E 4829            LDR              R0, __OS_TaskSwHook 
                                                            ; OSTaskSwHook();
  112 00000070 4780            BLX              R0
  113 00000072         
  114 00000072 482B            LDR              R0, __OS_PrioCur ; OSPrioCur = 
                                                            OSPrioHighRdy;
  115 00000074 492B            LDR              R1, __OS_PrioHighRdy
  116 00000076 780A            LDRB             R2, [R1]
  117 00000078 7002            STRB             R2, [R0]
  118 0000007A         
  119 0000007A 482C            LDR              R0, __OS_TCBCur ; OSTCBCur  = O
                                                            STCBHighRdy;
  120 0000007C 492C            LDR              R1, __OS_TCBHighRdy
  121 0000007E 680A            LDR              R2, [R1]
  122 00000080 6002            STR              R2, [R0]
  123 00000082         
  124 00000082 6810            LDR              R0, [R2]    ; SP = OSTCBHighRdy
                                                            ->OSTCBStkPtr;
  125 00000084 F380 8808       MSR              MSP, R0
  126 00000088         
  127 00000088         ; RESTORE TASK's CONTEXT
  128 00000088 BCFF            POP              {R0-R7}     ;   Pop new task's 
                                                            R8-R11 (into R0-R3)
                                                            , R4-R7
  129 0000008A 4680            MOV              R8,  R0
  130 0000008C 4689            MOV              R9,  R1
  131 0000008E 4692            MOV              R10, R2
  132 00000090 469B            MOV              R11, R3
  133 00000092         
  134 00000092 B004            ADD              SP, #0x10
  135 00000094 BC0F            POP              {R0-R3}     ;   Pop new task's 
                                                            R12, PC, LR, PSR in
                                                            to (R0, R1, R2, R3,
                                                             respectively)
  136 00000096 4684            MOV              R12, R0
  137 00000098 468E            MOV              LR,  R1
  138 0000009A F383 8803       MSR              PSR, R3
  139 0000009E         
  140 0000009E B404            PUSH             {R2}        ;   Save PC
  141 000000A0         
  142 000000A0 B087            SUB              SP, #0x1C
  143 000000A2 BC0F            POP              {R0-R3}     ;   Pop new task's 
                                                            R0-R3
  144 000000A4 B003            ADD              SP, #0x0C
  145 000000A6 B662            CPSIE            I           ;   Enable interrup
                                                            ts



ARM Macro Assembler    Page 4 


  146 000000A8 BD00            POP              {PC}
  147 000000AA BF00            NOP
  148 000000AC         
  149 000000AC         ;************************************
  150 000000AC         ;中断级别下的任务切换
  151 000000AC         ;************************************
  152 000000AC         
  153 000000AC         OSIntCtxSw
  154 000000AC B672            CPSID            I
  155 000000AE B084            SUB              SP,#0x10
  156 000000B0 B40F            PUSH             {R0-R3}
  157 000000B2         
  158 000000B2 B008            ADD              SP,#0x20
  159 000000B4 F3EF 8303       MRS              R3, PSR
  160 000000B8 4672            MOV              R2, LR
  161 000000BA 4671            MOV              R1, LR
  162 000000BC 4660            MOV              R0, R12
  163 000000BE B40F            PUSH             {R0-R3}
  164 000000C0         
  165 000000C0 B084            SUB              SP, #0x10
  166 000000C2 4640            MOV              R0, R8
  167 000000C4 4649            MOV              R1, R9
  168 000000C6 4652            MOV              R2, R10
  169 000000C8 465B            MOV              R3, R11
  170 000000CA B4FF            PUSH             {R0-R7}
  171 000000CC         
  172 000000CC         
  173 000000CC F3EF 8008       MRS              R0, MSP
  174 000000D0 4916            LDR              R1, __OS_TCBCur ; OSTCBCur->OST
                                                            CBStkPtr = SP;
  175 000000D2 6809            LDR              R1, [R1]
  176 000000D4 6008            STR              R0, [R1]
  177 000000D6         
  178 000000D6 480F            LDR              R0, __OS_TaskSwHook 
                                                            ; OSTaskSwHook();
  179 000000D8 4780            BLX              R0
  180 000000DA         
  181 000000DA 4811            LDR              R0, __OS_PrioCur ; OSPrioCur = 
                                                            OSPrioHighRdy;
  182 000000DC 4911            LDR              R1, __OS_PrioHighRdy
  183 000000DE 780A            LDRB             R2, [R1]
  184 000000E0 7002            STRB             R2, [R0]
  185 000000E2         
  186 000000E2 4812            LDR              R0, __OS_TCBCur ; OSTCBCur  = O
                                                            STCBHighRdy;
  187 000000E4 4912            LDR              R1, __OS_TCBHighRdy
  188 000000E6 680A            LDR              R2, [R1]
  189 000000E8 6002            STR              R2, [R0]
  190 000000EA         
  191 000000EA 6810            LDR              R0, [R2]    ; SP = OSTCBHighRdy
                                                            ->OSTCBStkPtr;
  192 000000EC F380 8808       MSR              MSP, R0
  193 000000F0         
  194 000000F0         ; RESTORE TASK's CONTEXT
  195 000000F0 BCFF            POP              {R0-R7}     ;   Pop new task's 
                                                            R8-R11 (into R0-R3)
                                                            , R4-R7
  196 000000F2 4680            MOV              R8,  R0
  197 000000F4 4689            MOV              R9,  R1



ARM Macro Assembler    Page 5 


  198 000000F6 4692            MOV              R10, R2
  199 000000F8 469B            MOV              R11, R3
  200 000000FA         
  201 000000FA B004            ADD              SP, #0x10

⌨️ 快捷键说明

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