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

📄 swi_rtx.lst

📁 Keil UV3中自带操作系统ARTX的应用例程
💻 LST
字号:



ARM Macro Assembler    Page 1 


    1 00000000         ;/*-----------------------------------------------------
                       -----------------------
    2 00000000         ; *      R T L  -  K e r n e l
    3 00000000         ; *-----------------------------------------------------
                       -----------------------
    4 00000000         ; *      Name:    SWI_RTX.S
    5 00000000         ; *      Purpose: Pre-defined SWI Handler
    6 00000000         ; *      Rev.:    V3.00 / 25-apr-2006
    7 00000000         ; *-----------------------------------------------------
                       -----------------------
    8 00000000         ; *      This code is part of the RealView Run-Time Libr
                       ary.
    9 00000000         ; *      Copyright (c) 2004-2006 KEIL - An ARM Company. 
                       All rights reserved. 
   10 00000000         ; *-----------------------------------------------------
                       ----------------------*/
   11 00000000         
   12 00000000 00000020 
                       T_Bit   EQU              0x20
   13 00000000         
   14 00000000                 IMPORT           os_runtask
   15 00000000         ;/* Offsets from the 'struct OS_TCB' */
   16 00000000 00000021 
                       TCB_FCTX
                               EQU              33
   17 00000000 00000024 
                       TCB_TSTACK
                               EQU              36
   18 00000000         
   19 00000000         ;/*-------------------------- SWI handler --------------
                       ---------------------*/
   20 00000000         ;/* SWI-0 is reserved for context task switch. 'os_switc
                       h_tasks()' prolog    */
   21 00000000         ;/* and epilog are implemented here in this module.     
                                            */
   22 00000000         
   23 00000000                 PRESERVE8                    ; 8-Byte aligned St
                                                            ack
   24 00000000                 AREA             SWI_RTX, CODE, READONLY
   25 00000000                 ARM
   26 00000000         
   27 00000000                 IMPORT           SWI_Count
   28 00000000                 IMPORT           SWI_Table
   29 00000000         
   30 00000000                 EXPORT           SWI_Handler
   31 00000000         SWI_Handler
   32 00000000 E14FC000        MRS              R12,SPSR    ; Get SPSR
   33 00000004 E31C0020        TST              R12,#T_Bit  ; Check Thumb Bit
   34 00000008 115EC0B2        LDRNEH           R12,[LR,#-2] ; Thumb: Load Half
                                                            word
   35 0000000C 13CCCCFF        BICNE            R12,R12,#0xFF00 ;        Extrac
                                                            t SWI Number
   36 00000010 051EC004        LDREQ            R12,[LR,#-4] ; ARM:   Load Word
                                                            
   37 00000014 03CCC4FF        BICEQ            R12,R12,#0xFF000000 ;        Ex
                                                            tract SWI Number
   38 00000018         
   39 00000018 E35C0000        CMP              R12, #0
   40 0000001C 1A000020        BNE              SWI_User



ARM Macro Assembler    Page 2 


   41 00000020         
   42 00000020         ;               /*------------------- os_switch_tasks --
                       ----------------------*/
   43 00000020         
   44 00000020 E94D2000        STMDB            SP,{SP}^    ; Save reduced cont
                                                            ext
   45 00000024 E1A00000        NOP                          ; After User Bank R
                                                            egister Access
   46 00000028 E91D0002        LDMDB            SP,{R1}     ; User SP
   47 0000002C E14FC000        MRS              R12,SPSR    ; User CPSR
   48 00000030 E9215FF0        STMDB            R1!,{R4-R11,R12,LR} ; push PC, 
                                                            CPSR, R11-R4
   49 00000034 E59F4090        LDR              R4,=os_runtask ; os_runtask->ts
                                                            k_stack
   50 00000038 E5944000        LDR              R4,[R4,#0x0]
   51 0000003C E5841024        STR              R1,[R4,#TCB_TSTACK]
   52 00000040 E1A04000        MOV              R4,R0       ; R4 = p_new
   53 00000044         
   54 00000044 E59FC084        LDR              R12,=SWI_Table
   55 00000048 E59CC000        LDR              R12,[R12]   ; Load SWI Function
                                                             Address
   56 0000004C E1A0E00F        MOV              LR,PC       ; Return Address
   57 00000050 E12FFF1C        BX               R12         ; Call SWI Function
                                                             
   58 00000054         
   59 00000054 E594E024        LDR              LR,[R4,#TCB_TSTACK] 
                                                            ; p_new->tsk_stack
   60 00000058 E5D40021        LDRB             R0,[R4,#TCB_FCTX] 
                                                            ; p_new->full_ctx
   61 0000005C E3500000        CMP              R0,#0x0
   62 00000060 1A000006        BNE              Full_ctx
   63 00000064         
   64 00000064 E8BE1FF0        LDMIA            LR!,{R4-R11,R12} ; Restore Redu
                                                            ced context
   65 00000068 E16FF00C        MSR              SPSR_cxsf,R12
   66 0000006C E8BE1000        LDMIA            LR!,{R12}
   67 00000070 E90D4000        STMDB            SP,{LR}     ; Set User SP
   68 00000074 E95D2000        LDMDB            SP,{SP}^
   69 00000078 E1A00000        NOP                          ; After User Bank R
                                                            egister Access
   70 0000007C E1B0F00C        MOVS             PC,R12      ; RETI
   71 00000080         
   72 00000080         Full_ctx
   73 00000080 E28E0040        ADD              R0,LR,#64
   74 00000084 E910000E        LDMDB            R0,{R1-R3}  ; LR, CPSR (R3=dumm
                                                            y)
   75 00000088 E16FF002        MSR              SPSR_cxsf,R2 ; Set User CPSR
   76 0000008C E90D0003        STMDB            SP,{R0-R1}
   77 00000090 E95D6000        LDMDB            SP,{SP,LR}^ ; Set User SP,LR
   78 00000094 E1A00000        NOP                          ; After User Bank R
                                                            egister Access
   79 00000098 E89E1FFF        LDMIA            LR,{R0-R12} ; Restore R12-R0
   80 0000009C E59EE03C        LDR              LR,[LR,#60] ; PC
   81 000000A0 E1B0F00E        MOVS             PC,LR       ; RETI
   82 000000A4         
   83 000000A4         ;               /*------------------- User SWI ---------
                       ----------------------*/
   84 000000A4         
   85 000000A4 E92D4100 



ARM Macro Assembler    Page 3 


                       SWI_User
                               STMFD            SP!,{R8,LR} ; Store R8, LR
   86 000000A8 E51F8008        LDR              R8,SWI_Count
   87 000000AC E15C0008        CMP              R12,R8
   88 000000B0 2A000004        BHS              SWI_Dead    ; Overflow
   89 000000B4 E59F8014        LDR              R8,=SWI_Table
   90 000000B8 E798C10C        LDR              R12,[R8,R12,LSL #2] ; Load SWI 
                                                            Function Address
   91 000000BC E1A0E00F        MOV              LR,PC       ; Return Address
   92 000000C0 E12FFF1C        BX               R12         ; Call SWI Function
                                                             
   93 000000C4 E8FD8100        LDMFD            SP!,{R8,PC}^ ; Restore R8 and R
                                                            eturn
   94 000000C8         
   95 000000C8         SWI_Dead
   96 000000C8 EAFFFFFE        B                SWI_Dead    ; None Existing SWI
                                                            
   97 000000CC         
   98 000000CC         
   99 000000CC                 END
              00000000 
              00000000 
Command Line: --debug --xref --device=DARMP --apcs=interwork -oSWI_RTX.o -ID:\K
eil\ARM\INC\Philips --list=SWI_RTX.lst SWI_RTX.s



ARM Macro Assembler    Page 1 Alphabetic symbol ordering
Relocatable symbols

Full_ctx 00000080

Symbol: Full_ctx
   Definitions
      At line 72 in file SWI_RTX.s
   Uses
      At line 62 in file SWI_RTX.s
Comment: Full_ctx used once
SWI_Dead 000000C8

Symbol: SWI_Dead
   Definitions
      At line 95 in file SWI_RTX.s
   Uses
      At line 88 in file SWI_RTX.s
      At line 96 in file SWI_RTX.s

SWI_Handler 00000000

Symbol: SWI_Handler
   Definitions
      At line 31 in file SWI_RTX.s
   Uses
      At line 30 in file SWI_RTX.s
Comment: SWI_Handler used once
SWI_RTX 00000000

Symbol: SWI_RTX
   Definitions
      At line 24 in file SWI_RTX.s
   Uses
      None
Comment: SWI_RTX unused
SWI_User 000000A4

Symbol: SWI_User
   Definitions
      At line 85 in file SWI_RTX.s
   Uses
      At line 40 in file SWI_RTX.s
Comment: SWI_User used once
5 symbols



ARM Macro Assembler    Page 1 Alphabetic symbol ordering
Absolute symbols

TCB_FCTX 00000021

Symbol: TCB_FCTX
   Definitions
      At line 16 in file SWI_RTX.s
   Uses
      At line 60 in file SWI_RTX.s
Comment: TCB_FCTX used once
TCB_TSTACK 00000024

Symbol: TCB_TSTACK
   Definitions
      At line 17 in file SWI_RTX.s
   Uses
      At line 51 in file SWI_RTX.s
      At line 59 in file SWI_RTX.s

T_Bit 00000020

Symbol: T_Bit
   Definitions
      At line 12 in file SWI_RTX.s
   Uses
      At line 33 in file SWI_RTX.s
Comment: T_Bit used once
3 symbols



ARM Macro Assembler    Page 1 Alphabetic symbol ordering
External symbols

SWI_Count 00000000

Symbol: SWI_Count
   Definitions
      At line 27 in file SWI_RTX.s
   Uses
      At line 86 in file SWI_RTX.s
Comment: SWI_Count used once
SWI_Table 00000000

Symbol: SWI_Table
   Definitions
      At line 28 in file SWI_RTX.s
   Uses
      At line 54 in file SWI_RTX.s
      At line 89 in file SWI_RTX.s

os_runtask 00000000

Symbol: os_runtask
   Definitions
      At line 14 in file SWI_RTX.s
   Uses
      At line 49 in file SWI_RTX.s
Comment: os_runtask used once
3 symbols
328 symbols in table

⌨️ 快捷键说明

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