background image

Vol. 3A 9-27

PROCESSOR MANAGEMENT AND INITIALIZATION

    );

END

Table 9-6 shows the relationship of each build item with an ASM source file.

9.11 

MICROCODE UPDATE FACILITIES

The P6 family and later processors have the capability to correct errata by loading an Intel-supplied data block into 
the processor. The data block is called a microcode update. This section describes the mechanisms the BIOS needs 
to provide in order to use this feature during system initialization. It also describes a specification that permits the 
incorporation of future updates into a system BIOS.
Intel considers the release of a microcode update for a silicon revision to be the equivalent of a processor stepping 
and completes a full-stepping level validation for releases of microcode updates.
A microcode update is used to correct errata in the processor. The BIOS, which has an update loader, is responsible 
for loading the update on processors during system initialization (Figure 9-7). There are two steps to this process: 
the first is to incorporate the necessary update data blocks into the BIOS; the second is to load update data blocks 
into the processor.

Table 9-6.  Relationship Between BLD Item and ASM Source File 

Item

ASM386 and Startup.A58

BLD386 Controls 

and BLD file

Effect

Bootstrap

public startup

startup:

bootstrap

start(startup)

Near jump at 0FFFFFFF0H to 

start.

GDT location

public GDT_EPROM

GDT_EPROM TABLE_REG  <>

TABLE

GDT(location = GDT_EPROM)

The location of the GDT will be 

programmed into the 

GDT_EPROM location.

IDT location

public IDT_EPROM

IDT_EPROM TABLE_REG  <>

TABLE

IDT(location = IDT_EPROM

The location of the IDT will be 

programmed into the 

IDT_EPROM location.

RAM start

RAM_START equ 400H

memory (reserve = (0..3FFFH))

RAM_START is used as the ram 

destination for moving the 

tables. It must be excluded from 

the application's segment area.

Location of the 

application TSS in 

the GDT

TSS_INDEX EQU 10

TABLE GDT(

ENTRY = (10: PROTECTED_MODE_

TASK))

Put the descriptor of the 

application TSS in GDT entry 10.

EPROM size and 

location

size and location of the initialization 

code

SEGMENT startup.code (base = 

0FFFF0000H) ...memory (RANGE(

ROM_AREA = ROM(x..y)) 

Initialization code size must be 

less than 64K and resides at 

upper most 64K of the 4-GByte 

memory space.