Systems based on the UltraSPARC-1 processor, such as the Ultra 1 and Ultra 2 usually do not boot the 64-bit Solaris kernel by default, even though it may be installed. There are two reasons for this; the first is that many of these systems may require firmware upgrades to run a 64-bit kernel. The second reason is due to an obscure bug in the UltraSPARC-1 implementation which could allow a local user to execute a malicious 64-bit program that stalls the processor.
The boot(1M)
man page says the following on the subject:
Certain platforms may need a firmware upgrade to run the 64-bit kernel. See the Sun Hardware Platform Guide for details. If the 64-bit kernel packages are installed and boot detects that the platform needs a firmware upgrade to run 64-bit, boot displays a message on the console and chooses the 32-bit kernel as the default file instead.
On systems containing 200MHz or lower UltraSPARC-1 processors, it is possible for a user to run a 64-bit program designed to exploit a problem that could cause a processor to stall. Since 64-bit progams cannot run on the 32-bit kernel, the 32-bit kernel is chosen as the default file on these systems.
The code sequence that exploits the problem is very unusual and is not likely to be generated by a compiler. Assembler code had to be specifically written to demonstrate the problem. It is highly unlikely that a legitimate handwritten assembler routine would use this code sequence.
Users willing to assume the risk that a user might accidentally or
deliberately run a program that was designed to cause a processor to
stall may choose to run the 64-bit kernel by modifying the boot policy
file. Edit /platform/platform-name/boot.conf
so that it
contains an uncommented line with the variable named
ALLOW_64BIT_KERNEL_ON_UltraSPARC_1_CPU
set to the value true
as shown in the example that follows:
ALLOW_64BIT_KERNEL_ON_UltraSPARC_1_CPU=true