Ronald G Minnich rminnich@lanl.gov writes:
So upx is definitely worth it, right?
Yes. It is much easier to put in lots of microcode updates and things. And we have lots of strings.
It is a very maintainable solution.
Unless I misread it the decompressor is assembly.
And fits on one screen. See also util/nrv2b which has the C compressor decompressor. I put it in crt0.base in my tree
The data structures are all heavily tuned so you can have a very small and simple assembly decopressor. And I think you can dig non-x86 ports out of the main upx tree.
We have a PPC port going on. I do see the 2-1 compression but in 256KB we have oodles of room (with etherboot), so I'm just trying to make sure the added complexity in the build is something we want.
Except for the decompression step all I did was clearly seperate the code that can assume it has ram, from the painful assemly include, execute from rom code that gets us there.
It actually reduces complexity in several places in the linker script, as we don't have to tell the linker put the code here, but actually set it up so it executes there.
As for size for the longest time it has been my goal to keep linuxbios small enough that I can fit LinuxBIOS and etherboot into 64KB. We are quickly going from being the overly large solution to a solution for a smaller BIOS. And if we can do it why not?
Is it easily turned off?
Yes. You do a memcpy instead of decompression. I just haven't had time to write the code to make it conditional yet.
thanks
ron p.s. I know I promised not to distract you, sorry :-)
So long as I don't have to do the merger a little distraction now and again is o.k. And getting some discussion and code review going over my code is probably a good side benefit.
Eric