The O64 ABI is almost identical to the classic 32-bit MIPS ABI. The differences are enumerated below.
all arguments beginning withvoid f() { g(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); }
5
are passed on the stack.
The argument 6
is placed 8 bytes beyond argument
5
-- not 4 bytes as it would be in 32-bit mode.
In little-endian mode, arguments are packed towards the
lower-address side of the 8-byte slot; in big-endian mode, they are
packed towards the upper-address side.
$f12
and
$f14
. If the first is a 32-bit value and the second is a
64-bit value, they are passed in $f12
and
$f13
. If they are both 64-bit values, they are passed in
$f12
and $f13
.
e_flags
field in the ELF header for object files generated
using this ABI contains E_MIPS_ABI_O64
, which has the value
0x2000
.
Copyright (C) Free Software Foundation, Inc. Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
These pages are maintained by the GCC team. Last modified 2022-10-26.