On Mon, Aug 05, 2002 at 03:04:43PM -0500, Richard A. Smith wrote: > I see in the code that a reboot=b option makes linux switch back to > real mode and do a ljmp ffff:0000. Can someone explain why this > address is ffff:0000 rather than the boot vector of > f000:fff0?
These are the same addresses in real mode, memory addresses are expressed in a segment:offset notation where segment and offset are 16 bit numbers. However the x86 still only has a 20 bit address space when in real mode. segment and offset are both 16 bit wide but the low 12 bits of segment overlap with the high 12 bits of offset. This means that increasing segment by 1 actually increases the physical address with 16, even though one segment is said to be 64k bytes large since offset is a 16 bit number. f000:fff0 means a physical address of 0xffff0. ffff:0000 also means the same address 0xffff0. Real mode is funny. To try to answer your question, I used to type ffff:0 because it was fewer characters, maybe that's why they do it in Linux as well. :) //Peter
