Hi
IRQ4 is indeed exception 68, so you can place your routine at that location:
asm_exception_handler, /* 68 (0x110) Device-specific interrupts */
(plug in the name of your IRQ in place of the default exception hanlder)
the list of exceptions in the file exceptions.c doesn't otherwise seem to suit the M5223X (only the comments). Below is a complete list of M522XX exceptions (in hex rather than decimal - just convert and plug into the correct location as required) :
#define IRQ1_VECTOR 0x41
#define IRQ2_VECTOR 0x42
#define IRQ3_VECTOR 0x43
#define IRQ4_VECTOR 0x44 // decimal 68
#define IRQ5_VECTOR 0x45
#define IRQ6_VECTOR 0x46
#define IRQ7_VECTOR 0x47
#define SW_WD_VECTOR 0x48
#define DMA0_VECTOR 0x49
#define DMA1_VECTOR 0x4a
#define DMA2_VECTOR 0x4b
#define DMA3_VECTOR 0x4c
#define UART0_VECTOR 0x4d
#define UART1_VECTOR 0x4e
#define UART2_VECTOR 0x4f
#define IIC_VECTOR 0x51
#define QSPI_VECTOR 0x52
#define DTIM0_VECTOR 0x53
#define DTIM1_VECTOR 0x54
#define DTIM2_VECTOR 0x55
#define DTIM3_VECTOR 0x56
#define FEC_TX_F_VECTOR 0x57
#define FEC_TX_B_VECTOR 0x58
#define FEC_TX_UND_VECTOR 0x59
#define FEC_COLL_VECTOR 0x5a
#define FEC_RX_F_VECTOR 0x5b
#define FEC_RX_B_VECTOR 0x5c
#define FEC_MII_VECTOR 0x5d
#define FEC_LATE_VECTOR 0x5e
#define FEC_HB_VECTOR 0x5f
#define FEC_STOP_VECTOR 0x60
#define FEC_BERR_VECTOR 0x61
#define FEC_BAB_TX_VECTOR 0x62
#define FEC_BAB_RX_VECTOR 0x63
#define EPHY_VECTOR 0x64
#define GPT_TOF_VECTOR 0x69
#define GPT_PAIF_VECTOR 0x6a
#define GPT_PAOVF_VECTOR 0x6b
#define GPT_C0F_VECTOR 0x6c
#define GPT_C1F_VECTOR 0x6d
#define GPT_C2F_VECTOR 0x6e
#define GPT_C3F_VECTOR 0x6f
#define PMM_LVDF_VECTOR 0x70
#define ADC_ADCA_VECTOR 0x71
#define ADC_ADCB_VECTOR 0x72
#define ADC_ADCINT_VECTOR 0x73
#define PWM_INT_VECTOR 0x74
#define RNGA_VECTOR 0x75
#define USB_OTG_VECTOR 0x75 // M5222X / M5221X
#define PIT0_VECTOR 0x77
#define PIT1_VECTOR 0x78
#define CFM_CBEIF_VECTOR 0x7b
#define CFM_CCIF_VECTOR 0x7c
#define CFM_PVIF_VECTOR 0x7d
#define CFM_AEIF_VECTOR 0x7e
#define IIC_1_VECTOR 0x7e // M5221X
#define RTC_VECTOR 0x7f
#define CAN0_VECTOR 0x88
#define CAN1_VECTOR 0x89
#define CAN2_VECTOR 0x8a
#define CAN3_VECTOR 0x8b
#define CAN4_VECTOR 0x8c
#define CAN5_VECTOR 0x8d
#define CAN6_VECTOR 0x8e
#define CAN7_VECTOR 0x8f
#define CAN8_VECTOR 0x90
#define CAN9_VECTOR 0x91
#define CAN10_VECTOR 0x92
#define CAN11_VECTOR 0x93
#define CAN12_VECTOR 0x94
#define CAN13_VECTOR 0x95
#define CAN14_VECTOR 0x96
#define CAN15_VECTOR 0x97
#define CANERR_VECTOR 0x98
#define CANBOFF_VECTOR 0x99
#define IRQ8_VECTOR 0xa0
#define IRQ9_VECTOR 0xa1
#define IRQ10_VECTOR 0xa2
#define IRQ11_VECTOR 0xa3
#define IRQ12_VECTOR 0xa4
#define IRQ13_VECTOR 0xa5
#define IRQ14_VECTOR 0xa6
#define IRQ15_VECTOR 0xa7
Note however that usually this table is not used directly from FLASH since it doesn't allow exchanging interrupts at run time but that is a project decision.
Don't forget to declare yout interrupt handler accordingly so that CodeWarrior compiles it correctly. Eg.
static __interrupt__ void _irq4_handler(void)
{
...
}
When using GCC it needs a prototype like:
static void _irq4_handler(void) __attribute__((interrupt_handler));
Regards
Mark