/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 
 | 
#ifndef _UAPI_ASM_X86_PTRACE_H 
 | 
#define _UAPI_ASM_X86_PTRACE_H 
 | 
  
 | 
#include <linux/compiler.h>    /* For __user */ 
 | 
#include <asm/ptrace-abi.h> 
 | 
#include <asm/processor-flags.h> 
 | 
  
 | 
  
 | 
#ifndef __ASSEMBLY__ 
 | 
  
 | 
#ifdef __i386__ 
 | 
/* this struct defines the way the registers are stored on the 
 | 
   stack during a system call. */ 
 | 
  
 | 
#ifndef __KERNEL__ 
 | 
  
 | 
struct pt_regs { 
 | 
    long ebx; 
 | 
    long ecx; 
 | 
    long edx; 
 | 
    long esi; 
 | 
    long edi; 
 | 
    long ebp; 
 | 
    long eax; 
 | 
    int  xds; 
 | 
    int  xes; 
 | 
    int  xfs; 
 | 
    int  xgs; 
 | 
    long orig_eax; 
 | 
    long eip; 
 | 
    int  xcs; 
 | 
    long eflags; 
 | 
    long esp; 
 | 
    int  xss; 
 | 
}; 
 | 
  
 | 
#endif /* __KERNEL__ */ 
 | 
  
 | 
#else /* __i386__ */ 
 | 
  
 | 
#ifndef __KERNEL__ 
 | 
  
 | 
struct pt_regs { 
 | 
/* 
 | 
 * C ABI says these regs are callee-preserved. They aren't saved on kernel entry 
 | 
 * unless syscall needs a complete, fully filled "struct pt_regs". 
 | 
 */ 
 | 
    unsigned long r15; 
 | 
    unsigned long r14; 
 | 
    unsigned long r13; 
 | 
    unsigned long r12; 
 | 
    unsigned long rbp; 
 | 
    unsigned long rbx; 
 | 
/* These regs are callee-clobbered. Always saved on kernel entry. */ 
 | 
    unsigned long r11; 
 | 
    unsigned long r10; 
 | 
    unsigned long r9; 
 | 
    unsigned long r8; 
 | 
    unsigned long rax; 
 | 
    unsigned long rcx; 
 | 
    unsigned long rdx; 
 | 
    unsigned long rsi; 
 | 
    unsigned long rdi; 
 | 
/* 
 | 
 * On syscall entry, this is syscall#. On CPU exception, this is error code. 
 | 
 * On hw interrupt, it's IRQ number: 
 | 
 */ 
 | 
    unsigned long orig_rax; 
 | 
/* Return frame for iretq */ 
 | 
    unsigned long rip; 
 | 
    unsigned long cs; 
 | 
    unsigned long eflags; 
 | 
    unsigned long rsp; 
 | 
    unsigned long ss; 
 | 
/* top of stack page */ 
 | 
}; 
 | 
  
 | 
#endif /* __KERNEL__ */ 
 | 
#endif /* !__i386__ */ 
 | 
  
 | 
  
 | 
  
 | 
#endif /* !__ASSEMBLY__ */ 
 | 
  
 | 
#endif /* _UAPI_ASM_X86_PTRACE_H */ 
 |