]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[librm] Use explicit operand size when pushing a label address 1036/head
authorMichael Brown <mcb30@ipxe.org>
Tue, 5 Sep 2023 11:46:39 +0000 (12:46 +0100)
committerMichael Brown <mcb30@ipxe.org>
Tue, 5 Sep 2023 11:47:42 +0000 (12:47 +0100)
commit0aa2e4ec963597794dd8f8b36f77f4d0cf4e03c8
tree1b1f208e21d08f16f071a5ca6fe42f21af3fa7cb
parent9e99a55b317f5da66f5110891b154084b337a031
[librm] Use explicit operand size when pushing a label address

We currently use "push $1f" within inline assembly to push the address
of the real-mode code fragment, relying on the assembler to treat this
as "pushl" for 32-bit code or "pushq" for 64-bit code.

As of binutils commit 5cc0077 ("x86: further adjust extend-to-32bit-
address conditions"), first included in binutils-2.41, this implicit
operand size is no longer calculated as expected and 64-bit builds
will fail with

  Error: operand size mismatch for `push'

Fix by adding an explicit operand size to the "push" instruction.

Originally-fixed-by: Justin Cano <jstncno@gmail.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/arch/x86/include/librm.h