Intel 64 and IA-32 Architectures Software Developers Manual Volume 3B, System Programming Guide Part 2

Table Of Contents
25-20 Vol. 3
SYSTEM MANAGEMENT
In multiple-processor systems, initialization software must adjust the SMBASE value
for each processor so that the SMRAM state save areas for each processor do not
overlap. (For Pentium and Intel486 processors, the SMBASE values must be aligned
on a 32-KByte boundary or the processor will enter shutdown state during the execu-
tion of a RSM instruction.)
If the SMBASE relocation flag in the SMM revision identifier field is set, it indicates the
ability to relocate the SMBASE (see Section 25.9).
25.11.1 Relocating SMRAM to an Address Above 1 MByte
In SMM, the segment base registers can only be updated by changing the value in the
segment registers. The segment registers contain only 16 bits, which allows only 20
bits to be used for a segment base address (the segment register is shifted left 4 bits
to determine the segment base address). If SMRAM is relocated to an address above
1 MByte, software operating in real-address mode can no longer initialize the
segment registers to point to the SMRAM base address (SMBASE).
The SMRAM can still be accessed by using 32-bit address-size override prefixes to
generate an offset to the correct address. For example, if the SMBASE has been relo-
cated to FFFFFFH (immediately below the 16-MByte boundary) and the DS, ES, FS,
and GS registers are still initialized to 0H, data in SMRAM can be accessed by using
32-bit displacement registers, as in the following example:
mov esi,00FFxxxxH; 64K segment immediately below 16M
mov ax,ds:[esi]
A stack located above the 1-MByte boundary can be accessed in the same manner.
25.12 I/O INSTRUCTION RESTART
If the I/O instruction restart flag in the SMM revision identifier field is set (see Section
25.9), the I/O instruction restart mechanism is present on the processor. This mech-
anism allows an interrupted I/O instruction to be re-executed upon returning from
SMM mode. For example, if an I/O instruction is used to access a powered-down I/O
device, a chip set supporting this device can intercept the access and respond by
asserting SMI#. This action invokes the SMI handler to power-up the device. Upon
Figure 25-4. SMBASE Relocation Field
031
SMM Base
Register Offset
7EF8H