[SeaBIOS] [PATCH] Use an aligned stack offset when entering on the extra stack

Kevin O'Connor kevin at koconnor.net
Wed Nov 12 18:21:28 CET 2014


On Wed, Nov 05, 2014 at 09:23:12AM -0500, Kevin O'Connor wrote:
> The size of 'struct bregs' is not evenly divisible by four and where
> the assembler placed a 'struct bregs' on the extra stack as part of
> entering into the C functions it caused the C functions to run with a
> non-aligned stack.  It's technically not correct to use an unaligned
> stack and it is certainly less efficient.
> 
> This patch avoids using BREGS_size (the sizeof struct bregs) and
> instead introduces PUSHBREGS_size (the size of the general purpose
> registers in struct bregs) in the assembler.  Where the code actually
> did use the %cs:%ip and flags, an extra 8 (instead of 6) bytes are
> added to maintain a sane alignment.

FYI, I have pushed this patch to the main seabios repo.

-Kevin



More information about the SeaBIOS mailing list