А здесь всего два вектора. И к ядру в нормальных процессорах довешан контроллер прерываний, который выдает адрес обработчика. У ADuC на контроллере прерываний решили сэкономить, поэтому попав в прерывание вы должны прочитать IRQSIG, IRQSTA, по выставленным в них битам определить, какое из прерываний сработало и самостоятельно перейти на нужный обработчик. Что-то вроде такого:
extern "C" __irq __arm void IRQ_Switch()
{
dword irq = IRQSIG;
irq &= IRQSTA;
if(irq & GP_TIMER_BIT)
{
Timer_ISR();
}
if(irq & RTOS_TIMER_BIT)
{
OS::SystemTimer_ISR();
}
}