The following sections discuss the different levels of compatibility between 32-bit applications and 64-bit applications.
Existing 32-bit applications can run on either 32-bit or 64-bit operating environments. The only exceptions are those applications that use libkvm, /dev/mem, /dev/kmem, or /proc. For more information, see Getting Past the 4 Gigabyte Barrier.
Source level compatibility is maintained for 32-bit applications. For 64-bit applications, the principal changes are with respect to the derived types used in the APIs. Applications that use the derived types and interfaces correctly are source compatible for 32-bit, and make the transition to 64-bit easy.
Because 32-bit device drivers cannot be used with the 64-bit operating system, these drivers must be recompiled as 64-bit objects. Moreover, the 64-bit drivers must support both 32-bit applications and 64-bit applications. All drivers supplied with the 64-bit operating environment support both 32-bit applications and 64-bit applications. However, there are no changes in the fundamental driver model and the interfaces supported by the DDI. The principal work is to clean up the code to be correct in an LP64 environment. For more information, see Writing Device Drivers in Oracle Solaris 11.4.