openocd/src
Antonio Borneo 020e46d186 arm_adi_v5: fix access to 64-bit MEM-AP
Commit ac22cdc573 ("target/adiv5: Large Physical Address
Extension") reads the register MEM_AP_REG_CFG and keeps it in a
new field of struct adiv5_ap. The test on LE bit (Large Extension)
is used to identify if mem_ap addresses are 32 or 64 bits.
But the register MEM_AP_REG_CFG is only read during mem_ap_init(),
that is called only when the AP is used as a target debug AP or if
a target mem_ap is attached to that AP.

The openocd commands '<dapname> baseaddr', '<dapname> info' and
'dap info' can be executed on AP that has not been associated yet
to a target, thus executed without any knowledge of MEM_AP_REG_CFG
value. The initialization to ADI_BAD_CFG causes openocd to always
use 32 bit mode on un-associated APs.

Verify if MEM_AP_REG_CFG has not been read and eventually read it.
In case of 32 bits mode AP, MEM_AP_REG_BASE64 is defined as 'RES0'
(reserved, but readable); the code can queue both the read of
MEM_AP_REG_CFG and MEM_AP_REG_BASE64, before knowing if the former
is required. This speeds-up the operation.
Rename ADI_BAD_CFG as MEM_AP_REG_CFG_INVALID.

Change-Id: If3bbd792b56a483022c37ccc2ce82b5ba5c36caa
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Fixes: ac22cdc573 ("target/adiv5: Large Physical Address Extension")
Reviewed-on: http://openocd.zylin.com/6412
Tested-by: jenkins
Reviewed-by: Daniel Goehring <dgoehrin@os.amperecomputing.com>
2021-08-14 13:30:35 +01:00
..
flash helper/align.h: use it 2021-08-14 13:29:50 +01:00
helper helper: add align.h 2021-08-14 13:29:43 +01:00
jtag drivers/cmsis-dap: update for newest protocol version 2021-07-31 10:08:24 +01:00
pld openocd: fix simple cases of NULL comparison 2021-07-24 10:37:49 +01:00
rtos rtos: add debug prints for qSymbol lookup 2021-08-14 13:29:06 +01:00
rtt openocd: fix doxygen parameters of functions 2021-01-13 11:33:53 +00:00
server Call poll at a fixed interval. 2021-07-31 10:08:47 +01:00
svf openocd: fix Yoda conditions with checkpatch 2021-07-24 10:38:31 +01:00
target arm_adi_v5: fix access to 64-bit MEM-AP 2021-08-14 13:30:35 +01:00
transport openocd: remove NULL comparisons with checkpatch [1/2] 2021-07-24 10:38:00 +01:00
xsvf openocd: fix simple cases of NULL comparison 2021-07-24 10:37:49 +01:00
hello.c openocd: fix simple cases of Yoda condition 2021-07-20 14:55:24 +01:00
hello.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00
main.c Cleanup of config/includes. 2021-05-01 14:35:09 +01:00
Makefile.am build: Fix out-of-tree with --disable-dependency-tracking configure flag 2021-04-05 23:24:14 +01:00
openocd.c openocd: remove NULL comparisons with checkpatch [2/2] 2021-07-24 10:38:11 +01:00
openocd.h Make #include guard naming consistent 2016-05-24 22:30:55 +01:00