diff options
author | Richard Henderson <rth@twiddle.net> | 2015-05-29 09:16:51 -0700 |
---|---|---|
committer | Richard Henderson <rth@twiddle.net> | 2015-06-09 06:35:29 -0700 |
commit | 2b7ec66f025263a5331f37d5ad78a625496fd7bd (patch) | |
tree | 4aff7cbedd37871e0a9d5ba3548de92a65234ce9 /tcg/i386 | |
parent | 44ee94e4862603c2b1b21718effc5f17b39f43bc (diff) | |
download | qemu-2b7ec66f025263a5331f37d5ad78a625496fd7bd.zip qemu-2b7ec66f025263a5331f37d5ad78a625496fd7bd.tar.gz qemu-2b7ec66f025263a5331f37d5ad78a625496fd7bd.tar.bz2 |
tcg: Mask TCGMemOp appropriately for indexing
The addition of MO_AMASK means that places that used inverted masks
need to be changed to use positive masks, and places that failed to
mask the intended bits need updating.
Reviewed-by: Yongbok Kim <yongbok.kim@imgtec.com>
Tested-by: Yongbok Kim <yongbok.kim@imgtec.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'tcg/i386')
-rw-r--r-- | tcg/i386/tcg-target.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c index 2e4bf52..ff4d9cf 100644 --- a/tcg/i386/tcg-target.c +++ b/tcg/i386/tcg-target.c @@ -1307,7 +1307,7 @@ static void tcg_out_qemu_ld_slow_path(TCGContext *s, TCGLabelQemuLdst *l) (uintptr_t)l->raddr); } - tcg_out_call(s, qemu_ld_helpers[opc & ~MO_SIGN]); + tcg_out_call(s, qemu_ld_helpers[opc & (MO_BSWAP | MO_SIZE)]); data_reg = l->datalo_reg; switch (opc & MO_SSIZE) { @@ -1413,7 +1413,7 @@ static void tcg_out_qemu_st_slow_path(TCGContext *s, TCGLabelQemuLdst *l) /* "Tail call" to the helper, with the return address back inline. */ tcg_out_push(s, retaddr); - tcg_out_jmp(s, qemu_st_helpers[opc]); + tcg_out_jmp(s, qemu_st_helpers[opc & (MO_BSWAP | MO_SIZE)]); } #elif defined(__x86_64__) && defined(__linux__) # include <asm/prctl.h> |