If you are not using an Application Binary Interface (ABI)
compliant kernel, you might need to build a mixed ABI system. Kernels
before version 2.6.16 can only be built using the legacy GNU ABI
(use GCC option
-mabi=apcs-gnu when using the CodeSourcery
toolchain). This includes all kernel modules and device drivers.
This can cause problems when your applications or libraries must interface directly with kernel structures or functions (system calls), including through the use of a shared header file describing kernel structures. In this case, you must use assembly code or modified descriptions of the structures to translate between the two ABIs when calling kernel functions or manipulating kernel data structures in your applications or libraries.
From kernel 2.6.16 onwards, you can build the Linux kernel using the new ARM Embedded Application Binary Interface (EABI). This enables easier integration of applications and libraries to form a completely EABI-compliant system.