diff options
| author | Kacper <kacper@mail.openlinux.dev> | 2025-12-07 20:10:31 +0100 |
|---|---|---|
| committer | Kacper <kacper@mail.openlinux.dev> | 2025-12-07 20:10:31 +0100 |
| commit | fc00c656c96528112d05cf0edf8631bd5eaea446 (patch) | |
| tree | a6e0e6c588191a8bd1c64afc3b7a258e3e66c236 /include/arch/x86_64/asm/ptrace.h | |
Add build system scaffolding and libc headers
Diffstat (limited to 'include/arch/x86_64/asm/ptrace.h')
| -rw-r--r-- | include/arch/x86_64/asm/ptrace.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/include/arch/x86_64/asm/ptrace.h b/include/arch/x86_64/asm/ptrace.h new file mode 100644 index 00000000..cf794ef4 --- /dev/null +++ b/include/arch/x86_64/asm/ptrace.h @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +#ifndef _ASM_X86_PTRACE_H +#define _ASM_X86_PTRACE_H + +/* For */ +#include <asm/ptrace-abi.h> +#include <asm/processor-flags.h> + +#ifndef __ASSEMBLER__ + +#ifdef __i386__ +/* this struct defines the way the registers are stored on the + stack during a system call. */ + +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; +}; + +#else /* __i386__ */ + +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 /* !__i386__ */ + +#endif /* !__ASSEMBLER__ */ + +#endif /* _ASM_X86_PTRACE_H */ |
