[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