> So can we say that, during initialization, setup.s pushes some bios info
> to the memory, and then after entering protected mode in i386, it pops
> these information and sets kernel depending on it. Because of absence of
> FDC controller info at this data area linux does not recognize FDC. However,
No it doesn't push or pop any info from the BIOS. The FDC is simply turned
off in the chipset initialisation code (in BIOS), in a proprietary way
that Linux doesn't know about.
> I can turn it on still usin IO ports and using in, out assembly
> instructions.
No. You need to change a chipset register to power it back on. And how to
do this depends on the chipset. On an old ISA floppy controller, this
would not be possible in software but would have to be done by a jumper,
but modern chipsets are configurable through registers. Unfortunately all
the different chipsets have different initialisation code for this, and
some are even not documented at all.
This is why, even though Linux does not use the BIOS at any point after
booting, some chipset setup code is still required and therefore you can't
just burn a Linux kernel into flash and start it directly (there is a
project called LinuxBIOS that was working on a replacement BIOS for some
common chipsets, intended for embedded systems).
Regards,
Thomas
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/