2 /*--------------------------------------------------------------------*/
3 /*--- AMD64/Linux-specific kernel interface. vki-amd64-linux.h ---*/
4 /*--------------------------------------------------------------------*/
7 This file is part of Valgrind, a dynamic binary instrumentation
10 Copyright (C) 2000-2010 Julian Seward
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.
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.
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
28 The GNU General Public License is contained in the file COPYING.
31 #ifndef __VKI_AMD64_LINUX_H
32 #define __VKI_AMD64_LINUX_H
34 // AMD64 is little-endian.
35 #define VKI_LITTLE_ENDIAN 1
37 //----------------------------------------------------------------------
38 // From linux-2.6.9/include/asm-x86_64/types.h
39 //----------------------------------------------------------------------
41 typedef unsigned char __vki_u8;
43 typedef __signed__ short __vki_s16;
44 typedef unsigned short __vki_u16;
46 typedef __signed__ int __vki_s32;
47 typedef unsigned int __vki_u32;
49 typedef __signed__ long long __vki_s64;
50 typedef unsigned long long __vki_u64;
52 typedef unsigned short vki_u16;
54 typedef unsigned int vki_u32;
56 //----------------------------------------------------------------------
57 // From linux-2.6.9/include/asm-x86_64/page.h
58 //----------------------------------------------------------------------
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
65 //----------------------------------------------------------------------
66 // From linux-2.6.35.4/arch/x86/include/asm/shmparam.h
67 //----------------------------------------------------------------------
69 #define VKI_SHMLBA VKI_PAGE_SIZE
71 //----------------------------------------------------------------------
72 // From linux-2.6.9/include/asm-x86_64/signal.h
73 //----------------------------------------------------------------------
76 #define _VKI_NSIG_BPW 64
77 #define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
79 typedef unsigned long vki_old_sigset_t; /* at least 32 bits */
82 unsigned long sig[_VKI_NSIG_WORDS];
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
114 #define VKI_SIGPWR 30
115 #define VKI_SIGSYS 31
116 #define VKI_SIGUNUSED 31
118 #define VKI_SIGRTMIN 32
119 #define VKI_SIGRTMAX _VKI_NSIG
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
129 #define VKI_SA_NOMASK VKI_SA_NODEFER
130 #define VKI_SA_ONESHOT VKI_SA_RESETHAND
132 #define VKI_SA_RESTORER 0x04000000
134 #define VKI_SS_ONSTACK 1
135 #define VKI_SS_DISABLE 2
137 #define VKI_MINSIGSTKSZ 2048
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 */
143 typedef void __vki_signalfn_t(int);
144 typedef __vki_signalfn_t __user *__vki_sighandler_t;
146 typedef void __vki_restorefn_t(void);
147 typedef __vki_restorefn_t __user *__vki_sigrestore_t;
149 #define VKI_SIG_DFL ((__vki_sighandler_t)0) /* default signal handling */
150 #define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */
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 */
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;
169 typedef struct vki_sigaltstack {
175 //----------------------------------------------------------------------
176 // From linux-2.6.9/include/asm-x86_64/sigcontext.h
177 //----------------------------------------------------------------------
179 struct _vki_fpstate {
182 __vki_u16 twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */
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];
193 struct vki_sigcontext {
211 unsigned long eflags; /* RFLAGS */
215 unsigned short __pad0;
217 unsigned long trapno;
218 unsigned long oldmask;
220 struct _vki_fpstate __user *fpstate; /* zero when no FPU context */
221 unsigned long reserved1[8];
224 //----------------------------------------------------------------------
225 // From linux-2.6.9/include/asm-x86_64/mman.h
226 //----------------------------------------------------------------------
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 */
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 */
241 //----------------------------------------------------------------------
242 // From linux-2.6.9/include/asm-x86_64/fcntl.h
243 //----------------------------------------------------------------------
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
255 #define VKI_AT_FDCWD -100
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
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. */
271 #define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */
273 #define VKI_F_LINUX_SPECIFIC_BASE 1024
275 //----------------------------------------------------------------------
276 // From linux-2.6.9/include/asm-x86_64/resource.h
277 //----------------------------------------------------------------------
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 */
284 //----------------------------------------------------------------------
285 // From linux-2.6.9/include/asm-x86_64/socket.h
286 //----------------------------------------------------------------------
288 #define VKI_SOL_SOCKET 1
290 #define VKI_SO_TYPE 3
292 //----------------------------------------------------------------------
293 // From linux-2.6.9/include/asm-x86_64/sockios.h
294 //----------------------------------------------------------------------
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) */
301 //----------------------------------------------------------------------
302 // From linux-2.6.9/include/asm-x86_64/stat.h
303 //----------------------------------------------------------------------
306 unsigned long st_dev;
307 unsigned long st_ino;
308 unsigned long st_nlink;
310 unsigned int st_mode;
314 unsigned long st_rdev;
317 long st_blocks; /* Number 512-byte blocks allocated. */
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;
328 //----------------------------------------------------------------------
329 // From linux-2.6.9/include/asm-x86_64/statfs.h
330 //----------------------------------------------------------------------
340 __vki_kernel_fsid_t f_fsid;
346 //----------------------------------------------------------------------
347 // From linux-2.6.9/include/asm-x86_64/termios.h
348 //----------------------------------------------------------------------
351 unsigned short ws_row;
352 unsigned short ws_col;
353 unsigned short ws_xpixel;
354 unsigned short ws_ypixel;
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 */
367 //----------------------------------------------------------------------
368 // From linux-2.6.9/include/asm-x86_64/termbits.h
369 //----------------------------------------------------------------------
371 typedef unsigned char vki_cc_t;
372 typedef unsigned int vki_tcflag_t;
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 */
385 //----------------------------------------------------------------------
386 // From linux-2.6.9/include/asm-x86_64/ioctl.h
387 //----------------------------------------------------------------------
389 #define _VKI_IOC_NRBITS 8
390 #define _VKI_IOC_TYPEBITS 8
391 #define _VKI_IOC_SIZEBITS 14
392 #define _VKI_IOC_DIRBITS 2
394 #define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1)
395 #define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1)
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)
402 #define _VKI_IOC_NONE 0U
403 #define _VKI_IOC_WRITE 1U
404 #define _VKI_IOC_READ 2U
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))
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))
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)
420 //----------------------------------------------------------------------
421 // From linux-2.6.9/include/asm-x86_64/ioctls.h
422 //----------------------------------------------------------------------
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 */
452 #define VKI_FIOASYNC 0x5452
453 #define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */
455 #define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
457 //----------------------------------------------------------------------
458 // From linux-2.6.9/include/asm-x86_64/poll.h
459 //----------------------------------------------------------------------
461 #define VKI_POLLIN 0x0001
469 //----------------------------------------------------------------------
470 // From linux-2.6.9/include/asm-x86_64/user.h
471 //----------------------------------------------------------------------
473 struct vki_user_i387_struct {
476 unsigned short twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */
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];
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;
496 //----------------------------------------------------------------------
497 // From linux-2.6.9/include/asm-x86_64/elf.h
498 //----------------------------------------------------------------------
500 typedef unsigned long vki_elf_greg_t;
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];
505 typedef struct vki_user_i387_struct vki_elf_fpregset_t;
507 //----------------------------------------------------------------------
508 // From linux-2.6.9/include/asm-x86_64/ucontext.h
509 //----------------------------------------------------------------------
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 */
519 //----------------------------------------------------------------------
520 // From linux-2.6.9/include/asm-x86_64/segment.h
521 //----------------------------------------------------------------------
523 #define VKI_GDT_ENTRY_TLS_ENTRIES 3
525 #define VKI_GDT_ENTRY_TLS_MIN 11
526 #define VKI_GDT_ENTRY_TLS_MAX 13
528 //----------------------------------------------------------------------
529 // From linux-2.6.11.9/include/asm-x86_64/prctl.h
530 //----------------------------------------------------------------------
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
537 //----------------------------------------------------------------------
538 // From linux-2.6.9/include/asm-x86_64/ldt.h
539 //----------------------------------------------------------------------
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.)
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
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;
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;
567 // [[Nb: for our convenience within Valgrind, use a more specific name]]
568 typedef struct vki_user_desc vki_modify_ldt_t;
571 typedef void vki_modify_ldt_t;
573 //----------------------------------------------------------------------
574 // From linux-2.6.11.2/include/asm-x86_64/ipcbuf.h
575 //----------------------------------------------------------------------
577 struct vki_ipc64_perm
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;
587 unsigned short __pad2;
588 unsigned long __unused1;
589 unsigned long __unused2;
592 //----------------------------------------------------------------------
593 // From linux-2.6.11.2/include/asm-x86_64/sembuf.h
594 //----------------------------------------------------------------------
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;
607 //----------------------------------------------------------------------
608 // From linux-2.6.11.2/include/asm-x86_64/msgbuf.h
609 //----------------------------------------------------------------------
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;
625 //----------------------------------------------------------------------
626 // From linux-2.6.11.2/include/asm-x86_64/shmbuf.h
627 //----------------------------------------------------------------------
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;
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;
654 //----------------------------------------------------------------------
655 // From linux-2.6.12.2/include/asm-x86_64/ptrace.h
656 //----------------------------------------------------------------------
658 #define VKI_PTRACE_GETREGS 12
659 #define VKI_PTRACE_SETREGS 13
660 #define VKI_PTRACE_GETFPREGS 14
661 #define VKI_PTRACE_SETFPREGS 15
663 //----------------------------------------------------------------------
665 //----------------------------------------------------------------------
667 #endif // __VKI_AMD64_LINUX_H
669 /*--------------------------------------------------------------------*/
671 /*--------------------------------------------------------------------*/