Но согласитесь, с расширениями IAR это получилось красиво

. Тем более практически все компиляторы имеют аналогичные расширения.
А условно портируемый вариант, можно представить в таком виде:
Код
typedef void (*MY_FUN_PTR)(unsigned int);
MY_FUN_PTR* fun = (MY_FUN_PTR*) 0xFFD2;
(*fun)(0x1000);
// или c проверкой
if(*fun) (*fun)(0x1000);
Я настаиваю на том, что код должен быть читаемым с первого взгляда.