I come across the term kernel ABI when I study the /proc/sys filesystem.
I find two articles.
1. Sysfs and a stable kernel ABI http://lwn.net/Articles/172986/
Documentation / frv / kernel-ABI.txt http://www.mjmwired.net/kernel/Documentation/frv/kernel-ABI.txt
"The internal FRV kernel ABI is not quite the same as the userspace ABI. A number of the registers are used for special purposed, and the ABI is not consistent between modules vs core, and MMU vs no-MMU. This partly stems from the fact that FRV CPUs do not have a separate supervisor stack pointer, and most of them do not have any scratch registers, thus requiring at least one general purpose register to beclobbered in such an event.
Also, within the kernel core, it is possible to simply jump or call directly between functions using a relative offset. This cannot be extended to modules for the displacement is likely to be too far. Thus in modules the address of a function to call must be calculated in a register and then used, requiring two extra instructions. "