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

📄 irq_handler.s

📁 NXP LPC系列AMR7的开发程序源码(LCD
💻 S
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; IRQ nested handler
;;
;; Copyright 2006 IAR Systems. All rights reserved.
;;
;; $Revision: 10608 $
;;

I_BIT     DEFINE  (1<<7)

INT_PRIOMASK0_REG DEFINE  0x80300000
;---------------------------------------------------------------
; ?IRQHandler
;---------------------------------------------------------------
    MODULE  ?IRQHandler

      SECTION .text:CODE:NOROOT(2)

    PUBLIC  ?IRQHandler
    PUBLIC  __IRQHandlerEnd
    CODE32
?IRQHandler
                sub     lr,lr,#4                ; Update the link register
                ; save context
                stmfd   sp!,{r0-r2,r4,lr}
                mrs     r0,spsr
                ldr     r4,=INT_PRIOMASK0_REG
                ldr     r2,[r4,#0x100]          ; get interrupt index and base address of the interrupt's table
                ldr     r1,[r4]                 ; get priority mask interrupt level
                stmfd   sp!,{r0,r1}
                ldmia   r2,{r0,r1}
                str     r1,[r4]                 ; update priority mask interrupt level
                msr     cpsr_c,#0x1F            ; Switch to SYS mode and enable IRQ
                stmfd   sp!,{lr}                ; Save the link register.
                ldr     lr,=__IRQHandlerEnd
                bx      r0
__IRQHandlerEnd:
                ldmfd   sp!,{lr}                ; Restore the link register.
                msr     cpsr_c,#0xD2 | I_BIT    ; Switch to IRQ mode and disable IRQ
                ldmfd   sp!,{r0,r1}             ; Restore the saved spsr_mode into r0 and INT_VECTOR0 into r2
                str     r1,[r4]                 ; Restore INT_VECTOR0
                msr     spsr_cxsf,r0            ; Restore spsr_mode
                ldmfd   sp!,{r0-r2,r4,pc}^      ; Return to the instruction following...
  END

⌨️ 快捷键说明

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