📄 int.s
字号:
.state16
BX pc
NOP
.state32
B _INT_Setup_Vector
.def _INT_Setup_Vector
_INT_Setup_Vector
;VOID *old_vector; /* Old interrupt vector */
;VOID **vector_table; /* Pointer to vector table */
; Calculate the starting address of the actual vector table.
; vector_table = (VOID **) 0;
; Pickup the old interrupt vector.
; old_vector = vector_table[vector];
;
; Setup the new interrupt vector.
; vector_table[vector] = new;
;
; Return the old interrupt vector.
; return(old_vector);
LDR r2, IRQ_Vectors ; Load the vector table address
MOV r0, r0, LSL #2 ; Multiply vector by 4 to get offset into table
LDR r3, [r2,r0] ; Load the old pointer
STR r1, [r2,r0] ; Store the new pointer into the vector table
MOV r0, r3 ; Put the old pointer into the return register
BX lr ; Return to caller
;}
;************************************************************************
;*
;* FUNCTION
;*
;* INT_Retrieve_Shell
;*
;* DESCRIPTION
;*
;* This function retrieves the pointer to the shell interrupt
;* service routine. The shell interrupt service routine calls
;* the LISR dispatch routine.
;*
;*
;* Major Revision:
;*
;* M. Kyle Craig, Accelerated Technology, Inc.
;*
;*
;*
;* CALLED BY
;*
;* TCC_Register_LISR Register LISR for vector
;*
;* CALLS
;*
;* None
;*
;* INPUTS
;*
;* vector Vector number to setup
;*
;* OUTPUTS
;*
;* shell pointer
;*
;* HISTORY
;*
;* NAME DATE REMARKS
;*
;* W. Lamie 08-27-1994 Created initial version 1.0
;* D. Lamie 08-27-1994 Verified version 1.0
;*
;************************************************************************
;VOID *INT_Retrieve_Shell(INT vector)
;{
.def $INT_Retrieve_Shell
$INT_Retrieve_Shell ; Dual-state interworking veneer
.state16
BX pc
NOP
.state32
B _INT_Retrieve_Shell
.def _INT_Retrieve_Shell
_INT_Retrieve_Shell
; Return the LISR Shell interrupt routine.
; return(INT_Vectors[vector]);
LDR r1, IRQ_Vectors ; Load the vector table address
MOV r0, r0, LSL #2 ; Multiply vector by 4 to get offset into table
LDR r0, [r1,r0] ; Load interrupt handler pointer into return register
BX lr ; Return to caller
;}
;************************************************************************
;*
;* FUNCTION
;*
;* INT_Undef_Inst
;*
;* DESCRIPTION
;*
;* This is a stub for the Undefined Instruction Interrupt
;*
;*
;* CALLED BY
;*
;* None
;*
;* CALLS
;*
;* None
;*
;* INPUTS
;*
;* None
;*
;* OUTPUTS
;*
;* None
;*
;* HISTORY
;*
;* NAME DATE REMARKS
;*
;*
;************************************************************************
.def _INT_Undef_Inst
_INT_Undef_Inst
STMDB sp!,{r0-r3,lr}
LDMIA sp!,{r0-r3,lr} ;Restore registers
BX LR
B _INT_Undef_Inst
;************************************************************************
;*
;* FUNCTION
;*
;* INT_Software
;*
;* DESCRIPTION
;*
;* This is a stub for the Software Interrupt
;*
;*
;* CALLED BY
;*
;* None
;*
;* CALLS
;*
;* None
;*
;* INPUTS
;*
;* None
;*
;* OUTPUTS
;*
;* None
;*
;* HISTORY
;*
;* NAME DATE REMARKS
;*
;* NOTE: The ISR of software interrupt is replaced by the one from
;* intvecs_16.asm (in ARM_CSL)
;************************************************************************
; .def _INT_Software
;_INT_Software
; MOV r0, lr
; B _INT_Software
;************************************************************************
;*
;* FUNCTION
;*
;* INT_Prefetch_Abort
;*
;* DESCRIPTION
;*
;* This is a stub for the Prefetch Abort Interrupt
;*
;*
;* CALLED BY
;*
;* None
;*
;* CALLS
;*
;* None
;*
;* INPUTS
;*
;* None
;*
;* OUTPUTS
;*
;* None
;*
;* HISTORY
;*
;* NAME DATE REMARKS
;*
;*
;************************************************************************
.def _INT_Prefetch_Abort
_INT_Prefetch_Abort
MOV r0, lr
B _INT_Prefetch_Abort
;************************************************************************
;*
;* FUNCTION
;*
;* INT_Data_Abort
;*
;* DESCRIPTION
;*
;* This is a stub for the Data Abort Interrupt
;*
;*
;* CALLED BY
;*
;* None
;*
;* CALLS
;*
;* None
;*
;* INPUTS
;*
;* None
;*
;* OUTPUTS
;*
;* None
;*
;* HISTORY
;*
;* NAME DATE REMARKS
;*
;*
;************************************************************************
.def _INT_Data_Abort
_INT_Data_Abort
STMDB sp!,{r0-r3,lr}
LDMIA sp!,{r0-r3,lr}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -