unicorn/qemu/include
Peter Maydell c44d323359
cpu: Define new cpu_transaction_failed() hook
Currently we have a rather half-baked setup for allowing CPUs to
generate exceptions on accesses to invalid memory: the CPU has a
cpu_unassigned_access() hook which the memory system calls in
unassigned_mem_write() and unassigned_mem_read() if the current_cpu
pointer is non-NULL. This was originally designed before we
implemented the MemTxResult type that allows memory operations to
report a success or failure code, which is why the hook is called
right at the bottom of the memory system. The major problem with
this is that it means that the hook can be called even when the
access was not actually done by the CPU: for instance if the CPU
writes to a DMA engine register which causes the DMA engine to begin
a transaction which has been set up by the guest to operate on
invalid memory then this will casue the CPU to take an exception
incorrectly. Another minor problem is that currently if a device
returns a transaction error then this won't turn into a CPU exception
at all.

The right way to do this is to have allow the CPU to respond
to memory system transaction failures at the point where the
CPU specific code calls into the memory system.

Define a new QOM CPU method and utility function
cpu_transaction_failed() which is called in these cases.
The functionality here overlaps with the existing
cpu_unassigned_access() because individual target CPUs will
need some work to convert them to the new system. When this
transition is complete we can remove the old cpu_unassigned_access()
code.

Backports commit 0dff0939f6fc6a7abd966d4295f06a06d7a01df9 from qemu
2018-03-04 13:11:50 -05:00
..
crypto Drop unused crypto source files 2018-02-17 15:23:57 -05:00
exec memory.h: Move MemTxResult type to memattrs.h 2018-03-04 13:10:47 -05:00
fpu softfloat: define floatx80_round() 2018-03-03 20:57:27 -05:00
hw include/hw/boards.h: Document memory_region_allocate_system_memory() 2018-03-03 22:18:49 -05:00
qapi qnum: add uint type 2018-03-03 18:37:56 -05:00
qemu osdep: Fix ROUND_UP(64-bit, 32-bit) 2018-03-04 01:54:09 -05:00
qom cpu: Define new cpu_transaction_failed() hook 2018-03-04 13:11:50 -05:00
sysemu tcg: add options for enabling MTTCG 2018-03-02 09:25:01 -05:00
config.h import 2015-08-21 15:04:50 +08:00
elf.h fix merge conflicts 2017-03-10 21:04:33 +08:00
glib_compat.h qapi: Improve qobject input visitor error reporting 2018-03-02 12:05:53 -05:00
qemu-common.h tcg: Add EXCP_ATOMIC 2018-02-27 11:57:58 -05:00