This is an automated email from Gerrit.

Alamy Liu ([email protected]) just uploaded a new patch set to Gerrit, which 
you can find at http://openocd.zylin.com/3265

-- gerrit

commit b8218254b95f688980ddc463ab35efe327399340
Author: Alamy Liu <[email protected]>
Date:   Thu Aug 27 14:09:35 2015 -0700

    64-bit: (aarch64) BP offset 4->16
    
    Change-Id: I6bac129d7e2c51016361d57a117cff41012f004f
    Signed-off-by: Alamy Liu <[email protected]>

diff --git a/src/target/aarch64.c b/src/target/aarch64.c
index 33fd966..dc06b97 100644
--- a/src/target/aarch64.c
+++ b/src/target/aarch64.c
@@ -592,8 +592,8 @@ static int aarch64_bpwp_enable(struct arm_dpm *dpm, 
unsigned index_t,
                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);
@@ -609,9 +609,6 @@ static int aarch64_bpwp_enable(struct arm_dpm *dpm, 
unsigned index_t,
 
 static int aarch64_bpwp_disable(struct arm_dpm *dpm, unsigned index_t)
 {
-       return ERROR_OK;
-
-#if 0
        struct aarch64_common *a8 = dpm_to_a8(dpm);
        uint32_t cr;
 
@@ -626,13 +623,12 @@ static int aarch64_bpwp_disable(struct arm_dpm *dpm, 
unsigned index_t)
                default:
                        return ERROR_FAIL;
        }
-       cr += 4 * index_t;
+       cr += 16 * index_t;
 
        LOG_DEBUG("A8: 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)
@@ -1348,18 +1344,19 @@ static int aarch64_set_context_breakpoint(struct target 
*target,
 
        breakpoint->set = brp_i + 1;
        control = ((matchmode & 0x7) << 20)
+               | (1 << 13)
                | (byte_addr_select << 5)
                | (3 << 1) | 1;
        brp_list[brp_i].used = 1;
        brp_list[brp_i].value = (breakpoint->asid);
        brp_list[brp_i].control = control;
        retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
-                       + CPUDBG_BVR_BASE + 4 * brp_list[brp_i].BRPn,
+                       + CPUDBG_BVR_BASE + 16 * brp_list[brp_i].BRPn,
                        brp_list[brp_i].value);
        if (retval != ERROR_OK)
                return retval;
        retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
-                       + CPUDBG_BCR_BASE + 4 * brp_list[brp_i].BRPn,
+                       + CPUDBG_BCR_BASE + 16 * brp_list[brp_i].BRPn,
                        brp_list[brp_i].control);
        if (retval != ERROR_OK)
                return retval;
@@ -1413,36 +1410,38 @@ static int aarch64_set_hybrid_breakpoint(struct target 
*target, struct breakpoin
        control_CTX = ((CTX_machmode & 0x7) << 20)
                | (brp_2 << 16)
                | (0 << 14)
+               | (1 << 13)
                | (CTX_byte_addr_select << 5)
                | (3 << 1) | 1;
        brp_list[brp_1].used = 1;
        brp_list[brp_1].value = (breakpoint->asid);
        brp_list[brp_1].control = control_CTX;
        retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
-                       + CPUDBG_BVR_BASE + 4 * brp_list[brp_1].BRPn,
+                       + CPUDBG_BVR_BASE + 16 * brp_list[brp_1].BRPn,
                        brp_list[brp_1].value);
        if (retval != ERROR_OK)
                return retval;
        retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
-                       + CPUDBG_BCR_BASE + 4 * brp_list[brp_1].BRPn,
+                       + CPUDBG_BCR_BASE + 16 * brp_list[brp_1].BRPn,
                        brp_list[brp_1].control);
        if (retval != ERROR_OK)
                return retval;
 
        control_IVA = ((IVA_machmode & 0x7) << 20)
                | (brp_1 << 16)
+               | (1 << 13)
                | (IVA_byte_addr_select << 5)
                | (3 << 1) | 1;
        brp_list[brp_2].used = 1;
        brp_list[brp_2].value = (breakpoint->address & 0xFFFFFFFC);
        brp_list[brp_2].control = control_IVA;
        retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
-                       + CPUDBG_BVR_BASE + 4 * brp_list[brp_2].BRPn,
+                       + CPUDBG_BVR_BASE + 16 * brp_list[brp_2].BRPn,
                        brp_list[brp_2].value);
        if (retval != ERROR_OK)
                return retval;
        retval = aarch64_dap_write_memap_register_u32(target, armv8->debug_base
-                       + CPUDBG_BCR_BASE + 4 * brp_list[brp_2].BRPn,
+                       + CPUDBG_BCR_BASE + 16 * brp_list[brp_2].BRPn,
                        brp_list[brp_2].control);
        if (retval != ERROR_OK)
                return retval;
@@ -1510,12 +1509,12 @@ static int aarch64_unset_breakpoint(struct target 
*target, struct breakpoint *br
                        brp_list[brp_i].value = 0;
                        brp_list[brp_i].control = 0;
                        retval = aarch64_dap_write_memap_register_u32(target, 
armv8->debug_base
-                                       + CPUDBG_BCR_BASE + 4 * 
brp_list[brp_i].BRPn,
+                                       + CPUDBG_BCR_BASE + 16 * 
brp_list[brp_i].BRPn,
                                        brp_list[brp_i].control);
                        if (retval != ERROR_OK)
                                return retval;
                        retval = aarch64_dap_write_memap_register_u32(target, 
armv8->debug_base
-                                       + CPUDBG_BVR_BASE + 4 * 
brp_list[brp_i].BRPn,
+                                       + CPUDBG_BVR_BASE + 16 * 
brp_list[brp_i].BRPn,
                                        brp_list[brp_i].value);
                        if (retval != ERROR_OK)
                                return retval;

-- 

------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to