]> rtime.felk.cvut.cz Git - l4.git/blob - l4/pkg/valgrind/src/valgrind-3.6.0-svn/include/vki/vki-amd64-linux.h
update
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / include / vki / vki-amd64-linux.h
1
2 /*--------------------------------------------------------------------*/
3 /*--- AMD64/Linux-specific kernel interface.     vki-amd64-linux.h ---*/
4 /*--------------------------------------------------------------------*/
5
6 /*
7    This file is part of Valgrind, a dynamic binary instrumentation
8    framework.
9
10    Copyright (C) 2000-2010 Julian Seward 
11       jseward@acm.org
12
13    This program is free software; you can redistribute it and/or
14    modify it under the terms of the GNU General Public License as
15    published by the Free Software Foundation; either version 2 of the
16    License, or (at your option) any later version.
17
18    This program is distributed in the hope that it will be useful, but
19    WITHOUT ANY WARRANTY; without even the implied warranty of
20    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
21    General Public License for more details.
22
23    You should have received a copy of the GNU General Public License
24    along with this program; if not, write to the Free Software
25    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
26    02111-1307, USA.
27
28    The GNU General Public License is contained in the file COPYING.
29 */
30
31 #ifndef __VKI_AMD64_LINUX_H
32 #define __VKI_AMD64_LINUX_H
33
34 // AMD64 is little-endian.
35 #define VKI_LITTLE_ENDIAN  1
36
37 //----------------------------------------------------------------------
38 // From linux-2.6.9/include/asm-x86_64/types.h
39 //----------------------------------------------------------------------
40
41 typedef unsigned char __vki_u8;
42
43 typedef __signed__ short __vki_s16;
44 typedef unsigned short __vki_u16;
45
46 typedef __signed__ int __vki_s32;
47 typedef unsigned int __vki_u32;
48
49 typedef __signed__ long long __vki_s64;
50 typedef unsigned long long __vki_u64;
51
52 typedef unsigned short vki_u16;
53
54 typedef unsigned int vki_u32;
55
56 //----------------------------------------------------------------------
57 // From linux-2.6.9/include/asm-x86_64/page.h
58 //----------------------------------------------------------------------
59
60 #define VKI_PAGE_SHIFT  12
61 #define VKI_PAGE_SIZE   (1UL << VKI_PAGE_SHIFT)
62 #define VKI_MAX_PAGE_SHIFT      VKI_PAGE_SHIFT
63 #define VKI_MAX_PAGE_SIZE       VKI_PAGE_SIZE
64
65 //----------------------------------------------------------------------
66 // From linux-2.6.35.4/arch/x86/include/asm/shmparam.h
67 //----------------------------------------------------------------------
68
69 #define VKI_SHMLBA  VKI_PAGE_SIZE
70
71 //----------------------------------------------------------------------
72 // From linux-2.6.9/include/asm-x86_64/signal.h
73 //----------------------------------------------------------------------
74
75 #define _VKI_NSIG       64
76 #define _VKI_NSIG_BPW   64
77 #define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
78
79 typedef unsigned long vki_old_sigset_t;         /* at least 32 bits */
80
81 typedef 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
143 typedef void __vki_signalfn_t(int);
144 typedef __vki_signalfn_t __user *__vki_sighandler_t;
145
146 typedef void __vki_restorefn_t(void);
147 typedef __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
152 struct 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: */
165 typedef  struct vki_sigaction_base  vki_sigaction_toK_t;
166 typedef  struct vki_sigaction_base  vki_sigaction_fromK_t;
167
168
169 typedef 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
179 struct _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
193 struct 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_NORESERVE       0x4000  /* don't check for reservations */
240
241 //----------------------------------------------------------------------
242 // From linux-2.6.9/include/asm-x86_64/fcntl.h
243 //----------------------------------------------------------------------
244
245 #define VKI_O_RDONLY         00
246 #define VKI_O_WRONLY         01
247 #define VKI_O_RDWR           02
248 #define VKI_O_CREAT        0100 /* not fcntl */
249 #define VKI_O_EXCL         0200 /* not fcntl */
250 #define VKI_O_TRUNC       01000 /* not fcntl */
251 #define VKI_O_APPEND      02000
252 #define VKI_O_NONBLOCK    04000
253 #define VKI_O_LARGEFILE 0100000
254
255 #define VKI_AT_FDCWD            -100
256
257 #define VKI_F_DUPFD             0       /* dup */
258 #define VKI_F_GETFD             1       /* get close_on_exec */
259 #define VKI_F_SETFD             2       /* set/clear close_on_exec */
260 #define VKI_F_GETFL             3       /* get file->f_flags */
261 #define VKI_F_SETFL             4       /* set file->f_flags */
262 #define VKI_F_GETLK             5
263 #define VKI_F_SETLK             6
264 #define VKI_F_SETLKW            7
265
266 #define VKI_F_SETOWN            8       /*  for sockets. */
267 #define VKI_F_GETOWN            9       /*  for sockets. */
268 #define VKI_F_SETSIG            10      /*  for sockets. */
269 #define VKI_F_GETSIG            11      /*  for sockets. */
270
271 #define VKI_FD_CLOEXEC  1       /* actually anything with low bit set goes */
272
273 #define VKI_F_LINUX_SPECIFIC_BASE       1024
274
275 //----------------------------------------------------------------------
276 // From linux-2.6.9/include/asm-x86_64/resource.h
277 //----------------------------------------------------------------------
278
279 #define VKI_RLIMIT_DATA         2       /* max data size */
280 #define VKI_RLIMIT_STACK        3       /* max stack size */
281 #define VKI_RLIMIT_CORE         4       /* max core file size */
282 #define VKI_RLIMIT_NOFILE       7       /* max number of open files */
283
284 //----------------------------------------------------------------------
285 // From linux-2.6.9/include/asm-x86_64/socket.h
286 //----------------------------------------------------------------------
287
288 #define VKI_SOL_SOCKET  1
289
290 #define VKI_SO_TYPE     3
291
292 //----------------------------------------------------------------------
293 // From linux-2.6.9/include/asm-x86_64/sockios.h
294 //----------------------------------------------------------------------
295
296 #define VKI_SIOCSPGRP           0x8902
297 #define VKI_SIOCGPGRP           0x8904
298 #define VKI_SIOCGSTAMP          0x8906          /* Get stamp (timeval) */
299 #define VKI_SIOCGSTAMPNS        0x8907          /* Get stamp (timespec) */
300
301 //----------------------------------------------------------------------
302 // From linux-2.6.9/include/asm-x86_64/stat.h
303 //----------------------------------------------------------------------
304
305 struct vki_stat {
306         unsigned long   st_dev;
307         unsigned long   st_ino;
308         unsigned long   st_nlink;
309
310         unsigned int    st_mode;
311         unsigned int    st_uid;
312         unsigned int    st_gid;
313         unsigned int    __pad0;
314         unsigned long   st_rdev;
315         long            st_size;
316         long            st_blksize;
317         long            st_blocks;      /* Number 512-byte blocks allocated. */
318
319         unsigned long   st_atime;
320         unsigned long   st_atime_nsec; 
321         unsigned long   st_mtime;
322         unsigned long   st_mtime_nsec;
323         unsigned long   st_ctime;
324         unsigned long   st_ctime_nsec;
325         long            __unused[3];
326 };
327
328 //----------------------------------------------------------------------
329 // From linux-2.6.9/include/asm-x86_64/statfs.h
330 //----------------------------------------------------------------------
331
332 struct vki_statfs {
333         long f_type;
334         long f_bsize;
335         long f_blocks;
336         long f_bfree;
337         long f_bavail;
338         long f_files;
339         long f_ffree;
340         __vki_kernel_fsid_t f_fsid;
341         long f_namelen;
342         long f_frsize;
343         long f_spare[5];
344 };
345
346 //----------------------------------------------------------------------
347 // From linux-2.6.9/include/asm-x86_64/termios.h
348 //----------------------------------------------------------------------
349
350 struct vki_winsize {
351         unsigned short ws_row;
352         unsigned short ws_col;
353         unsigned short ws_xpixel;
354         unsigned short ws_ypixel;
355 };
356
357 #define VKI_NCC 8
358 struct vki_termio {
359         unsigned short c_iflag;         /* input mode flags */
360         unsigned short c_oflag;         /* output mode flags */
361         unsigned short c_cflag;         /* control mode flags */
362         unsigned short c_lflag;         /* local mode flags */
363         unsigned char c_line;           /* line discipline */
364         unsigned char c_cc[VKI_NCC];    /* control characters */
365 };
366
367 //----------------------------------------------------------------------
368 // From linux-2.6.9/include/asm-x86_64/termbits.h
369 //----------------------------------------------------------------------
370
371 typedef unsigned char   vki_cc_t;
372 typedef unsigned int    vki_tcflag_t;
373
374 #define VKI_NCCS 19
375 struct vki_termios {
376         vki_tcflag_t c_iflag;           /* input mode flags */
377         vki_tcflag_t c_oflag;           /* output mode flags */
378         vki_tcflag_t c_cflag;           /* control mode flags */
379         vki_tcflag_t c_lflag;           /* local mode flags */
380         vki_cc_t c_line;                /* line discipline */
381         vki_cc_t c_cc[VKI_NCCS];        /* control characters */
382 };
383
384
385 //----------------------------------------------------------------------
386 // From linux-2.6.9/include/asm-x86_64/ioctl.h
387 //----------------------------------------------------------------------
388
389 #define _VKI_IOC_NRBITS         8
390 #define _VKI_IOC_TYPEBITS       8
391 #define _VKI_IOC_SIZEBITS       14
392 #define _VKI_IOC_DIRBITS        2
393
394 #define _VKI_IOC_SIZEMASK       ((1 << _VKI_IOC_SIZEBITS)-1)
395 #define _VKI_IOC_DIRMASK        ((1 << _VKI_IOC_DIRBITS)-1)
396
397 #define _VKI_IOC_NRSHIFT        0
398 #define _VKI_IOC_TYPESHIFT      (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
399 #define _VKI_IOC_SIZESHIFT      (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
400 #define _VKI_IOC_DIRSHIFT       (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
401
402 #define _VKI_IOC_NONE   0U
403 #define _VKI_IOC_WRITE  1U
404 #define _VKI_IOC_READ   2U
405
406 #define _VKI_IOC(dir,type,nr,size) \
407         (((dir)  << _VKI_IOC_DIRSHIFT) | \
408          ((type) << _VKI_IOC_TYPESHIFT) | \
409          ((nr)   << _VKI_IOC_NRSHIFT) | \
410          ((size) << _VKI_IOC_SIZESHIFT))
411
412 #define _VKI_IO(type,nr)                _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
413 #define _VKI_IOR(type,nr,size)  _VKI_IOC(_VKI_IOC_READ,(type),(nr),sizeof(size))
414 #define _VKI_IOW(type,nr,size)  _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),sizeof(size))
415 #define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),sizeof(size))
416
417 #define _VKI_IOC_DIR(nr)                (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
418 #define _VKI_IOC_SIZE(nr)               (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
419
420 //----------------------------------------------------------------------
421 // From linux-2.6.9/include/asm-x86_64/ioctls.h
422 //----------------------------------------------------------------------
423
424 #define VKI_TCGETS      0x5401
425 #define VKI_TCSETS      0x5402
426 #define VKI_TCSETSW     0x5403
427 #define VKI_TCSETSF     0x5404
428 #define VKI_TCGETA      0x5405
429 #define VKI_TCSETA      0x5406
430 #define VKI_TCSETAW     0x5407
431 #define VKI_TCSETAF     0x5408
432 #define VKI_TCSBRK      0x5409
433 #define VKI_TCXONC      0x540A
434 #define VKI_TCFLSH      0x540B
435 #define VKI_TIOCSCTTY   0x540E
436 #define VKI_TIOCGPGRP   0x540F
437 #define VKI_TIOCSPGRP   0x5410
438 #define VKI_TIOCOUTQ    0x5411
439 #define VKI_TIOCGWINSZ  0x5413
440 #define VKI_TIOCSWINSZ  0x5414
441 #define VKI_TIOCMGET    0x5415
442 #define VKI_TIOCMBIS    0x5416
443 #define VKI_TIOCMBIC    0x5417
444 #define VKI_TIOCMSET    0x5418
445 #define VKI_FIONREAD    0x541B
446 #define VKI_TIOCLINUX   0x541C
447 #define VKI_FIONBIO     0x5421
448 #define VKI_TCSBRKP     0x5425  /* Needed for POSIX tcsendbreak() */
449 #define VKI_TIOCGPTN    _VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
450 #define VKI_TIOCSPTLCK  _VKI_IOW('T',0x31, int)  /* Lock/unlock Pty */
451
452 #define VKI_FIOASYNC    0x5452
453 #define VKI_TIOCSERGETLSR   0x5459 /* Get line status register */
454
455 #define VKI_TIOCGICOUNT 0x545D  /* read serial port inline interrupt counts */
456
457 //----------------------------------------------------------------------
458 // From linux-2.6.9/include/asm-x86_64/poll.h
459 //----------------------------------------------------------------------
460
461 #define VKI_POLLIN              0x0001
462
463 struct vki_pollfd {
464         int fd;
465         short events;
466         short revents;
467 };
468
469 //----------------------------------------------------------------------
470 // From linux-2.6.9/include/asm-x86_64/user.h
471 //----------------------------------------------------------------------
472
473 struct vki_user_i387_struct {
474         unsigned short  cwd;
475         unsigned short  swd;
476         unsigned short  twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */
477         unsigned short  fop;
478         __vki_u64       rip;
479         __vki_u64       rdp;
480         __vki_u32       mxcsr;
481         __vki_u32       mxcsr_mask;
482         __vki_u32       st_space[32];   /* 8*16 bytes for each FP-reg = 128 bytes */
483         __vki_u32       xmm_space[64];  /* 16*16 bytes for each XMM-reg = 256 bytes */
484         __vki_u32       padding[24];
485 };
486
487 struct vki_user_regs_struct {
488         unsigned long r15,r14,r13,r12,rbp,rbx,r11,r10;
489         unsigned long r9,r8,rax,rcx,rdx,rsi,rdi,orig_rax;
490         unsigned long rip,cs,eflags;
491         unsigned long rsp,ss;
492         unsigned long fs_base, gs_base;
493         unsigned long ds,es,fs,gs; 
494 }; 
495
496 //----------------------------------------------------------------------
497 // From linux-2.6.9/include/asm-x86_64/elf.h
498 //----------------------------------------------------------------------
499
500 typedef unsigned long vki_elf_greg_t;
501
502 #define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t))
503 typedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG];
504
505 typedef struct vki_user_i387_struct vki_elf_fpregset_t;
506
507 //----------------------------------------------------------------------
508 // From linux-2.6.9/include/asm-x86_64/ucontext.h
509 //----------------------------------------------------------------------
510
511 struct vki_ucontext {
512         unsigned long           uc_flags;
513         struct vki_ucontext    *uc_link;
514         vki_stack_t             uc_stack;
515         struct vki_sigcontext   uc_mcontext;
516         vki_sigset_t            uc_sigmask;     /* mask last for extensibility */
517 };
518
519 //----------------------------------------------------------------------
520 // From linux-2.6.9/include/asm-x86_64/segment.h
521 //----------------------------------------------------------------------
522
523 #define VKI_GDT_ENTRY_TLS_ENTRIES 3
524
525 #define VKI_GDT_ENTRY_TLS_MIN 11
526 #define VKI_GDT_ENTRY_TLS_MAX 13
527
528 //----------------------------------------------------------------------
529 // From linux-2.6.11.9/include/asm-x86_64/prctl.h
530 //----------------------------------------------------------------------
531
532 #define VKI_ARCH_SET_GS 0x1001
533 #define VKI_ARCH_SET_FS 0x1002
534 #define VKI_ARCH_GET_FS 0x1003
535 #define VKI_ARCH_GET_GS 0x1004
536
537 //----------------------------------------------------------------------
538 // From linux-2.6.9/include/asm-x86_64/ldt.h
539 //----------------------------------------------------------------------
540
541 // I think this LDT stuff will have to be reinstated for amd64, but I'm not
542 // certain.  (Nb: The sys_arch_prctl seems to have replaced
543 // [gs]et_thread_area syscalls.)
544 //
545 // Note that the type here is very slightly different to the
546 // type for x86 (the final 'lm' field is added);  I'm not sure about the
547 // significance of that... --njn
548
549 #if 0
550 /* [[Nb: This is the structure passed to the modify_ldt syscall.  Just so as
551    to confuse and annoy everyone, this is _not_ the same as an
552    VgLdtEntry and has to be translated into such.  The logic for doing
553    so, in vg_ldt.c, is copied from the kernel sources.]] */
554 struct vki_user_desc {
555         unsigned int  entry_number;
556         unsigned long base_addr;
557         unsigned int  limit;
558         unsigned int  seg_32bit:1;
559         unsigned int  contents:2;
560         unsigned int  read_exec_only:1;
561         unsigned int  limit_in_pages:1;
562         unsigned int  seg_not_present:1;
563         unsigned int  useable:1;
564         unsigned int  lm:1;
565 };
566
567 // [[Nb: for our convenience within Valgrind, use a more specific name]]
568 typedef struct vki_user_desc vki_modify_ldt_t;
569 #endif
570
571 typedef void vki_modify_ldt_t;
572
573 //----------------------------------------------------------------------
574 // From linux-2.6.11.2/include/asm-x86_64/ipcbuf.h
575 //----------------------------------------------------------------------
576
577 struct vki_ipc64_perm
578 {
579         __vki_kernel_key_t      key;
580         __vki_kernel_uid32_t    uid;
581         __vki_kernel_gid32_t    gid;
582         __vki_kernel_uid32_t    cuid;
583         __vki_kernel_gid32_t    cgid;
584         __vki_kernel_mode_t     mode;
585         unsigned short          __pad1;
586         unsigned short          seq;
587         unsigned short          __pad2;
588         unsigned long           __unused1;
589         unsigned long           __unused2;
590 };
591
592 //----------------------------------------------------------------------
593 // From linux-2.6.11.2/include/asm-x86_64/sembuf.h
594 //----------------------------------------------------------------------
595
596 struct vki_semid64_ds {
597         struct vki_ipc64_perm sem_perm;         /* permissions .. see ipc.h */
598         __vki_kernel_time_t     sem_otime;              /* last semop time */
599         unsigned long   __unused1;
600         __vki_kernel_time_t     sem_ctime;              /* last change time */
601         unsigned long   __unused2;
602         unsigned long   sem_nsems;              /* no. of semaphores in array */
603         unsigned long   __unused3;
604         unsigned long   __unused4;
605 };
606
607 //----------------------------------------------------------------------
608 // From linux-2.6.11.2/include/asm-x86_64/msgbuf.h
609 //----------------------------------------------------------------------
610
611 struct vki_msqid64_ds {
612         struct vki_ipc64_perm msg_perm;
613         __vki_kernel_time_t msg_stime;  /* last msgsnd time */
614         __vki_kernel_time_t msg_rtime;  /* last msgrcv time */
615         __vki_kernel_time_t msg_ctime;  /* last change time */
616         unsigned long  msg_cbytes;      /* current number of bytes on queue */
617         unsigned long  msg_qnum;        /* number of messages in queue */
618         unsigned long  msg_qbytes;      /* max number of bytes on queue */
619         __vki_kernel_pid_t msg_lspid;   /* pid of last msgsnd */
620         __vki_kernel_pid_t msg_lrpid;   /* last receive pid */
621         unsigned long  __unused4;
622         unsigned long  __unused5;
623 };
624
625 //----------------------------------------------------------------------
626 // From linux-2.6.11.2/include/asm-x86_64/shmbuf.h
627 //----------------------------------------------------------------------
628
629 struct vki_shmid64_ds {
630         struct vki_ipc64_perm   shm_perm;       /* operation perms */
631         vki_size_t              shm_segsz;      /* size of segment (bytes) */
632         __vki_kernel_time_t     shm_atime;      /* last attach time */
633         __vki_kernel_time_t     shm_dtime;      /* last detach time */
634         __vki_kernel_time_t     shm_ctime;      /* last change time */
635         __vki_kernel_pid_t      shm_cpid;       /* pid of creator */
636         __vki_kernel_pid_t      shm_lpid;       /* pid of last operator */
637         unsigned long           shm_nattch;     /* no. of current attaches */
638         unsigned long           __unused4;
639         unsigned long           __unused5;
640 };
641
642 struct vki_shminfo64 {
643         unsigned long   shmmax;
644         unsigned long   shmmin;
645         unsigned long   shmmni;
646         unsigned long   shmseg;
647         unsigned long   shmall;
648         unsigned long   __unused1;
649         unsigned long   __unused2;
650         unsigned long   __unused3;
651         unsigned long   __unused4;
652 };
653
654 //----------------------------------------------------------------------
655 // From linux-2.6.12.2/include/asm-x86_64/ptrace.h
656 //----------------------------------------------------------------------
657
658 #define VKI_PTRACE_GETREGS            12
659 #define VKI_PTRACE_SETREGS            13
660 #define VKI_PTRACE_GETFPREGS          14
661 #define VKI_PTRACE_SETFPREGS          15
662
663 //----------------------------------------------------------------------
664 // And that's it!
665 //----------------------------------------------------------------------
666
667 #endif // __VKI_AMD64_LINUX_H
668
669 /*--------------------------------------------------------------------*/
670 /*--- end                                                          ---*/
671 /*--------------------------------------------------------------------*/