unicorn/qemu
Richard Henderson 043d65862a tcg/aarch64: Fix constant subtraction in tcg_out_addsub2
An hppa guest executing

0x000000000000e05c: ldil L%10000,r4
0x000000000000e060: ldo 0(r4),r4
0x000000000000e064: sub r3,r4,sp

produces

---- 000000000000e064 000000000000e068
sub2_i32 tmp0,tmp4,r3,$0x1,$0x10000,$0x0

after folding and constant propagation. Then we hit

tcg-target.c.inc:640: tcg_out_insn_3401: Assertion `aimm <= 0xfff' failed.

because aimm is in fact -16, but unsigned.

The ((bl < 0) ^ sub) condition which negates bl is incorrect and will
always lead to this abort. If the constant is positive, sub will make
it negative; if the constant is negative, sub will keep it negative.

Backports 707b45a2475e25709f0dee00f8fdf39d346ed21e
2021-03-09 13:16:41 -05:00
..
accel qemu/atomic.h: rename atomic_ to qatomic_ 2021-03-08 14:34:35 -05:00
crypto
default-configs target/riscv: Initial introduction of the RISC-V target 2019-03-08 21:46:10 -05:00
docs docs/devel/memory.txt: Document _with_attrs accessors 2018-10-04 04:46:26 -04:00
fpu softfloat: Define misc operations for bfloat16 2021-02-27 16:41:46 -05:00
hw target/arm: Set instance_align on CPUARM TypeInfo 2021-03-01 18:58:44 -05:00
include riscv: spike: Remove target macro conditionals 2021-03-08 15:20:41 -05:00
qapi qapi: Rewrite string-input-visitor's integer and list parsing 2018-12-18 04:57:25 -05:00
qobject qstring: Move qstring_from_substr()'s @end one to the right 2018-08-02 21:24:19 -04:00
qom qemu/atomic.h: rename atomic_ to qatomic_ 2021-03-08 14:34:35 -05:00
scripts decodetree: Open files with encoding='utf-8' 2021-03-04 13:34:08 -05:00
target target/riscv/pmp: Raise exception if no PMP entry is configured 2021-03-08 15:39:55 -05:00
tcg tcg/aarch64: Fix constant subtraction in tcg_out_addsub2 2021-03-09 13:16:41 -05:00
util qemu/atomic.h: rename atomic_ to qatomic_ 2021-03-08 14:34:35 -05:00
aarch64.h target/arm: Speed up aarch64 TBL/TBX 2021-03-08 11:31:24 -05:00
aarch64eb.h target/arm: Speed up aarch64 TBL/TBX 2021-03-08 11:31:24 -05:00
accel.c target/arm: Set instance_align on CPUARM TypeInfo 2021-03-01 18:58:44 -05:00
arm.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00
armeb.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00
CODING_STYLE.rst docs: split the CODING_STYLE doc into distinct groups 2019-11-28 02:54:44 -05:00
configure configure: Support -static-pie if requested 2020-04-30 07:09:34 -04:00
COPYING
COPYING.LIB
cpus.c qemu/atomic.h: rename atomic_ to qatomic_ 2021-03-08 14:34:35 -05:00
exec.c qemu/atomic.h: rename atomic_ to qatomic_ 2021-03-08 14:34:35 -05:00
gen_all_header.sh
glib_compat.c tcg: Introduce TYPE_CONST temporaries 2021-03-03 21:29:40 -05:00
header_gen.py target/riscv/pmp: Raise exception if no PMP entry is configured 2021-03-08 15:39:55 -05:00
ioport.c
LICENSE
m68k.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00
Makefile Makefile: Rename targets for make recursion 2019-08-08 17:26:49 -04:00
Makefile.objs
Makefile.target configure: Remove old -fno-gcse workaround for GCC 4.6.x and 4.7.[012] 2018-12-18 03:52:36 -05:00
memory.c qemu/atomic.h: rename atomic_ to qatomic_ 2021-03-08 14:34:35 -05:00
memory_ldst.inc.c memory: Single byte swap along the I/O path 2020-01-07 19:12:04 -05:00
memory_mapping.c
mips.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00
mips64.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00
mips64el.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00
mipsel.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00
powerpc.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00
qemu-timer.c
riscv32.h target/riscv/pmp: Raise exception if no PMP entry is configured 2021-03-08 15:39:55 -05:00
riscv64.h target/riscv/pmp: Raise exception if no PMP entry is configured 2021-03-08 15:39:55 -05:00
rules.mak
sparc.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00
sparc64.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00
unicorn_common.h tcg: Move sorted_args into TCGArgConstraint.sort_index 2021-03-01 19:33:45 -05:00
VERSION Open 6.0 development tree 2021-03-02 13:39:05 -05:00
vl.c
vl.h
x86_64.h qemu/compiler: Split out qemu_build_not_reached_always 2021-03-04 15:23:27 -05:00