background image

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.)