[prev in list] [next in list] [prev in thread] [next in thread]
List: openocd-development
Subject: [OpenOCD-devel] [PATCH]: 97a5119 cortex_a: unlock OS Lock without need to check part number
From: gerrit () openocd ! org (gerrit)
Date: 2015-11-29 22:23:50
Message-ID: 20151129222350.D44AA19808D7 () mail ! openocd ! org
[Download RAW message or body]
This is an automated email from Gerrit.
Jiri Kastner (cz172638@gmail.com) just uploaded a new patch set to Gerrit, which you \
can find at http://openocd.zylin.com/3137
-- gerrit
commit 97a51190d9dedd335024b001a9954c60147e5456
Author: Jiri Kastner <cz172638@gmail.com>
Date: Sun Nov 29 22:34:41 2015 +0100
cortex_a: unlock OS Lock without need to check part number
unlocking based on partnumber makes code complicated.
tested on cortex a15, snapdragon, cortex a8
Change-Id: Ie7dd47c112032c365de87eff64d68251fe2a3fc8
Signed-off-by: Jiri Kastner <cz172638@gmail.com>
diff --git a/src/target/cortex_a.c b/src/target/cortex_a.c
index e2d433a..2f69de7 100644
--- a/src/target/cortex_a.c
+++ b/src/target/cortex_a.c
@@ -172,9 +172,27 @@ static int cortex_a8_init_debug_access(struct target *target)
struct armv7a_common *armv7a = target_to_armv7a(target);
struct adiv5_dap *swjdp = armv7a->arm.dap;
int retval;
+ uint32_t dbg_osreg;
LOG_DEBUG(" ");
+ retval = mem_ap_sel_read_atomic_u32(swjdp, armv7a->debug_ap,
+ armv7a->debug_base + CPUDBG_OSLSR,
+ &dbg_osreg);
+ if (retval != ERROR_OK)
+ return retval;
+ LOG_DEBUG("DBGOSLSR 0x%" PRIx32, dbg_osreg);
+
+ if (dbg_osreg & CPUDBG_OSLAR_LK_MASK)
+ /* Unlocking the DEBUG OS registers for modification */
+ retval = mem_ap_sel_write_atomic_u32(swjdp, armv7a->debug_ap,
+ armv7a->debug_base + CPUDBG_OSLAR,
+ 0);
+
+ if (retval != ERROR_OK)
+ return retval;
+
+
/* Unlocking the debug registers for modification
* The debugport might be uninitialised so try twice */
retval = mem_ap_sel_write_atomic_u32(swjdp, armv7a->debug_ap,
@@ -2920,8 +2938,8 @@ static int cortex_a_examine_first(struct target *target)
} else
armv7a->debug_base = target->dbgbase;
- retval = mem_ap_sel_read_atomic_u32(swjdp, armv7a->debug_ap,
- armv7a->debug_base + CPUDBG_CPUID, &cpuid);
+ retval = mem_ap_sel_write_atomic_u32(swjdp, armv7a->debug_ap,
+ armv7a->debug_base + CPUDBG_OSLAR, 0);
if (retval != ERROR_OK)
return retval;
@@ -2963,30 +2981,6 @@ static int cortex_a_examine_first(struct target *target)
cortex_a->ttypr = ttypr;
cortex_a->didr = didr;
- /* Unlocking the debug registers */
- if ((cpuid & CORTEX_A_MIDR_PARTNUM_MASK) >> CORTEX_A_MIDR_PARTNUM_SHIFT ==
- CORTEX_A15_PARTNUM) {
-
- retval = mem_ap_sel_write_atomic_u32(swjdp, armv7a->debug_ap,
- armv7a->debug_base + CPUDBG_OSLAR,
- 0);
-
- if (retval != ERROR_OK)
- return retval;
-
- }
- /* Unlocking the debug registers */
- if ((cpuid & CORTEX_A_MIDR_PARTNUM_MASK) >> CORTEX_A_MIDR_PARTNUM_SHIFT ==
- CORTEX_A7_PARTNUM) {
-
- retval = mem_ap_sel_write_atomic_u32(swjdp, armv7a->debug_ap,
- armv7a->debug_base + CPUDBG_OSLAR,
- 0);
-
- if (retval != ERROR_OK)
- return retval;
-
- }
retval = mem_ap_sel_read_atomic_u32(swjdp, armv7a->debug_ap,
armv7a->debug_base + CPUDBG_PRSR, &dbg_osreg);
--
------------------------------------------------------------------------------
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic