📄 int_pid.s
字号:
;/* HISTORY */
;/* */
;/* NAME DATE REMARKS */
;/* */
;/* B. Sellew 12-18-1995 Created initial version 1.0 */
;/* B. Sellew 12-20-1995 Verified version 1.0 */
;/* D. Driscoll 05-10-2001 Implemented working version. */
;/* */
;/*************************************************************************/
;VOID *INT_Setup_Vector(INT vector, VOID *new)
;{
EXPORT 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 **)&INT_IRQ_Vectors;
;
; /* 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, =INT_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. */
;/* */
;/* */
;/* CALLED BY */
;/* */
;/* TCC_Register_LISR Register LISR for vector */
;/* */
;/* CALLS */
;/* */
;/* None */
;/* */
;/* INPUTS */
;/* */
;/* vector Vector number to setup */
;/* */
;/* OUTPUTS */
;/* */
;/* shell pointer */
;/* */
;/* HISTORY */
;/* */
;/* NAME DATE REMARKS */
;/* */
;/* B. Sellew 12-18-1995 Created initial version 1.0 */
;/* B. Sellew 12-20-1995 Verified version 1.0 */
;/* D. Driscoll 05-10-2001 Implemented working version. */
;/* */
;/*************************************************************************/
;VOID *INT_Retrieve_Shell(INT vector)
;{
EXPORT INT_Retrieve_Shell
INT_Retrieve_Shell
;
; /* Return the LISR Shell interrupt routine. */
; return(INT_IRQ_Vectors[vector]);
;
LDR r1, =INT_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 */
;/* D. Driscoll 5-10-2001 Implemented stub */
;/* */
;/*************************************************************************/
EXPORT INT_Undef_Inst
INT_Undef_Inst
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 */
;/* D. Driscoll 5-10-2001 Implemented stub */
;/* */
;/*************************************************************************/
EXPORT INT_Software
INT_Software
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 */
;/* D. Driscoll 5-10-2001 Implemented stub */
;/* */
;/*************************************************************************/
EXPORT INT_Prefetch_Abort
INT_Prefetch_Abort
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 */
;/* D. Driscoll 5-10-2001 Implemented stub */
;/* */
;/*************************************************************************/
EXPORT INT_Data_Abort
INT_Data_Abort
B INT_Data_Abort
;
;/*************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -