default:
return ERROR_FAIL;
}
- vr += 4 * index_t;
- cr += 4 * index_t;
+ vr += 16 * index_t;
+ cr += 16 * index_t;
LOG_DEBUG("A8: bpwp enable, vr %08x cr %08x",
(unsigned) vr, (unsigned) cr);
static int aarch64_bpwp_disable(struct arm_dpm *dpm, unsigned index_t)
{
- return ERROR_OK;
-
-#if 0
struct aarch64_common *a = dpm_to_a8(dpm);
uint32_t cr;
default:
return ERROR_FAIL;
}
- cr += 4 * index_t;
+ cr += 16 * index_t;
LOG_DEBUG("A: bpwp disable, cr %08x", (unsigned) cr);
/* clear control register */
return aarch64_dap_write_memap_register_u32(dpm->arm->target, cr, 0);
-#endif
+
}
static int aarch64_dpm_setup(struct aarch64_common *a8, uint32_t debug)
LOG_DEBUG("System_register: %8.8" PRIx32, aarch64->system_control_reg);
aarch64->system_control_reg_curr = aarch64->system_control_reg;
-#if 0
if (armv8->armv8_mmu.armv8_cache.ctype == -1)
armv8_identify_cache(target);
-#endif
armv8->armv8_mmu.mmu_enabled =
(aarch64->system_control_reg & 0x1U) ? 1 : 0;
brp_list[brp_i].control);
if (retval != ERROR_OK)
return retval;
+ retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
+ + CPUV8_DBG_BVR_BASE + 16 * brp_list[brp_i].BRPn,
+ (uint32_t)brp_list[brp_i].value);
+ if (retval != ERROR_OK)
+ return retval;
+ retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
+ + CPUV8_DBG_BVR_BASE + 4 + 16 * brp_list[brp_i].BRPn,
+ (uint32_t)brp_list[brp_i].value);
+ if (retval != ERROR_OK)
+ return retval;
if ((brp_j < 0) || (brp_j >= aarch64->brp_num)) {
LOG_DEBUG("Invalid BRP number in breakpoint");
return ERROR_OK;
brp_list[brp_j].control);
if (retval != ERROR_OK)
return retval;
+ retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
+ + CPUV8_DBG_BVR_BASE + 16 * brp_list[brp_j].BRPn,
+ (uint32_t)brp_list[brp_j].value);
+ if (retval != ERROR_OK)
+ return retval;
+ retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
+ + CPUV8_DBG_BVR_BASE + 4 + 16 * brp_list[brp_j].BRPn,
+ (uint32_t)brp_list[brp_j].value);
+ if (retval != ERROR_OK)
+ return retval;
+
breakpoint->linked_BRP = 0;
breakpoint->set = 0;
return ERROR_OK;
brp_list[brp_i].value);
if (retval != ERROR_OK)
return retval;
+
+ retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
+ + CPUV8_DBG_BVR_BASE + 4 + 16 * brp_list[brp_i].BRPn,
+ (uint32_t)brp_list[brp_i].value);
+ if (retval != ERROR_OK)
+ return retval;
breakpoint->set = 0;
return ERROR_OK;
}
if (retval != ERROR_OK)
goto done;
*phys = ret;
- } else {/* use this method if armv8->memory_ap not selected
- * mmu must be enable in order to get a correct translation */
- retval = aarch64_mmu_modify(target, 1);
- if (retval != ERROR_OK)
- goto done;
- retval = armv8_mmu_translate_va_pa(target, virt, phys, 1);
+ } else {
+ LOG_ERROR("AAR64 processor not support translate va to pa");
}
done:
return retval;