Для удобства чтения определите сигнатуру для функции, которая будет вызываться:
typedef void signature_t(int, int);
Затем вы можете преобразовать местоположение в ПЗУ
#define IAP_EXECUTE_CMD(a, b) ((signature_t*)IAP_ROM_LOCATION) ((a),(b))
и с помощью GCC последней версииGCC 4.6 ) Я бы сделал это встроенной функцией
static inline void iap_execute_cmd(int a, int b) {
((signature_t*)IAP_ROM_LOCATION) ((a),(b));
}