background image

Vol. 3A 9-39

PROCESSOR MANAGEMENT AND INITIALIZATION

If ((Update.ProcessorSignature = Processor Signature) &&

 (Update.ProcessorFlags & Platform Bits))

{

Load Update.UpdateData into the Processor;

Verify update was correctly loaded into the processor 

Go on to next processor

Break;

}

Else If (Update.TotalSize > (Update.DataSize + 48))

{

← 0

While (N < Update.ExtendedSignatureCount)

{

If ((Update.ProcessorSignature[N] = 

 Processor Signature) &&

 (Update.ProcessorFlags[N] & Platform Bits))

{

Load Update.UpdateData into the Processor;

Verify update correctly loaded into the processor

Go on to next processor

Break;

}

← N + 1

}

← I + (Update.TotalSize / 2048)

If ((Update.TotalSize MOD 2048) = 0)

← I + 1

}

}

}

}

NOTES

The platform Id bits in IA32_PLATFORM_ID are encoded as a three-bit binary coded decimal field. 
The platform bits in the microcode update header are individually bit encoded. The algorithm must 
do a translation from one format to the other prior to doing a check.

When performing the INT 15H, 0D042H functions, the BIOS must assume that the caller has no knowledge of plat-
form specific requirements. It is the responsibility of BIOS calls to manage all chipset and platform specific prereq-
uisites for managing the NVRAM device. When writing the update data using the Write Update sub-function, the 
BIOS must maintain implementation specific data requirements (such as the update of NVRAM checksum). The 
BIOS should also attempt to verify the success of write operations on the storage device used to record the update.

9.11.8.2   Responsibilities of the Calling Program

This section of the document lists the responsibilities of a calling program using the interface specifications to load 
microcode update(s) into BIOS NVRAM.

The calling program should call the INT 15H, 0D042H functions from a pure real mode program and should be 
executing on a system that is running in pure real mode. 

The caller should issue the presence test function (sub function 0) and verify the signature and return codes of 
that function. 

It is important that the calling program provides the required scratch RAM buffers for the BIOS and the proper 
stack size as specified in the interface definition.

The calling program should read any update data that already exists in the BIOS in order to make decisions 
about the appropriateness of loading the update. The BIOS must refuse to overwrite a newer update with an