On 05/10/16 19:36, Richard W.M. Jones wrote: > On Tue, May 10, 2016 at 07:24:28PM +0200, Paolo Bonzini wrote: >> >> >> On 09/05/2016 18:48, Richard W.M. Jones wrote: >>> >>> Of course we're well outside any standards here. Can we tell clang >>> users to use the GCC/pre-compiled option ROMs :-? Any other ideas? I >>> don't think I've missed a flag (GCC has -fno-toplevel-reorder, but >>> clang 3.8 doesn't ...) >> >> I guess the checksumming script (scripts/signrom.py) could take care of >> padding the file to a multiple of 512 bytes, and fill in the size in the >> third byte. Then "_end" would not be necessary anymore and -m16 could >> replace the .code16 directive. > > In my rather limited testing on gcc, gcc -m16 broke booting. However > I've not investigated this further. I'll do so shortly. > > However I have a question: is there a formal standard or documentation > for the option ROM format? Are we sticking to the (ancient) "BIOS Boot > Specification" or is there something newer? (My copy is from 1996).
To my knowledge, the most recent specification that describes PCI expansion ROMs is: PCI Firmware Specification Revision 3.2 January 26, 2015 See Chapter 5, "PCI Expansion ROMs". (Maybe a newer release has been made, not sure.) Of course, this spec is not public (you have to be a PCI SIG member to get it, or some such, which costs $$$), but since Red Hat is a member, I'll send you a link off-list (and you can't share the PDF outside of RH, of course). Regarding general (device independent) oproms: I'm not sure. Thanks Laszlo
