9-48 Vol. 3A
PROCESSOR MANAGEMENT AND INITIALIZATION
The read function enables the caller to read any microcode update data that already exists in a BIOS and make
decisions about the addition of new updates. As a result of a successful call, the BIOS copies the microcode update
into the location pointed to by ES:DI, with the contents of all Update block(s) that are used to store the specified
microcode update.
If the specified block is not a header block, but does contain valid data from a microcode update that spans multiple
update blocks, then the BIOS must return Failure with the NOT_EMPTY error code in AH.
An update block is considered unused and available for storing a new update if its Header Version contains the
value 0FFFFFFFFH after return from this function call. The actual implementation of NVRAM storage management
is not specified here and is BIOS dependent. As an example, the actual data value used to represent an empty
block by the BIOS may be zero, rather than 0FFFFFFFFH. The BIOS is responsible for translating this information
into the header provided by this function.
9.11.8.9 Return Codes
After the call has been made, the return codes listed in Table 9-19 are available in the AH register.
ECX
Scratch Pad1
Real Mode Segment address of 64 KBytes of RAM
Block (lower 16 bits)
ECX
Scratch Pad2
Real Mode Segment address of 64 KBytes of RAM
Block (upper 16 bits)
DX
Scratch Pad3
Real Mode Segment address of 64 KBytes of RAM
Block
SS:SP
Stack pointer
32 KBytes of Stack Minimum
SI
Update Number
This is the index number of the update block to be
read. This value is zero based and must be less than
the update count returned from the presence test
function.
Output
CF
Carry Flag
Carry Set - Failure - AH contains Status
Carry Clear - All return values are
valid.
AH
Return Code
Status of the Call
AL
OEM Error
Additional OEM Information
Return Codes (see Table 9-19 for code definitions)
SUCCESS
The function completed successfully.
READ_FAILURE
There was a failure because of the inability to read the
storage device.
UPDATE_NUM_INVALID
Update number exceeds the maximum number of
update blocks implemented by the BIOS.
NOT_EMPTY
The specified update block is a subsequent block in use
to store a valid microcode update that spans multiple
blocks.
The specified block is not a header block and is not
empty.
Table 9-18. Parameters for the Read Microcode Update Data Function (Contd.)