arm_debug: Support multiple APs per DAP and remove DAP from armv7* structs
Separate out the values from adiv5_dap that are associated with a specific AP into a new struct, so we can properly support multiple APs. Remove the DAP struct from the armv7* structs, because we can have multiple CPUs per DAP, and we shouldn't have multiple DAP structs. Tidy up a few places where ap_current is used incorrectly. Change-Id: I0c6ef4b49cc86b140366347aaf9b76c07cbab0a8 Signed-off-by: Patrick Stewart <patstew@gmail.com> Reviewed-on: http://openocd.zylin.com/2984 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de> Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
This commit is contained in:
committed by
Andreas Fritiofson
parent
67f24e6734
commit
bf4cf76631
@@ -3119,30 +3119,24 @@ static int cortex_a_init_arch_info(struct target *target,
|
||||
struct cortex_a_common *cortex_a, struct jtag_tap *tap)
|
||||
{
|
||||
struct armv7a_common *armv7a = &cortex_a->armv7a_common;
|
||||
struct adiv5_dap *dap = &armv7a->dap;
|
||||
|
||||
armv7a->arm.dap = dap;
|
||||
|
||||
/* Setup struct cortex_a_common */
|
||||
cortex_a->common_magic = CORTEX_A_COMMON_MAGIC;
|
||||
|
||||
/* tap has no dap initialized */
|
||||
if (!tap->dap) {
|
||||
armv7a->arm.dap = dap;
|
||||
/* Setup struct cortex_a_common */
|
||||
tap->dap = dap_init();
|
||||
|
||||
/* prepare JTAG information for the new target */
|
||||
cortex_a->jtag_info.tap = tap;
|
||||
cortex_a->jtag_info.scann_size = 4;
|
||||
|
||||
/* Leave (only) generic DAP stuff for debugport_init() */
|
||||
dap->jtag_info = &cortex_a->jtag_info;
|
||||
tap->dap->jtag_info = &cortex_a->jtag_info;
|
||||
}
|
||||
|
||||
/* Number of bits for tar autoincrement, impl. dep. at least 10 */
|
||||
dap->tar_autoincr_block = (1 << 10);
|
||||
dap->memaccess_tck = 80;
|
||||
tap->dap = dap;
|
||||
} else
|
||||
armv7a->arm.dap = tap->dap;
|
||||
tap->dap->ap[dap_ap_get_select(tap->dap)].memaccess_tck = 80;
|
||||
armv7a->arm.dap = tap->dap;
|
||||
|
||||
cortex_a->fast_reg_read = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user