|
In Setup.S,
lmsw ax (ax=1 ), so we cut into protected mode..
Now comes my question ==>
(1). Just after running LMSW, I guess the CPU accessses memory as 8086 (where CS*16+IP.)
Only After we reload cs by far jmp, then CPU ACTUALLY accesses memoey via GDT.
And then CPU really work on 32-bit Code ..
Is my guess right ?
(2). Friends on net tell me zImage is put on 0x10000 (ie. 64k absoloute address),
But the source reload the CS by =>
db 0x66,0xea ! prefix + jmpi-opcode
code32: dd 0x1000 <--------------------- This line is strange. it should be 0x10000 not 0x1000, it should means offset not a segment ???
Is anything wrong with my idea ??
dw KERNEL_CS
( mixed 16-32 bits, by so it can jump to bzImage, too .. I guess)
-------------------------------------------------------------------------------------
KERNEL_CS is a index to GDT , which means BASE address is 0x0000
|