Вчерне получилось, так вот #define TMR_time TMR3
// c-file//
const struct tmr_x_str timers[5] = {
{ TMR0, TMR0_IRQn},
{ TMR1, TMR1_IRQn},
{ TMR2, TMR2_IRQn},
{ TMR3, TMR3_IRQn},
{ TMR4, TMR4_IRQn},
};
#define Tim_Irq(T) (\
(T == TMR0) ? timers[0].IRQn :\
(T == TMR1) ? timers[1].IRQn :\
(T == TMR2) ? timers[2].IRQn :\
(T == TMR3) ? timers[3].IRQn :\
timers[4].IRQn )// Apply:
uint32_t oldIrq = sysInstallISR(HIGH_LEVEL_SENSITIVE | IRQ_LEVEL_1, /*TMR0_IRQn*/ Tim_Irq( TMR_time), (PVOID)TMR_M_IRQHandler);
На выходе при arm-none-eabi-gcc -mcpu=arm926ej-s -marm -mlittle-endian -mfloat-abi=soft -O0
uint32_t oldIrq = sysInstallISR(HIGH_LEVEL_SENSITIVE | IRQ_LEVEL_1, /*TMR0_IRQn*/ Tim_Irq( TMR_time), (PVOID)TMR_M_IRQHandler);
5808: e3a0301f mov r3, #31
580c: e59f203c ldr r2, [pc, #60] ; 5850 <TimeInit+0x54>
5810: e1a01003 mov r1, r3
5814: e3a00041 mov r0, #65 ; 0x41
5818: eb004d87 bl 18e3c <sysInstallISR>
581c: e1a03000 mov r3, r0
5820: e50b3008 str r3, [fp, #-8]
По 0x5808 как раз загрузка константы. Можно попараноить и Т завернуть в скобки, добавить в конце защитное значение, - но уже работает как хотелось.