X86: Question about GDT loading

Alexandre <[email protected]>
Newsgroups gmane.linux.kernel
Message-ID <CAKw2PKGigbR-15QybdFgV-WME7tf7t25tCyqXJCDoMT7-s8Xyw@mail.gmail.com>
I was tracing the execution of the file
"arch/x86/boot/compressed/head_32.S" with gdb when I noticed that the
address used for the GDT in the GDTR structure pointed to the GDTR
itself.

This is weird because it would make the GDTR an entry in the GDT.

I see that the code (line 64) loads address of the "gdt" label (line
172), which contains the GDTR data and the GDT entries, into eax and
then stores that address, as the GDT offset field (line 65).
Also, the GDT size field is calculated including the size of the GDTR
data. (I unsure if that's intended)

Taking a look with gdb and with the kernel compiled for i386, we can
see that the address being used in the "lgdt" instruction  (line 66)
is the same one being used as the offset for the GDT.

gdb:
Assembly:
0x10001d        lgdtl  (%eax)
(gdb) i r eax
eax            0xca2000            13246464
(gdb) x/64bx 0xca2000
0xca2000:       0x1f    0x00    0x00    0x20    0xca    0x00    0x00    0x00
0xca2008:       0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0xca2010:       0xff    0xff    0x00    0x00    0x00    0x9a    0xcf    0x00
0xca2018:       0xff    0xff    0x00    0x00    0x00    0x92    0xcf    0x00
0xca2020:       0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0xca2028:       0x00    0x00    0x00    0x00    0x05    0x00    0x00    0x00
0xca2030:       0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0xca2038:       0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
(gdb)

After the size field ( 0x1f 0x00 ) the address of the GDT points to
the GDTR ( 0x00 0x20 0xca 0x00 ).

Please let me know if that is intended or not.

Kind regards,
Alexandre Ramos
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.