copy extended memory.

Adam Sulmicki adam at
Sun Oct 27 20:01:00 CET 2002

FWIW, here's summary what I was able to gather so far

> And the format of the GDT is:
> dummy
> GDT location
> source GDT entry
> target GDT entry

ok, I think I got it nailed down, how about the way it is below?

I'm not quite sure of your interpretation of #2 (GDT location), can you
elaborate? Ie what would it be used for by BIOS. It seems to me like I
already get this info from ES:SI.

       CX     = counter of 2-byte words
       ES:SI  = pointer to to a structure of size of 0x30 which
		contains 6 GDT entries.

1	0x00	Reserved  GDT	(all 0's)
2	0x08	FS & GS   GDT
3	0x10	DS (src)  GDT
4	0x18	ES (dst)  GDT
5	0x20	CS (bios) GDT
6	0x28	SS (bios) GDT

of all those caller of the interrupt is required to only fill out
#3 and #4 and leave all other blank.

Because we are not passed indirect link with (size of GDT,ptr to GDT) we
can't use it directly in our LGDT call (after filling out missing info).
We have to either copy it over or add another level of indirection.

Adam	The Supreme Headquarters of the 32 bit registers

More information about the coreboot mailing list