target/sparc: Factor out the body of sparc_cpu_unassigned_access()
commitc9d793f44620a4793239da73f67758ce5f5ba5d0
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 1 Aug 2019 18:30:06 +0000 (1 19:30 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 17 Sep 2019 11:01:00 +0000 (17 12:01 +0100)
treea0d7f1bdb050d2509a8cbdbb55932004a48f8a81
parent186c0ab9b98d90642f37a629b1ff520cbfd06394
target/sparc: Factor out the body of sparc_cpu_unassigned_access()

Currently the SPARC target uses the old-style do_unassigned_access
hook.  We want to switch it over to do_transaction_failed, but to do
this we must first remove all the direct calls in ldst_helper.c to
cpu_unassigned_access().  Factor out the body of the hook function's
code into a new sparc_raise_mmu_fault() and call it from the hook and
from the various places that used to call cpu_unassigned_access().

In passing, this fixes a bug where the code that raised the
MMU exception was directly calling GETPC() from a function that
was several levels deep in the callstack from the original
helper function: the new sparc_raise_mmu_fault() instead takes
the return address as an argument.

Other than the use of retaddr rather than GETPC() and a comment
format fixup, the body of the new function has no changes from
that of the old hook function.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-id: 20190801183012.17564-2-peter.maydell@linaro.org
target/sparc/ldst_helper.c