armv7a: re-read ttb information if ttbcr changes
authorMatthias Welwarsky <matthias@welwarsky.de>
Wed, 7 Oct 2015 20:38:31 +0000 (22:38 +0200)
committerFreddie Chopin <freddie.chopin@gmail.com>
Thu, 5 Nov 2015 22:27:36 +0000 (22:27 +0000)
commit411ca773f01eac35c64d48dc396138c7a314fba9
tree5191da76191217dbc58edff068783bb8c0ac8e05
parentfad64c618025ea96be585b0900bd70c2e5a8713a
armv7a: re-read ttb information if ttbcr changes

If ttbcr is changed after the debugger has examined a target for the
first time, address translations may fail. This problem does not show up
with Linux because it doesn't use ttbr1, but it shows with other OS that
use this feature. If the debugger connects to the target while it's in
u-boot, all address translations will fail after the OS has booted and
the target can not be debugged.

This patch reads the ttbcr in armv7a_mmu_translate_va() and compares it
a cached value. If a difference is detected, armv7a_read_ttbcr() is called
to re-parse the ttb configuration and update the cache.

Change-Id: I1c3adf53ea9d748a0e1e3091d9581e5c43ed64e8
Signed-off-by: Matthias Welwarsky <matthias@welwarsky.de>
Reviewed-on: http://openocd.zylin.com/3005
Tested-by: jenkins
Reviewed-by: Freddie Chopin <freddie.chopin@gmail.com>
src/target/armv7a.c
src/target/armv7a.h