Int 15 Fn D042 R - Intel Pentium Pro Bios Update - Write Bios Update Are [-]

AX = D042h
BL = 01h
ES:DI -> microcode update block (see #0457)
CX,DX,SI = segments of three 64K scratchpad areas for BIOS use

Return: CF clear if successful
CF set on error
AH = status (see #0456)
AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
00h successful

Notes: a microcode update may also be initiated by a WRMSR instruction
with ECX=0079h, EDX=00000000h, and EAX=linear address of update
block (see #0457)
at least 32K stack space must be available when this function is called

See Also: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h,MSR 00000079h

(Table 0456)
Values for Pentium Pro BIOS update status:
00h successful
86h not implemented
90h unable to erase NVRAM device
91h unable to write to NVRAM device
92h unable to read storage
93h NVRAM is full
94h specified processor stepping is not present in system
95h invalid header or loader version
96h wrong checksum in header
97h processor rejected the update
98h the same or a more recent update is already stored
99h update block number was out of range

Format of Pentium Pro microcode update block:
Offset Size Description (Table 0457)
00h DWORD update header version number (currently 00000001h)
FFFFFFFFh = unused block
04h DWORD revision number of this microcode update
08h DWORD update creation date, as BCD mmddyyyy (month,day,year)
0Ch DWORD family/model/stepping of processor to which update applied
(same value as returned by CPUID instruction)
10h DWORD checksum (used to force sum of all 512 DWORDs of the update
block to 00000000h)
14h DWORD revision number of loader needed to install update
(currently 00000001h)
18h 24 BYTEs reserved for future expansion
30h 2000 BYTEs encrypted microcode data

See Also: MSR 00000079h,OPCODE "CPUID"