qemu/target/s390x
David Hildenbrand 2aea83c672 s390x/tcg: Handle SET FPC AND LOAD FPC 3-bit BFP rounding modes
We already forward the 3 bits correctly in the translation functions. We
also have to handle them properly and check for specification
exceptions.

Setting an invalid rounding mode (BFP only, all DFP rounding modes)
results in a specification exception. Setting unassigned bits in the
fpc, results in a specification exception.

This fixes LOAD FPC (AND SIGNAL), SET FPC (AND SIGNAL). Also for,
SET BFP ROUNDING MODE, 3-bit rounding mode is now explicitly checked.

Note: TCG_CALL_NO_WG is required for sfpc handler, as we now inject
exceptions.

We won't be modeling abscence of the "floating-point extension facility"
for now, not necessary as most take the facility for granted without
checking.

z14 PoP, 9-23, "LOAD FPC"
    When the floating-point extension facility is
    installed, bits 29-31 of the second operand must
    specify a valid BFP rounding mode and bits 6-7,
    14-15, 24, and 28 must be zero; otherwise, a
    specification exception is recognized.

Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20190218122710.23639-9-david@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
2019-03-04 11:49:31 +01:00
..
arch_dump.c compiler: add a sizeof_field() macro 2018-06-27 13:01:40 +01:00
cc_helper.c s390x/tcg: Implement LOAD COUNT TO BLOCK BOUNDARY 2019-03-04 11:49:31 +01:00
cpu_features_def.h s390x/cpumodel: Set up CPU model for AP device support 2018-10-12 11:32:18 +02:00
cpu_features.c s390x/cpumodel: mepochptff: warn when no mepoch and re-align group init 2019-02-18 11:25:43 +01:00
cpu_features.h s390x/cpumodel: enum type S390FeatGroup now gets generated 2018-08-20 14:18:49 +02:00
cpu_models.c QAPI patches for 2019-02-18 2019-02-18 14:23:13 +00:00
cpu_models.h s390x/cpumodel: default enable mepoch for z14 and later 2019-02-18 11:25:43 +01:00
cpu-qom.h target/s390x: change CPU type name to "s390x-cpu" 2017-10-30 08:56:28 +01:00
cpu.c s390x: Fix the confusing contributions-after-2012 license statements 2019-02-18 11:25:43 +01:00
cpu.h s390x: Fix the confusing contributions-after-2012 license statements 2019-02-18 11:25:43 +01:00
crypto_helper.c s390x/tcg: introduce and use s390_program_interrupt() 2017-12-14 17:56:54 +01:00
diag.c s390x: Return specification exception for unimplemented diag 308 subcodes 2019-01-18 11:52:00 +01:00
excp_helper.c s390x/tcg: Save vregs to extended mchk save area 2019-03-04 11:49:31 +01:00
fpu_helper.c s390x/tcg: Handle SET FPC AND LOAD FPC 3-bit BFP rounding modes 2019-03-04 11:49:31 +01:00
gdbstub.c target/s390x: Fix LGPL version in the file header comments 2019-01-30 11:04:02 +01:00
gen-features.c s390x/cpumodel: add z14 GA2 model 2019-02-18 11:25:43 +01:00
helper.c s390x/tcg: Implement LOAD COUNT TO BLOCK BOUNDARY 2019-03-04 11:49:31 +01:00
helper.h s390x/tcg: Handle SET FPC AND LOAD FPC 3-bit BFP rounding modes 2019-03-04 11:49:31 +01:00
insn-data.def s390x/tcg: Implement LOAD COUNT TO BLOCK BOUNDARY 2019-03-04 11:49:31 +01:00
insn-format.def s390x/tcg: RXE has an optional M3 field 2019-03-04 11:49:31 +01:00
int_helper.c target/s390x: Fix LGPL version in the file header comments 2019-01-30 11:04:02 +01:00
internal.h s390x/tcg: Factor out conversion of softfloat exceptions 2019-03-04 11:49:31 +01:00
interrupt.c s390x: move tcg_s390_program_interrupt() into TCG code and mark it noreturn 2018-10-04 10:32:39 +02:00
ioinst.c s390x: handle exceptions during s390_cpu_virt_mem_rw() correctly (TCG) 2017-12-14 17:56:54 +01:00
kvm_s390x.h s390x/tod: factor out TOD into separate device 2018-07-02 10:37:38 +02:00
kvm-stub.c s390x/kvm: pass values instead of pointers to kvm_s390_set_clock_*() 2018-07-02 10:37:38 +02:00
kvm.c s390x/kvm: add tracepoint to ioeventfd interface 2019-02-18 11:25:43 +01:00
machine.c s390x/kvm: add etoken facility 2018-08-20 14:18:49 +02:00
Makefile.objs s390x/tcg: rearm the CKC timer during migration 2018-07-02 10:37:38 +02:00
mem_helper.c target/s390x: Fix LGPL version in the file header comments 2019-01-30 11:04:02 +01:00
misc_helper.c target/s390x: Implement STCK et al for CONFIG_USER_ONLY 2019-02-18 11:25:43 +01:00
mmu_helper.c Make address_space_access_valid() take a MemTxAttrs argument 2018-05-31 16:32:35 +01:00
s390-tod.h target/s390x: Split out s390-tod.h 2019-02-18 11:25:43 +01:00
sigp.c Make address_space_access_valid() take a MemTxAttrs argument 2018-05-31 16:32:35 +01:00
tcg_s390x.h s390x/tcg: factor out and fix DATA exception injection 2018-10-04 10:32:39 +02:00
tcg-stub.c s390x/tcg: factor out and fix DATA exception injection 2018-10-04 10:32:39 +02:00
trace-events s390x/kvm: add tracepoint to ioeventfd interface 2019-02-18 11:25:43 +01:00
translate.c s390x/tcg: Implement LOAD COUNT TO BLOCK BOUNDARY 2019-03-04 11:49:31 +01:00