cputlb: Support generating CPU exceptions on memory transaction failures
commit04e3aabde397e7abc78ba1ce6cbd144d5fbb1722
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 4 Sep 2017 14:21:55 +0000 (4 15:21 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 4 Sep 2017 14:21:55 +0000 (4 15:21 +0100)
treebdf47977741bda0a87c10cd182bf896da8d95f35
parent0dff0939f6fc6a7abd966d4295f06a06d7a01df9
cputlb: Support generating CPU exceptions on memory transaction failures

Call the new cpu_transaction_failed() hook at the places where
CPU generated code interacts with the memory system:
 io_readx()
 io_writex()
 get_page_addr_code()

Any access from C code (eg via cpu_physical_memory_rw(),
address_space_rw(), ld/st_*_phys()) will *not* trigger CPU exceptions
via cpu_transaction_failed().  Handling for transactions failures for
this kind of call should be done by using a function which returns a
MemTxResult and treating the failure case appropriately in the
calling code.

In an ideal world we would not generate CPU exceptions for
instruction fetch failures in get_page_addr_code() but instead wait
until the code translation process tried a load and it failed;
however that change would require too great a restructuring and
redesign to attempt at this point.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
accel/tcg/cputlb.c
softmmu_template.h