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

📄 a_swi.s

📁 ARM处理器软中断处理。a_swi.s文件是最开始处理的SWI句柄,用ARM汇编指令编写。c_swi.c文件是在执行a_swi.s文件之后调用执行的C语言SWI句柄。
💻 S
字号:

    AREA SWI_Area, CODE, READONLY ;Must declaration

    EXPORT A_SWI_Handler
    IMPORT C_SWI_Handler

T_bit EQU 0x20    ;Check Thumb state bit. 

A_SWI_Handler

    STMFD   sp!, {r0-r3, r12, lr}  ; Store registers
    MOV     r1, sp                 ; Set pointer to parameters
    MRS     r0, spsr               ; Get spsr
    STMFD   sp!, {r0}              ; Store spsr onto stack
    TST     r0, #T_bit             ; Occurred in Thumb state?
    LDRNEH  r0, [lr,#-2]           ; Yes: Load halfword and
    BICNE   r0, r0, #0xFF00        ; extract comment field
    LDREQ   r0, [lr,#-4]           ; No: Load word and
    BICEQ   r0, r0, #0xFF000000    ; extract comment field

        ; r0 now contains SWI number
        ; r1 now contains pointer to stacked registers

    BL      C_SWI_Handler          ; Call main part of handler
    LDMFD   sp!, {r0}              ; Get spsr from stack
    MSR     spsr_cf, r0            ; Restore spsr
    LDMFD   sp!, {r0-r3, r12, pc}^ ; Restore registers and return

    END

⌨️ 快捷键说明

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