2017-11-01 15:08:43 +01:00
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2012-12-17 13:47:09 +00:00
# ifndef _UAPI_ASMAXP_PTRACE_H
# define _UAPI_ASMAXP_PTRACE_H
/*
* This struct defines the way the registers are stored on the
* kernel stack during a system call or other kernel entry
*
* NOTE ! I want to minimize the overhead of system calls , so this
2018-09-25 20:31:48 +02:00
* struct has as little information as possible . It does not have
2012-12-17 13:47:09 +00:00
*
* - floating point regs : the kernel doesn ' t change those
* - r9 - 15 : saved by the C compiler
*
* This makes " fork() " and " exec() " a bit more complex , but should
* give us low system call latency .
*/
struct pt_regs {
unsigned long r0 ;
unsigned long r1 ;
unsigned long r2 ;
unsigned long r3 ;
unsigned long r4 ;
unsigned long r5 ;
unsigned long r6 ;
unsigned long r7 ;
unsigned long r8 ;
unsigned long r19 ;
unsigned long r20 ;
unsigned long r21 ;
unsigned long r22 ;
unsigned long r23 ;
unsigned long r24 ;
unsigned long r25 ;
unsigned long r26 ;
unsigned long r27 ;
unsigned long r28 ;
unsigned long hae ;
/* JRP - These are the values provided to a0-a2 by PALcode */
unsigned long trap_a0 ;
unsigned long trap_a1 ;
unsigned long trap_a2 ;
/* These are saved by PAL-code: */
unsigned long ps ;
unsigned long pc ;
unsigned long gp ;
unsigned long r16 ;
unsigned long r17 ;
unsigned long r18 ;
} ;
/*
* This is the extended stack used by signal handlers and the context
* switcher : it ' s pushed after the normal " struct pt_regs " .
*/
struct switch_stack {
unsigned long r9 ;
unsigned long r10 ;
unsigned long r11 ;
unsigned long r12 ;
unsigned long r13 ;
unsigned long r14 ;
unsigned long r15 ;
unsigned long r26 ;
unsigned long fp [ 32 ] ; /* fp[31] is fpcr */
} ;
# endif /* _UAPI_ASMAXP_PTRACE_H */