qemu/target-s390x
Torbjorn Granlund 9ef1473693 target-s390x: fix and optimize slb* and slbg* computation of carry/borrow flag
This patch fixes the bug with borrow_in being set incorrectly, but it
also simplifies the logic to be much more plain, improving speed.  It
fixes both the 32-bit SLB* and 64-bit SLBG*.

The SLBG* change has been well-tested.  I haven't tested the SLB* change
explicitly, but the code was copy-pasted from the tested code.

The error of these functions' current implementations would not likely
be triggered by compiler-generated code, since the only error was in the
state of the carry/borrow flag.  Compilers rarely generate an
instruction sequence such as carry-set -> carry-set-and-use ->
carry-use.

(With Paolo's fix and mine, there are still a couple of failures from
GMP's testsuite, but they are almost surely due to incorrect code
generation from gcc 4.9.  But since this gcc is running under qemu, it
might be qemu bugs.  I intend to investigate this.)

Signed-off-by: Torbjorn Granlund <torbjorng@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
2015-02-03 12:27:05 -08:00
..
arch_dump.c target-s390x: Add missing 'static' and 'const' attributes 2014-03-27 19:22:48 +04:00
cc_helper.c target-s390x: fix and optimize slb* and slbg* computation of carry/borrow flag 2015-02-03 12:27:05 -08:00
cpu-qom.h s390x/migration: migrate CPU state 2014-10-10 13:31:51 +02:00
cpu.c s390x/migration: migrate CPU state 2014-10-10 13:31:51 +02:00
cpu.h target-s390: Fix STIDP 2015-02-03 12:06:37 -08:00
fpu_helper.c softmmu: introduce cpu_ldst.h 2014-06-05 16:10:33 +02:00
gdbstub.c s390x/gdb: coding style fixes 2014-09-01 09:45:19 +02:00
helper.c qemu-log: add log category for MMU info 2014-12-16 18:43:19 +00:00
helper.h target-s390: Implement LURA, LURAG, STURG 2015-02-03 12:06:37 -08:00
insn-data.def target-s390: Implement ECAG 2015-02-03 12:06:37 -08:00
insn-format.def target-s390: Add format based disassassmbly infrastructure 2013-01-05 12:00:27 -08:00
int_helper.c tcg: Invert the inclusion of helper.h 2014-05-28 09:33:54 -07:00
interrupt.c s390x: Fix sclp console input 2014-11-05 12:01:28 +01:00
ioinst.c s390: Add PCI bus support 2015-01-12 10:14:04 +01:00
ioinst.h s390: Add PCI bus support 2015-01-12 10:14:04 +01:00
kvm.c kvm: extend kvm_irqchip_add_msi_route to work on s390 2015-01-12 10:14:04 +01:00
machine.c s390x/migration: migrate CPU state 2014-10-10 13:31:51 +02:00
Makefile.objs s390x/migration: migrate CPU state 2014-10-10 13:31:51 +02:00
mem_helper.c target-s390x: support OC and NC in the EX instruction 2015-02-03 12:27:05 -08:00
misc_helper.c s390x/kvm: run guest triggered resets on the target vcpu thread 2014-09-01 09:23:02 +02:00
translate.c target-s390x: Mark check_privileged() as !CONFIG_USER_ONLY 2015-02-03 12:25:48 -08:00