On 9/2/20 1:29 AM, Ravi Bangoria wrote:
PPC_DEBUG_FEATURE_DATA_BP_ARCH_31 can be used to determine whether
we are running on an ISA 3.1 compliant machine. Which is needed to
determine DAR behaviour, 512 byte boundary limit etc. This was
requested by Pedro Miraglia Franco de Carvalho for extending
watchpoint features in gdb. Note that availability of 2nd DAWR is
independent of this flag and should be checked using
ppc_debug_info->num_data_bps.

Signed-off-by: Ravi Bangoria <ravi.bango...@linux.ibm.com>
Tested-by: Rogerio Alves <rcard...@linux.ibm.com>
---
  Documentation/powerpc/ptrace.rst          | 1 +
  arch/powerpc/include/uapi/asm/ptrace.h    | 1 +
  arch/powerpc/kernel/ptrace/ptrace-noadv.c | 2 ++
  3 files changed, 4 insertions(+)

diff --git a/Documentation/powerpc/ptrace.rst b/Documentation/powerpc/ptrace.rst
index 864d4b6dddd1..77725d69eb4a 100644
--- a/Documentation/powerpc/ptrace.rst
+++ b/Documentation/powerpc/ptrace.rst
@@ -46,6 +46,7 @@ features will have bits indicating whether there is support 
for::
    #define PPC_DEBUG_FEATURE_DATA_BP_RANGE             0x4
    #define PPC_DEBUG_FEATURE_DATA_BP_MASK              0x8
    #define PPC_DEBUG_FEATURE_DATA_BP_DAWR              0x10
+  #define PPC_DEBUG_FEATURE_DATA_BP_ARCH_31            0x20
2. PTRACE_SETHWDEBUG diff --git a/arch/powerpc/include/uapi/asm/ptrace.h b/arch/powerpc/include/uapi/asm/ptrace.h
index f5f1ccc740fc..7004cfea3f5f 100644
--- a/arch/powerpc/include/uapi/asm/ptrace.h
+++ b/arch/powerpc/include/uapi/asm/ptrace.h
@@ -222,6 +222,7 @@ struct ppc_debug_info {
  #define PPC_DEBUG_FEATURE_DATA_BP_RANGE               0x0000000000000004
  #define PPC_DEBUG_FEATURE_DATA_BP_MASK                0x0000000000000008
  #define PPC_DEBUG_FEATURE_DATA_BP_DAWR                0x0000000000000010
+#define PPC_DEBUG_FEATURE_DATA_BP_ARCH_31      0x0000000000000020
#ifndef __ASSEMBLY__ diff --git a/arch/powerpc/kernel/ptrace/ptrace-noadv.c b/arch/powerpc/kernel/ptrace/ptrace-noadv.c
index 48c52426af80..aa36fcad36cd 100644
--- a/arch/powerpc/kernel/ptrace/ptrace-noadv.c
+++ b/arch/powerpc/kernel/ptrace/ptrace-noadv.c
@@ -57,6 +57,8 @@ void ppc_gethwdinfo(struct ppc_debug_info *dbginfo)
        } else {
                dbginfo->features = 0;
        }
+       if (cpu_has_feature(CPU_FTR_ARCH_31))
+               dbginfo->features |= PPC_DEBUG_FEATURE_DATA_BP_ARCH_31;
  }
int ptrace_get_debugreg(struct task_struct *child, unsigned long addr,

Reply via email to