~bkerensa/ubuntu/raring/valgrind/merge-from-deb

« back to all changes in this revision

Viewing changes to include/vki-ppc64-linux.h

  • Committer: Bazaar Package Importer
  • Author(s): Andrés Roldán
  • Date: 2008-06-13 02:31:40 UTC
  • mto: (1.4.1 upstream) (2.2.1 squeeze)
  • mto: This revision was merged to the branch mainline in revision 24.
  • Revision ID: james.westby@ubuntu.com-20080613023140-iwk33rz9rhvfkr96
Import upstream version 3.3.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
/*--------------------------------------------------------------------*/
3
 
/*--- PPC64/Linux-specific kernel interface.     vki-ppc64-linux.h ---*/
4
 
/*--------------------------------------------------------------------*/
5
 
 
6
 
/*
7
 
   This file is part of Valgrind, a dynamic binary instrumentation
8
 
   framework.
9
 
 
10
 
   Copyright (C) 2005 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 __PPC64_LINUX_VKI_ARCH_H
32
 
#define __PPC64_LINUX_VKI_ARCH_H
33
 
 
34
 
// ppc64 is big-endian.
35
 
#define VKI_BIG_ENDIAN  1
36
 
 
37
 
//----------------------------------------------------------------------
38
 
// From linux-2.6.13/include/asm-ppc64/types.h
39
 
//----------------------------------------------------------------------
40
 
 
41
 
typedef __signed__ char __vki_s8;
42
 
typedef unsigned char __vki_u8;
43
 
 
44
 
typedef __signed__ short __vki_s16;
45
 
typedef unsigned short __vki_u16;
46
 
 
47
 
typedef __signed__ int __vki_s32;
48
 
typedef unsigned int __vki_u32;
49
 
 
50
 
typedef __signed__ long __vki_s64;
51
 
typedef unsigned long __vki_u64;
52
 
 
53
 
typedef struct {
54
 
  __vki_u32 u[4];
55
 
} __attribute((aligned(16))) __vki_vector128;
56
 
 
57
 
typedef unsigned short vki_u16;
58
 
 
59
 
typedef unsigned int vki_u32;
60
 
 
61
 
//----------------------------------------------------------------------
62
 
// From linux-2.6.13/include/asm-ppc64/page.h
63
 
//----------------------------------------------------------------------
64
 
 
65
 
/* PAGE_SHIFT determines the page size */
66
 
#define VKI_PAGE_SHIFT  12
67
 
#define VKI_PAGE_SIZE   (1UL << VKI_PAGE_SHIFT)
68
 
 
69
 
//----------------------------------------------------------------------
70
 
// From linux-2.6.13/include/asm-ppc64/signal.h
71
 
//----------------------------------------------------------------------
72
 
 
73
 
#define VKI_MINSIGSTKSZ     2048
74
 
 
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 */
79
 
 
80
 
typedef void __vki_signalfn_t(int);
81
 
typedef __vki_signalfn_t __user *__vki_sighandler_t;
82
 
 
83
 
typedef void __vki_restorefn_t(void);
84
 
typedef __vki_restorefn_t __user *__vki_sigrestore_t;
85
 
 
86
 
#define VKI_SIG_DFL ((__vki_sighandler_t)0)     /* default signal handling */
87
 
#define VKI_SIG_IGN ((__vki_sighandler_t)1)     /* ignore signal */
88
 
 
89
 
/* Back in asm-ppc64/signal.h */
90
 
#define _VKI_NSIG           64
91
 
#define _VKI_NSIG_BPW       64
92
 
#define _VKI_NSIG_WORDS     (_VKI_NSIG / _VKI_NSIG_BPW)
93
 
 
94
 
typedef unsigned long vki_old_sigset_t;             /* at least 32 bits */
95
 
 
96
 
typedef struct {
97
 
  unsigned long sig[_VKI_NSIG_WORDS];
98
 
} vki_sigset_t;
99
 
 
100
 
#define VKI_SIGHUP           1
101
 
#define VKI_SIGINT           2
102
 
#define VKI_SIGQUIT          3
103
 
#define VKI_SIGILL           4
104
 
#define VKI_SIGTRAP          5
105
 
#define VKI_SIGABRT          6
106
 
#define VKI_SIGIOT           6
107
 
#define VKI_SIGBUS           7
108
 
#define VKI_SIGFPE           8
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
129
 
#define VKI_SIGIO           29
130
 
#define VKI_SIGPOLL         VKI_SIGIO
131
 
#define VKI_SIGPWR          30
132
 
#define VKI_SIGSYS          31
133
 
#define VKI_SIGUNUSED       31
134
 
 
135
 
/* These should not be considered constants from userland.  */
136
 
#define VKI_SIGRTMIN        32
137
 
#define VKI_SIGRTMAX        _VKI_NSIG
138
 
 
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
146
 
 
147
 
#define VKI_SA_NOMASK       VKI_SA_NODEFER
148
 
#define VKI_SA_ONESHOT      VKI_SA_RESETHAND
149
 
//#define VKI_SA_INTERRUPT    0x20000000u /* dummy -- ignored */
150
 
 
151
 
#define VKI_SA_RESTORER     0x04000000u
152
 
 
153
 
#define VKI_SS_ONSTACK      1
154
 
#define VKI_SS_DISABLE      2
155
 
 
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;
162
 
};
163
 
 
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 */
169
 
};
170
 
 
171
 
typedef struct vki_sigaltstack {
172
 
  void __user *ss_sp;
173
 
  int ss_flags;
174
 
  vki_size_t ss_size;
175
 
} vki_stack_t;
176
 
 
177
 
//----------------------------------------------------------------------
178
 
// From linux-2.6.13/include/asm-ppc64/ptrace.h
179
 
//----------------------------------------------------------------------
180
 
 
181
 
#define VKI_PPC_REG unsigned long
182
 
struct vki_pt_regs {
183
 
  VKI_PPC_REG gpr[32];
184
 
  VKI_PPC_REG nip;
185
 
  VKI_PPC_REG msr;
186
 
  VKI_PPC_REG orig_gpr3;      /* Used for restarting system calls */
187
 
  VKI_PPC_REG ctr;
188
 
  VKI_PPC_REG link;
189
 
  VKI_PPC_REG xer;
190
 
  VKI_PPC_REG ccr;
191
 
  VKI_PPC_REG softe;          /* Soft enabled/disabled */
192
 
  VKI_PPC_REG trap;           /* Reason for being here */
193
 
  VKI_PPC_REG dar;            /* Fault registers */
194
 
  VKI_PPC_REG dsisr;
195
 
  VKI_PPC_REG result;         /* Result of a system call */
196
 
 
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
202
 
     #121617). */
203
 
  unsigned long pad[4];
204
 
};
205
 
 
206
 
/* Kludge?  I don't know where this came from or if it is right. */
207
 
#define vki_user_regs_struct vki_pt_regs
208
 
 
209
 
#define VKI_PT_R0   0
210
 
#define VKI_PT_R1   1
211
 
#define VKI_PT_R2   2
212
 
#define VKI_PT_R3   3
213
 
#define VKI_PT_R4   4
214
 
#define VKI_PT_R5   5
215
 
#define VKI_PT_R6   6
216
 
#define VKI_PT_R7   7
217
 
#define VKI_PT_R8   8
218
 
#define VKI_PT_R9   9
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
250
 
 
251
 
//----------------------------------------------------------------------
252
 
// From linux-2.6.13/include/asm-ppc64/elf.h
253
 
//----------------------------------------------------------------------
254
 
 
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 */
258
 
 
259
 
typedef unsigned long vki_elf_greg_t64;
260
 
typedef vki_elf_greg_t64 vki_elf_gregset_t64[VKI_ELF_NGREG];
261
 
 
262
 
typedef vki_elf_gregset_t64 vki_elf_gregset_t;
263
 
 
264
 
typedef double vki_elf_fpreg_t;
265
 
typedef vki_elf_fpreg_t vki_elf_fpregset_t[VKI_ELF_NFPREG];
266
 
 
267
 
/* Altivec registers */
268
 
/*
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.
275
 
 *
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.
280
 
 *
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
283
 
 */
284
 
typedef __vki_vector128 vki_elf_vrreg_t;
285
 
typedef vki_elf_vrreg_t vki_elf_vrregset_t[VKI_ELF_NVRREG];
286
 
 
287
 
//----------------------------------------------------------------------
288
 
// From linux-2.6.13/include/asm-ppc64/sigcontext.h
289
 
//----------------------------------------------------------------------
290
 
 
291
 
struct vki_sigcontext {
292
 
  unsigned long       _unused[4];
293
 
  int                 signal;
294
 
  int                 _pad0;
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;
300
 
  /*
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.
309
 
   *
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.
318
 
   */
319
 
  vki_elf_vrreg_t  __user *v_regs;
320
 
  long             vmx_reserve[VKI_ELF_NVRREG+VKI_ELF_NVRREG+1];
321
 
};
322
 
 
323
 
//----------------------------------------------------------------------
324
 
// From linux-2.6.13/include/asm-ppc64/mman.h
325
 
//----------------------------------------------------------------------
326
 
 
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
332
 
                                               change to start of
333
 
                                               growsdown vma */
334
 
#define VKI_PROT_GROWSUP    0x02000000      /* mprotect flag: extend
335
 
                                               change to end of
336
 
                                               growsup vma */
337
 
 
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 */
343
 
 
344
 
//----------------------------------------------------------------------
345
 
// From linux-2.6.13/include/asm-ppc64/fcntl.h
346
 
//----------------------------------------------------------------------
347
 
 
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
357
 
 
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
366
 
 
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. */
371
 
 
372
 
/* for F_[GET|SET]FL */
373
 
#define VKI_FD_CLOEXEC  1  /* actually anything with low bit set goes */
374
 
 
375
 
#define VKI_F_LINUX_SPECIFIC_BASE   1024
376
 
 
377
 
//----------------------------------------------------------------------
378
 
// From linux-2.6.13/include/asm-ppc64/resource.h
379
 
//----------------------------------------------------------------------
380
 
 
381
 
// which just does #include <asm-generic/resource.h>
382
 
 
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 */
387
 
 
388
 
//----------------------------------------------------------------------
389
 
// From linux-2.6.13/include/asm-ppc64/socket.h
390
 
//----------------------------------------------------------------------
391
 
 
392
 
#define VKI_SOL_SOCKET      1
393
 
 
394
 
#define VKI_SO_TYPE         3
395
 
 
396
 
//----------------------------------------------------------------------
397
 
// From linux-2.6.13/include/asm-ppc64/sockios.h
398
 
//----------------------------------------------------------------------
399
 
 
400
 
#define VKI_SIOCSPGRP       0x8902
401
 
#define VKI_SIOCGPGRP       0x8904
402
 
#define VKI_SIOCGSTAMP      0x8906          /* Get stamp */
403
 
 
404
 
//----------------------------------------------------------------------
405
 
// From linux-2.6.13/include/asm-ppc64/stat.h
406
 
//----------------------------------------------------------------------
407
 
 
408
 
struct vki_stat {
409
 
  unsigned long   st_dev;
410
 
  unsigned long   st_ino;
411
 
  unsigned long   st_nlink;
412
 
  unsigned int    st_mode;
413
 
  unsigned int    st_uid;
414
 
  unsigned int    st_gid;
415
 
  unsigned long   st_rdev;
416
 
  long            st_size;
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;
428
 
};
429
 
 
430
 
#define VKI_STAT_HAVE_NSEC 1
431
 
 
432
 
/* This matches struct stat64 in glibc2.1. Only used for 32 bit. */
433
 
struct vki_stat64 {
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.  */
444
 
 
445
 
  long st_blocks;                 /* Number 512-byte blocks allocated. */
446
 
  int   st_atime;                 /* Time of last access.  */
447
 
  int   st_atime_nsec;
448
 
  int   st_mtime;                 /* Time of last modification.  */
449
 
  int   st_mtime_nsec;
450
 
  int   st_ctime;                 /* Time of last status change.  */
451
 
  int   st_ctime_nsec;
452
 
  unsigned int   __unused4;
453
 
  unsigned int   __unused5;
454
 
};
455
 
 
456
 
//----------------------------------------------------------------------
457
 
// From linux-2.6.13/include/asm-ppc64/statfs.h
458
 
//----------------------------------------------------------------------
459
 
 
460
 
struct vki_statfs {
461
 
  long f_type;
462
 
  long f_bsize;
463
 
  long f_blocks;
464
 
  long f_bfree;
465
 
  long f_bavail;
466
 
  long f_files;
467
 
  long f_ffree;
468
 
  __vki_kernel_fsid_t f_fsid;
469
 
  long f_namelen;
470
 
  long f_frsize;
471
 
  long f_spare[5];
472
 
};
473
 
 
474
 
//----------------------------------------------------------------------
475
 
// From linux-2.6.13/include/asm-ppc64/termios.h
476
 
//----------------------------------------------------------------------
477
 
 
478
 
struct vki_winsize {
479
 
  unsigned short ws_row;
480
 
  unsigned short ws_col;
481
 
  unsigned short ws_xpixel;
482
 
  unsigned short ws_ypixel;
483
 
};
484
 
 
485
 
#define VKI_NCC 10
486
 
struct vki_termio {
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 */
493
 
};
494
 
 
495
 
//----------------------------------------------------------------------
496
 
// From linux-2.6.13/include/asm-ppc64/termbits.h
497
 
//----------------------------------------------------------------------
498
 
 
499
 
typedef unsigned char   vki_cc_t;
500
 
typedef unsigned int    vki_speed_t;
501
 
typedef unsigned int    vki_tcflag_t;
502
 
 
503
 
#define VKI_NCCS 19
504
 
struct vki_termios {
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 */
513
 
};
514
 
 
515
 
//----------------------------------------------------------------------
516
 
// From linux-2.6.13/include/asm-ppc64/ioctl.h
517
 
//----------------------------------------------------------------------
518
 
 
519
 
#define _VKI_IOC_NRBITS     8
520
 
#define _VKI_IOC_TYPEBITS   8
521
 
#define _VKI_IOC_SIZEBITS   13
522
 
#define _VKI_IOC_DIRBITS    3
523
 
 
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)
528
 
 
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)
533
 
 
534
 
/*
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
537
 
 * files for us.
538
 
 */
539
 
#define _VKI_IOC_NONE       1U
540
 
#define _VKI_IOC_READ       2U
541
 
#define _VKI_IOC_WRITE      4U
542
 
 
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))
548
 
 
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)
555
 
 
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), \
565
 
                                       sizeof(size))
566
 
#define _VKI_IOW_BAD(type,nr,size)  _VKI_IOC(_VKI_IOC_WRITE,(type),(nr), \
567
 
                                       sizeof(size))
568
 
#define _VKI_IOWR_BAD(type,nr,size) _VKI_IOC(_VKI_IOC_READ|_VKI_IOC_WRITE, \
569
 
                                       (type),(nr),sizeof(size))
570
 
 
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)
576
 
 
577
 
//----------------------------------------------------------------------
578
 
// From linux-2.6.13/include/asm-ppc64/ioctls.h
579
 
//----------------------------------------------------------------------
580
 
 
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 */
612
 
 
613
 
//----------------------------------------------------------------------
614
 
// From linux-2.6.13/include/asm-ppc64/poll.h
615
 
//----------------------------------------------------------------------
616
 
 
617
 
#define VKI_POLLIN          0x0001
618
 
 
619
 
struct vki_pollfd {
620
 
  int fd;
621
 
  short events;
622
 
  short revents;
623
 
};
624
 
 
625
 
//----------------------------------------------------------------------
626
 
// From linux-2.6.13/include/asm-ppc64/user.h
627
 
//----------------------------------------------------------------------
628
 
 
629
 
// Not sure what's needed from here
630
 
 
631
 
//----------------------------------------------------------------------
632
 
// From linux-2.6.13/include/asm-ppc64/elf.h
633
 
//----------------------------------------------------------------------
634
 
 
635
 
// Not sure what's needed from here
636
 
 
637
 
//----------------------------------------------------------------------
638
 
// From linux-2.6.13/include/asm-ppc64/ucontext.h
639
 
//----------------------------------------------------------------------
640
 
 
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 */
648
 
};
649
 
 
650
 
//----------------------------------------------------------------------
651
 
// From linux-2.6.13/include/asm-ppc64/ipcbuf.h
652
 
//----------------------------------------------------------------------
653
 
 
654
 
struct vki_ipc64_perm
655
 
{
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;
662
 
  unsigned int        seq;
663
 
  unsigned int        __pad1;
664
 
  unsigned long       __unused1;
665
 
  unsigned long       __unused2;
666
 
};
667
 
 
668
 
//----------------------------------------------------------------------
669
 
// From linux-2.6.13/include/asm-ppc64/sembuf.h
670
 
//----------------------------------------------------------------------
671
 
 
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;
679
 
};
680
 
 
681
 
//----------------------------------------------------------------------
682
 
// From linux-2.6.13/include/asm-ppc64/msgbuf.h
683
 
//----------------------------------------------------------------------
684
 
 
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;
697
 
};
698
 
 
699
 
//----------------------------------------------------------------------
700
 
// From linux-2.6.13/include/asm-ppc64/ipc.h
701
 
//----------------------------------------------------------------------
702
 
 
703
 
// this just does #include <asm-generic/ipc.h>
704
 
 
705
 
struct vki_ipc_kludge {
706
 
  struct vki_msgbuf __user *msgp;
707
 
  long msgtyp;
708
 
};
709
 
 
710
 
#define VKI_SEMOP            1
711
 
#define VKI_SEMGET           2
712
 
#define VKI_SEMCTL           3
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
718
 
#define VKI_SHMAT           21
719
 
#define VKI_SHMDT           22
720
 
#define VKI_SHMGET          23
721
 
#define VKI_SHMCTL          24
722
 
 
723
 
//----------------------------------------------------------------------
724
 
// From linux-2.6.13/include/asm-ppc64/shmbuf.h
725
 
//----------------------------------------------------------------------
726
 
 
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;
738
 
};
739
 
 
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;
750
 
};
751
 
 
752
 
//----------------------------------------------------------------------
753
 
// end
754
 
//----------------------------------------------------------------------
755
 
 
756
 
#endif // __PPC64_LINUX_VKI_ARCH_H
757
 
 
758
 
/*--------------------------------------------------------------------*/
759
 
/*--- end                                                          ---*/
760
 
/*--------------------------------------------------------------------*/