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. See Getting Past the 4 Gigabyte Barrier for more information.
Source level compatibility has been maintained for 32-bit applications. For 64-bit applications, the principal changes that have been made are with respect to the derived types used in the application programming interface. Applications that use the derived types and interfaces correctly are source compatible for 32-bit, and make the transition to 64-bit more easily.
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 need to 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, the fundamental driver model and the interfaces supported by the DDI do not change. The principal work is to clean up the code to be correct in an LP64 environment. See the Writing Device Drivers manual for more information.