On 07/15/2015 08:26 AM, Paolo Bonzini wrote: > The register allocator may sometimes pass a 64-bit value to a 32-bit > operation if truncations are considered no-ops by the backend. > When this happens, user-mode emulation may use an incorrect offset > for loads and stores. This affects aarch64 and x86, because other > architectures already zero-extend the offset before using it for a > load or store. > > To fix this for aarch64, use the uxtw modifier on load and store > instructions. > > Paolo > > Paolo Bonzini (2): > tcg: aarch64: add ext argument to tcg_out_insn_3310 > tcg: aarch64: use 32-bit offset for 32-bit user-mode emulation > > tcg/aarch64/tcg-target.c | 63 > +++++++++++++++++++++++++++--------------------- > 1 file changed, 36 insertions(+), 27 deletions(-) >
Applied to tcg-for-2.4. r~