16bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 2a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner/*--------------------------------------------------------------------*/ 3a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner/*--- TILEGX/Linux-specific kernel interface. vki-tilegx-linux.h ---*/ 4a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner/*--------------------------------------------------------------------*/ 5a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner 6a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner/* 7a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner This file is part of Valgrind, a dynamic binary instrumentation 8a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner framework. 9a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner 10a14db75641f377ef8b033c67653cd95ac4c36fe3Chris Lattner Copyright (C) 2010-2015 Tilera Corp. 1183ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smith 1283ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smith This program is free software; you can redistribute it and/or 1383ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smith modify it under the terms of the GNU General Public License as 1483ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smith published by the Free Software Foundation; either version 2 of the 1583ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smith License, or (at your option) any later version. 1683ea530f9da1b8ca57773bf53418ce9fc98f46acRichard Smith 176bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines This program is distributed in the hope that it will be useful, but 186bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines WITHOUT ANY WARRANTY; without even the implied warranty of 196bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 206bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines General Public License for more details. 216bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines 226bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines You should have received a copy of the GNU General Public License 236bcf27bb9a4b5c3f79cb44c0e4654a6d7619ad89Stephen Hines along with this program; if not, write to the Free Software 24 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 25 02111-1307, USA. 26 27 The GNU General Public License is contained in the file COPYING. 28*/ 29 30/* Contributed by Zhi-Gang Liu <zliu at tilera dot com> */ 31 32#ifndef __VKI_TILEGX_LINUX_H 33#define __VKI_TILEGX_LINUX_H 34 35// TILEGX is little-endian. 36#define VKI_LITTLE_ENDIAN 1 37 38//---------------------------------------------------------------------- 39// From tilegx linux/include/asm-generic/types.h 40//---------------------------------------------------------------------- 41 42typedef unsigned char __vki_u8; 43 44typedef __signed__ short __vki_s16; 45typedef unsigned short __vki_u16; 46 47typedef __signed__ int __vki_s32; 48typedef unsigned int __vki_u32; 49 50typedef __signed__ long long __vki_s64; 51typedef unsigned long long __vki_u64; 52 53typedef unsigned short vki_u16; 54 55typedef unsigned int vki_u32; 56 57//---------------------------------------------------------------------- 58// From tilegx linux/include/asm_generic/page.h 59//---------------------------------------------------------------------- 60 61#define VKI_PAGE_SHIFT 16 62#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) 63#define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT 64#define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE 65 66//---------------------------------------------------------------------- 67// From linux/include/asm/shmparam.h 68//---------------------------------------------------------------------- 69 70#define VKI_SHMLBA VKI_PAGE_SIZE 71 72//---------------------------------------------------------------------- 73// From tilegx linux/include/asm_generic/signal.h 74//---------------------------------------------------------------------- 75 76#define _VKI_NSIG 64 77#define _VKI_NSIG_BPW 64 78#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW) 79 80typedef unsigned long vki_old_sigset_t; 81 82typedef struct { 83 unsigned long sig[_VKI_NSIG_WORDS]; 84} vki_sigset_t; 85 86#define VKI_SIGHUP 1 87#define VKI_SIGINT 2 88#define VKI_SIGQUIT 3 89#define VKI_SIGILL 4 90#define VKI_SIGTRAP 5 91#define VKI_SIGABRT 6 92#define VKI_SIGIOT 6 93#define VKI_SIGBUS 7 94#define VKI_SIGFPE 8 95#define VKI_SIGKILL 9 96#define VKI_SIGUSR1 10 97#define VKI_SIGSEGV 11 98#define VKI_SIGUSR2 12 99#define VKI_SIGPIPE 13 100#define VKI_SIGALRM 14 101#define VKI_SIGTERM 15 102#define VKI_SIGSTKFLT 16 103#define VKI_SIGCHLD 17 104#define VKI_SIGCONT 18 105#define VKI_SIGSTOP 19 106#define VKI_SIGTSTP 20 107#define VKI_SIGTTIN 21 108#define VKI_SIGTTOU 22 109#define VKI_SIGURG 23 110#define VKI_SIGXCPU 24 111#define VKI_SIGXFSZ 25 112#define VKI_SIGVTALRM 26 113#define VKI_SIGPROF 27 114#define VKI_SIGWINCH 28 115#define VKI_SIGIO 29 116#define VKI_SIGPOLL 29 117#define VKI_SIGPWR 30 118#define VKI_SIGSYS 31 119#define VKI_SIGUNUSED 31 120 121#define VKI_SIGRTMIN 32 122#define VKI_SIGRTMAX _VKI_NSIG 123 124#define VKI_SA_NOCLDSTOP 0x00000001 125#define VKI_SA_NOCLDWAIT 0x00000002 126#define VKI_SA_SIGINFO 0x00000004 127#define VKI_SA_ONSTACK 0x08000000 128#define VKI_SA_RESTART 0x10000000 129#define VKI_SA_NODEFER 0x40000000 130#define VKI_SA_RESETHAND 0x80000000 131 132#define VKI_SA_NOMASK VKI_SA_NODEFER 133#define VKI_SA_ONESHOT VKI_SA_RESETHAND 134 135#define VKI_SA_RESTORER 0x04000000 136 137#define VKI_SS_ONSTACK 1 138#define VKI_SS_DISABLE 2 139 140#define VKI_MINSIGSTKSZ 2048 141 142#define VKI_SIG_BLOCK 0 /* for blocking signals */ 143#define VKI_SIG_UNBLOCK 1 /* for unblocking signals */ 144#define VKI_SIG_SETMASK 2 /* for setting the signal mask */ 145 146typedef void __vki_signalfn_t(int); 147typedef __vki_signalfn_t __user *__vki_sighandler_t; 148 149typedef void __vki_restorefn_t(void); 150typedef __vki_restorefn_t __user *__vki_sigrestore_t; 151 152#define VKI_SIG_DFL ((__vki_sighandler_t)0) /* default signal handling */ 153#define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */ 154 155struct vki_sigaction_base { 156 // [[Nb: a 'k' prefix is added to "sa_handler" because 157 // bits/sigaction.h (which gets dragged in somehow via signal.h) 158 // #defines it as something else. Since that is done for glibc's 159 // purposes, which we don't care about here, we use our own name.]] 160 __vki_sighandler_t ksa_handler; 161 unsigned long sa_flags; 162 __vki_sigrestore_t sa_restorer; 163 vki_sigset_t sa_mask; /* mask last for extensibility */ 164}; 165 166/* On Linux we use the same type for passing sigactions to 167 and from the kernel. Hence: */ 168typedef struct vki_sigaction_base vki_sigaction_toK_t; 169typedef struct vki_sigaction_base vki_sigaction_fromK_t; 170 171 172typedef struct vki_sigaltstack { 173 void __user *ss_sp; 174 int ss_flags; 175 vki_size_t ss_size; 176} vki_stack_t; 177 178//---------------------------------------------------------------------- 179// From tilegx linux/include/asm_generic/sigcontext.h 180//---------------------------------------------------------------------- 181 182// Tilegx has no FP registers. 183struct _vki_fpstate { 184 185}; 186 187struct vki_sigcontext { 188 unsigned long gregs[53]; 189 unsigned long tp; 190 unsigned long sp; 191 unsigned long lr; 192 unsigned long pc; 193 unsigned long ics; 194 unsigned long faultnum; 195 unsigned long pad[5]; 196}; 197 198//---------------------------------------------------------------------- 199// From tilegx linux/include/asm_generic/mman.h 200//---------------------------------------------------------------------- 201 202#define VKI_PROT_READ 0x1 /* page can be read */ 203#define VKI_PROT_WRITE 0x2 /* page can be written */ 204#define VKI_PROT_EXEC 0x4 /* page can be executed */ 205#define VKI_PROT_NONE 0x0 /* page can not be accessed */ 206#define VKI_PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend change to start of growsdown vma */ 207#define VKI_PROT_GROWSUP 0x02000000 /* mprotect flag: extend change to end of growsup vma */ 208 209#define VKI_MAP_SHARED 0x01 /* Share changes */ 210#define VKI_MAP_PRIVATE 0x02 /* Changes are private */ 211#define VKI_MAP_FIXED 0x10 /* Interpret addr exactly */ 212#define VKI_MAP_ANONYMOUS 0x20 /* don't use a file */ 213#define VKI_MAP_HUGETLB 0x4000 /* Use HUGETLB */ 214 215//---------------------------------------------------------------------- 216// From tilegx linux/include/asm_generic/fcntl.h 217//---------------------------------------------------------------------- 218 219#define VKI_O_RDONLY 00 220#define VKI_O_WRONLY 01 221#define VKI_O_RDWR 02 222#define VKI_O_ACCMODE 03 223#define VKI_O_CREAT 0100 /* not fcntl */ 224#define VKI_O_EXCL 0200 /* not fcntl */ 225#define VKI_O_TRUNC 01000 /* not fcntl */ 226#define VKI_O_APPEND 02000 227#define VKI_O_NONBLOCK 04000 228#define VKI_O_LARGEFILE 0100000 229 230#define VKI_AT_FDCWD -100 231 232#define VKI_F_DUPFD 0 /* dup */ 233#define VKI_F_GETFD 1 /* get close_on_exec */ 234#define VKI_F_SETFD 2 /* set/clear close_on_exec */ 235#define VKI_F_GETFL 3 /* get file->f_flags */ 236#define VKI_F_SETFL 4 /* set file->f_flags */ 237#define VKI_F_GETLK 5 238#define VKI_F_SETLK 6 239#define VKI_F_SETLKW 7 240 241#define VKI_F_SETOWN 8 /* for sockets. */ 242#define VKI_F_GETOWN 9 /* for sockets. */ 243#define VKI_F_SETSIG 10 /* for sockets. */ 244#define VKI_F_GETSIG 11 /* for sockets. */ 245 246#define VKI_F_SETOWN_EX 15 247#define VKI_F_GETOWN_EX 16 248#define VKI_F_GETLK64 12 249#define VKI_F_SETLK64 13 250#define VKI_F_SETLKW64 14 251 252#define VKI_F_OFD_GETLK -1 253#define VKI_F_OFD_SETLK -2 254#define VKI_F_OFD_SETLKW -3 255 256#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */ 257 258#define VKI_F_LINUX_SPECIFIC_BASE 1024 259 260struct vki_f_owner_ex { 261 int type; 262 __vki_kernel_pid_t pid; 263}; 264 265//---------------------------------------------------------------------- 266// From tilegx linux/include/asm_generic/resource.h 267//---------------------------------------------------------------------- 268 269#define VKI_RLIMIT_DATA 2 /* max data size */ 270#define VKI_RLIMIT_STACK 3 /* max stack size */ 271#define VKI_RLIMIT_CORE 4 /* max core file size */ 272#define VKI_RLIMIT_NOFILE 7 /* max number of open files */ 273 274//---------------------------------------------------------------------- 275// From tilegx linux/include/asm_generic/socket.h 276//---------------------------------------------------------------------- 277 278#define VKI_SOL_SOCKET 1 279#define VKI_SO_TYPE 3 280#define VKI_SO_ATTACH_FILTER 26 281 282//---------------------------------------------------------------------- 283// From tilegx linux/include/asm_generic/sockios.h 284//---------------------------------------------------------------------- 285 286#define VKI_SIOCSPGRP 0x8902 287#define VKI_SIOCGPGRP 0x8904 288#define VKI_SIOCATMARK 0x8905 289#define VKI_SIOCGSTAMP 0x8906 /* Get stamp (timeval) */ 290#define VKI_SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */ 291 292//---------------------------------------------------------------------- 293// From tilegx linux/include/asm_generic/stat.h 294//---------------------------------------------------------------------- 295 296struct vki_stat { 297 unsigned long st_dev; /* Device. */ 298 unsigned long st_ino; /* File serial number. */ 299 unsigned int st_mode; /* File mode. */ 300 unsigned int st_nlink; /* Link count. */ 301 unsigned int st_uid; /* User ID of the file's owner. */ 302 unsigned int st_gid; /* Group ID of the file's group. */ 303 unsigned long st_rdev; /* Device number, if device. */ 304 unsigned long __pad1; 305 long st_size; /* Size of file, in bytes. */ 306 int st_blksize; /* Optimal block size for I/O. */ 307 int __pad2; 308 long st_blocks; /* Number 512-byte blocks allocated. */ 309 long st_atime; /* Time of last access. */ 310 unsigned long st_atime_nsec; 311 long st_mtime; /* Time of last modification. */ 312 unsigned long st_mtime_nsec; 313 long st_ctime; /* Time of last status change. */ 314 unsigned long st_ctime_nsec; 315 unsigned int __unused4; 316 unsigned int __unused5; 317}; 318 319struct vki_stat64 { 320 unsigned long st_dev; /* Device. */ 321 unsigned long st_ino; /* File serial number. */ 322 unsigned int st_mode; /* File mode. */ 323 unsigned int st_nlink; /* Link count. */ 324 unsigned int st_uid; /* User ID of the file's owner. */ 325 unsigned int st_gid; /* Group ID of the file's group. */ 326 unsigned long st_rdev; /* Device number, if device. */ 327 unsigned long __pad1; 328 long st_size; /* Size of file, in bytes. */ 329 int st_blksize; /* Optimal block size for I/O. */ 330 int __pad2; 331 long st_blocks; /* Number 512-byte blocks allocated. */ 332 long st_atime; /* Time of last access. */ 333 unsigned long st_atime_nsec; 334 long st_mtime; /* Time of last modification. */ 335 unsigned long st_mtime_nsec; 336 long st_ctime; /* Time of last status change. */ 337 unsigned long st_ctime_nsec; 338 unsigned int __unused4; 339 unsigned int __unused5; 340}; 341 342//---------------------------------------------------------------------- 343// From tilegx linux/include/asm_generic/statfs.h 344//---------------------------------------------------------------------- 345 346struct vki_statfs { 347 long f_type; 348 long f_bsize; 349 long f_blocks; 350 long f_bfree; 351 long f_bavail; 352 long f_files; 353 long f_ffree; 354 __vki_kernel_fsid_t f_fsid; 355 long f_namelen; 356 long f_frsize; 357 long f_flags; 358 long f_spare[4]; 359}; 360 361//---------------------------------------------------------------------- 362// From tilegx linux/include/asm_generic/termios.h 363//---------------------------------------------------------------------- 364 365struct vki_winsize { 366 unsigned short ws_row; 367 unsigned short ws_col; 368 unsigned short ws_xpixel; 369 unsigned short ws_ypixel; 370}; 371 372#define VKI_NCC 8 373struct vki_termio { 374 unsigned short c_iflag; /* input mode flags */ 375 unsigned short c_oflag; /* output mode flags */ 376 unsigned short c_cflag; /* control mode flags */ 377 unsigned short c_lflag; /* local mode flags */ 378 unsigned char c_line; /* line discipline */ 379 unsigned char c_cc[VKI_NCC]; /* control characters */ 380}; 381 382//---------------------------------------------------------------------- 383// From tilegx linux/include/asm_generic/termbits.h 384//---------------------------------------------------------------------- 385 386typedef unsigned char vki_cc_t; 387typedef unsigned int vki_tcflag_t; 388 389#define VKI_NCCS 19 390struct vki_termios { 391 vki_tcflag_t c_iflag; /* input mode flags */ 392 vki_tcflag_t c_oflag; /* output mode flags */ 393 vki_tcflag_t c_cflag; /* control mode flags */ 394 vki_tcflag_t c_lflag; /* local mode flags */ 395 vki_cc_t c_line; /* line discipline */ 396 vki_cc_t c_cc[VKI_NCCS]; /* control characters */ 397}; 398 399 400//---------------------------------------------------------------------- 401// From tilegx linux/include/asm_generic/ioctl.h 402//---------------------------------------------------------------------- 403 404#define _VKI_IOC_NRBITS 8 405#define _VKI_IOC_TYPEBITS 8 406#define _VKI_IOC_SIZEBITS 14 407#define _VKI_IOC_DIRBITS 2 408 409#define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1) 410#define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1) 411 412#define _VKI_IOC_NRSHIFT 0 413#define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS) 414#define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS) 415#define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS) 416 417#define _VKI_IOC_NONE 0U 418#define _VKI_IOC_WRITE 1U 419#define _VKI_IOC_READ 2U 420 421#define _VKI_IOC(dir,type,nr,size) \ 422 (((dir) << _VKI_IOC_DIRSHIFT) | \ 423 ((type) << _VKI_IOC_TYPESHIFT) | \ 424 ((nr) << _VKI_IOC_NRSHIFT) | \ 425 ((size) << _VKI_IOC_SIZESHIFT)) 426 427#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0) 428#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr),sizeof(size)) 429#define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr),sizeof(size)) 430#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE,(type),(nr),sizeof(size)) 431 432#define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK) 433#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK) 434 435//---------------------------------------------------------------------- 436// From tilegx linux/include/asm_generic/ioctls.h 437//---------------------------------------------------------------------- 438 439#define VKI_TCGETS 0x5401 440#define VKI_TCSETS 0x5402 441#define VKI_TCSETSW 0x5403 442#define VKI_TCSETSF 0x5404 443#define VKI_TCGETA 0x5405 444#define VKI_TCSETA 0x5406 445#define VKI_TCSETAW 0x5407 446#define VKI_TCSETAF 0x5408 447#define VKI_TCSBRK 0x5409 448#define VKI_TCXONC 0x540A 449#define VKI_TCFLSH 0x540B 450#define VKI_TIOCEXCL 0x540C 451#define VKI_TIOCNXCL 0x540D 452#define VKI_TIOCSCTTY 0x540E 453#define VKI_TIOCGPGRP 0x540F 454#define VKI_TIOCSPGRP 0x5410 455#define VKI_TIOCOUTQ 0x5411 456#define VKI_TIOCSTI 0x5412 457#define VKI_TIOCGWINSZ 0x5413 458#define VKI_TIOCSWINSZ 0x5414 459#define VKI_TIOCMGET 0x5415 460#define VKI_TIOCMBIS 0x5416 461#define VKI_TIOCMBIC 0x5417 462#define VKI_TIOCMSET 0x5418 463#define VKI_TIOCGSOFTCAR 0x5419 464#define VKI_TIOCSSOFTCAR 0x541A 465#define VKI_FIONREAD 0x541B 466#define VKI_TIOCINQ VKI_FIONREAD 467#define VKI_TIOCLINUX 0x541C 468#define VKI_TIOCCONS 0x541D 469#define VKI_TIOCGSERIAL 0x541E 470#define VKI_TIOCSSERIAL 0x541F 471#define VKI_TIOCPKT 0x5420 472#define VKI_FIONBIO 0x5421 473#define VKI_TIOCNOTTY 0x5422 474#define VKI_TIOCSETD 0x5423 475#define VKI_TIOCGETD 0x5424 476#define VKI_TCSBRKP 0x5425 477#define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ 478#define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */ 479 480#define VKI_FIONCLEX 0x5450 481#define VKI_FIOCLEX 0x5451 482#define VKI_FIOASYNC 0x5452 483#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ 484#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ 485 486// X86_64 define above, assume tilegx need no more than that. --FIXME 487 488#define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ 489#define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */ 490 491#define VKI_FIOASYNC 0x5452 492#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */ 493#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */ 494 495//---------------------------------------------------------------------- 496// From tilegx linux/include/asm_generic/poll.h 497//---------------------------------------------------------------------- 498 499#define VKI_POLLIN 0x0001 500 501struct vki_pollfd { 502 int fd; 503 short events; 504 short revents; 505}; 506 507//---------------------------------------------------------------------- 508// From tilegx linux/include/asm_generic/user.h 509//---------------------------------------------------------------------- 510 511//---------------------------------------------------------------------- 512// From tilegx linux/include/asm_generic/ucontext.h 513//---------------------------------------------------------------------- 514 515struct vki_ucontext { 516 unsigned long uc_flags; 517 struct vki_ucontext *uc_link; 518 vki_stack_t uc_stack; 519 struct vki_sigcontext uc_mcontext; 520 vki_sigset_t uc_sigmask; /* mask last for extensibility */ 521}; 522 523//---------------------------------------------------------------------- 524// From tilegx linux/include/asm_generic/segment.h 525//---------------------------------------------------------------------- 526// NA 527//---------------------------------------------------------------------- 528// From tilegx linux/include/asm-generic/prctl.h 529//---------------------------------------------------------------------- 530// NA 531//---------------------------------------------------------------------- 532// From tilegx linux/include/asm_generic/ldt.h 533//---------------------------------------------------------------------- 534 535// NA 536 537//---------------------------------------------------------------------- 538// From linux-2.6.11.2/include/asm-x86_64/ipcbuf.h 539//---------------------------------------------------------------------- 540 541struct vki_ipc64_perm 542{ 543 __vki_kernel_key_t key; 544 __vki_kernel_uid32_t uid; 545 __vki_kernel_gid32_t gid; 546 __vki_kernel_uid32_t cuid; 547 __vki_kernel_gid32_t cgid; 548 __vki_kernel_mode_t mode; 549 unsigned char __pad1[4 - sizeof(__vki_kernel_mode_t)]; 550 unsigned short seq; 551 unsigned short __pad2; 552 unsigned long __unused1; 553 unsigned long __unused2; 554}; 555 556//---------------------------------------------------------------------- 557// From linux-2.6.11.2/include/asm-x86_64/sembuf.h 558//---------------------------------------------------------------------- 559 560struct vki_semid64_ds { 561 struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */ 562 __vki_kernel_time_t sem_otime; /* last semop time */ 563 __vki_kernel_time_t sem_ctime; /* last change time */ 564 unsigned long sem_nsems; /* no. of semaphores in array */ 565 unsigned long __unused3; 566 unsigned long __unused4; 567}; 568 569//---------------------------------------------------------------------- 570// From linux-2.6.11.2/include/asm-x86_64/msgbuf.h 571//---------------------------------------------------------------------- 572 573struct vki_msqid64_ds { 574 struct vki_ipc64_perm msg_perm; 575 __vki_kernel_time_t msg_stime; /* last msgsnd time */ 576 __vki_kernel_time_t msg_rtime; /* last msgrcv time */ 577 __vki_kernel_time_t msg_ctime; /* last change time */ 578 unsigned long msg_cbytes; /* current number of bytes on queue */ 579 unsigned long msg_qnum; /* number of messages in queue */ 580 unsigned long msg_qbytes; /* max number of bytes on queue */ 581 __vki_kernel_pid_t msg_lspid; /* pid of last msgsnd */ 582 __vki_kernel_pid_t msg_lrpid; /* last receive pid */ 583 unsigned long __unused4; 584 unsigned long __unused5; 585}; 586 587//---------------------------------------------------------------------- 588// From linux-2.6.11.2/include/asm-x86_64/shmbuf.h 589//---------------------------------------------------------------------- 590 591struct vki_shmid64_ds { 592 struct vki_ipc64_perm shm_perm; /* operation perms */ 593 vki_size_t shm_segsz; /* size of segment (bytes) */ 594 __vki_kernel_time_t shm_atime; /* last attach time */ 595 __vki_kernel_time_t shm_dtime; /* last detach time */ 596 __vki_kernel_time_t shm_ctime; /* last change time */ 597 __vki_kernel_pid_t shm_cpid; /* pid of creator */ 598 __vki_kernel_pid_t shm_lpid; /* pid of last operator */ 599 unsigned long shm_nattch; /* no. of current attaches */ 600 unsigned long __unused4; 601 unsigned long __unused5; 602}; 603 604struct vki_shminfo64 { 605 unsigned long shmmax; 606 unsigned long shmmin; 607 unsigned long shmmni; 608 unsigned long shmseg; 609 unsigned long shmall; 610 unsigned long __unused1; 611 unsigned long __unused2; 612 unsigned long __unused3; 613 unsigned long __unused4; 614}; 615 616//---------------------------------------------------------------------- 617// From tilegx linux/include/asm-tile/ptrace.h 618//---------------------------------------------------------------------- 619 620struct vki_pt_regs { 621 622 unsigned long regs[53]; 623 unsigned long tp; 624 unsigned long sp; 625 unsigned long lr; 626 unsigned long pc; 627 unsigned long ex1; 628 unsigned long faultnum; 629 unsigned long orig_r0; 630 unsigned long flags; 631 unsigned long pad[3]; 632}; 633 634#ifndef user_pt_regs 635#define user_pt_regs vki_pt_regs 636#endif 637 638// Tile has no fp registers. Just make gcc happy. 639struct tilegx_elf_fpregset {}; 640typedef struct tilegx_elf_fpregset vki_elf_fpregset_t; 641 642#define vki_user_regs_struct vki_pt_regs 643 644#define TILEGX_r56 regs[56] 645#define TILEGX_r55 regs[55] 646#define TILEGX_r54 regs[54] 647#define TILEGX_r53 regs[53] 648#define TILEGX_r52 regs[52] 649#define TILEGX_r51 regs[51] 650#define TILEGX_r50 regs[50] 651#define TILEGX_r49 regs[49] 652#define TILEGX_r48 regs[48] 653#define TILEGX_r47 regs[47] 654#define TILEGX_r46 regs[46] 655#define TILEGX_r45 regs[45] 656#define TILEGX_r44 regs[44] 657#define TILEGX_r43 regs[43] 658#define TILEGX_r42 regs[42] 659#define TILEGX_r41 regs[41] 660#define TILEGX_r40 regs[40] 661#define TILEGX_r39 regs[39] 662#define TILEGX_r38 regs[38] 663#define TILEGX_r37 regs[37] 664#define TILEGX_r36 regs[36] 665#define TILEGX_r35 regs[35] 666#define TILEGX_r34 regs[34] 667#define TILEGX_r33 regs[33] 668#define TILEGX_r32 regs[32] 669#define TILEGX_r31 regs[31] 670#define TILEGX_r30 regs[30] 671#define TILEGX_r29 regs[29] 672#define TILEGX_r28 regs[28] 673#define TILEGX_r27 regs[27] 674#define TILEGX_r26 regs[26] 675#define TILEGX_r25 regs[25] 676#define TILEGX_r24 regs[24] 677#define TILEGX_r23 regs[23] 678#define TILEGX_r22 regs[22] 679#define TILEGX_r21 regs[21] 680#define TILEGX_r20 regs[20] 681#define TILEGX_r19 regs[19] 682#define TILEGX_r18 regs[18] 683#define TILEGX_r17 regs[17] 684#define TILEGX_r16 regs[16] 685#define TILEGX_r15 regs[15] 686#define TILEGX_r14 regs[14] 687#define TILEGX_r13 regs[13] 688#define TILEGX_r12 regs[12] 689#define TILEGX_r11 regs[11] 690#define TILEGX_r10 regs[10] 691#define TILEGX_r9 regs[9] 692#define TILEGX_r8 regs[8] 693#define TILEGX_r7 regs[7] 694#define TILEGX_r6 regs[6] 695#define TILEGX_r5 regs[5] 696#define TILEGX_r4 regs[4] 697#define TILEGX_r3 regs[3] 698#define TILEGX_r2 regs[2] 699#define TILEGX_r1 regs[1] 700#define TILEGX_r0 regs[0] 701 702#define TILEGX_lr TILEGX_r55 703#define TILEGX_sp TILEGX_r54 704#define TILEGX_tp TILEGX_r53 705#define TILEGX_pc TILEGX_r56 706 707#define VKI_PTRACE_GETREGS 12 708#define VKI_PTRACE_SETREGS 13 709#define VKI_PTRACE_GETFPREGS 14 710#define VKI_PTRACE_SETFPREGS 15 711 712 713//---------------------------------------------------------------------- 714// From tilegx linux/include/asm_generic/elf.h 715//---------------------------------------------------------------------- 716 717typedef unsigned long vki_elf_greg_t; 718 719#define VKI_ELF_NGREG (sizeof (struct vki_user_regs_struct) / sizeof(vki_elf_greg_t)) 720typedef vki_elf_greg_t vki_elf_gregset_t[VKI_ELF_NGREG]; 721 722 723struct tilegx_dirent64 { 724 long d_ino; 725 long d_off; 726 unsigned short d_reclen; 727 unsigned char d_type; 728 char d_name[256]; 729}; 730 731//---------------------------------------------------------------------- 732// From tilegx linux/include/asm-generic/errno.h 733//---------------------------------------------------------------------- 734 735#define VKI_ENOSYS 38 /* Function not implemented */ 736#define VKI_EOVERFLOW 75 /* Value too large for defined data type */ 737 738//---------------------------------------------------------------------- 739// And that's it! 740//---------------------------------------------------------------------- 741 742#endif // __VKI_TILEGX_LINUX_H 743 744/*--------------------------------------------------------------------*/ 745/*--- end ---*/ 746/*--------------------------------------------------------------------*/ 747