unicorn/qemu
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 crypto: Clean up includes 2018-02-19 00:47:40 -05:00
default-configs
docs
fpu softfloat: define floatx80_round() 2018-03-03 20:57:27 -05:00
hw i386: Remove AMD feature flag aliases from Opteron models 2018-03-01 23:49:04 -05:00
include cpu: Define new cpu_transaction_failed() hook 2018-03-04 13:11:50 -05:00
qapi qapi: add explicit null to string input and output visitors 2018-03-03 20:32:50 -05:00
qobject qnum: add uint type 2018-03-03 18:37:56 -05:00
qom cpu: cpu_by_arch_id() helper 2018-03-04 12:16:39 -05:00
scripts scripts: use build_ prefix for string not piped through cgen() 2018-03-03 22:11:28 -05:00
target target/arm: Create and use new function arm_v7m_is_handler_mode() 2018-03-04 13:06:45 -05:00
tcg tcg: Increase minimum alignment from tcg_malloc to 8 2018-03-04 01:36:59 -05:00
util util/cacheinfo: Add missing include for ppc linux 2018-03-03 23:05:44 -05:00
aarch64.h memory: Rename memory_region_init_rom() and _rom_device() to _nomigrate() 2018-03-03 22:29:01 -05:00
aarch64eb.h memory: Rename memory_region_init_rom() and _rom_device() to _nomigrate() 2018-03-03 22:29:01 -05:00
accel.c clean-up: removed duplicate #includes 2018-02-28 08:51:56 -05:00
arm.h memory: Rename memory_region_init_rom() and _rom_device() to _nomigrate() 2018-03-03 22:29:01 -05:00
armeb.h memory: Rename memory_region_init_rom() and _rom_device() to _nomigrate() 2018-03-03 22:29:01 -05:00
atomic_template.h tcg: Add atomic128 helpers 2018-02-27 21:43:48 -05:00
CODING_STYLE
configure build: add -Wexpansion-to-defined 2018-03-03 22:12:31 -05:00
COPYING
COPYING.LIB
cpu-exec-common.c tcg: Add EXCP_ATOMIC 2018-02-27 11:57:58 -05:00
cpu-exec.c tcg: Introduce goto_ptr opcode and tcg_gen_lookup_and_goto_ptr 2018-03-02 21:05:18 -05:00
cpus.c tcg: handle EXCP_ATOMIC exception for system emulation 2018-03-02 09:56:43 -05:00
cputlb.c tcg: consistently access cpu->tb_jmp_cache atomically 2018-03-03 21:12:36 -05:00
exec.c memory: Open code FlatView rendering 2018-03-04 02:06:48 -05:00
gen_all_header.sh
glib_compat.c qapi: Improve qobject input visitor error reporting 2018-03-02 12:05:53 -05:00
HACKING
header_gen.py target/mips: Add segmentation control registers 2018-03-04 01:00:42 -05:00
ioport.c hw: remove pio_addr_t 2018-02-24 02:43:16 -05:00
LICENSE
m68k.h memory: Rename memory_region_init_rom() and _rom_device() to _nomigrate() 2018-03-03 22:29:01 -05:00
Makefile Makefile: Add a FORCE target 2018-02-24 17:03:51 -05:00
Makefile.objs tcg: Add atomic helpers 2018-02-27 15:57:47 -05:00
Makefile.target tcg: add the CONFIG_TCG into Makefiles 2018-03-03 21:39:30 -05:00
memory.c memory: Move FlatView allocation to a helper 2018-03-04 02:08:37 -05:00
memory_ldst.inc.c exec: introduce memory_ldst.inc.c 2018-03-01 09:59:34 -05:00
memory_mapping.c include/qemu/osdep.h: Don't include qapi/error.h 2018-02-21 23:08:18 -05:00
mips.h target/mips: Add segmentation control registers 2018-03-04 01:00:42 -05:00
mips64.h target/mips: Add segmentation control registers 2018-03-04 01:00:42 -05:00
mips64el.h target/mips: Add segmentation control registers 2018-03-04 01:00:42 -05:00
mipsel.h target/mips: Add segmentation control registers 2018-03-04 01:00:42 -05:00
powerpc.h memory: Rename memory_region_init_rom() and _rom_device() to _nomigrate() 2018-03-03 22:29:01 -05:00
qapi-schema.json qapi: Update scripts to commit 01b2ffcedd94ad7b42bc870e4c6936c87ad03429 2018-03-03 18:32:12 -05:00
qemu-timer.c timer/cpus: fix some typos and update some comments 2018-02-25 23:21:57 -05:00
rules.mak rules.mak: Don't extract libs from .mo-libs in link command 2018-02-26 02:08:03 -05:00
softmmu_template.h cputlb: Remove includes from softmmu_template.h 2018-02-27 12:40:43 -05:00
sparc.h memory: Rename memory_region_init_rom() and _rom_device() to _nomigrate() 2018-03-03 22:29:01 -05:00
sparc64.h memory: Rename memory_region_init_rom() and _rom_device() to _nomigrate() 2018-03-03 22:29:01 -05:00
tcg-runtime.c tcg: Increase hit rate of lookup_tb_ptr 2018-03-03 17:16:23 -05:00
translate-all.c tcg: Pass generic CPUState to gen_intermediate_code() 2018-03-03 23:34:18 -05:00
translate-all.h translate-all.c: Compute L1 page table properties at runtime 2018-02-26 11:46:58 -05:00
translate-common.c exec: Clean up includes 2018-02-19 00:49:55 -05:00
unicorn_common.h qom/cpu: Add MemoryRegion property 2018-02-18 21:54:50 -05:00
VERSION
vl.c util: add cacheinfo 2018-03-03 16:58:28 -05:00
vl.h
x86_64.h memory: Rename memory_region_init_rom() and _rom_device() to _nomigrate() 2018-03-03 22:29:01 -05:00