kernel startup code questions

Darin Johnson (darin@connectnet.com)
Sat, 16 Aug 1997 19:16:57 -0700 (PDT)


For the i386 kernel, I'm not sure I understand some details. The info
is scattered across quite a few files, making it confusing. Tell me
if I'm right or wrong. In 2.0.x, the kernel was linked to run at
location 0x00100000, but in startup_32, the GDT is set so that it has
a 0xC0100000 virtual address, and that base is transparent to the
kernel. In 2.1.x, all that's gone, and instead the kernel is linked
to assume it's at 0xC0100000 (it's no longer transparent) via
vmlinux.lds. I assume it manages this in 2.1 by carefully avoiding
any absolute address references until the initial paging is turned on
(which maps the 0xC0000000 to low memory).