1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*--------------------------------------------------------------------*/ 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*--- AMD64/Linux-specific kernel interface. vki-amd64-linux.h ---*/ 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*--------------------------------------------------------------------*/ 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project This file is part of Valgrind, a dynamic binary instrumentation 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project framework. 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Copyright (C) 2000-2013 Julian Seward 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project jseward@acm.org 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project This program is free software; you can redistribute it and/or 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project modify it under the terms of the GNU General Public License as 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project published by the Free Software Foundation; either version 2 of the 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project License, or (at your option) any later version. 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project This program is distributed in the hope that it will be useful, but 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project WITHOUT ANY WARRANTY; without even the implied warranty of 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project General Public License for more details. 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project You should have received a copy of the GNU General Public License 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project along with this program; if not, write to the Free Software 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 02111-1307, USA. 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project The GNU General Public License is contained in the file COPYING. 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project*/ 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef __VKI_AMD64_LINUX_H 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define __VKI_AMD64_LINUX_H 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// AMD64 is little-endian. 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define VKI_LITTLE_ENDIAN 1 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//---------------------------------------------------------------------- 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// From linux-2.6.9/include/asm-x86_64/types.h 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//---------------------------------------------------------------------- 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef unsigned char __vki_u8; 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef __signed__ short __vki_s16; 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef unsigned short __vki_u16; 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef __signed__ int __vki_s32; 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef unsigned int __vki_u32; 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef __signed__ long long __vki_s64; 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef unsigned long long __vki_u64; 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef unsigned short vki_u16; 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projecttypedef unsigned int vki_u32; 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//---------------------------------------------------------------------- 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// From linux-2.6.9/include/asm-x86_64/page.h 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//---------------------------------------------------------------------- 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define VKI_PAGE_SHIFT 12 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//---------------------------------------------------------------------- 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// From linux-2.6.35.4/arch/x86/include/asm/shmparam.h 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//---------------------------------------------------------------------- 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define VKI_SHMLBA VKI_PAGE_SIZE 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//---------------------------------------------------------------------- 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project// From linux-2.6.9/include/asm-x86_64/signal.h 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project//---------------------------------------------------------------------- 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define _VKI_NSIG 64 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define _VKI_NSIG_BPW 64 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW) 78 79typedef unsigned long vki_old_sigset_t; /* at least 32 bits */ 80 81typedef struct { 82 unsigned long sig[_VKI_NSIG_WORDS]; 83} vki_sigset_t; 84 85#define VKI_SIGHUP 1 86#define VKI_SIGINT 2 87#define VKI_SIGQUIT 3 88#define VKI_SIGILL 4 89#define VKI_SIGTRAP 5 90#define VKI_SIGABRT 6 91#define VKI_SIGBUS 7 92#define VKI_SIGFPE 8 93#define VKI_SIGKILL 9 94#define VKI_SIGUSR1 10 95#define VKI_SIGSEGV 11 96#define VKI_SIGUSR2 12 97#define VKI_SIGPIPE 13 98#define VKI_SIGALRM 14 99#define VKI_SIGTERM 15 100#define VKI_SIGSTKFLT 16 101#define VKI_SIGCHLD 17 102#define VKI_SIGCONT 18 103#define VKI_SIGSTOP 19 104#define VKI_SIGTSTP 20 105#define VKI_SIGTTIN 21 106#define VKI_SIGTTOU 22 107#define VKI_SIGURG 23 108#define VKI_SIGXCPU 24 109#define VKI_SIGXFSZ 25 110#define VKI_SIGVTALRM 26 111#define VKI_SIGPROF 27 112#define VKI_SIGWINCH 28 113#define VKI_SIGIO 29 114#define VKI_SIGPWR 30 115#define VKI_SIGSYS 31 116#define VKI_SIGUNUSED 31 117 118#define VKI_SIGRTMIN 32 119#define VKI_SIGRTMAX _VKI_NSIG 120 121#define VKI_SA_NOCLDSTOP 0x00000001 122#define VKI_SA_NOCLDWAIT 0x00000002 123#define VKI_SA_SIGINFO 0x00000004 124#define VKI_SA_ONSTACK 0x08000000 125#define VKI_SA_RESTART 0x10000000 126#define VKI_SA_NODEFER 0x40000000 127#define VKI_SA_RESETHAND 0x80000000 128 129#define VKI_SA_NOMASK VKI_SA_NODEFER 130#define VKI_SA_ONESHOT VKI_SA_RESETHAND 131 132#define VKI_SA_RESTORER 0x04000000 133 134#define VKI_SS_ONSTACK 1 135#define VKI_SS_DISABLE 2 136 137#define VKI_MINSIGSTKSZ 2048 138 139#define VKI_SIG_BLOCK 0 /* for blocking signals */ 140#define VKI_SIG_UNBLOCK 1 /* for unblocking signals */ 141#define VKI_SIG_SETMASK 2 /* for setting the signal mask */ 142 143typedef void __vki_signalfn_t(int); 144typedef __vki_signalfn_t __user *__vki_sighandler_t; 145 146typedef void __vki_restorefn_t(void); 147typedef __vki_restorefn_t __user *__vki_sigrestore_t; 148 149#define VKI_SIG_DFL ((__vki_sighandler_t)0) /* default signal handling */ 150#define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */ 151 152struct vki_sigaction_base { 153 // [[Nb: a 'k' prefix is added to "sa_handler" because 154 // bits/sigaction.h (which gets dragged in somehow via signal.h) 155 // #defines it as something else. Since that is done for glibc's 156 // purposes, which we don't care about here, we use our own name.]] 157 __vki_sighandler_t ksa_handler; 158 unsigned long sa_flags; 159 __vki_sigrestore_t sa_restorer; 160 vki_sigset_t sa_mask; /* mask last for extensibility */ 161}; 162 163/* On Linux we use the same type for passing sigactions to 164 and from the kernel. Hence: */ 165typedef struct vki_sigaction_base vki_sigaction_toK_t; 166typedef struct vki_sigaction_base vki_sigaction_fromK_t; 167 168 169typedef struct vki_sigaltstack { 170 void __user *ss_sp; 171 int ss_flags; 172 vki_size_t ss_size; 173} vki_stack_t; 174 175//---------------------------------------------------------------------- 176// From linux-2.6.9/include/asm-x86_64/sigcontext.h 177//---------------------------------------------------------------------- 178 179struct _vki_fpstate { 180 __vki_u16 cwd; 181 __vki_u16 swd; 182 __vki_u16 twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */ 183 __vki_u16 fop; 184 __vki_u64 rip; 185 __vki_u64 rdp; 186 __vki_u32 mxcsr; 187 __vki_u32 mxcsr_mask; 188 __vki_u32 st_space[32]; /* 8*16 bytes for each FP-reg */ 189 __vki_u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg */ 190 __vki_u32 reserved2[24]; 191}; 192 193struct vki_sigcontext { 194 unsigned long r8; 195 unsigned long r9; 196 unsigned long r10; 197 unsigned long r11; 198 unsigned long r12; 199 unsigned long r13; 200 unsigned long r14; 201 unsigned long r15; 202 unsigned long rdi; 203 unsigned long rsi; 204 unsigned long rbp; 205 unsigned long rbx; 206 unsigned long rdx; 207 unsigned long rax; 208 unsigned long rcx; 209 unsigned long rsp; 210 unsigned long rip; 211 unsigned long eflags; /* RFLAGS */ 212 unsigned short cs; 213 unsigned short gs; 214 unsigned short fs; 215 unsigned short __pad0; 216 unsigned long err; 217 unsigned long trapno; 218 unsigned long oldmask; 219 unsigned long cr2; 220 struct _vki_fpstate __user *fpstate; /* zero when no FPU context */ 221 unsigned long reserved1[8]; 222}; 223 224//---------------------------------------------------------------------- 225// From linux-2.6.9/include/asm-x86_64/mman.h 226//---------------------------------------------------------------------- 227 228#define VKI_PROT_READ 0x1 /* page can be read */ 229#define VKI_PROT_WRITE 0x2 /* page can be written */ 230#define VKI_PROT_EXEC 0x4 /* page can be executed */ 231#define VKI_PROT_NONE 0x0 /* page can not be accessed */ 232#define VKI_PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend change to start of growsdown vma */ 233#define VKI_PROT_GROWSUP 0x02000000 /* mprotect flag: extend change to end of growsup vma */ 234 235#define VKI_MAP_SHARED 0x01 /* Share changes */ 236#define VKI_MAP_PRIVATE 0x02 /* Changes are private */ 237#define VKI_MAP_FIXED 0x10 /* Interpret addr exactly */ 238#define VKI_MAP_ANONYMOUS 0x20 /* don't use a file */ 239#define VKI_MAP_32BIT 0x40 /* only give out 32bit addresses */ 240#define VKI_MAP_NORESERVE 0x4000 /* don't check for reservations */ 241 242//---------------------------------------------------------------------- 243// From linux-2.6.9/include/asm-x86_64/fcntl.h 244//---------------------------------------------------------------------- 245 246#define VKI_O_ACCMODE 03 247#define VKI_O_RDONLY 00 248#define VKI_O_WRONLY 01 249#define VKI_O_RDWR 02 250#define VKI_O_CREAT 0100 /* not fcntl */ 251#define VKI_O_EXCL 0200 /* not fcntl */ 252#define VKI_O_TRUNC 01000 /* not fcntl */ 253#define VKI_O_APPEND 02000 254#define VKI_O_NONBLOCK 04000 255#define VKI_O_LARGEFILE 0100000 256 257#define VKI_AT_FDCWD -100 258 259#define VKI_F_DUPFD 0 /* dup */ 260#define VKI_F_GETFD 1 /* get close_on_exec */ 261#define VKI_F_SETFD 2 /* set/clear close_on_exec */ 262#define VKI_F_GETFL 3 /* get file->f_flags */ 263#define VKI_F_SETFL 4 /* set file->f_flags */ 264#define VKI_F_GETLK 5 265#define VKI_F_SETLK 6 266#define VKI_F_SETLKW 7 267 268#define VKI_F_SETOWN 8 /* for sockets. */ 269#define VKI_F_GETOWN 9 /* for sockets. */ 270#define VKI_F_SETSIG 10 /* for sockets. */ 271#define VKI_F_GETSIG 11 /* for sockets. */ 272 273#define VKI_F_SETOWN_EX 15 274#define VKI_F_GETOWN_EX 16 275 276#define VKI_F_OWNER_TID 0 277#define VKI_F_OWNER_PID 1 278#define VKI_F_OWNER_PGRP 2 279 280struct vki_f_owner_ex { 281 int type; 282 __vki_kernel_pid_t pid; 283}; 284 285#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */ 286 287#define VKI_F_LINUX_SPECIFIC_BASE 1024 288 289//---------------------------------------------------------------------- 290// From linux-2.6.9/include/asm-x86_64/resource.h 291//---------------------------------------------------------------------- 292 293#define VKI_RLIMIT_DATA 2 /* max data size */ 294#define VKI_RLIMIT_STACK 3 /* max stack size */ 295#define VKI_RLIMIT_CORE 4 /* max core file size */ 296#define VKI_RLIMIT_NOFILE 7 /* max number of open files */ 297 298//---------------------------------------------------------------------- 299// From linux-2.6.9/include/asm-x86_64/socket.h 300//---------------------------------------------------------------------- 301 302#define VKI_SOL_SOCKET 1 303 304#define VKI_SO_TYPE 3 305 306#define VKI_SO_ATTACH_FILTER 26 307 308//---------------------------------------------------------------------- 309// From linux-2.6.9/include/asm-x86_64/sockios.h 310//---------------------------------------------------------------------- 311 312#define VKI_SIOCSPGRP 0x8902 313#define VKI_SIOCGPGRP 0x8904 314#define VKI_SIOCGSTAMP 0x8906 /* Get stamp (timeval) */ 315#define VKI_SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */ 316 317//---------------------------------------------------------------------- 318// From linux-2.6.9/include/asm-x86_64/stat.h 319//---------------------------------------------------------------------- 320 321struct vki_stat { 322 unsigned long st_dev; 323 unsigned long st_ino; 324 unsigned long st_nlink; 325 326 unsigned int st_mode; 327 unsigned int st_uid; 328 unsigned int st_gid; 329 unsigned int __pad0; 330 unsigned long st_rdev; 331 long st_size; 332 long st_blksize; 333 long st_blocks; /* Number 512-byte blocks allocated. */ 334 335 unsigned long st_atime; 336 unsigned long st_atime_nsec; 337 unsigned long st_mtime; 338 unsigned long st_mtime_nsec; 339 unsigned long st_ctime; 340 unsigned long st_ctime_nsec; 341 long __unused[3]; 342}; 343 344//---------------------------------------------------------------------- 345// From linux-2.6.9/include/asm-x86_64/statfs.h 346//---------------------------------------------------------------------- 347 348struct vki_statfs { 349 long f_type; 350 long f_bsize; 351 long f_blocks; 352 long f_bfree; 353 long f_bavail; 354 long f_files; 355 long f_ffree; 356 __vki_kernel_fsid_t f_fsid; 357 long f_namelen; 358 long f_frsize; 359 long f_spare[5]; 360}; 361 362//---------------------------------------------------------------------- 363// From linux-2.6.9/include/asm-x86_64/termios.h 364//---------------------------------------------------------------------- 365 366struct vki_winsize { 367 unsigned short ws_row; 368 unsigned short ws_col; 369 unsigned short ws_xpixel; 370 unsigned short ws_ypixel; 371}; 372 373#define VKI_NCC 8 374struct vki_termio { 375 unsigned short c_iflag; /* input mode flags */ 376 unsigned short c_oflag; /* output mode flags */ 377 unsigned short c_cflag; /* control mode flags */ 378 unsigned short c_lflag; /* local mode flags */ 379 unsigned char c_line; /* line discipline */ 380 unsigned char c_cc[VKI_NCC]; /* control characters */ 381}; 382 383//---------------------------------------------------------------------- 384// From linux-2.6.9/include/asm-x86_64/termbits.h 385//---------------------------------------------------------------------- 386 387typedef unsigned char vki_cc_t; 388typedef unsigned int vki_tcflag_t; 389 390#define VKI_NCCS 19 391struct vki_termios { 392 vki_tcflag_t c_iflag; /* input mode flags */ 393 vki_tcflag_t c_oflag; /* output mode flags */ 394 vki_tcflag_t c_cflag; /* control mode flags */ 395 vki_tcflag_t c_lflag; /* local mode flags */ 396 vki_cc_t c_line; /* line discipline */ 397 vki_cc_t c_cc[VKI_NCCS]; /* control characters */ 398}; 399 400 401//---------------------------------------------------------------------- 402// From linux-2.6.9/include/asm-x86_64/ioctl.h 403//---------------------------------------------------------------------- 404 405#define _VKI_IOC_NRBITS 8 406#define _VKI_IOC_TYPEBITS 8 407#define _VKI_IOC_SIZEBITS 14 408#define _VKI_IOC_DIRBITS 2 409 410#define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1) 411#define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1) 412 413#define _VKI_IOC_NRSHIFT 0 414#define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS) 415#define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS) 416#define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS) 417 418#define _VKI_IOC_NONE 0U 419#define _VKI_IOC_WRITE 1U 420#define _VKI_IOC_READ 2U 421 422#define _VKI_IOC(dir,type,nr,size) \ 423 (((dir) << _VKI_IOC_DIRSHIFT) | \ 424 ((type) << _VKI_IOC_TYPESHIFT) | \ 425 ((nr) << _VKI_IOC_NRSHIFT) | \ 426 ((size) << _VKI_IOC_SIZESHIFT)) 427 428#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) 429#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),sizeof(size)) 430#define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),sizeof(size)) 431#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),sizeof(size)) 432 433#define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK) 434#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK) 435 436//---------------------------------------------------------------------- 437// From linux-2.6.9/include/asm-x86_64/ioctls.h 438//---------------------------------------------------------------------- 439 440#define VKI_TCGETS 0x5401 441#define VKI_TCSETS 0x5402 442#define VKI_TCSETSW 0x5403 443#define VKI_TCSETSF 0x5404 444#define VKI_TCGETA 0x5405 445#define VKI_TCSETA 0x5406 446#define VKI_TCSETAW 0x5407 447#define VKI_TCSETAF 0x5408 448#define VKI_TCSBRK 0x5409 449#define VKI_TCXONC 0x540A 450#define VKI_TCFLSH 0x540B 451#define VKI_TIOCSCTTY 0x540E 452#define VKI_TIOCGPGRP 0x540F 453#define VKI_TIOCSPGRP 0x5410 454#define VKI_TIOCOUTQ 0x5411 455#define VKI_TIOCGWINSZ 0x5413 456#define VKI_TIOCSWINSZ 0x5414 457#define VKI_TIOCMGET 0x5415 458#define VKI_TIOCMBIS 0x5416 459#define VKI_TIOCMBIC 0x5417 460#define VKI_TIOCMSET 0x5418 461#define VKI_FIONREAD 0x541B 462#define VKI_TIOCLINUX 0x541C 463#define VKI_FIONBIO 0x5421 464#define VKI_TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */ 465#define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ 466#define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */ 467 468#define VKI_FIONCLEX 0x5450 469#define VKI_FIOCLEX 0x5451 470#define VKI_FIOASYNC 0x5452 471#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ 472 473#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ 474 475//---------------------------------------------------------------------- 476// From linux-2.6.9/include/asm-x86_64/poll.h 477//---------------------------------------------------------------------- 478 479#define VKI_POLLIN 0x0001 480 481struct vki_pollfd { 482 int fd; 483 short events; 484 short revents; 485}; 486 487//---------------------------------------------------------------------- 488// From linux-2.6.9/include/asm-x86_64/user.h 489//---------------------------------------------------------------------- 490 491struct vki_user_i387_struct { 492 unsigned short cwd; 493 unsigned short swd; 494 unsigned short twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */ 495 unsigned short fop; 496 __vki_u64 rip; 497 __vki_u64 rdp; 498 __vki_u32 mxcsr; 499 __vki_u32 mxcsr_mask; 500 __vki_u32 st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */ 501 __vki_u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg = 256 bytes */ 502 __vki_u32 padding[24]; 503}; 504 505struct vki_user_regs_struct { 506 unsigned long r15,r14,r13,r12,rbp,rbx,r11,r10; 507 unsigned long r9,r8,rax,rcx,rdx,rsi,rdi,orig_rax; 508 unsigned long rip,cs,eflags; 509 unsigned long rsp,ss; 510 unsigned long fs_base, gs_base; 511 unsigned long ds,es,fs,gs; 512}; 513 514//---------------------------------------------------------------------- 515// From linux-2.6.9/include/asm-x86_64/elf.h 516//---------------------------------------------------------------------- 517 518typedef unsigned long vki_elf_greg_t; 519 520#define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t)) 521typedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG]; 522 523typedef struct vki_user_i387_struct vki_elf_fpregset_t; 524 525//---------------------------------------------------------------------- 526// From linux-2.6.9/include/asm-x86_64/ucontext.h 527//---------------------------------------------------------------------- 528 529struct vki_ucontext { 530 unsigned long uc_flags; 531 struct vki_ucontext *uc_link; 532 vki_stack_t uc_stack; 533 struct vki_sigcontext uc_mcontext; 534 vki_sigset_t uc_sigmask; /* mask last for extensibility */ 535}; 536 537//---------------------------------------------------------------------- 538// From linux-2.6.9/include/asm-x86_64/segment.h 539//---------------------------------------------------------------------- 540 541#define VKI_GDT_ENTRY_TLS_ENTRIES 3 542 543#define VKI_GDT_ENTRY_TLS_MIN 11 544#define VKI_GDT_ENTRY_TLS_MAX 13 545 546//---------------------------------------------------------------------- 547// From linux-2.6.11.9/include/asm-x86_64/prctl.h 548//---------------------------------------------------------------------- 549 550#define VKI_ARCH_SET_GS 0x1001 551#define VKI_ARCH_SET_FS 0x1002 552#define VKI_ARCH_GET_FS 0x1003 553#define VKI_ARCH_GET_GS 0x1004 554 555//---------------------------------------------------------------------- 556// From linux-2.6.9/include/asm-x86_64/ldt.h 557//---------------------------------------------------------------------- 558 559// I think this LDT stuff will have to be reinstated for amd64, but I'm not 560// certain. (Nb: The sys_arch_prctl seems to have replaced 561// [gs]et_thread_area syscalls.) 562// 563// Note that the type here is very slightly different to the 564// type for x86 (the final 'lm' field is added); I'm not sure about the 565// significance of that... --njn 566 567/* [[Nb: This is the structure passed to the modify_ldt syscall. Just so as 568 to confuse and annoy everyone, this is _not_ the same as an 569 VgLdtEntry and has to be translated into such. The logic for doing 570 so, in vg_ldt.c, is copied from the kernel sources.]] */ 571/* Note also that a comment in ldt.h indicates that the below 572 contains several fields ignored on 64bit, and that modify_ldt 573 is rather for 32bit. */ 574struct vki_user_desc { 575 unsigned int entry_number; 576 unsigned long base_addr; 577 unsigned int limit; 578 unsigned int seg_32bit:1; 579 unsigned int contents:2; 580 unsigned int read_exec_only:1; 581 unsigned int limit_in_pages:1; 582 unsigned int seg_not_present:1; 583 unsigned int useable:1; 584 unsigned int lm:1; 585}; 586 587// [[Nb: for our convenience within Valgrind, use a more specific name]] 588typedef struct vki_user_desc vki_modify_ldt_t; 589 590//---------------------------------------------------------------------- 591// From linux-2.6.11.2/include/asm-x86_64/ipcbuf.h 592//---------------------------------------------------------------------- 593 594struct vki_ipc64_perm 595{ 596 __vki_kernel_key_t key; 597 __vki_kernel_uid32_t uid; 598 __vki_kernel_gid32_t gid; 599 __vki_kernel_uid32_t cuid; 600 __vki_kernel_gid32_t cgid; 601 __vki_kernel_mode_t mode; 602 unsigned short __pad1; 603 unsigned short seq; 604 unsigned short __pad2; 605 unsigned long __unused1; 606 unsigned long __unused2; 607}; 608 609//---------------------------------------------------------------------- 610// From linux-2.6.11.2/include/asm-x86_64/sembuf.h 611//---------------------------------------------------------------------- 612 613struct vki_semid64_ds { 614 struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */ 615 __vki_kernel_time_t sem_otime; /* last semop time */ 616 unsigned long __unused1; 617 __vki_kernel_time_t sem_ctime; /* last change time */ 618 unsigned long __unused2; 619 unsigned long sem_nsems; /* no. of semaphores in array */ 620 unsigned long __unused3; 621 unsigned long __unused4; 622}; 623 624//---------------------------------------------------------------------- 625// From linux-2.6.11.2/include/asm-x86_64/msgbuf.h 626//---------------------------------------------------------------------- 627 628struct vki_msqid64_ds { 629 struct vki_ipc64_perm msg_perm; 630 __vki_kernel_time_t msg_stime; /* last msgsnd time */ 631 __vki_kernel_time_t msg_rtime; /* last msgrcv time */ 632 __vki_kernel_time_t msg_ctime; /* last change time */ 633 unsigned long msg_cbytes; /* current number of bytes on queue */ 634 unsigned long msg_qnum; /* number of messages in queue */ 635 unsigned long msg_qbytes; /* max number of bytes on queue */ 636 __vki_kernel_pid_t msg_lspid; /* pid of last msgsnd */ 637 __vki_kernel_pid_t msg_lrpid; /* last receive pid */ 638 unsigned long __unused4; 639 unsigned long __unused5; 640}; 641 642//---------------------------------------------------------------------- 643// From linux-2.6.11.2/include/asm-x86_64/shmbuf.h 644//---------------------------------------------------------------------- 645 646struct vki_shmid64_ds { 647 struct vki_ipc64_perm shm_perm; /* operation perms */ 648 vki_size_t shm_segsz; /* size of segment (bytes) */ 649 __vki_kernel_time_t shm_atime; /* last attach time */ 650 __vki_kernel_time_t shm_dtime; /* last detach time */ 651 __vki_kernel_time_t shm_ctime; /* last change time */ 652 __vki_kernel_pid_t shm_cpid; /* pid of creator */ 653 __vki_kernel_pid_t shm_lpid; /* pid of last operator */ 654 unsigned long shm_nattch; /* no. of current attaches */ 655 unsigned long __unused4; 656 unsigned long __unused5; 657}; 658 659struct vki_shminfo64 { 660 unsigned long shmmax; 661 unsigned long shmmin; 662 unsigned long shmmni; 663 unsigned long shmseg; 664 unsigned long shmall; 665 unsigned long __unused1; 666 unsigned long __unused2; 667 unsigned long __unused3; 668 unsigned long __unused4; 669}; 670 671//---------------------------------------------------------------------- 672// From linux-2.6.12.2/include/asm-x86_64/ptrace.h 673//---------------------------------------------------------------------- 674 675#define VKI_PTRACE_GETREGS 12 676#define VKI_PTRACE_SETREGS 13 677#define VKI_PTRACE_GETFPREGS 14 678#define VKI_PTRACE_SETFPREGS 15 679 680//---------------------------------------------------------------------- 681// From linux-2.6.8.1/include/asm-generic/errno.h 682//---------------------------------------------------------------------- 683 684#define VKI_ENOSYS 38 /* Function not implemented */ 685#define VKI_EOVERFLOW 75 /* Value too large for defined data type */ 686 687//---------------------------------------------------------------------- 688// And that's it! 689//---------------------------------------------------------------------- 690 691#endif // __VKI_AMD64_LINUX_H 692 693/*--------------------------------------------------------------------*/ 694/*--- end ---*/ 695/*--------------------------------------------------------------------*/ 696