xemu/target-s390x
David Hildenbrand b60fae32ff s390x/kvm: 2 byte software breakpoint support
Diag 501 (4 bytes) was used until now for software breakpoints on s390.
As instructions on s390 might be 2 bytes long, temporarily overwriting them
with 4 bytes is evil and can result in very strange guest behaviour.

We make use of invalid instruction 0x0000 as new sw breakpoint instruction.
We have to enable interception of that instruction in KVM using a
capability.

If no software breakpoint has been inserted at the reported position, an
operation exception has to be injected into the guest. Otherwise a
breakpoint has been hit and the pc has to be rewound.

If KVM doesn't yet support interception of instruction 0x0000 the
existing mechanism exploiting diag 501 is used. To keep overhead low,
interception of instruction 0x0000 will only be enabled if sw breakpoints
are really used.

Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
2016-09-05 15:15:16 +02:00
..
arch_dump.c s390: Clean up includes 2016-01-29 15:07:22 +00:00
cc_helper.c cpu: move exec-all.h inclusion out of cpu.h 2016-05-19 16:42:29 +02:00
cpu-qom.h target-s390x: make cpu-qom.h not target specific 2016-05-19 16:41:34 +02:00
cpu.c cpu: move exec-all.h inclusion out of cpu.h 2016-05-19 16:42:29 +02:00
cpu.h s390x/kvm: 2 byte software breakpoint support 2016-09-05 15:15:16 +02:00
fpu_helper.c softfloat: Implement run-time-configurable meaning of signaling NaN bit 2016-06-24 13:40:37 +01:00
gdbstub.c cpu: move exec-all.h inclusion out of cpu.h 2016-05-19 16:42:29 +02:00
helper.c coccinelle: Remove unnecessary variables for function return value 2016-06-20 16:38:13 +02:00
helper.h softfloat: Implement run-time-configurable meaning of signaling NaN bit 2016-06-24 13:40:37 +01:00
insn-data.def target-s390x: wire up I/O instructions in TCG mode 2015-06-17 12:40:50 +02:00
insn-format.def target-s390: Add format based disassassmbly infrastructure 2013-01-05 12:00:27 -08:00
int_helper.c cpu: move exec-all.h inclusion out of cpu.h 2016-05-19 16:42:29 +02:00
interrupt.c s390x: reorganize CSS bits between cpu.h and other headers 2016-05-19 16:42:28 +02:00
ioinst.c s390x/ioinst: advertise fcs facility 2016-09-05 15:15:16 +02:00
kvm.c s390x/kvm: 2 byte software breakpoint support 2016-09-05 15:15:16 +02:00
machine.c s390x: move .needed functions for subsections to machine.c 2016-05-19 13:07:34 +02:00
Makefile.objs s390x/mmu: Move mmu_translate() and friends to separate file 2015-02-18 09:36:38 +01:00
mem_helper.c Fix confusing argument names in some common functions 2016-07-12 13:06:08 +01:00
misc_helper.c cpu: move exec-all.h inclusion out of cpu.h 2016-05-19 16:42:29 +02:00
mmu_helper.c s390x: fix debug statement in trigger_page_fault() 2016-03-01 12:15:28 +01:00
trace-events trace-events: fix first line comment in trace-events 2016-08-12 10:36:01 +01:00
translate.c softfloat: Implement run-time-configurable meaning of signaling NaN bit 2016-06-24 13:40:37 +01:00