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

📄 swi.s

📁 这是一个基于C的操作系统的开发实现,借助的是OS设计思想,以用一些最为关键的技术,模拟一个OS的工作原理
💻 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     eventsSWIHandler

     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_cxsf,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       eventsSWIHandler      ; calling c routine to handle swi call
     END

⌨️ 快捷键说明

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