target/sparc: Correctly handle bus errors in page table walks
authorPeter Maydell <peter.maydell@linaro.org>
Thu, 1 Aug 2019 18:30:09 +0000 (19:30 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 17 Sep 2019 11:01:00 +0000 (12:01 +0100)
commit3c818dfcc271f5ba298b06f33466ab30f9a28349
tree3e144218504ceeec4c1cf8123a996a69239b276c
parent776095d3cd751a58469b68f652c1ab6785f63652
target/sparc: Correctly handle bus errors in page table walks

Currently we use the ldl_phys() function to read page table entries.
With the unassigned_access hook in place, if these hit an unassigned
area of memory then the hook will cause us to wrongly generate
an exception with a fault address matching the address of the
page table entry.

Change to using address_space_ldl() so we can detect and correctly
handle bus errors and give them their correct behaviour of
causing a translation error with a suitable fault status register.

Note that this won't actually take effect until we switch the
over to using the do_translation_failed hook.

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-5-peter.maydell@linaro.org
target/sparc/mmu_helper.c