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)
280437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R15 0
290437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R14 8
300437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R13 16
310437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R12 24
320437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RBP 32
330437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RBX 40
340437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* arguments: interrupts/non tracing syscalls only save up to here*/
350437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R11 48
360437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R10 56
370437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R9 64
380437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define R8 72
390437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RAX 80
400437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RCX 88
410437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RDX 96
420437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RSI 104
430437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RDI 112
440437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define ORIG_RAX 120       /* = ERROR */
450437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* end of arguments */
460437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* cpu exception frame or undefined in case of fast syscall. */
470437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RIP 128
480437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define CS 136
490437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define EFLAGS 144
500437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define RSP 152
510437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define SS 160
520437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define ARGOFFSET R11
530437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* __ASSEMBLY__ */
540437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
550437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* top of stack page */
560437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define FRAME_SIZE 168
570437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
580437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* !__i386__ */
590437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
600437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
610437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_GETREGS            12
620437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SETREGS            13
630437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_GETFPREGS          14
640437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SETFPREGS          15
650437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_GETFPXREGS         18
660437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SETFPXREGS         19
670437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
680437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_OLDSETOPTIONS      21
690437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
700437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris/* only useful for access 32bit programs / kernels */
710437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_GET_THREAD_AREA    25
720437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SET_THREAD_AREA    26
730437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
740437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifdef __x86_64__
750437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris# define PTRACE_ARCH_PRCTL	  30
760437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif
770437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
780437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SYSEMU		  31
790437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SYSEMU_SINGLESTEP  32
800437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
810437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#define PTRACE_SINGLEBLOCK	33	/* resume execution until next branch */
820437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
830437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#ifndef __ASSEMBLY__
840437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#include <linux/types.h>
850437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif
860437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris
870437c52788a98ab8ea84041c6b1f8d7a93e872f6Christopher Ferris#endif /* _ASM_X86_PTRACE_ABI_H */
88