Solaris 64-bit Developer's Guide

Which Solaris Operating Environment Are You Running?

The Solaris operating environment supports two first-class ABIs simultaneously. In other words, two separate, fully functional system call paths connect into the 64–bit kernel. Two sets of libraries support applications.

The 64-bit operating system can run on only 64-bit CPU hardware, while the 32-bit version can run on either 32-bit CPU hardware or 64-bit CPU hardware. Because the Solaris 32-bit and 64-bit operating environments look very similar, it might not be immediately apparent which version is running on a particular hardware platform.

The easiest way to determine which version is running on your system is to use the isainfo command. This new command prints information about the application environments supported on the system.

The following is an example of the isainfo command executed on an UltraSPARC system running the 64-bit operating system:

% isainfo -v
64-bit sparcv9 applications
32-bit sparc applications  

When the same command is run on an x86 system runnig the 32–bit Solaris operating system:

% isainfo -v
32-bit i386 applications

When the same command is run on an x86 system running the 64–bit Solaris operating system:

% isainfo -v
64-bit amd64 applications
32-bit i386 applications

Note –

Not all x86 systems are capable of running the 64-bit kernel. In this case, if the system is running the in Solaris operating environment, the kernel is running in 32-bit mode

One useful option of the isainfo(1) command is the -n option, which prints the native instruction set of the running platform:

% isainfo -n

The -b option prints the number of bits in the address space of the corresponding native applications environment:

% echo "Welcome to "`isainfo -b`"-bit Solaris"
Welcome to 64-bit Solaris

Applications that must run on earlier versions of the Solaris operating environment can ascertain whether 64–bit capabilities are available. Check the output of uname(1) or check for the existence of /usr/bin/isainfo.

A related command, isalist(1), is more suited for use in shell scripts. isalist can be used to print the complete list of supported instruction sets on the platform. However, as the number of instruction set extensions increases, the limitations of a list of all subsets has become apparent. Users are advised to not rely upon this interface in the future.

Users who create libraries that depend upon instruction set extensions should use the hardware capability facility of the dynamic linker. Use the isainfo command to ascertain the instruction set extensions on the current platform.

% isainfo -x
amd64: sse2 sse fxsr amd_3dnowx amd_3dnow amd_mmx mmx cmov amd_sysc cx8 tsc fpu
i386: sse2 sse fxsr amd_3dnowx amd_3dnow amd_mmx mmx cmov amd_sysc cx8 tsc fpu