On Wed, Oct 02, 2013 at 09:38:41PM -0400, Kevin O'Connor wrote:
This series converts the AHCI driver to run entirely in 32bit mode. Currently, ahci will only jump into 32bit mode when it needs to access the ahci device's PCI config space. However, if the code has to run anything in 32bit mode, it might as well run it all in 32bit mode. Doing this also shrinks the total SeaBIOS code size by a few KB.
In order for this to work, SeaBIOS needs to be able to transition from 32bit mode back to 16bit mode in order to use yield(). This requires tracking the stack segment when using call32() and restoring it if call16() is later called. It also requires getting off the "extra stack" if it is in use.
This series is a little bit uglier than I hoped, but I'm sending it out for further comments.
FYI, I have pushed this series.
-Kevin