|
From: | Richard Henderson |
Subject: | Re: [Qemu-devel] [PATCH] tcg/aarch64: Fix tcg_out_qemu_{ld, st} for linux-user |
Date: | Thu, 27 Aug 2015 21:30:04 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.1.0 |
On 08/27/2015 04:47 PM, Andreas Färber wrote:
The argument order for the !CONFIG_SOFTMMU case was jumbled up since ffc6372851d8631a9f9fa56ec613b3244dc635b9 ("tcg/aarch64: use 32-bit offset for 32-bit user-mode emulation"), regressing from -rc2 to v2.4.0. Fix their order to avoid segfaults, e.g., in openSUSE's GNU coreutils 8.24.
Nack. The argument order is correct, that is...
- tcg_out_qemu_ld_direct(s, memop, ext, data_reg, - guest_base ? TCG_REG_GUEST_BASE : TCG_REG_XZR, - otype, addr_reg); + tcg_out_qemu_ld_direct(s, memop, ext, data_reg, addr_reg, otype, + guest_base ? TCG_REG_GUEST_BASE : TCG_REG_XZR);
TCG_REG_GUEST_BASE is definitely the "base" register, holding a 64-bit host address, while addr_reg is the "offset" register, holding a (potentially) 32-bit guest address. It is (supposed to be) the "offset" register to which the zero-extend is applied.
If something's wrong, and I'm not currently in a position to verify one way or another, it's in tcg_out_insn_3310.
r~
[Prev in Thread] | Current Thread | [Next in Thread] |