tcg/mips: fix broken CONFIG_TCG_PASS_AREG0 code
authorAurelien Jarno <aurelien@aurel32.net>
Mon, 27 Aug 2012 20:13:27 +0000 (22:13 +0200)
committerAurelien Jarno <aurelien@aurel32.net>
Tue, 28 Aug 2012 18:38:39 +0000 (20:38 +0200)
commit18fec301cd2a38f72a5eeba2656a0c5b4fa69fb7
tree3a02c3fdad9339efb4d7789e051c77565c2eccff
parentce6760404851f410d63519084329d54dc216ff93
tcg/mips: fix broken CONFIG_TCG_PASS_AREG0 code

The CONFIG_TCG_PASS_AREG0 code for calling ld/st helpers was
broken in that it did not respect the ABI requirement that 64
bit values were passed in even-odd register pairs. The simplest
way to fix this is to implement some new utility functions
for marshalling function arguments into the correct registers
and stack, so that the code which sets up the address and
data arguments does not need to care whether there has been
a preceding env argument.

Based on commit 9716ef3b for ARM by Peter Maydell.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
tcg/mips/tcg-target.c