qemu-e2k/target-ppc
Thomas Huth 537d3e8e6b ppc: Fix the bad exception NIP value and the range check in LSWX
The range checks in the LSWX instruction are completely insufficient:
They do not take the wrap-around case into account, and the check
"reg < rx" should be "reg <= rx" instead. Fix it by using the new
lsw_reg_in_range() helper function that is already used for LSWI, too.

Then there is a second problem: In case the INVAL exception is generated,
the NIP value is wrong, it currently points to the instruction before
the LSWX instruction. This is because gen_lswx() already decreases the
NIP value by 4 (to be prepared for page fault exceptions), and
powerpc_excp() later decreases it again by 4 while handling the program
exception. So to get this right, we've got to undo the "- 4" from
gen_lswx() here before calling helper_raise_exception_err().

Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2016-04-18 15:14:38 +10:00
..
arch_dump.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
cpu-models.c target-ppc: Add PVR for POWER8NVL processor 2016-03-16 09:55:05 +11:00
cpu-models.h target-ppc: Add PVR for POWER8NVL processor 2016-03-16 09:55:05 +11:00
cpu-qom.h dump: qemunotes aren't commonly needed 2016-01-15 14:40:24 +00:00
cpu.h ppc: Fix the range check in the LSWI instruction 2016-04-18 15:14:38 +10:00
dfp_helper.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
excp_helper.c ppc: Rework POWER7 & POWER8 exception model 2016-04-05 10:38:24 +10:00
fpu_helper.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
gdbstub.c target-ppc: rename and export maybe_bswap_register() 2016-01-30 23:37:37 +11:00
helper_regs.h PPC: Only enter MSR_POW when no interrupts pending 2014-04-08 11:20:05 +02:00
helper.h target-ppc: Split 44x tlbiva from ppc_tlb_invalidate_one() 2016-01-30 23:49:26 +11:00
int_helper.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
kvm_ppc.h target-ppc: Add helpers for updating a CPU's SDR1 and external HPT 2016-03-16 09:55:06 +11:00
kvm-stub.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
kvm.c * Log filtering from Alex and Peter 2016-03-24 21:42:40 +00:00
machine.c target-ppc: Rework SLB page size lookup 2016-01-30 23:37:38 +11:00
Makefile.objs kvm_ppc: remove kvmppc_timer_hack 2015-09-20 22:48:38 +02:00
mem_helper.c ppc: Fix the bad exception NIP value and the range check in LSWX 2016-04-18 15:14:38 +10:00
mfrom_table_gen.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
mfrom_table.c
misc_helper.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
mmu_helper.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
mmu-hash32.c log: do not unnecessarily include qom/cpu.h 2016-02-03 09:19:10 +00:00
mmu-hash32.h target-ppc: Convert mmu-hash{32,64}.[ch] from CPUPPCState to PowerPCCPU 2016-01-30 23:37:38 +11:00
mmu-hash64.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
mmu-hash64.h target-ppc: Eliminate kvmppc_kern_htab global 2016-03-16 09:55:06 +11:00
monitor.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
STATUS target-ppc: remove powerpc 970gx 2014-03-05 03:06:23 +01:00
timebase_helper.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00
translate_init.c ppc: Rework POWER7 & POWER8 exception model 2016-04-05 10:38:24 +10:00
translate.c ppc: Fix the range check in the LSWI instruction 2016-04-18 15:14:38 +10:00
user_only_helper.c ppc: Clean up includes 2016-01-29 15:07:22 +00:00