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

📄 swi.s

📁 ARM嵌入式系统开发--软件设计与优化随书源代码。开发环境asm+c
💻 S
字号:
; ****************************************************************************
; * Simple Little Operating System - SLOS
; ****************************************************************************

; ****************************************************************************
; *
; * Module     : swi.s
; * Project	: SLOS
; * Version	: 0.09
; * Originator	: Andrew N. Sloss
; * History    :
; * 
; * 16th July 2003 Andrew N. Sloss
; * - added header information
; *
; ****************************************************************************

	EXPORT		coreSWIHandler

; ****************************************************************************
; * IMPORT
; ****************************************************************************

	IMPORT	events_swi_cm940iap_handler


	AREA SWISLOS, CODE, READONLY

; ****************************************************************************
; * kernel swi handler event
; ****************************************************************************

coreSWIHandler
     
     STMFD   sp!,{r0-r12,lr}       ; Store registers
     LDR     r10,[lr,#-4]          ; Calculate address of SWI instruction
     BIC     r10,r10,#0xff000000   ; Mask off top 8 bits
     MOV     r1,sp                 ; second parameter to C routine...
                                   ; is pointer to register values.
     MRS     r2,SPSR               ; move the spsr into gp register
	STMFD   sp!,{r2}              ; store spsr onto the stack. 
                                   ; This is only really
                                   ; needed in case of nested SWI's
     BL      swi_jumptable         ; call C routine to handle SWI
     LDMFD   sp!,{r2}              ; restore spsr from stack into r2
     MSR     SPSR_cf,r2            ; and restore it into spsr.
     LDMFD   sp!,{r0-r12,pc}^	     ; restore registers and return.

; ------------------------------------------------------------
; SWI Jump Table
; r0 - swi Number
; r1 - point to the r0-r12
; ------------------------------------------------------------

swi_jumptable

     MOV     r0,r10                      ; move SWI number into r0
     B       events_swi_cm940iap_handler ; calling c routine to handle swi call
     END

⌨️ 快捷键说明

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