17.05.2015 Views

TI486 Microprocessor - Al Kossow's Bitsavers

TI486 Microprocessor - Al Kossow's Bitsavers

TI486 Microprocessor - Al Kossow's Bitsavers

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Al</strong>tering SMM Code Limits<br />

A.1S <strong>Al</strong>tering SMM Code Limits<br />

Since it is not possible to use the rsdc instruction to modify the<br />

non-programmer-visible portion of the CS information, a switch into protected<br />

mode becomes necessary and is demonstrated here.<br />

SMMBASE<br />

15000H<br />

.386P<br />

jmp $skip<br />

gdt dq o<br />

;null<br />

G_4gig= $-gdt<br />

dw Offffh<br />

;limit<br />

dw o<br />

;linear low<br />

db o<br />

;linear high<br />

db 12h or (0 shl 5) or 80h:read/write, pl0 present<br />

db<br />

db<br />

Ofh or 80h<br />

o<br />

;G=I, high limit = OFh<br />

;extra high (OcOh for EMC chip)<br />

$-gdt<br />

dw Offffh<br />

; low limit<br />

dw o<br />

;base<br />

db o<br />

;base<br />

db lah or (0 shl 5) or 80h;<br />

db 8fh<br />

;4gig limit<br />

db o<br />

;base<br />

GDTSIZE = ($-gdt)<br />

gdtinit DW<br />

DD<br />

$skip:<br />

mov<br />

GDTSIZE-l<br />

?<br />

eax, SMMBASE<br />

;base<br />

mov<br />

shr<br />

mov<br />

mov<br />

mov<br />

add<br />

mov<br />

db<br />

19dt<br />

word ptr cs: [gdt+g_code+2],axilow base<br />

eax,16<br />

byte ptr cl: [gdt+g_code+4],al<br />

byte ptr cs: [gdt+g_code+7],ahibase<br />

eax,offset gdt<br />

eeax,SMMBASE<br />

dword ptr cs: [gdtinit+2],eax;<br />

66h<br />

cs: fword ptr [gdtinit];load gdt<br />

mov<br />

mov<br />

or<br />

mov<br />

db<br />

dw<br />

dw<br />

eax, crO<br />

ebx, eax<br />

eax, 1<br />

crO, eax<br />

Oeah<br />

offset pmode<br />

g_code<br />

;get death register<br />

;save in ebx<br />

;turn on protected mode<br />

;go to protected mode<br />

;load new descriptor with far jump<br />

pmode:<br />

mov<br />

db<br />

dw<br />

dw<br />

crO,ebx<br />

Oeah<br />

offset pmode2<br />

SMMBASE / 10h<br />

;back to real mode<br />

;we could patch this run time if desired<br />

pmode2:<br />

A-45

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!