125981136fb13bcacf5f475f3e0ec750341e1e671Christopher Ferris/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 20437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef _UAPI_ASM_X86_PTRACE_H 30437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define _UAPI_ASM_X86_PTRACE_H 40437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 50437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#include <linux/compiler.h> /* For __user */ 60437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#include <asm/ptrace-abi.h> 70437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#include <asm/processor-flags.h> 80437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 90437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 100437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef __ASSEMBLY__ 110437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 120437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifdef __i386__ 130437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* this struct defines the way the registers are stored on the 140437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris stack during a system call. */ 150437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 160437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef __KERNEL__ 170437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 180437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct pt_regs { 190437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long ebx; 200437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long ecx; 210437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long edx; 220437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long esi; 230437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long edi; 240437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long ebp; 250437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long eax; 260437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris int xds; 270437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris int xes; 280437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris int xfs; 290437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris int xgs; 300437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long orig_eax; 310437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long eip; 320437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris int xcs; 330437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long eflags; 340437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris long esp; 350437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris int xss; 360437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris}; 370437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 380437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* __KERNEL__ */ 390437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 400437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#else /* __i386__ */ 410437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 420437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef __KERNEL__ 430437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 440437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferrisstruct pt_regs { 4512e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* 4612e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * C ABI says these regs are callee-preserved. They aren't saved on kernel entry 4712e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * unless syscall needs a complete, fully filled "struct pt_regs". 4812e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris */ 490437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long r15; 500437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long r14; 510437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long r13; 520437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long r12; 530437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long rbp; 540437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long rbx; 5512e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* These regs are callee-clobbered. Always saved on kernel entry. */ 560437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long r11; 570437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long r10; 580437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long r9; 590437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long r8; 600437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long rax; 610437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long rcx; 620437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long rdx; 630437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long rsi; 640437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long rdi; 6512e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* 6612e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * On syscall entry, this is syscall#. On CPU exception, this is error code. 6712e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * On hw interrupt, it's IRQ number: 6812e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris */ 690437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long orig_rax; 7012e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* Return frame for iretq */ 710437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long rip; 720437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long cs; 730437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long eflags; 740437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long rsp; 750437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris unsigned long ss; 760437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* top of stack page */ 770437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris}; 780437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 790437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* __KERNEL__ */ 800437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* !__i386__ */ 810437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 820437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 830437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 840437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* !__ASSEMBLY__ */ 850437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 860437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* _UAPI_ASM_X86_PTRACE_H */ 87