2
/*--------------------------------------------------------------------*/
3
/*--- PPC64/Linux-specific kernel interface. vki-ppc64-linux.h ---*/
4
/*--------------------------------------------------------------------*/
7
This file is part of Valgrind, a dynamic binary instrumentation
10
Copyright (C) 2005 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 __PPC64_LINUX_VKI_ARCH_H
32
#define __PPC64_LINUX_VKI_ARCH_H
34
// ppc64 is big-endian.
35
#define VKI_BIG_ENDIAN 1
37
//----------------------------------------------------------------------
38
// From linux-2.6.13/include/asm-ppc64/types.h
39
//----------------------------------------------------------------------
41
typedef __signed__ char __vki_s8;
42
typedef unsigned char __vki_u8;
44
typedef __signed__ short __vki_s16;
45
typedef unsigned short __vki_u16;
47
typedef __signed__ int __vki_s32;
48
typedef unsigned int __vki_u32;
50
typedef __signed__ long __vki_s64;
51
typedef unsigned long __vki_u64;
55
} __attribute((aligned(16))) __vki_vector128;
57
typedef unsigned short vki_u16;
59
typedef unsigned int vki_u32;
61
//----------------------------------------------------------------------
62
// From linux-2.6.13/include/asm-ppc64/page.h
63
//----------------------------------------------------------------------
65
/* PAGE_SHIFT determines the page size */
66
#define VKI_PAGE_SHIFT 12
67
#define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT)
69
//----------------------------------------------------------------------
70
// From linux-2.6.13/include/asm-ppc64/signal.h
71
//----------------------------------------------------------------------
73
#define VKI_MINSIGSTKSZ 2048
75
/* Next 9 non-blank lines asm-generic/signal.h */
76
#define VKI_SIG_BLOCK 0 /* for blocking signals */
77
#define VKI_SIG_UNBLOCK 1 /* for unblocking signals */
78
#define VKI_SIG_SETMASK 2 /* for setting the signal mask */
80
typedef void __vki_signalfn_t(int);
81
typedef __vki_signalfn_t __user *__vki_sighandler_t;
83
typedef void __vki_restorefn_t(void);
84
typedef __vki_restorefn_t __user *__vki_sigrestore_t;
86
#define VKI_SIG_DFL ((__vki_sighandler_t)0) /* default signal handling */
87
#define VKI_SIG_IGN ((__vki_sighandler_t)1) /* ignore signal */
89
/* Back in asm-ppc64/signal.h */
91
#define _VKI_NSIG_BPW 64
92
#define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
94
typedef unsigned long vki_old_sigset_t; /* at least 32 bits */
97
unsigned long sig[_VKI_NSIG_WORDS];
102
#define VKI_SIGQUIT 3
104
#define VKI_SIGTRAP 5
105
#define VKI_SIGABRT 6
109
#define VKI_SIGKILL 9
110
#define VKI_SIGUSR1 10
111
#define VKI_SIGSEGV 11
112
#define VKI_SIGUSR2 12
113
#define VKI_SIGPIPE 13
114
#define VKI_SIGALRM 14
115
#define VKI_SIGTERM 15
116
#define VKI_SIGSTKFLT 16
117
#define VKI_SIGCHLD 17
118
#define VKI_SIGCONT 18
119
#define VKI_SIGSTOP 19
120
#define VKI_SIGTSTP 20
121
#define VKI_SIGTTIN 21
122
#define VKI_SIGTTOU 22
123
#define VKI_SIGURG 23
124
#define VKI_SIGXCPU 24
125
#define VKI_SIGXFSZ 25
126
#define VKI_SIGVTALRM 26
127
#define VKI_SIGPROF 27
128
#define VKI_SIGWINCH 28
130
#define VKI_SIGPOLL VKI_SIGIO
131
#define VKI_SIGPWR 30
132
#define VKI_SIGSYS 31
133
#define VKI_SIGUNUSED 31
135
/* These should not be considered constants from userland. */
136
#define VKI_SIGRTMIN 32
137
#define VKI_SIGRTMAX _VKI_NSIG
139
#define VKI_SA_NOCLDSTOP 0x00000001u
140
#define VKI_SA_NOCLDWAIT 0x00000002u
141
#define VKI_SA_SIGINFO 0x00000004u
142
#define VKI_SA_ONSTACK 0x08000000u
143
#define VKI_SA_RESTART 0x10000000u
144
#define VKI_SA_NODEFER 0x40000000u
145
#define VKI_SA_RESETHAND 0x80000000u
147
#define VKI_SA_NOMASK VKI_SA_NODEFER
148
#define VKI_SA_ONESHOT VKI_SA_RESETHAND
149
//#define VKI_SA_INTERRUPT 0x20000000u /* dummy -- ignored */
151
#define VKI_SA_RESTORER 0x04000000u
153
#define VKI_SS_ONSTACK 1
154
#define VKI_SS_DISABLE 2
156
// See comments on corresponding decls in vki-x86-linux.h re ksa_handler
157
struct vki_old_sigaction {
158
__vki_sighandler_t ksa_handler;
159
vki_old_sigset_t sa_mask;
160
unsigned long sa_flags;
161
__vki_sigrestore_t sa_restorer;
164
struct vki_sigaction {
165
__vki_sighandler_t ksa_handler;
166
unsigned long sa_flags;
167
__vki_sigrestore_t sa_restorer;
168
vki_sigset_t sa_mask; /* mask last for extensibility */
171
typedef struct vki_sigaltstack {
177
//----------------------------------------------------------------------
178
// From linux-2.6.13/include/asm-ppc64/ptrace.h
179
//----------------------------------------------------------------------
181
#define VKI_PPC_REG unsigned long
186
VKI_PPC_REG orig_gpr3; /* Used for restarting system calls */
191
VKI_PPC_REG softe; /* Soft enabled/disabled */
192
VKI_PPC_REG trap; /* Reason for being here */
193
VKI_PPC_REG dar; /* Fault registers */
195
VKI_PPC_REG result; /* Result of a system call */
197
/* Not in kernel's definition, but apparently needed to stop
198
assertion at coredump-elf.c:267 firing. These padding words make
199
the struct have the same size as a 'vki_elf_greg_t'. See message
200
from Ghassan Hammouri on valgrind-developers on 6 April 06, and
201
also the analogous kludge for ppc32-linux (svn r5852 and bug
203
unsigned long pad[4];
206
/* Kludge? I don't know where this came from or if it is right. */
207
#define vki_user_regs_struct vki_pt_regs
219
#define VKI_PT_R10 10
220
#define VKI_PT_R11 11
221
#define VKI_PT_R12 12
222
#define VKI_PT_R13 13
223
#define VKI_PT_R14 14
224
#define VKI_PT_R15 15
225
#define VKI_PT_R16 16
226
#define VKI_PT_R17 17
227
#define VKI_PT_R18 18
228
#define VKI_PT_R19 19
229
#define VKI_PT_R20 20
230
#define VKI_PT_R21 21
231
#define VKI_PT_R22 22
232
#define VKI_PT_R23 23
233
#define VKI_PT_R24 24
234
#define VKI_PT_R25 25
235
#define VKI_PT_R26 26
236
#define VKI_PT_R27 27
237
#define VKI_PT_R28 28
238
#define VKI_PT_R29 29
239
#define VKI_PT_R30 30
240
#define VKI_PT_R31 31
241
#define VKI_PT_NIP 32
242
#define VKI_PT_MSR 33
243
#define VKI_PT_ORIG_R3 34
244
#define VKI_PT_CTR 35
245
#define VKI_PT_LNK 36
246
#define VKI_PT_XER 37
247
#define VKI_PT_CCR 38
248
#define VKI_PT_SOFTE 39
249
#define VKI_PT_RESULT 43
251
//----------------------------------------------------------------------
252
// From linux-2.6.13/include/asm-ppc64/elf.h
253
//----------------------------------------------------------------------
255
#define VKI_ELF_NGREG 48 /* includes nip, msr, lr, etc. */
256
#define VKI_ELF_NFPREG 33 /* includes fpscr */
257
#define VKI_ELF_NVRREG 34 /* includes vscr & vrsave in split vectors */
259
typedef unsigned long vki_elf_greg_t64;
260
typedef vki_elf_greg_t64 vki_elf_gregset_t64[VKI_ELF_NGREG];
262
typedef vki_elf_gregset_t64 vki_elf_gregset_t;
264
typedef double vki_elf_fpreg_t;
265
typedef vki_elf_fpreg_t vki_elf_fpregset_t[VKI_ELF_NFPREG];
267
/* Altivec registers */
269
* The entries with indexes 0-31 contain the corresponding vector registers.
270
* The entry with index 32 contains the vscr as the last word (offset 12)
271
* within the quadword. This allows the vscr to be stored as either a
272
* quadword (since it must be copied via a vector register to/from storage)
273
* or as a word. The entry with index 33 contains the vrsave as the first
274
* word (offset 0) within the quadword.
276
* This definition of the VMX state is compatible with the current PPC32
277
* ptrace interface. This allows signal handling and ptrace to use the same
278
* structures. This also simplifies the implementation of a bi-arch
279
* (combined (32- and 64-bit) gdb.
281
* Note that it's _not_ compatible with 32 bits ucontext which stuffs the
282
* vrsave along with vscr and so only uses 33 vectors for the register set
284
typedef __vki_vector128 vki_elf_vrreg_t;
285
typedef vki_elf_vrreg_t vki_elf_vrregset_t[VKI_ELF_NVRREG];
287
//----------------------------------------------------------------------
288
// From linux-2.6.13/include/asm-ppc64/sigcontext.h
289
//----------------------------------------------------------------------
291
struct vki_sigcontext {
292
unsigned long _unused[4];
295
unsigned long handler;
296
unsigned long oldmask;
297
struct vki_pt_regs __user *regs;
298
vki_elf_gregset_t gp_regs;
299
vki_elf_fpregset_t fp_regs;
301
* To maintain compatibility with current implementations the sigcontext is
302
* extended by appending a pointer (v_regs) to a quadword type (elf_vrreg_t)
303
* followed by an unstructured (vmx_reserve) field of 69 doublewords. This
304
* allows the array of vector registers to be quadword aligned independent of
305
* the alignment of the containing sigcontext or ucontext. It is the
306
* responsibility of the code setting the sigcontext to set this pointer to
307
* either NULL (if this processor does not support the VMX feature) or the
308
* address of the first quadword within the allocated (vmx_reserve) area.
310
* The pointer (v_regs) of vector type (elf_vrreg_t) is type compatible with
311
* an array of 34 quadword entries (elf_vrregset_t). The entries with
312
* indexes 0-31 contain the corresponding vector registers. The entry with
313
* index 32 contains the vscr as the last word (offset 12) within the
314
* quadword. This allows the vscr to be stored as either a quadword (since
315
* it must be copied via a vector register to/from storage) or as a word.
316
* The entry with index 33 contains the vrsave as the first word (offset 0)
317
* within the quadword.
319
vki_elf_vrreg_t __user *v_regs;
320
long vmx_reserve[VKI_ELF_NVRREG+VKI_ELF_NVRREG+1];
323
//----------------------------------------------------------------------
324
// From linux-2.6.13/include/asm-ppc64/mman.h
325
//----------------------------------------------------------------------
327
#define VKI_PROT_NONE 0x0 /* page can not be accessed */
328
#define VKI_PROT_READ 0x1 /* page can be read */
329
#define VKI_PROT_WRITE 0x2 /* page can be written */
330
#define VKI_PROT_EXEC 0x4 /* page can be executed */
331
#define VKI_PROT_GROWSDOWN 0x01000000 /* mprotect flag: extend
334
#define VKI_PROT_GROWSUP 0x02000000 /* mprotect flag: extend
338
#define VKI_MAP_SHARED 0x01 /* Share changes */
339
#define VKI_MAP_PRIVATE 0x02 /* Changes are private */
340
#define VKI_MAP_FIXED 0x10 /* Interpret addr exactly */
341
#define VKI_MAP_ANONYMOUS 0x20 /* don't use a file */
342
#define VKI_MAP_NORESERVE 0x40 /* don't reserve swap pages */
344
//----------------------------------------------------------------------
345
// From linux-2.6.13/include/asm-ppc64/fcntl.h
346
//----------------------------------------------------------------------
348
#define VKI_O_RDONLY 00
349
#define VKI_O_WRONLY 01
350
#define VKI_O_RDWR 02
351
#define VKI_O_CREAT 0100 /* not fcntl */
352
#define VKI_O_EXCL 0200 /* not fcntl */
353
#define VKI_O_TRUNC 01000 /* not fcntl */
354
#define VKI_O_APPEND 02000
355
#define VKI_O_NONBLOCK 04000
356
#define VKI_O_LARGEFILE 0200000
358
#define VKI_F_DUPFD 0 /* dup */
359
#define VKI_F_GETFD 1 /* get close_on_exec */
360
#define VKI_F_SETFD 2 /* set/clear close_on_exec */
361
#define VKI_F_GETFL 3 /* get file->f_flags */
362
#define VKI_F_SETFL 4 /* set file->f_flags */
363
#define VKI_F_GETLK 5
364
#define VKI_F_SETLK 6
365
#define VKI_F_SETLKW 7
367
#define VKI_F_SETOWN 8 /* for sockets. */
368
#define VKI_F_GETOWN 9 /* for sockets. */
369
#define VKI_F_SETSIG 10 /* for sockets. */
370
#define VKI_F_GETSIG 11 /* for sockets. */
372
/* for F_[GET|SET]FL */
373
#define VKI_FD_CLOEXEC 1 /* actually anything with low bit set goes */
375
#define VKI_F_LINUX_SPECIFIC_BASE 1024
377
//----------------------------------------------------------------------
378
// From linux-2.6.13/include/asm-ppc64/resource.h
379
//----------------------------------------------------------------------
381
// which just does #include <asm-generic/resource.h>
383
#define VKI_RLIMIT_DATA 2 /* max data size */
384
#define VKI_RLIMIT_STACK 3 /* max stack size */
385
#define VKI_RLIMIT_CORE 4 /* max core file size */
386
#define VKI_RLIMIT_NOFILE 7 /* max number of open files */
388
//----------------------------------------------------------------------
389
// From linux-2.6.13/include/asm-ppc64/socket.h
390
//----------------------------------------------------------------------
392
#define VKI_SOL_SOCKET 1
394
#define VKI_SO_TYPE 3
396
//----------------------------------------------------------------------
397
// From linux-2.6.13/include/asm-ppc64/sockios.h
398
//----------------------------------------------------------------------
400
#define VKI_SIOCSPGRP 0x8902
401
#define VKI_SIOCGPGRP 0x8904
402
#define VKI_SIOCGSTAMP 0x8906 /* Get stamp */
404
//----------------------------------------------------------------------
405
// From linux-2.6.13/include/asm-ppc64/stat.h
406
//----------------------------------------------------------------------
409
unsigned long st_dev;
410
unsigned long st_ino;
411
unsigned long st_nlink;
412
unsigned int st_mode;
415
unsigned long st_rdev;
417
unsigned long st_blksize;
418
unsigned long st_blocks;
419
unsigned long st_atime;
420
unsigned long st_atime_nsec;
421
unsigned long st_mtime;
422
unsigned long st_mtime_nsec;
423
unsigned long st_ctime;
424
unsigned long st_ctime_nsec;
425
unsigned long __unused4;
426
unsigned long __unused5;
427
unsigned long __unused6;
430
#define VKI_STAT_HAVE_NSEC 1
432
/* This matches struct stat64 in glibc2.1. Only used for 32 bit. */
434
unsigned long st_dev; /* Device. */
435
unsigned long st_ino; /* File serial number. */
436
unsigned int st_mode; /* File mode. */
437
unsigned int st_nlink; /* Link count. */
438
unsigned int st_uid; /* User ID of the file's owner. */
439
unsigned int st_gid; /* Group ID of the file's group. */
440
unsigned long st_rdev; /* Device number, if device. */
441
unsigned short __pad2;
442
long st_size; /* Size of file, in bytes. */
443
int st_blksize; /* Optimal block size for I/O. */
445
long st_blocks; /* Number 512-byte blocks allocated. */
446
int st_atime; /* Time of last access. */
448
int st_mtime; /* Time of last modification. */
450
int st_ctime; /* Time of last status change. */
452
unsigned int __unused4;
453
unsigned int __unused5;
456
//----------------------------------------------------------------------
457
// From linux-2.6.13/include/asm-ppc64/statfs.h
458
//----------------------------------------------------------------------
468
__vki_kernel_fsid_t f_fsid;
474
//----------------------------------------------------------------------
475
// From linux-2.6.13/include/asm-ppc64/termios.h
476
//----------------------------------------------------------------------
479
unsigned short ws_row;
480
unsigned short ws_col;
481
unsigned short ws_xpixel;
482
unsigned short ws_ypixel;
487
unsigned short c_iflag; /* input mode flags */
488
unsigned short c_oflag; /* output mode flags */
489
unsigned short c_cflag; /* control mode flags */
490
unsigned short c_lflag; /* local mode flags */
491
unsigned char c_line; /* line discipline */
492
unsigned char c_cc[VKI_NCC]; /* control characters */
495
//----------------------------------------------------------------------
496
// From linux-2.6.13/include/asm-ppc64/termbits.h
497
//----------------------------------------------------------------------
499
typedef unsigned char vki_cc_t;
500
typedef unsigned int vki_speed_t;
501
typedef unsigned int vki_tcflag_t;
505
vki_tcflag_t c_iflag; /* input mode flags */
506
vki_tcflag_t c_oflag; /* output mode flags */
507
vki_tcflag_t c_cflag; /* control mode flags */
508
vki_tcflag_t c_lflag; /* local mode flags */
509
vki_cc_t c_cc[VKI_NCCS]; /* control characters */
510
vki_cc_t c_line; /* line discipline (== c_cc[19]) */
511
vki_speed_t c_ispeed; /* input speed */
512
vki_speed_t c_ospeed; /* output speed */
515
//----------------------------------------------------------------------
516
// From linux-2.6.13/include/asm-ppc64/ioctl.h
517
//----------------------------------------------------------------------
519
#define _VKI_IOC_NRBITS 8
520
#define _VKI_IOC_TYPEBITS 8
521
#define _VKI_IOC_SIZEBITS 13
522
#define _VKI_IOC_DIRBITS 3
524
#define _VKI_IOC_NRMASK ((1 << _VKI_IOC_NRBITS)-1)
525
#define _VKI_IOC_TYPEMASK ((1 << _VKI_IOC_TYPEBITS)-1)
526
#define _VKI_IOC_SIZEMASK ((1 << _VKI_IOC_SIZEBITS)-1)
527
#define _VKI_IOC_DIRMASK ((1 << _VKI_IOC_DIRBITS)-1)
529
#define _VKI_IOC_NRSHIFT 0
530
#define _VKI_IOC_TYPESHIFT (_VKI_IOC_NRSHIFT+_VKI_IOC_NRBITS)
531
#define _VKI_IOC_SIZESHIFT (_VKI_IOC_TYPESHIFT+_VKI_IOC_TYPEBITS)
532
#define _VKI_IOC_DIRSHIFT (_VKI_IOC_SIZESHIFT+_VKI_IOC_SIZEBITS)
535
* Direction bits _IOC_NONE could be 0, but OSF/1 gives it a bit.
536
* And this turns out useful to catch old ioctl numbers in header
539
#define _VKI_IOC_NONE 1U
540
#define _VKI_IOC_READ 2U
541
#define _VKI_IOC_WRITE 4U
543
#define _VKI_IOC(dir,type,nr,size) \
544
(((dir) << _VKI_IOC_DIRSHIFT) | \
545
((type) << _VKI_IOC_TYPESHIFT) | \
546
((nr) << _VKI_IOC_NRSHIFT) | \
547
((size) << _VKI_IOC_SIZESHIFT))
549
/* provoke compile error for invalid uses of size argument */
550
extern unsigned int __invalid_size_argument_for_IOC;
551
#define _VKI_IOC_TYPECHECK(t) \
552
((sizeof(t) == sizeof(t[1]) && \
553
sizeof(t) < (1 << _VKI_IOC_SIZEBITS)) ? \
554
sizeof(t) : __invalid_size_argument_for_IOC)
556
/* used to create numbers */
557
#define _VKI_IO(type,nr) _VKI_IOC(_VKI_IOC_NONE,(type),(nr),0)
558
#define _VKI_IOR(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr), \
559
(_VKI_IOC_TYPECHECK(size)))
560
#define _VKI_IOW(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr), \
561
(_VKI_IOC_TYPECHECK(size)))
562
#define _VKI_IOWR(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE, \
563
(type),(nr),(_VKI_IOC_TYPECHECK(size)))
564
#define _VKI_IOR_BAD(type,nr,size) _VKI_IOC(_VKI_IOC_READ,(type),(nr), \
566
#define _VKI_IOW_BAD(type,nr,size) _VKI_IOC(_VKI_IOC_WRITE,(type),(nr), \
568
#define _VKI_IOWR_BAD(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE, \
569
(type),(nr),sizeof(size))
571
/* used to decode them.. */
572
#define _VKI_IOC_DIR(nr) (((nr) >> _VKI_IOC_DIRSHIFT) & _VKI_IOC_DIRMASK)
573
#define _VKI_IOC_TYPE(nr) (((nr) >> _VKI_IOC_TYPESHIFT) & _VKI_IOC_TYPEMASK)
574
#define _VKI_IOC_NR(nr) (((nr) >> _VKI_IOC_NRSHIFT) & _VKI_IOC_NRMASK)
575
#define _VKI_IOC_SIZE(nr) (((nr) >> _VKI_IOC_SIZESHIFT) & _VKI_IOC_SIZEMASK)
577
//----------------------------------------------------------------------
578
// From linux-2.6.13/include/asm-ppc64/ioctls.h
579
//----------------------------------------------------------------------
581
#define VKI_TCGETS _VKI_IOR('t', 19, struct vki_termios)
582
#define VKI_TCSETS _VKI_IOW('t', 20, struct vki_termios)
583
#define VKI_TCSETSW _VKI_IOW('t', 21, struct vki_termios)
584
#define VKI_TCSETSF _VKI_IOW('t', 22, struct vki_termios)
585
#define VKI_TCGETA _VKI_IOR('t', 23, struct vki_termio)
586
#define VKI_TCSETA _VKI_IOW('t', 24, struct vki_termio)
587
#define VKI_TCSETAW _VKI_IOW('t', 25, struct vki_termio)
588
#define VKI_TCSETAF _VKI_IOW('t', 28, struct vki_termio)
589
#define VKI_TCSBRK _VKI_IO('t', 29)
590
#define VKI_TCXONC _VKI_IO('t', 30)
591
#define VKI_TCFLSH _VKI_IO('t', 31)
592
#define VKI_TIOCSCTTY 0x540E
593
#define VKI_TIOCGPGRP _VKI_IOR('t', 119, int)
594
#define VKI_TIOCSPGRP _VKI_IOW('t', 118, int)
595
#define VKI_TIOCOUTQ _VKI_IOR('t', 115, int) /* output queue size */
596
#define VKI_TIOCGWINSZ _VKI_IOR('t', 104, struct vki_winsize)
597
#define VKI_TIOCSWINSZ _VKI_IOW('t', 103, struct vki_winsize)
598
#define VKI_TIOCMGET 0x5415
599
#define VKI_TIOCMBIS 0x5416
600
#define VKI_TIOCMBIC 0x5417
601
#define VKI_TIOCMSET 0x5418
602
#define VKI_FIONREAD _VKI_IOR('f', 127, int)
603
#define VKI_TIOCLINUX 0x541C
604
#define VKI_FIONBIO _VKI_IOW('f', 126, int)
605
#define VKI_TCSBRKP 0x5425 /* Needed for POSIX tcsendbreak() */
606
#define VKI_TIOCGPTN _VKI_IOR('T',0x30, unsigned int)
607
/* Get Pty Number (of pty-mux device) */
608
#define VKI_TIOCSPTLCK _VKI_IOW('T',0x31, int) /* Lock/unlock Pty */
609
#define VKI_FIOASYNC _VKI_IOW('f', 125, int)
610
#define VKI_TIOCSERGETLSR 0x5459 /* Get line status register */
611
#define VKI_TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
613
//----------------------------------------------------------------------
614
// From linux-2.6.13/include/asm-ppc64/poll.h
615
//----------------------------------------------------------------------
617
#define VKI_POLLIN 0x0001
625
//----------------------------------------------------------------------
626
// From linux-2.6.13/include/asm-ppc64/user.h
627
//----------------------------------------------------------------------
629
// Not sure what's needed from here
631
//----------------------------------------------------------------------
632
// From linux-2.6.13/include/asm-ppc64/elf.h
633
//----------------------------------------------------------------------
635
// Not sure what's needed from here
637
//----------------------------------------------------------------------
638
// From linux-2.6.13/include/asm-ppc64/ucontext.h
639
//----------------------------------------------------------------------
641
struct vki_ucontext {
642
unsigned long uc_flags;
643
struct vki_ucontext *uc_link;
644
vki_stack_t uc_stack;
645
vki_sigset_t uc_sigmask;
646
vki_sigset_t __unused[15]; /* Allow for uc_sigmask growth */
647
struct vki_sigcontext uc_mcontext; /* last for extensibility */
650
//----------------------------------------------------------------------
651
// From linux-2.6.13/include/asm-ppc64/ipcbuf.h
652
//----------------------------------------------------------------------
654
struct vki_ipc64_perm
656
__vki_kernel_key_t key;
657
__vki_kernel_uid_t uid;
658
__vki_kernel_gid_t gid;
659
__vki_kernel_uid_t cuid;
660
__vki_kernel_gid_t cgid;
661
__vki_kernel_mode_t mode;
664
unsigned long __unused1;
665
unsigned long __unused2;
668
//----------------------------------------------------------------------
669
// From linux-2.6.13/include/asm-ppc64/sembuf.h
670
//----------------------------------------------------------------------
672
struct vki_semid64_ds {
673
struct vki_ipc64_perm sem_perm; /* permissions .. see ipc.h */
674
__vki_kernel_time_t sem_otime; /* last semop time */
675
__vki_kernel_time_t sem_ctime; /* last change time */
676
unsigned long sem_nsems; /* no. of semaphores in array */
677
unsigned long __unused1;
678
unsigned long __unused2;
681
//----------------------------------------------------------------------
682
// From linux-2.6.13/include/asm-ppc64/msgbuf.h
683
//----------------------------------------------------------------------
685
struct vki_msqid64_ds {
686
struct vki_ipc64_perm msg_perm;
687
__vki_kernel_time_t msg_stime; /* last msgsnd time */
688
__vki_kernel_time_t msg_rtime; /* last msgrcv time */
689
__vki_kernel_time_t msg_ctime; /* last change time */
690
unsigned long msg_cbytes; /* current number of bytes on queue */
691
unsigned long msg_qnum; /* number of messages in queue */
692
unsigned long msg_qbytes; /* max number of bytes on queue */
693
__vki_kernel_pid_t msg_lspid; /* pid of last msgsnd */
694
__vki_kernel_pid_t msg_lrpid; /* last receive pid */
695
unsigned long __unused1;
696
unsigned long __unused2;
699
//----------------------------------------------------------------------
700
// From linux-2.6.13/include/asm-ppc64/ipc.h
701
//----------------------------------------------------------------------
703
// this just does #include <asm-generic/ipc.h>
705
struct vki_ipc_kludge {
706
struct vki_msgbuf __user *msgp;
713
#define VKI_SEMTIMEDOP 4
714
#define VKI_MSGSND 11
715
#define VKI_MSGRCV 12
716
#define VKI_MSGGET 13
717
#define VKI_MSGCTL 14
720
#define VKI_SHMGET 23
721
#define VKI_SHMCTL 24
723
//----------------------------------------------------------------------
724
// From linux-2.6.13/include/asm-ppc64/shmbuf.h
725
//----------------------------------------------------------------------
727
struct vki_shmid64_ds {
728
struct vki_ipc64_perm shm_perm; /* operation perms */
729
__vki_kernel_time_t shm_atime; /* last attach time */
730
__vki_kernel_time_t shm_dtime; /* last detach time */
731
__vki_kernel_time_t shm_ctime; /* last change time */
732
vki_size_t shm_segsz; /* size of segment (bytes) */
733
__vki_kernel_pid_t shm_cpid; /* pid of creator */
734
__vki_kernel_pid_t shm_lpid; /* pid of last operator */
735
unsigned long shm_nattch; /* no. of current attaches */
736
unsigned long __unused1;
737
unsigned long __unused2;
740
struct vki_shminfo64 {
741
unsigned long shmmax;
742
unsigned long shmmin;
743
unsigned long shmmni;
744
unsigned long shmseg;
745
unsigned long shmall;
746
unsigned long __unused1;
747
unsigned long __unused2;
748
unsigned long __unused3;
749
unsigned long __unused4;
752
//----------------------------------------------------------------------
754
//----------------------------------------------------------------------
756
#endif // __PPC64_LINUX_VKI_ARCH_H
758
/*--------------------------------------------------------------------*/
760
/*--------------------------------------------------------------------*/