想问下TI提供的interrupt.c和intvecs.asm这两个函数怎么确定服务子程序入口地址的。 intcVectorTable具体的地址是由什么去决定的
//interrupt.c部分代码
void IntDSPINTCInit (void) { unsigned int step = 0; /* Set ISRs to default "do-nothing" routine */ while(step != C674X_INT_COUNT) c674xISRtbl[step++] = IntDefaultHandler; /* Set interrupt service table pointer to the vector table */ #ifdef __TI_EABI__ ISTP = (unsigned int)_intcVectorTable; #else ISTP = (unsigned int)intcVectorTable; // ISTP = (unsigned int)0x00800000; #endif /* Clear pending CPU maskable interrupts (if any) */ ICR = 0xFFF0; /* Enable NMIE bit to allow CPU maskable interrupts */ IER = (1 << C674X_NMI); } //intvecs.asm 代码
; ; File: intvecs.asm ; ; Brief: Contains interrupt vector table and fetch packets ; ; Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ ; ALL RIGHTS RESERVED ;********************************************************** ; Global Symbols ;********************************************************** .global _intcVectorTable .global _c_int00 .global _c674x_nmi_isr .global _c674x_rsvd_int2_isr .global _c674x_rsvd_int3_isr .global _c674x_mask_int4_isr .global _c674x_mask_int5_isr .global _c674x_mask_int6_isr .global _c674x_mask_int7_isr .global _c674x_mask_int8_isr .global _c674x_mask_int9_isr .global _c674x_mask_int10_isr .global _c674x_mask_int11_isr .global _c674x_mask_int12_isr .global _c674x_mask_int13_isr .global _c674x_mask_int14_isr .global _c674x_mask_int15_isr ;********************************************************** ; Interrupt Fetch Packet ;********************************************************** VEC_ENTRY .macro addr STW B0,*--B15 MVKL addr,B0 MVKH addr,B0 B B0 LDW *B15++,B0 NOP 2 NOP NOP .endm ;********************************************************** ; Interrupt Vector Table ;********************************************************** .align 1024 _intcVectorTable: VEC_ENTRY _c_int00 VEC_ENTRY _c674x_nmi_isr VEC_ENTRY _c674x_rsvd_int2_isr VEC_ENTRY _c674x_rsvd_int3_isr VEC_ENTRY _c674x_mask_int4_isr VEC_ENTRY _c674x_mask_int5_isr VEC_ENTRY _c674x_mask_int6_isr VEC_ENTRY _c674x_mask_int7_isr VEC_ENTRY _c674x_mask_int8_isr VEC_ENTRY _c674x_mask_int9_isr VEC_ENTRY _c674x_mask_int10_isr VEC_ENTRY _c674x_mask_int11_isr VEC_ENTRY _c674x_mask_int12_isr VEC_ENTRY _c674x_mask_int13_isr VEC_ENTRY _c674x_mask_int14_isr VEC_ENTRY _c674x_mask_int15_isr