/* ** ADSP-1802 app_IVT.s generated on Aug 05, 2024 at 15:33:23 */ /* ** Copyright (C) 2000-2024 Analog Devices Inc., All Rights Reserved. ** ** This file is generated automatically based upon the options selected ** in the System Configuration utility. Changes to the Startup Code configuration ** should be made by modifying the appropriate options rather than editing ** this file. To access the System Configuration utility, double-click the ** system.svc file from a navigation view. ** ** If you need to modify this file, select "Permit alteration of Interrupt ** Table Vector" from "Startup Code/LDF: Advanced Options" in the System ** Configuration utility. This encloses the whole file within a user ** modifiable section and any modification made will be preserved. */ .FILE_ATTR libGroup="startup"; .FILE_ATTR libName="libc"; #include // defines silicon anomaly macros #include // defines interrupt support #include // defines MMR macros #include // OSAL support #include // defines fatal error support /* INT_IRQ macro - used for the default interrupt vector instructions sequence ** of interrupts where the status stack (STS) is pushed ** automatically by the hardware. STS is automatically pushed ** for IRQ, Timer and VIRPTL interrupts. */ #define INT_IRQ(irp) \ .RETAIN_NAME ___int_irq_##irp; \ .EXTERN __dispatcher_##irp; \ ___int_irq_##irp: \ JUMP __dispatcher_##irp (DB); \ ASTAT = ADI_CID_##irp; \ NOP; \ NOP; \ .___int_irq_##irp##.end: /* INT macro - used for the default interrupt vector instructions sequence ** of interrupts where the status stack (STS) is not pushed ** automatically by the hardware. STS is automatically pushed ** for IRQ, Timer and VIRPTL interrupts. */ #define INT(irp) \ .RETAIN_NAME ___int_##irp; \ .EXTERN __dispatcher_##irp; \ ___int_##irp: \ JUMP __dispatcher_##irp (DB); \ PUSH STS; \ ASTAT = ADI_CID_##irp; \ NOP; \ .___int_##irp##.end: /* INT_JUMP - instructions to jump to a target label without ** going through an interrupt dispatcher. */ #define INT_JUMP(irp, jump_tgt) \ .EXTERN jump_tgt; \ .RETAIN_NAME ___int_jump_##irp; \ ___int_jump_##irp: \ NOP; \ JUMP jump_tgt; \ NOP; \ NOP; /* UNUSED_INTERRUPT - The instructions jump to fatal_error for the case ** where an interrupt that was not meant to be used ** gets latched. */ #define UNUSED_INTERRUPT(irp) \ .EXTERN _adi_fatal_error; \ .RETAIN_NAME ___int_unused_##irp; \ ___int_unused_##irp: \ R12 = ADI_CID_##irp; \ JUMP (PC, _adi_fatal_error) (DB); \ R4 = _AFE_G_RunTimeError; \ R8 = _AFE_S_UnusedInterruptRaised; /* RESERVED_INTERRUPT - 4 RTI instructions for reserved interrupts. */ #define RESERVED_INTERRUPT RTI;RTI;RTI;RTI; /* ** ADSP-214xx Interrupt vector code */ .SECTION/CODE/NW/DOUBLEANY iv_code; ___interrupt_table: .RETAIN_NAME ___int_EMUI; // 0x00 - Emulator Interrupt ___int_EMUI: NOP; NOP; NOP; NOP; .___int_EMU.end: INT_JUMP(RSTI,start) // 0x04 - Reset Interrupt INT(IICDI) // 0x08 - Illegal Input Condition Detected INT(SOVFI) // 0x0c - Stack Overflow/Full Interrupt INT_IRQ(TMZHI) // 0x10 - Timer Expired High Priority INT(SPERRI) // 0x14 - SPORT Error Interrupt INT(BKPI) // 0x18 - Hardware Breakpoint Interrupt RESERVED_INTERRUPT // 0x1c INT_IRQ(IRQ2I) // 0x20 - IRQ2I_ is asserted INT_IRQ(IRQ1I) // 0x24 - IRQ1I_ is asserted INT_IRQ(IRQ0I) // 0x28 - IRQ0I_ is asserted INT(P0I) // 0x2c - Programmable Interrupt 0 INT(P1I) // 0x30 - Programmable Interrupt 1 INT(P2I) // 0x34 - Programmable Interrupt 2 INT(P3I) // 0x38 - Programmable Interrupt 3 INT(P4I) // 0x3c - Programmable Interrupt 4 INT(P5I) // 0x40 - Programmable Interrupt 5 INT(P6I) // 0x44 - Programmable Interrupt 6 INT(P7I) // 0x48 - Programmable Interrupt 7 INT(P8I) // 0x4c - Programmable Interrupt 8 INT(P9I) // 0x50 - Programmable Interrupt 9 INT(P10I) // 0x54 - Programmable Interrupt 10 INT(P11I) // 0x58 - Programmable Interrupt 11 INT(P12I) // 0x5c - Programmable Interrupt 12 INT(P13I) // 0x60 - Programmable Interrupt 13 INT(P14I) // 0x64 - Programmable Interrupt 14 INT(P15I) // 0x68 - Programmable Interrupt 15 INT(P16I) // 0x6c - Programmable Interrupt 16 INT(P17I) // 0x70 - Programmable Interrupt 17 INT(P18I) // 0x74 - Programmable Interrupt 18 INT(CB7I) // 0x78 - Circular Buffer 7 Overflow INT(CB15I) // 0x7c - Circular Buffer 15 Overflow INT_IRQ(TMZLI) // 0x80 - Timer=0(Low Priority Option) INT(FIXI) // 0x84 - Fixed-point Overflow INT(FLTOI) // 0x88 - Floating-point Overflow INT(FLTUI) // 0x8c - Floating-point Underflow INT(FLTII) // 0x90 - Floating-point invalid INT(EMULI) // 0x94 - Emulator Low Priority Interrupt INT(SFT0I) // 0x98 - User Software Interrupt 0 INT(SFT1I) // 0x9c - User Software Interrupt 1 INT(SFT2I) // 0xa0 - User Software Interrupt 2 INT(SFT3I) // 0xa4 - User Software Interrupt 3 .___interrupt_table.end: // 0xa8