After a torturous debugging cycle, I have etherboot working again
under the pcbios. The build is much more modular, and genrules.pl
in particular is now much simpler. Both etherboot ELF images, and PXE
images are standard prefixes now so they do not need special cases
in genrules.pl. loader.S is now a readable file of 230 lines!
IMPORTANT
- Do not use compressed images
- Do not use relocation
UNTIL
- The driver you want to use has had been fixed.
Except for ROM chips there are essentially no etherboot size
limitations, and the code is now mostly PIC throughout. It will only
run at RELOCADDR iff the code is not compressed, and you do not use
relocation.
I have moved the decompressor to 32bit code made it PIC and called
it unhuf.S. This has increased it's size by about 200 bytes. Plus
the code to switch to protected mode is another extra 100 bytes. So
there is some significant size growth in the uncompressed code. The
long term removal of size restrictions make this a path worth going
down.
There is a very good decompressor fix. Grab the decompressor out of
upx. The decompressor is roughly 200 bytes, and the it compresses
etherboot better than lzhuf does as well. So once I get the code
untangled upx code adapted we will get a small overhead reduction in
the 5.1.x tree over the 5.0 tree.
My 5.1.x todo list looks like:
- Finish boot from disk support.
- Get a multicast test server.
- Generate the list of NIC from a special section in the etherboot
image so config.c only needs to be compiled once.
- Remove the redundancy of having both eth_reset && eth_disable.
- And finally update the drivers after the core has settled down.
Have fun at Linux World.
Eric
|