10437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef _ASM_X86_PTRACE_ABI_H 20437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define _ASM_X86_PTRACE_ABI_H 30437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 40437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifdef __i386__ 50437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 60437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define EBX 0 70437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define ECX 1 80437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define EDX 2 90437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define ESI 3 100437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define EDI 4 110437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define EBP 5 120437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define EAX 6 130437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define DS 7 140437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define ES 8 150437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define FS 9 160437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define GS 10 170437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define ORIG_EAX 11 180437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define EIP 12 190437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define CS 13 200437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define EFL 14 210437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define UESP 15 220437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define SS 16 230437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define FRAME_SIZE 17 240437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 250437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#else /* __i386__ */ 260437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 270437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS) 2812e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* 2912e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * C ABI says these regs are callee-preserved. They aren't saved on kernel entry 3012e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * unless syscall needs a complete, fully filled "struct pt_regs". 3112e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris */ 320437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R15 0 330437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R14 8 340437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R13 16 350437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R12 24 360437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RBP 32 370437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RBX 40 3812e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* These regs are callee-clobbered. Always saved on kernel entry. */ 390437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R11 48 400437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R10 56 410437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R9 64 420437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R8 72 430437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RAX 80 440437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RCX 88 450437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RDX 96 460437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RSI 104 470437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RDI 112 4812e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* 4912e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * On syscall entry, this is syscall#. On CPU exception, this is error code. 5012e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris * On hw interrupt, it's IRQ number: 5112e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris */ 5212e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris#define ORIG_RAX 120 5312e1f28cce28271eb109a5bae818a804f0c3bb27Christopher Ferris/* Return frame for iretq */ 540437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RIP 128 550437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define CS 136 560437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define EFLAGS 144 570437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RSP 152 580437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define SS 160 590437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* __ASSEMBLY__ */ 600437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 610437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* top of stack page */ 620437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define FRAME_SIZE 168 630437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 640437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* !__i386__ */ 650437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 660437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ 670437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_GETREGS 12 680437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SETREGS 13 690437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_GETFPREGS 14 700437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SETFPREGS 15 710437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_GETFPXREGS 18 720437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SETFPXREGS 19 730437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 740437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_OLDSETOPTIONS 21 750437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 760437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* only useful for access 32bit programs / kernels */ 770437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_GET_THREAD_AREA 25 780437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SET_THREAD_AREA 26 790437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 800437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifdef __x86_64__ 810437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris# define PTRACE_ARCH_PRCTL 30 820437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif 830437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 840437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SYSEMU 31 850437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SYSEMU_SINGLESTEP 32 860437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 870437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SINGLEBLOCK 33 /* resume execution until next branch */ 880437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 890437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef __ASSEMBLY__ 900437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#include <linux/types.h> 910437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif 920437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris 930437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* _ASM_X86_PTRACE_ABI_H */ 94