3f32311
commit 49ecef2a7da2ee9df4ae675f99b70518fbf1bb23
3f32311
Author: Andrew Pinski <apinski@cavium.com>
3f32311
Date:   Sat Jul 23 09:56:44 2016 -0700
3f32311
3f32311
    Fix ARMv8.1/v8.2 for hw watchpoint and breakpoint
3f32311
    
3f32311
    The problem here is ARMv8.1 (and ARMv8.2) define a
3f32311
    different debug version than ARMv8 (7 and 8 respectively).
3f32311
    This fixes hw watchpoints and breakpoints by checking
3f32311
    for those debug versions too.
3f32311
    
3f32311
    Committed as obvious after a test on aarch64-linux-gnu
3f32311
    (on a ThunderX machine which has ARMv8.1 support enabled).
3f32311
    
3f32311
    ChangeLog:
3f32311
    	* nat/aarch64-linux-hw-point.c
3f32311
    	(aarch64_linux_get_debug_reg_capacity): Handle
3f32311
    	ARMv8.1 and ARMv8.2 debug versions.
3f32311
    	* nat/aarch64-linux-hw-point.h
3f32311
    	(AARCH64_DEBUG_ARCH_V8_1): New define.
3f32311
    	(AARCH64_DEBUG_ARCH_V8_2): New define.
3f32311
    
3f32311
    Signed-off-by: Andrew Pinski <apinski@cavium.com>
3f32311
3f32311
### a/gdb/ChangeLog
3f32311
### b/gdb/ChangeLog
3f32311
## -1,3 +1,12 @@
3f32311
+2016-07-23  Andrew Pinski  <apinski@cavium.com>
3f32311
+
3f32311
+	* nat/aarch64-linux-hw-point.c
3f32311
+	(aarch64_linux_get_debug_reg_capacity): Handle
3f32311
+	ARMv8.1 and ARMv8.2 debug versions.
3f32311
+	* nat/aarch64-linux-hw-point.h
3f32311
+	(AARCH64_DEBUG_ARCH_V8_1): New define.
3f32311
+	(AARCH64_DEBUG_ARCH_V8_2): New define.
3f32311
+
3f32311
 2016-06-30  Руслан Ижбулатов  <lrn1986@gmail.com>
3f32311
 
3f32311
 	PR gdb/14529
3f32311
--- a/gdb/nat/aarch64-linux-hw-point.c
3f32311
+++ b/gdb/nat/aarch64-linux-hw-point.c
3f32311
@@ -630,7 +630,9 @@ aarch64_linux_get_debug_reg_capacity (int tid)
3f32311
 
3f32311
   /* Get hardware watchpoint register info.  */
3f32311
   if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_HW_WATCH, &iov) == 0
3f32311
-      && AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8)
3f32311
+      && (AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8
3f32311
+	  || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_1
3f32311
+	  || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_2))
3f32311
     {
3f32311
       aarch64_num_wp_regs = AARCH64_DEBUG_NUM_SLOTS (dreg_state.dbg_info);
3f32311
       if (aarch64_num_wp_regs > AARCH64_HWP_MAX_NUM)
3f32311
@@ -650,7 +652,9 @@ aarch64_linux_get_debug_reg_capacity (int tid)
3f32311
 
3f32311
   /* Get hardware breakpoint register info.  */
3f32311
   if (ptrace (PTRACE_GETREGSET, tid, NT_ARM_HW_BREAK, &iov) == 0
3f32311
-      && AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8)
3f32311
+      && (AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8
3f32311
+	  || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_1
3f32311
+	  || AARCH64_DEBUG_ARCH (dreg_state.dbg_info) == AARCH64_DEBUG_ARCH_V8_2))
3f32311
     {
3f32311
       aarch64_num_bp_regs = AARCH64_DEBUG_NUM_SLOTS (dreg_state.dbg_info);
3f32311
       if (aarch64_num_bp_regs > AARCH64_HBP_MAX_NUM)
3f32311
--- a/gdb/nat/aarch64-linux-hw-point.h
3f32311
+++ b/gdb/nat/aarch64-linux-hw-point.h
3f32311
@@ -68,6 +68,8 @@
3f32311
 
3f32311
 /* Macro for the expected version of the ARMv8-A debug architecture.  */
3f32311
 #define AARCH64_DEBUG_ARCH_V8 0x6
3f32311
+#define AARCH64_DEBUG_ARCH_V8_1 0x7
3f32311
+#define AARCH64_DEBUG_ARCH_V8_2 0x8
3f32311
 
3f32311
 /* ptrace expects control registers to be formatted as follows:
3f32311