Initial Contribution
msm-2.6.38: tag AU_LINUX_ANDROID_GINGERBREAD.02.03.04.00.142
Signed-off-by: Bryan Huntsman <bryanh@codeaurora.org>
diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c
index 87acc25..951eb8d 100644
--- a/arch/arm/kernel/hw_breakpoint.c
+++ b/arch/arm/kernel/hw_breakpoint.c
@@ -833,6 +833,18 @@
return ret;
}
+static void reset_brps_reserved_reg(int n)
+{
+ int i;
+
+ /* we must also reset any reserved registers. */
+ for (i = 0; i < n; ++i) {
+ write_wb_reg(ARM_BASE_BCR + i, 0UL);
+ write_wb_reg(ARM_BASE_BVR + i, 0UL);
+ }
+
+}
+
/*
* One-time initialisation.
*/
@@ -880,11 +892,11 @@
if (enable_monitor_mode())
return;
- /* We must also reset any reserved registers. */
- for (i = 0; i < core_num_brps + core_num_reserved_brps; ++i) {
- write_wb_reg(ARM_BASE_BCR + i, 0UL);
- write_wb_reg(ARM_BASE_BVR + i, 0UL);
- }
+#ifdef CONFIG_HAVE_HW_BRKPT_RESERVED_RW_ACCESS
+ reset_brps_reserved_reg(core_num_brps);
+#else
+ reset_brps_reserved_reg(core_num_brps + core_num_reserved_brps);
+#endif
for (i = 0; i < core_num_wrps; ++i) {
write_wb_reg(ARM_BASE_WCR + i, 0UL);