tcg/s390: fix ld/st with CONFIG_TCG_PASS_AREG0
authorAurelien Jarno <aurelien@aurel32.net>
Sat, 8 Sep 2012 03:45:43 +0000 (03:45 +0000)
committerAlexander Graf <agraf@suse.de>
Mon, 10 Sep 2012 11:38:33 +0000 (13:38 +0200)
commit6845df48cec9cc6833429942b3ceed333a791119
tree029b48d677d0f3f078315d528a2d2672fe5dd995
parent19b0516fb4fd22b08c6ee42ea4162aaf3b9c8ee1
tcg/s390: fix ld/st with CONFIG_TCG_PASS_AREG0

The load/store slow path has been broken in e141ab52d:
- We need to move 4 registers for store functions and 3 registers for
  load functions and not the reverse.
- According to the s390x calling convention the arguments of a function
  should be zero extended. This means that the register shift should be
  done with TCG_TYPE_I64 to ensure the higher word is correctly zero
  extended when needed.

I am aware that CONFIG_TCG_PASS_AREG0 is being removed and thus that
this patch can be improved, but doing so means it can also be applied to
the 1.1 and 1.2 stable branches.

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Alexander Graf <agraf@suse.de>
tcg/s390/tcg-target.c