The Intel Pentium processor (and other similar similar-class processors such as those from AMD, National Semiconductor, and ST Microelectronics) and its successors can run in three different operating modes: real mode, protected mode, and System Management Mode (SMM). (The architecture of the Pentium processor is described in “Pentium Processor Users Manual, Volume 3: Architecture and Programming Manual,” dated 1993 and published by Intel Corporation, which is hereby incorporated by reference.) Real mode has been used for operating systems like DOS and provides a memory architecture that supports up to 1 MB (megabyte) of address space. Protected mode is used by operating systems such as Linux and Windows NT, supporting a much larger address space of at least 4.2 GB (gigabyte) and offering the capability of fetching 32-bit processor instructions from addresses beyond the 1 MB address boundary. SMM is a special “invisible” mode of the processor that supports a limited amount (128 KB, typically) of address space below 1 MB for fetching 16-bit processor instructions. Additionally SMM can support data references throughout the entire 4.2 GB address space. However, SMM is limited because it does not allow code to be executed when it is positioned above the 1 MB boundary, making it impractical for use in running large or many applications. Further, those applications are limited to 16-bit operation, not flat 32-bit operation. Whether the processor is in real mode or protected mode, external circuitry can cause the processor to execute a special SMM Interrupt (SMI). When an SMI occurs, the operating system that is running is suspended and the SMI routine runs in a manner that is transparent to the operating system. This SMM was developed by the hardware manufacturers to enable power-management software to run transparently to the operating system. The SMM provides a small amount of RAM (128K typically) for use by the SMI routine. This memory is only mapped into an address space when in SMM. Also, while in SMM, the processor executes with real-mode addressing rules that are extended by making it possible to access memory beyond 1 MB with addressing and size overrides on each instruction. In other words, the SMI routine does not run as flat 32-bit code, which means that 16-bit code needs to be used for the SMI routine.