copy extended memory.
adam at cfar.umd.edu
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:
> GDT location
> source GDT entry
> target GDT entry
> BIOS CS
> BIOS SS
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.
http://www.eax.com The Supreme Headquarters of the 32 bit registers
More information about the coreboot