В заголовочном файле splx определяется как
void splx(int)
void _setsoftintr(int);
#if !defined(EVBARM_SPL_NOINLINE)
#define splx(new) omap_splx(new)
#define _spllower(ipl) omap_spllower(ipl)
#define _setsoftintr(si) omap_setsoftintr(si)
#endif /* !EVBARM_SPL_NOINTR */
Я не уверен, почему вы ссылаетесь на файлы ассемблера, когда этот язык явно C, но я не вижу ничего плохого в этих объявлениях - splx является функцией, но если EVBARM_SPL_NOINLINE определен, то макрос используется для переназначения всех использует splx к splx_omap. Это допустимое использование препроцессора, и оно не переопределяет splx - вместо этого используется некоторая хитрость для изменения кода для использования splx_omap.
Это работает, потому что препроцессор запускается перед компилятором, поэтому любой случай появления splx будет заменен splx_omap до того, как произойдет компиляция. Некоторым это может показаться неприятным, но это одна из возможностей препроцессора, и она весьма полезна (при соблюдении надлежащих мер предосторожности).