With the new ABI API the position argument of the pseudo inst ABI was
not updated correctly. The position needs to be incremented (at least)
once per argument.
Note: `position++` must be outside of the function call because of a GCC
complaint:
build/X86/sim/pseudo_inst.hh:80:48: error: cannot bind non-const lvalue
reference of type 'int&' to an rvalue of type 'PseudoInstABI::Position
{aka int}'
return TheISA::getArgument(tc, position++, sizeof(uint64_t),
false);
Issue: https://gem5.atlassian.net/browse/GEM5-351
Change-Id: Idd890a587a565b8ad819f094147a02dc1519e997
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/25543
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
static uint64_t
get(ThreadContext *tc, PseudoInstABI::Position &position)
{
- return TheISA::getArgument(tc, position, sizeof(uint64_t), false);
+ uint64_t result = TheISA::getArgument(tc, position, sizeof(uint64_t),
+ false);
+ position++;
+ return result;
}
};