Output
CF Carry Flag Non-Carry – Indicates No Error
EAX Signature 'SMAP' – Signature to verify correct BIOS revision.
ES:DI Buffer Pointer Returned Address Range Descriptor pointer. Same value as on input.
ECX Buffer Size
Number of bytes returned by the BIOS in the address range descriptor. The
minimum size structure returned by the BIOS is 20 bytes.
EBX Continuation
Contains the continuation value to get the next address descriptor. The actual
significance of the continuation value is up to the discretion of the BIOS. The
caller must pass the continuation value unchanged as input to the next iteration of
the E820 call in order to get the next Address Range Descriptor. A return value of
zero means that this is the last descriptor.
NOTE: The BIOS can also indicate that the last descriptor has already been
returned during previous iterations by returning a carry. The caller will ignore any
other information returned by the BIOS when the carry flag is set.
Address Range Descriptor Structure
Offset in Bytes Name Description
0 BaseAddrLow Low 32 Bits of Base Address
4 BaseAddrHigh High 32 Bits of Base Address
8 LengthLow Low 32 Bits of Length in Bytes
12 LengthHigh High 32 Bits of Length in Bytes
16 Type Address type of this range
The BaseAddrLow and BaseAddrHigh together are the 64-bit base address of this range. The base address is the physical
address of the start of the range being specified.
The LengthLow and LengthHigh together are the 64-bit length of this range. The length is the physical contiguous length in
bytes of a range being specified.
The Type field describes the usage of the described address range as defined in the following table.
Address Ranges in the Type Field
Valu
e
Mnemonic Description
1 AddressRangeMemory This run is available RAM usable by the operating system.
2 AddressRangeReserved
This run of addresses is in use or reserved by the system and must not be
used by the operating system.
3 AddressRangeACPI
ACPI Reclaim Memory. This run is available RAM usable by the operating
system after it reads the ACPI tables.
4 AddressRangeNVS
ACPI NVS Memory. This run of addresses is in use or reserve by the
system and must not be used by the operating system. This range is
required to be saved and restored across an NVS sleep.
Othe
r
Undefined
Undefined - Reserved for future use. Any range of this type must be treated
by the OS as if the type returned was AddressRangeReserved.
Chapter 3 — BIOS
53