[patch 4/5] ppc64: Add definitions for new PTRACE calls

Kumar Gala kumar.gala at freescale.com
Fri Sep 16 00:56:36 EST 2005


Paul,

I'm really concerned about the fact that this got merged into linus's  
tree so fast w/o any further discussion.  I'm concerned because we've  
added a public API to the kernel and there wasn't any discussion of  
it on list once I brought up an issue.

Additionally, I'm concerned because it appears we are adding features  
to ppc64 only w/o concern about ppc32.

We currently have 3 HW debug models on PPC from what I can tell and  
what has been added only comprehends one of them:

1. basic ppc32/ppc64 IABR/DABR
2. extended 603 IABR/DABR + IBCR/DBCR (ranges, additional comparison  
functions)
3. Book-E debug

The proposed 16 IABR/DABR doesn't seem really useful in light of #2 &  
#3.  Also, how does the debugger know how many iabr's/dabr's a given  
kernel supports.

I'm ok if we all agree that we only support exact matches, but I do  
think that we need to figure out what to do about the 3 low order  
bits on DABR and how that would map to something on book-e.  I  
believe Book-E data address matches are byte level matches.

Also, we really should have some mechanism to report number of IABRs  
& DABRs that the HW supports.

Anyways, I think this needs more discussion and we should remove the  
recently added PTRACE_GET_DEBUGREG/PTRACE_SET_DEBUGREG APIs from  
2.6.14. Until we decide what this means for ALL powerpc's.

- kumar

On Sep 10, 2005, at 12:29 PM, Gala Kumar K.-galak wrote:

> We really need further discussion on this.  Book-E has a completely
> different HW debug model which this patch only partially comprehend.
> Is GDB being extended to support branch stepping?
>
> - kumar
>
> On Sep 10, 2005, at 1:01 AM, Anton Blanchard wrote:
>
>
>> - Add PTRACE_BRANCHSTEP. Like PTRACE_SINGLESTEP but takes an
>>   exception at every branch. This might be worth putting in
>>   include/linux/ptrace.h if other architectures are interested.
>>
>> - Add PTRACE_GET_DEBUGREG/PTRACE_SET_DEBUGREG. The definition is
>>   as follows:
>>
>> /*
>>  * Get or set a debug register. The first 16 are DABR registers and
>> the
>>  * second 16 are IABR registers.
>>  */
>> #define PTRACE_GET_DEBUGREG    25
>> #define PTRACE_SET_DEBUGREG    26
>>
>>   DABR == data breakpoint and IABR = instruction breakpoint in IBM
>>   speak. We could split out the IABR into 2 more ptrace calls but I
>>   figured there was no need and 16 DABR registers should be more
>>   than enough (POWER4/POWER5 have one).
>>
>> - Add 2 new SIGTRAP si_codes: TRAP_HWBKPT and TRAP_BRANCH. I couldnt
>>   find any standards on either of these so I copied what ia64 is
>>   doing. Again this might be better placed in
>>   include/asm-generic/siginfo.h
>>
>> Signed-off-by: Anton Blanchard <anton at samba.org>
>> ---
>>
>> Index: build/include/asm-ppc/ptrace.h
>> ===================================================================
>> --- build.orig/include/asm-ppc/ptrace.h    2005-09-10
>> 14:26:25.000000000
>> +1000
>> +++ build/include/asm-ppc/ptrace.h    2005-09-10 14:27:49.000000000
>> +1000
>> @@ -142,4 +142,13 @@
>>  #define PTRACE_GETEVRREGS    20
>>  #define PTRACE_SETEVRREGS    21
>>
>> +#define PTRACE_BRANCHSTEP    22
>> +
>> +/*
>> + * Get or set a debug register. The first 16 are DABR registers
>> and the
>> + * second 16 are IABR registers.
>> + */
>> +#define PTRACE_GET_DEBUGREG    25
>> +#define PTRACE_SET_DEBUGREG    26
>> +
>>  #endif
>> Index: build/include/asm-ppc64/ptrace.h
>> ===================================================================
>> --- build.orig/include/asm-ppc64/ptrace.h    2005-09-10
>> 14:28:44.000000000 +1000
>> +++ build/include/asm-ppc64/ptrace.h    2005-09-10 14:28:58.000000000
>> +1000
>> @@ -189,6 +189,15 @@
>>  #define PTRACE_SETEVRREGS       21
>>  #endif
>>
>> +#define PTRACE_BRANCHSTEP    22
>> +
>> +/*
>> + * Get or set a debug register. The first 16 are DABR registers
>> and the
>> + * second 16 are IABR registers.
>> + */
>> +#define PTRACE_GET_DEBUGREG    25
>> +#define PTRACE_SET_DEBUGREG    26
>> +
>>  /* Additional PTRACE requests implemented on PowerPC. */
>>  #define PPC_PTRACE_GETREGS    0x99    /* Get GPRs 0 - 31 */
>>  #define PPC_PTRACE_SETREGS    0x98    /* Set GPRs 0 - 31 */
>> Index: build/include/asm-powerpc/siginfo.h
>> ===================================================================
>> --- build.orig/include/asm-powerpc/siginfo.h    2005-09-10
>> 13:29:48.000000000 +1000
>> +++ build/include/asm-powerpc/siginfo.h    2005-09-10
>> 13:29:54.000000000
>> +1000
>> @@ -15,4 +15,12 @@
>>
>>  #include <asm-generic/siginfo.h>
>>
>> +/*
>> + * SIGTRAP si_codes
>> + */
>> +#define TRAP_BRANCH    (__SI_FAULT|3)    /* process taken branch
>> trap */
>> +#define TRAP_HWBKPT    (__SI_FAULT|4)    /* hardware breakpoint or
>> watchpoint */
>> +#undef NSIGTRAP
>> +#define NSIGTRAP    4
>> +
>>  #endif    /* _ASM_POWERPC_SIGINFO_H */
>>
>> --
>>
>> _______________________________________________
>> Linuxppc64-dev mailing list
>> Linuxppc64-dev at ozlabs.org
>> https://ozlabs.org/mailman/listinfo/linuxppc64-dev
>>
>>
>
> _______________________________________________
> Linuxppc64-dev mailing list
> Linuxppc64-dev at ozlabs.org
> https://ozlabs.org/mailman/listinfo/linuxppc64-dev
>




More information about the Linuxppc64-dev mailing list