diff options
| author | Richard Pennington <rich@pennware.com> | 2012-11-09 23:32:57 +0100 | 
|---|---|---|
| committer | rofl0r <retnyg@gmx.net> | 2012-11-13 18:15:10 +0100 | 
| commit | 7669d1e334e6b96455eece78da43bf830b93d697 (patch) | |
| tree | 6649acfaa61ec6780498b55fa8015ca4f7a6cdae | |
| parent | 1e717ea3d2a864e00e507f1a70a892c551955f1b (diff) | |
| download | musl-7669d1e334e6b96455eece78da43bf830b93d697.tar.gz | |
import preliminary ppc work by rdp.
38 files changed, 2124 insertions, 0 deletions
diff --git a/arch/ppc/atomic.h b/arch/ppc/atomic.h new file mode 100644 index 00000000..af397599 --- /dev/null +++ b/arch/ppc/atomic.h @@ -0,0 +1,124 @@ +#ifndef _INTERNAL_ATOMIC_H +#define _INTERNAL_ATOMIC_H + +#include <stdint.h> +#include <endian.h> + +static inline int a_ctz_l(unsigned long x) +{ +	static const char debruijn32[32] = { +		0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13, +		31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14 +	}; +	return debruijn32[(x&-x)*0x076be629 >> 27]; +} + +static inline int a_ctz_64(uint64_t x) +{ +	uint32_t y = x; +	if (!y) { +		y = x>>32; +		return 32 + a_ctz_l(y); +	} +	return a_ctz_l(y); +} + +static inline int a_cas(volatile int *p, int t, int s) +{ + +	__asm__( "1: lwarx 10, 0, %1\n" +                 "   stwcx. %3, 0, %1\n" +                 "   bne- 1b\n" +                 "   mr %0, 10\n" +		: "=r"(t) : "r"(p), "r"(t), "r"(s) : "memory" ); +        return t; +} + +static inline void *a_cas_p(volatile void *p, void *t, void *s) +{ +	return (void *)a_cas(p, (int)t, (int)s); +} + +static inline long a_cas_l(volatile void *p, long t, long s) +{ +	return a_cas(p, t, s); +} + + +static inline int a_swap(volatile int *x, int v) +{ +	int old; +	do old = *x; +	while (a_cas(x, old, v) != old); +	return old; +} + +static inline int a_fetch_add(volatile int *x, int v) +{ +	int old; +	do old = *x; +	while (a_cas(x, old, old+v) != old); +	return old; +} + +static inline void a_inc(volatile int *x) +{ +	a_fetch_add(x, 1); +} + +static inline void a_dec(volatile int *x) +{ +	a_fetch_add(x, -1); +} + +static inline void a_store(volatile int *p, int x) +{ +	*p=x; +} + +static inline void a_spin() +{ +} + +static inline void a_crash() +{ +	*(volatile char *)0=0; +} + +static inline void a_and(volatile int *p, int v) +{ +	int old; +	do old = *p; +	while (a_cas(p, old, old&v) != old); +} + +static inline void a_or(volatile int *p, int v) +{ +	int old; +	do old = *p; +	while (a_cas(p, old, old|v) != old); +} + +static inline void a_and_64(volatile uint64_t *p, uint64_t v) +{ +#if __BYTE_ORDER == __LITTLE_ENDIAN +	a_and((int *)p, v); +	a_and((int *)p+1, v>>32); +#else +	a_and((int *)p+1, v); +	a_and((int *)p, v>>32); +#endif +} + +static inline void a_or_64(volatile uint64_t *p, uint64_t v) +{ +#if __BYTE_ORDER == __LITTLE_ENDIAN +	a_or((int *)p, v); +	a_or((int *)p+1, v>>32); +#else +	a_or((int *)p+1, v); +	a_or((int *)p, v>>32); +#endif +} + +#endif diff --git a/arch/ppc/bits/alltypes.h.sh b/arch/ppc/bits/alltypes.h.sh new file mode 100755 index 00000000..9fa6fab2 --- /dev/null +++ b/arch/ppc/bits/alltypes.h.sh @@ -0,0 +1,121 @@ +#!/bin/sh +sed -e << EOF \ +'/^TYPEDEF/s/TYPEDEF \(.*\) \([^ ]*\);$/#if defined(__NEED_\2) \&\& !defined(__DEFINED_\2)\ +typedef \1 \2;\ +#define __DEFINED_\2\ +#endif\ +/ +/^STRUCT/s/STRUCT * \([^ ]*\) \(.*\);$/#if defined(__NEED_struct_\1) \&\& !defined(__DEFINED_struct_\1)\ +struct \1 \2;\ +#define __DEFINED_struct_\1\ +#endif\ +/ +/^UNION/s/UNION * \([^ ]*\) \(.*\);$/#if defined(__NEED_union_\1) \&\& !defined(__DEFINED_union_\1)\ +union \1 \2;\ +#define __DEFINED_union_\1\ +#endif\ +/' + +TYPEDEF unsigned int size_t; +TYPEDEF long ssize_t; +TYPEDEF long ptrdiff_t; +TYPEDEF __builtin_va_list va_list; + +#ifndef __cplusplus +TYPEDEF int wchar_t; +#endif +TYPEDEF int wint_t; +TYPEDEF long wctrans_t; +TYPEDEF long wctype_t; + +TYPEDEF signed char int8_t; +TYPEDEF short       int16_t; +TYPEDEF int         int32_t; +TYPEDEF long long   int64_t; + +TYPEDEF unsigned char      uint8_t; +TYPEDEF unsigned short     uint16_t; +TYPEDEF unsigned int       uint32_t; +TYPEDEF unsigned long long uint64_t; + +TYPEDEF unsigned short     __uint16_t; +TYPEDEF unsigned int       __uint32_t; +TYPEDEF unsigned long long __uint64_t; + +TYPEDEF int8_t    int_fast8_t; +TYPEDEF int       int_fast16_t; +TYPEDEF int       int_fast32_t; +TYPEDEF int64_t   int_fast64_t; + +TYPEDEF unsigned char      uint_fast8_t; +TYPEDEF unsigned int       uint_fast16_t; +TYPEDEF unsigned int       uint_fast32_t; +TYPEDEF uint64_t           uint_fast64_t; + +TYPEDEF long          intptr_t; +TYPEDEF unsigned long uintptr_t; + +TYPEDEF float float_t; +TYPEDEF double double_t; + +TYPEDEF long time_t; +TYPEDEF int suseconds_t; +STRUCT timeval { time_t tv_sec; int tv_usec; }; +STRUCT timespec { time_t tv_sec; long tv_nsec; }; + +TYPEDEF int pid_t; +TYPEDEF int id_t; +TYPEDEF int uid_t; +TYPEDEF int gid_t; +TYPEDEF int key_t; + +TYPEDEF struct __pthread * pthread_t; +TYPEDEF int pthread_once_t; +TYPEDEF int pthread_key_t; +TYPEDEF int pthread_spinlock_t; + +TYPEDEF struct { union { int __i[9]; size_t __s[9]; } __u; } pthread_attr_t; +TYPEDEF unsigned pthread_mutexattr_t; +TYPEDEF unsigned pthread_condattr_t; +TYPEDEF unsigned pthread_barrierattr_t; +TYPEDEF struct { unsigned __attr[2]; } pthread_rwlockattr_t; + +TYPEDEF struct { union { int __i[6]; void *__p[6]; } __u; } pthread_mutex_t; +TYPEDEF struct { union { int __i[12]; void *__p[12]; } __u; } pthread_cond_t; +TYPEDEF struct { union { int __i[8]; void *__p[8]; } __u; } pthread_rwlock_t; +TYPEDEF struct { union { int __i[5]; void *__p[5]; } __u; } pthread_barrier_t; + +TYPEDEF long long off_t; + +TYPEDEF unsigned int mode_t; + +TYPEDEF unsigned int nlink_t; +TYPEDEF unsigned long long ino_t; +TYPEDEF unsigned long long dev_t; +TYPEDEF unsigned long blksize_t; +TYPEDEF unsigned long long blkcnt_t; +TYPEDEF unsigned long long fsblkcnt_t; +TYPEDEF unsigned long long fsfilcnt_t; + +TYPEDEF void * timer_t; +TYPEDEF int clockid_t; +TYPEDEF unsigned long clock_t; + +TYPEDEF struct { unsigned long __bits[128/sizeof(long)]; } sigset_t; +TYPEDEF struct __siginfo siginfo_t; + +TYPEDEF unsigned int socklen_t; +TYPEDEF unsigned short sa_family_t; +TYPEDEF unsigned short in_port_t; +TYPEDEF unsigned int in_addr_t; +STRUCT in_addr { in_addr_t s_addr; }; + +TYPEDEF struct __FILE_s FILE; + +TYPEDEF int nl_item; + +TYPEDEF struct __locale * locale_t; + +STRUCT iovec { void *iov_base; size_t iov_len; }; + +EOF diff --git a/arch/ppc/bits/asm.h b/arch/ppc/bits/asm.h new file mode 100644 index 00000000..f0eff285 --- /dev/null +++ b/arch/ppc/bits/asm.h @@ -0,0 +1,114 @@ +/*	$NetBSD: asm.h,v 1.29 2010/03/09 22:36:41 matt Exp $	*/ + +/* + * Copyright (C) 1995, 1996 Wolfgang Solfrank. + * Copyright (C) 1995, 1996 TooLs GmbH. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + *    must display the following acknowledgement: + *	This product includes software developed by TooLs GmbH. + * 4. The name of TooLs GmbH may not be used to endorse or promote products + *    derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR + * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef _PPC_BITS_ASM_H_ +#define _PPC_BITS_ASM_H_ + +#define cr0     0 +#define cr1     1 +#define cr2     2 +#define cr3     3 +#define cr4     4 +#define cr5     5 +#define cr6     6 +#define cr7     7 + +/* General Purpose Registers (GPRs) */ +#define r0      0 +#define r1      1 +#define r2      2 +#define r3      3 +#define r4      4 +#define r5      5 +#define r6      6 +#define r7      7 +#define r8      8 +#define r9      9 +#define r10     10 +#define r11     11 +#define r12     12 +#define r13     13 +#define r14     14 +#define r15     15 +#define r16     16 +#define r17     17 +#define r18     18 +#define r19     19 +#define r20     20 +#define r21     21 +#define r22     22 +#define r23     23 +#define r24     24 +#define r25     25 +#define r26     26 +#define r27     27 +#define r28     28 +#define r29     29 +#define r30     30 +#define r31     31 + +/* Floating Point Registers (FPRs) */ +#define fr0     0 +#define fr1     1 +#define fr2     2 +#define fr3     3 +#define fr4     4 +#define fr5     5 +#define fr6     6 +#define fr7     7 +#define fr8     8 +#define fr9     9 +#define fr10    10 +#define fr11    11 +#define fr12    12 +#define fr13    13 +#define fr14    14 +#define fr15    15 +#define fr16    16 +#define fr17    17 +#define fr18    18 +#define fr19    19 +#define fr20    20 +#define fr21    21 +#define fr22    22 +#define fr23    23 +#define fr24    24 +#define fr25    25 +#define fr26    26 +#define fr27    27 +#define fr28    28 +#define fr29    29 +#define fr30    30 +#define fr31    31 + +#endif /* _PPC_BITS_ASM_H_ */ diff --git a/arch/ppc/bits/endian.h b/arch/ppc/bits/endian.h new file mode 100644 index 00000000..4442abf4 --- /dev/null +++ b/arch/ppc/bits/endian.h @@ -0,0 +1,15 @@ +#ifdef __BIG_ENDIAN__ +  #if __BIG_ENDIAN__ +    #define __BYTE_ORDER __BIG_ENDIAN +  #endif +#endif /* __BIG_ENDIAN__ */ + +#ifdef __LITTLE_ENDIAN__ +  #if __LITTLE_ENDIAN__ +    #define __BYTE_ORDER __LITTLE_ENDIAN +  #endif +#endif /* __LITTLE_ENDIAN__ */ + +#ifndef __BYTE_ORDER +  #define __BYTE_ORDER __BIG_ENDIAN +#endif diff --git a/arch/ppc/bits/errno.h b/arch/ppc/bits/errno.h new file mode 100644 index 00000000..c75720ef --- /dev/null +++ b/arch/ppc/bits/errno.h @@ -0,0 +1,133 @@ +#define EPERM            1 +#define ENOENT           2 +#define ESRCH            3 +#define EINTR            4 +#define EIO              5 +#define ENXIO            6 +#define E2BIG            7 +#define ENOEXEC          8 +#define EBADF            9 +#define ECHILD          10 +#define EAGAIN          11 +#define ENOMEM          12 +#define EACCES          13 +#define EFAULT          14 +#define ENOTBLK         15 +#define EBUSY           16 +#define EEXIST          17 +#define EXDEV           18 +#define ENODEV          19 +#define ENOTDIR         20 +#define EISDIR          21 +#define EINVAL          22 +#define ENFILE          23 +#define EMFILE          24 +#define ENOTTY          25 +#define ETXTBSY         26 +#define EFBIG           27 +#define ENOSPC          28 +#define ESPIPE          29 +#define EROFS           30 +#define EMLINK          31 +#define EPIPE           32 +#define EDOM            33 +#define ERANGE          34 +#define EDEADLK         35 +#define ENAMETOOLONG    36 +#define ENOLCK          37 +#define ENOSYS          38 +#define ENOTEMPTY       39 +#define ELOOP           40 +#define EWOULDBLOCK     EAGAIN +#define ENOMSG          42 +#define EIDRM           43 +#define ECHRNG          44 +#define EL2NSYNC        45 +#define EL3HLT          46 +#define EL3RST          47 +#define ELNRNG          48 +#define EUNATCH         49 +#define ENOCSI          50 +#define EL2HLT          51 +#define EBADE           52 +#define EBADR           53 +#define EXFULL          54 +#define ENOANO          55 +#define EBADRQC         56 +#define EBADSLT         57 +#define EDEADLOCK       EDEADLK +#define EBFONT          59 +#define ENOSTR          60 +#define ENODATA         61 +#define ETIME           62 +#define ENOSR           63 +#define ENONET          64 +#define ENOPKG          65 +#define EREMOTE         66 +#define ENOLINK         67 +#define EADV            68 +#define ESRMNT          69 +#define ECOMM           70 +#define EPROTO          71 +#define EMULTIHOP       72 +#define EDOTDOT         73 +#define EBADMSG         74 +#define EOVERFLOW       75 +#define ENOTUNIQ        76 +#define EBADFD          77 +#define EREMCHG         78 +#define ELIBACC         79 +#define ELIBBAD         80 +#define ELIBSCN         81 +#define ELIBMAX         82 +#define ELIBEXEC        83 +#define EILSEQ          84 +#define ERESTART        85 +#define ESTRPIPE        86 +#define EUSERS          87 +#define ENOTSOCK        88 +#define EDESTADDRREQ    89 +#define EMSGSIZE        90 +#define EPROTOTYPE      91 +#define ENOPROTOOPT     92 +#define EPROTONOSUPPORT 93 +#define ESOCKTNOSUPPORT 94 +#define EOPNOTSUPP      95 +#define ENOTSUP         EOPNOTSUPP +#define EPFNOSUPPORT    96 +#define EAFNOSUPPORT    97 +#define EADDRINUSE      98 +#define EADDRNOTAVAIL   99 +#define ENETDOWN        100 +#define ENETUNREACH     101 +#define ENETRESET       102 +#define ECONNABORTED    103 +#define ECONNRESET      104 +#define ENOBUFS         105 +#define EISCONN         106 +#define ENOTCONN        107 +#define ESHUTDOWN       108 +#define ETOOMANYREFS    109 +#define ETIMEDOUT       110 +#define ECONNREFUSED    111 +#define EHOSTDOWN       112 +#define EHOSTUNREACH    113 +#define EALREADY        114 +#define EINPROGRESS     115 +#define ESTALE          116 +#define EUCLEAN         117 +#define ENOTNAM         118 +#define ENAVAIL         119 +#define EISNAM          120 +#define EREMOTEIO       121 +#define EDQUOT          122 +#define ENOMEDIUM       123 +#define EMEDIUMTYPE     124 +#define ECANCELED       125 +#define ENOKEY          126 +#define EKEYEXPIRED     127 +#define EKEYREVOKED     128 +#define EKEYREJECTED    129 +#define EOWNERDEAD      130 +#define ENOTRECOVERABLE 131 +#define ERFKILL         132 diff --git a/arch/ppc/bits/fcntl.h b/arch/ppc/bits/fcntl.h new file mode 100644 index 00000000..fc65ebcc --- /dev/null +++ b/arch/ppc/bits/fcntl.h @@ -0,0 +1,33 @@ +#define O_CREAT        0100 +#define O_EXCL         0200 +#define O_NOCTTY       0400 +#define O_TRUNC       01000 +#define O_APPEND      02000 +#define O_NONBLOCK    04000 +#define O_DSYNC      010000 +#define O_SYNC     04010000 +#define O_RSYNC    04010000 +#define O_DIRECTORY  040000 +#define O_NOFOLLOW  0100000 +#define O_CLOEXEC  02000000 + +#define O_ASYNC      020000 +#define O_DIRECT    0200000 +#define O_LARGEFILE 0400000 +#define O_NOATIME  01000000 +#define O_NDELAY O_NONBLOCK + +#define F_DUPFD  0 +#define F_GETFD  1 +#define F_SETFD  2 +#define F_GETFL  3 +#define F_SETFL  4 + +#define F_SETOWN 8 +#define F_GETOWN 9 +#define F_SETSIG 10 +#define F_GETSIG 11 + +#define F_GETLK 12 +#define F_SETLK 13 +#define F_SETLKW 14 diff --git a/arch/ppc/bits/fenv.h b/arch/ppc/bits/fenv.h new file mode 100644 index 00000000..edbdea2a --- /dev/null +++ b/arch/ppc/bits/fenv.h @@ -0,0 +1,10 @@ +#define FE_ALL_EXCEPT 0 +#define FE_TONEAREST  0 + +typedef unsigned long fexcept_t; + +typedef struct { +	unsigned long __cw; +} fenv_t; + +#define FE_DFL_ENV      ((const fenv_t *) -1) diff --git a/arch/ppc/bits/float.h b/arch/ppc/bits/float.h new file mode 100644 index 00000000..dce9e2d9 --- /dev/null +++ b/arch/ppc/bits/float.h @@ -0,0 +1,16 @@ +#define FLT_ROUNDS 1 +#define FLT_EVAL_METHOD 0 + +#define LDBL_MIN 2.2250738585072014e-308 +#define LDBL_MAX 1.7976931348623157e+308 +#define LDBL_EPSILON 2.2204460492503131e-16 + +#define LDBL_MANT_DIG 53 +#define LDBL_MIN_EXP (-1021) +#define LDBL_MAX_EXP 1024 + +#define LDBL_DIG 15 +#define LDBL_MIN_10_EXP (-307) +#define LDBL_MAX_10_EXP 308 + +#define DECIMAL_DIG 17 diff --git a/arch/ppc/bits/ioctl.h b/arch/ppc/bits/ioctl.h new file mode 100644 index 00000000..a4197afd --- /dev/null +++ b/arch/ppc/bits/ioctl.h @@ -0,0 +1,197 @@ +#define _IOC(a,b,c,d) ( ((a)<<29) | ((b)<<8) | (c) | ((d)<<16) ) +#define _IOC_NONE  1U +#define _IOC_WRITE 2U +#define _IOC_READ  4U + +#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0) +#define _IOW(a,b,c) _IOC(1,(a),(b),sizeof(c)) +#define _IOR(a,b,c) _IOC(2,(a),(b),sizeof(c)) +#define _IOWR(a,b,c) _IOC(4,(a),(b),sizeof(c)) + +#define TCGETS		0x5401 +#define TCSETS		0x5402 +#define TCSETSW		0x5403 +#define TCSETSF		0x5404 +#define TCGETA		0x5405 +#define TCSETA		0x5406 +#define TCSETAW		0x5407 +#define TCSETAF		0x5408 +#define TCSBRK		0x5409 +#define TCXONC		0x540A +#define TCFLSH		0x540B +#define TIOCEXCL	0x540C +#define TIOCNXCL	0x540D +#define TIOCSCTTY	0x540E +#define TIOCGPGRP	0x540F +#define TIOCSPGRP	0x5410 +#define TIOCOUTQ	0x5411 +#define TIOCSTI		0x5412 +#define TIOCGWINSZ	0x5413 +#define TIOCSWINSZ	0x5414 +#define TIOCMGET	0x5415 +#define TIOCMBIS	0x5416 +#define TIOCMBIC	0x5417 +#define TIOCMSET	0x5418 +#define TIOCGSOFTCAR	0x5419 +#define TIOCSSOFTCAR	0x541A +#define FIONREAD	0x541B +#define TIOCINQ		FIONREAD +#define TIOCLINUX	0x541C +#define TIOCCONS	0x541D +#define TIOCGSERIAL	0x541E +#define TIOCSSERIAL	0x541F +#define TIOCPKT		0x5420 +#define FIONBIO		0x5421 +#define TIOCNOTTY	0x5422 +#define TIOCSETD	0x5423 +#define TIOCGETD	0x5424 +#define TCSBRKP		0x5425 +#define TIOCTTYGSTRUCT	0x5426 +#define TIOCSBRK	0x5427 +#define TIOCCBRK	0x5428 +#define TIOCGSID	0x5429 +#define TIOCGPTN	0x80045430 +#define TIOCSPTLCK	0x40045431 +#define TCGETX		0x5432 +#define TCSETX		0x5433 +#define TCSETXF		0x5434 +#define TCSETXW		0x5435 + +#define FIONCLEX	0x5450 +#define FIOCLEX		0x5451 +#define FIOASYNC	0x5452 +#define TIOCSERCONFIG	0x5453 +#define TIOCSERGWILD	0x5454 +#define TIOCSERSWILD	0x5455 +#define TIOCGLCKTRMIOS	0x5456 +#define TIOCSLCKTRMIOS	0x5457 +#define TIOCSERGSTRUCT	0x5458 +#define TIOCSERGETLSR   0x5459 +#define TIOCSERGETMULTI 0x545A +#define TIOCSERSETMULTI 0x545B + +#define TIOCMIWAIT	0x545C +#define TIOCGICOUNT	0x545D +#define TIOCGHAYESESP   0x545E +#define TIOCSHAYESESP   0x545F +#define FIOQSIZE	0x5460 + +#define TIOCPKT_DATA		 0 +#define TIOCPKT_FLUSHREAD	 1 +#define TIOCPKT_FLUSHWRITE	 2 +#define TIOCPKT_STOP		 4 +#define TIOCPKT_START		 8 +#define TIOCPKT_NOSTOP		16 +#define TIOCPKT_DOSTOP		32 +#define TIOCPKT_IOCTL		64 + +#define TIOCSER_TEMT    0x01 + +struct winsize { +	unsigned short ws_row; +	unsigned short ws_col; +	unsigned short ws_xpixel; +	unsigned short ws_ypixel; +}; + +#define TIOCM_LE        0x001 +#define TIOCM_DTR       0x002 +#define TIOCM_RTS       0x004 +#define TIOCM_ST        0x008 +#define TIOCM_SR        0x010 +#define TIOCM_CTS       0x020 +#define TIOCM_CAR       0x040 +#define TIOCM_RNG       0x080 +#define TIOCM_DSR       0x100 +#define TIOCM_CD        TIOCM_CAR +#define TIOCM_RI        TIOCM_RNG +#define TIOCM_OUT1      0x2000 +#define TIOCM_OUT2      0x4000 +#define TIOCM_LOOP      0x8000 +#define TIOCM_MODEM_BITS TIOCM_OUT2 + +#define N_TTY           0 +#define N_SLIP          1 +#define N_MOUSE         2 +#define N_PPP           3 +#define N_STRIP         4 +#define N_AX25          5 +#define N_X25           6 +#define N_6PACK         7 +#define N_MASC          8 +#define N_R3964         9 +#define N_PROFIBUS_FDL  10 +#define N_IRDA          11 +#define N_SMSBLOCK      12 +#define N_HDLC          13 +#define N_SYNC_PPP      14 +#define N_HCI           15 + +#define FIOSETOWN       0x8901 +#define SIOCSPGRP       0x8902 +#define FIOGETOWN       0x8903 +#define SIOCGPGRP       0x8904 +#define SIOCATMARK      0x8905 +#define SIOCGSTAMP      0x8906 + +#define SIOCADDRT       0x890B +#define SIOCDELRT       0x890C +#define SIOCRTMSG       0x890D + +#define SIOCGIFNAME     0x8910 +#define SIOCSIFLINK     0x8911 +#define SIOCGIFCONF     0x8912 +#define SIOCGIFFLAGS    0x8913 +#define SIOCSIFFLAGS    0x8914 +#define SIOCGIFADDR     0x8915 +#define SIOCSIFADDR     0x8916 +#define SIOCGIFDSTADDR  0x8917 +#define SIOCSIFDSTADDR  0x8918 +#define SIOCGIFBRDADDR  0x8919 +#define SIOCSIFBRDADDR  0x891a +#define SIOCGIFNETMASK  0x891b +#define SIOCSIFNETMASK  0x891c +#define SIOCGIFMETRIC   0x891d +#define SIOCSIFMETRIC   0x891e +#define SIOCGIFMEM      0x891f +#define SIOCSIFMEM      0x8920 +#define SIOCGIFMTU      0x8921 +#define SIOCSIFMTU      0x8922 +#define SIOCSIFHWADDR   0x8924 +#define SIOCGIFENCAP    0x8925 +#define SIOCSIFENCAP    0x8926 +#define SIOCGIFHWADDR   0x8927 +#define SIOCGIFSLAVE    0x8929 +#define SIOCSIFSLAVE    0x8930 +#define SIOCADDMULTI    0x8931 +#define SIOCDELMULTI    0x8932 +#define SIOCGIFINDEX    0x8933 +#define SIOGIFINDEX     SIOCGIFINDEX +#define SIOCSIFPFLAGS   0x8934 +#define SIOCGIFPFLAGS   0x8935 +#define SIOCDIFADDR     0x8936 +#define SIOCSIFHWBROADCAST 0x8937 +#define SIOCGIFCOUNT    0x8938 + +#define SIOCGIFBR       0x8940 +#define SIOCSIFBR       0x8941 + +#define SIOCGIFTXQLEN   0x8942 +#define SIOCSIFTXQLEN   0x8943 + +#define SIOCDARP        0x8953 +#define SIOCGARP        0x8954 +#define SIOCSARP        0x8955 + +#define SIOCDRARP       0x8960 +#define SIOCGRARP       0x8961 +#define SIOCSRARP       0x8962 + +#define SIOCGIFMAP      0x8970 +#define SIOCSIFMAP      0x8971 + +#define SIOCADDDLCI     0x8980 +#define SIOCDELDLCI     0x8981 + +#define SIOCDEVPRIVATE		0x89F0 +#define SIOCPROTOPRIVATE	0x89E0 diff --git a/arch/ppc/bits/ipc.h b/arch/ppc/bits/ipc.h new file mode 100644 index 00000000..51ad4427 --- /dev/null +++ b/arch/ppc/bits/ipc.h @@ -0,0 +1,12 @@ +struct ipc_perm +{ +	key_t __ipc_perm_key; +	uid_t uid; +	gid_t gid; +	uid_t cuid; +	gid_t cgid; +	mode_t mode; +	int __ipc_perm_seq; +	long __pad1; +	long __pad2; +}; diff --git a/arch/ppc/bits/limits.h b/arch/ppc/bits/limits.h new file mode 100644 index 00000000..e19461df --- /dev/null +++ b/arch/ppc/bits/limits.h @@ -0,0 +1,8 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) +#define PAGE_SIZE 4096 +#define LONG_BIT 32 +#endif + +#define LONG_MAX  0x7fffffffL +#define LLONG_MAX  0x7fffffffffffffffLL diff --git a/arch/ppc/bits/mman.h b/arch/ppc/bits/mman.h new file mode 100644 index 00000000..302044eb --- /dev/null +++ b/arch/ppc/bits/mman.h @@ -0,0 +1,50 @@ +#define MAP_FAILED ((void *) -1) + +#define	PROT_NONE      0 +#define	PROT_READ      1 +#define	PROT_WRITE     2 +#define	PROT_EXEC      4 +#define	PROT_GROWSDOWN 0x01000000 +#define	PROT_GROWSUP   0x02000000 + +#define	MAP_SHARED     0x01 +#define	MAP_PRIVATE    0x02 +#define	MAP_FIXED      0x10 + +#define MAP_TYPE       0x0f +#define MAP_FILE       0x00 +#define MAP_ANON       0x20 +#define MAP_ANONYMOUS  MAP_ANON +#define MAP_32BIT      0x40 + +#define POSIX_MADV_NORMAL       0 +#define POSIX_MADV_RANDOM       1 +#define POSIX_MADV_SEQUENTIAL   2 +#define POSIX_MADV_WILLNEED     3 +#define POSIX_MADV_DONTNEED     0 + +#define MS_ASYNC        1 +#define MS_INVALIDATE   2 +#define MS_SYNC         4 + +#define MCL_CURRENT     1 +#define MCL_FUTURE      2 + +#ifdef _GNU_SOURCE +#define MADV_NORMAL      0 +#define MADV_RANDOM      1 +#define MADV_SEQUENTIAL  2 +#define MADV_WILLNEED    3 +#define MADV_DONTNEED    4 +#define MADV_REMOVE      9 +#define MADV_DONTFORK    10 +#define MADV_DOFORK      11 +#define MADV_MERGEABLE   12 +#define MADV_UNMERGEABLE 13 +#define MADV_HUGEPAGE    14 +#define MADV_NOHUGEPAGE  15 +#define MADV_HWPOISON    100 + +#define MREMAP_MAYMOVE  1 +#define MREMAP_FIXED    2 +#endif diff --git a/arch/ppc/bits/msg.h b/arch/ppc/bits/msg.h new file mode 100644 index 00000000..3db8576b --- /dev/null +++ b/arch/ppc/bits/msg.h @@ -0,0 +1,16 @@ +struct msqid_ds +{ +	struct ipc_perm msg_perm; +	time_t msg_stime; +	int __unused1; +	time_t msg_rtime; +	int __unused2; +	time_t msg_ctime; +	int __unused3; +	unsigned long msg_cbytes; +	msgqnum_t msg_qnum; +	msglen_t msg_qbytes; +	pid_t msg_lspid; +	pid_t msg_lrpid; +	unsigned long __unused[2]; +}; diff --git a/arch/ppc/bits/posix.h b/arch/ppc/bits/posix.h new file mode 100644 index 00000000..30a38714 --- /dev/null +++ b/arch/ppc/bits/posix.h @@ -0,0 +1,2 @@ +#define _POSIX_V6_ILP32_OFFBIG  1 +#define _POSIX_V7_ILP32_OFFBIG  1 diff --git a/arch/ppc/bits/reg.h b/arch/ppc/bits/reg.h new file mode 100644 index 00000000..0c7bffca --- /dev/null +++ b/arch/ppc/bits/reg.h @@ -0,0 +1,3 @@ +#undef __WORDSIZE +#define __WORDSIZE 32 +/* FIXME */ diff --git a/arch/ppc/bits/setjmp.h b/arch/ppc/bits/setjmp.h new file mode 100644 index 00000000..a4baec4c --- /dev/null +++ b/arch/ppc/bits/setjmp.h @@ -0,0 +1 @@ +typedef unsigned long jmp_buf [64]; diff --git a/arch/ppc/bits/shm.h b/arch/ppc/bits/shm.h new file mode 100644 index 00000000..8807c4fb --- /dev/null +++ b/arch/ppc/bits/shm.h @@ -0,0 +1,18 @@ +#define SHMLBA 4096 + +struct shmid_ds +{ +	struct ipc_perm shm_perm; +	size_t shm_segsz; +	time_t shm_atime; +	int __unused1; +	time_t shm_dtime; +	int __unused2; +	time_t shm_ctime; +	int __unused3; +	pid_t shm_cpid; +	pid_t shm_lpid; +	unsigned long shm_nattch; +	unsigned long __pad1; +	unsigned long __pad2; +}; diff --git a/arch/ppc/bits/signal.h b/arch/ppc/bits/signal.h new file mode 100644 index 00000000..21b2eeef --- /dev/null +++ b/arch/ppc/bits/signal.h @@ -0,0 +1,77 @@ +#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ + || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) + +typedef struct { +	unsigned long __regs[21]; +} mcontext_t; + +typedef struct __ucontext { +	unsigned long uc_flags; +	struct __ucontext *uc_link; +	stack_t uc_stack; +	mcontext_t uc_mcontext; +	sigset_t uc_sigmask; +	unsigned long uc_regspace[128]; +} ucontext_t; + +#define SA_NOCLDSTOP  1 +#define SA_NOCLDWAIT  2 +#define SA_SIGINFO    4 +#define SA_ONSTACK    0x08000000 +#define SA_RESTART    0x10000000 +#define SA_NODEFER    0x40000000 +#define SA_RESETHAND  0x80000000 +#define SA_RESTORER   0x04000000 + +#ifdef _GNU_SOURCE +struct sigcontext +{ +	unsigned long trap_no, error_code, oldmask; +	unsigned long arm_r0, arm_r1, arm_r2, arm_r3; +	unsigned long arm_r4, arm_r5, arm_r6, arm_r7; +	unsigned long arm_r8, arm_r9, arm_r10, arm_fp; +	unsigned long arm_ip, arm_sp, arm_lr, arm_pc; +	unsigned long arm_cpsr, fault_address; +}; +#define NSIG      64 +#endif + +#endif + +#define SIGHUP    1 +#define SIGINT    2 +#define SIGQUIT   3 +#define SIGILL    4 +#define SIGTRAP   5 +#define SIGABRT   6 +#define SIGBUS    7 +#define SIGFPE    8 +#define SIGKILL   9 +#define SIGUSR1   10 +#define SIGSEGV   11 +#define SIGUSR2   12 +#define SIGPIPE   13 +#define SIGALRM   14 +#define SIGTERM   15 +#define SIGSTKFLT 16 +#define SIGCHLD   17 +#define SIGCONT   18 +#define SIGSTOP   19 +#define SIGTSTP   20 +#define SIGTTIN   21 +#define SIGTTOU   22 +#define SIGURG    23 +#define SIGXCPU   24 +#define SIGXFSZ   25 +#define SIGVTALRM 26 +#define SIGPROF   27 +#define SIGWINCH  28 +#define SIGIO     29 +#define SIGPOLL   29 +#define SIGPWR    30 +#define SIGSYS    31 +#define SIGUNUSED SIGSYS + +#ifdef _BSD_SOURCE +#define SIGINFO         SIGUSR1 /* For NetBSD compatability */ +#endif diff --git a/arch/ppc/bits/socket.h b/arch/ppc/bits/socket.h new file mode 100644 index 00000000..c464ed90 --- /dev/null +++ b/arch/ppc/bits/socket.h @@ -0,0 +1,10 @@ +struct msghdr +{ +	void *msg_name; +	socklen_t msg_namelen; +	struct iovec *msg_iov; +	int msg_iovlen; +	void *msg_control; +	socklen_t msg_controllen; +	int msg_flags; +}; diff --git a/arch/ppc/bits/stat.h b/arch/ppc/bits/stat.h new file mode 100644 index 00000000..aa8414ee --- /dev/null +++ b/arch/ppc/bits/stat.h @@ -0,0 +1,28 @@ +/* copied from kernel definition, but with padding replaced + * by the corresponding correctly-sized userspace types. */ + +struct stat +{ +	dev_t st_dev; +	int __st_dev_padding; +	long __st_ino_truncated; +	mode_t st_mode; +	nlink_t st_nlink; +	uid_t st_uid; +	gid_t st_gid; +	dev_t st_rdev; +	int __st_rdev_padding; +	off_t st_size; +	blksize_t st_blksize; +	blkcnt_t st_blocks; +	struct timespec st_atim; +	struct timespec st_mtim; +	struct timespec st_ctim; +	ino_t st_ino; +}; + +#ifdef _BSD_SOURCE +#define st_atimespec st_atim +#define st_mtimespec st_mtim +#define st_ctimespec st_ctim +#endif diff --git a/arch/ppc/bits/statfs.h b/arch/ppc/bits/statfs.h new file mode 100644 index 00000000..f103f4e4 --- /dev/null +++ b/arch/ppc/bits/statfs.h @@ -0,0 +1,7 @@ +struct statfs { +	unsigned long f_type, f_bsize; +	fsblkcnt_t f_blocks, f_bfree, f_bavail; +	fsfilcnt_t f_files, f_ffree; +	fsid_t f_fsid; +	unsigned long f_namelen, f_frsize, f_flags, f_spare[4]; +}; diff --git a/arch/ppc/bits/stdarg.h b/arch/ppc/bits/stdarg.h new file mode 100644 index 00000000..fde37814 --- /dev/null +++ b/arch/ppc/bits/stdarg.h @@ -0,0 +1,4 @@ +#define va_start(v,l)   __builtin_va_start(v,l) +#define va_end(v)       __builtin_va_end(v) +#define va_arg(v,l)     __builtin_va_arg(v,l) +#define va_copy(d,s)    __builtin_va_copy(d,s) diff --git a/arch/ppc/bits/stdint.h b/arch/ppc/bits/stdint.h new file mode 100644 index 00000000..8e21a8cb --- /dev/null +++ b/arch/ppc/bits/stdint.h @@ -0,0 +1,23 @@ +#define INT_FAST8_MIN   INT8_MIN +#define INT_FAST16_MIN  INT32_MIN +#define INT_FAST32_MIN  INT32_MIN +#define INT_FAST64_MIN  INT64_MIN + +#define INT_FAST8_MAX   INT8_MAX +#define INT_FAST16_MAX  INT32_MAX +#define INT_FAST32_MAX  INT32_MAX +#define INT_FAST64_MAX  INT64_MAX + +#define UINT_FAST8_MAX  UINT8_MAX +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +#define INTPTR_MIN      INT32_MIN +#define INTPTR_MAX      INT32_MAX +#define UINTPTR_MAX     UINT32_MAX +#define PTRDIFF_MIN     INT32_MIN +#define PTRDIFF_MAX     INT32_MAX +#define SIG_ATOMIC_MIN  INT32_MIN +#define SIG_ATOMIC_MAX  INT32_MAX +#define SIZE_MAX        UINT32_MAX diff --git a/arch/ppc/bits/syscall.h b/arch/ppc/bits/syscall.h new file mode 100644 index 00000000..7b5050ab --- /dev/null +++ b/arch/ppc/bits/syscall.h @@ -0,0 +1,714 @@ +#if !defined(__ASSEMBLER__) +#define __SYSCALL_LL_E(x) \ +((union { long long ll; long l[2]; }){ .ll = x }).l[0], \ +((union { long long ll; long l[2]; }){ .ll = x }).l[1] +#define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x)) + +long (__syscall)(long, ...); + +static inline long __syscall0(long n) +{ +	return (__syscall)(n, 0, 0, 0, 0, 0, 0); +} + +static inline long __syscall1(long n, long a) +{ +	return (__syscall)(n, a, 0, 0, 0, 0, 0); +} + +static inline long __syscall2(long n, long a, long b) +{ +	return (__syscall)(n, a, b, 0, 0, 0, 0); +} + +static inline long __syscall3(long n, long a, long b, long c) +{ +	return (__syscall)(n, a, b, c, 0, 0, 0); +} + +static inline long __syscall4(long n, long a, long b, long c, long d) +{ +	return (__syscall)(n, a, b, c, d, 0, 0); +} + +static inline long __syscall5(long n, long a, long b, long c, long d, long e) +{ +	return (__syscall)(n, a, b, c, d, e, 0); +} + +static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f) +{ +	return (__syscall)(n, a, b, c, d, e, f); +} + +#define __SC_socket      1 +#define __SC_bind        2 +#define __SC_connect     3 +#define __SC_listen      4 +#define __SC_accept      5 +#define __SC_getsockname 6 +#define __SC_getpeername 7 +#define __SC_socketpair  8 +#define __SC_send        9 +#define __SC_recv        10 +#define __SC_sendto      11 +#define __SC_recvfrom    12 +#define __SC_shutdown    13 +#define __SC_setsockopt  14 +#define __SC_getsockopt  15 +#define __SC_sendmsg     16 +#define __SC_recvmsg     17 + +#define __socketcall(nm,a,b,c,d,e,f) syscall(SYS_socketcall, __SC_##nm, \ +    ((long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f })) +#define __socketcall_cp(nm,a,b,c,d,e,f) syscall_cp(SYS_socketcall, __SC_##nm, \ +    ((long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f })) + +#endif /* __ASSEMBLER__ */ + +#define __NR_SYSCALL_BASE 0 + +#define __NR_restart_syscall (__NR_SYSCALL_BASE + 0) +#define __NR_exit (__NR_SYSCALL_BASE + 1) +#define __NR_fork (__NR_SYSCALL_BASE + 2) +#define __NR_read (__NR_SYSCALL_BASE + 3) +#define __NR_write (__NR_SYSCALL_BASE + 4) +#define __NR_open (__NR_SYSCALL_BASE + 5) +#define __NR_close (__NR_SYSCALL_BASE + 6) +#define __NR_waitpid (__NR_SYSCALL_BASE + 7) +#define __NR_creat (__NR_SYSCALL_BASE + 8) +#define __NR_link (__NR_SYSCALL_BASE + 9) +#define __NR_unlink (__NR_SYSCALL_BASE + 10) +#define __NR_execve (__NR_SYSCALL_BASE + 11) +#define __NR_chdir (__NR_SYSCALL_BASE + 12) +#define __NR_time (__NR_SYSCALL_BASE + 13) +#define __NR_mknod (__NR_SYSCALL_BASE + 14) +#define __NR_chmod (__NR_SYSCALL_BASE + 15) +#define __NR_lchown (__NR_SYSCALL_BASE + 16) +#define __NR_break (__NR_SYSCALL_BASE + 17) +#define __NR_oldstat (__NR_SYSCALL_BASE + 18) +#define __NR_lseek (__NR_SYSCALL_BASE + 19) +#define __NR_getpid (__NR_SYSCALL_BASE + 20) +#define __NR_mount (__NR_SYSCALL_BASE + 21) +#define __NR_umount (__NR_SYSCALL_BASE + 22) +#define __NR_setuid (__NR_SYSCALL_BASE + 23) +#define __NR_getuid (__NR_SYSCALL_BASE + 24) +#define __NR_stime (__NR_SYSCALL_BASE + 25) +#define __NR_ptrace (__NR_SYSCALL_BASE + 26) +#define __NR_alarm (__NR_SYSCALL_BASE + 27) +#define __NR_oldfstat (__NR_SYSCALL_BASE + 28) +#define __NR_pause (__NR_SYSCALL_BASE + 29) +#define __NR_utime (__NR_SYSCALL_BASE + 30) +#define __NR_stty (__NR_SYSCALL_BASE + 31) +#define __NR_gtty (__NR_SYSCALL_BASE + 32) +#define __NR_access (__NR_SYSCALL_BASE + 33) +#define __NR_nice (__NR_SYSCALL_BASE + 34) +#define __NR_ftime (__NR_SYSCALL_BASE + 35) +#define __NR_sync (__NR_SYSCALL_BASE + 36) +#define __NR_kill (__NR_SYSCALL_BASE + 37) +#define __NR_rename (__NR_SYSCALL_BASE + 38) +#define __NR_mkdir (__NR_SYSCALL_BASE + 39) +#define __NR_rmdir (__NR_SYSCALL_BASE + 40) +#define __NR_dup (__NR_SYSCALL_BASE + 41) +#define __NR_pipe (__NR_SYSCALL_BASE + 42) +#define __NR_times (__NR_SYSCALL_BASE + 43) +#define __NR_prof (__NR_SYSCALL_BASE + 44) +#define __NR_brk (__NR_SYSCALL_BASE + 45) +#define __NR_setgid (__NR_SYSCALL_BASE + 46) +#define __NR_getgid (__NR_SYSCALL_BASE + 47) +#define __NR_signal (__NR_SYSCALL_BASE + 48) +#define __NR_geteuid (__NR_SYSCALL_BASE + 49) +#define __NR_getegid (__NR_SYSCALL_BASE + 50) +#define __NR_acct (__NR_SYSCALL_BASE + 51) +#define __NR_umount2 (__NR_SYSCALL_BASE + 52) +#define __NR_lock (__NR_SYSCALL_BASE + 53) +#define __NR_ioctl (__NR_SYSCALL_BASE + 54) +#define __NR_fcntl (__NR_SYSCALL_BASE + 55) +#define __NR_mpx (__NR_SYSCALL_BASE + 56) +#define __NR_setpgid (__NR_SYSCALL_BASE + 57) +#define __NR_ulimit (__NR_SYSCALL_BASE + 58) +#define __NR_oldolduname (__NR_SYSCALL_BASE + 59) +#define __NR_umask (__NR_SYSCALL_BASE + 60) +#define __NR_chroot (__NR_SYSCALL_BASE + 61) +#define __NR_ustat (__NR_SYSCALL_BASE + 62) +#define __NR_dup2 (__NR_SYSCALL_BASE + 63) +#define __NR_getppid (__NR_SYSCALL_BASE + 64) +#define __NR_getpgrp (__NR_SYSCALL_BASE + 65) +#define __NR_setsid (__NR_SYSCALL_BASE + 66) +#define __NR_sigaction (__NR_SYSCALL_BASE + 67) +#define __NR_sgetmask (__NR_SYSCALL_BASE + 68) +#define __NR_ssetmask (__NR_SYSCALL_BASE + 69) +#define __NR_setreuid (__NR_SYSCALL_BASE + 70) +#define __NR_setregid (__NR_SYSCALL_BASE + 71) +#define __NR_sigsuspend (__NR_SYSCALL_BASE + 72) +#define __NR_sigpending (__NR_SYSCALL_BASE + 73) +#define __NR_sethostname (__NR_SYSCALL_BASE + 74) +#define __NR_setrlimit (__NR_SYSCALL_BASE + 75) +#define __NR_getrlimit (__NR_SYSCALL_BASE + 76) +#define __NR_getrusage (__NR_SYSCALL_BASE + 77) +#define __NR_gettimeofday (__NR_SYSCALL_BASE + 78) +#define __NR_settimeofday (__NR_SYSCALL_BASE + 79) +#define __NR_getgroups (__NR_SYSCALL_BASE + 80) +#define __NR_setgroups (__NR_SYSCALL_BASE + 81) +#define __NR_select (__NR_SYSCALL_BASE + 82) +#define __NR_symlink (__NR_SYSCALL_BASE + 83) +#define __NR_oldlstat (__NR_SYSCALL_BASE + 84) +#define __NR_readlink (__NR_SYSCALL_BASE + 85) +#define __NR_uselib (__NR_SYSCALL_BASE + 86) +#define __NR_swapon (__NR_SYSCALL_BASE + 87) +#define __NR_reboot (__NR_SYSCALL_BASE + 88) +#define __NR_readdir (__NR_SYSCALL_BASE + 89) +#define __NR_mmap (__NR_SYSCALL_BASE + 90) +#define __NR_munmap (__NR_SYSCALL_BASE + 91) +#define __NR_truncate (__NR_SYSCALL_BASE + 92) +#define __NR_ftruncate (__NR_SYSCALL_BASE + 93) +#define __NR_fchmod (__NR_SYSCALL_BASE + 94) +#define __NR_fchown (__NR_SYSCALL_BASE + 95) +#define __NR_getpriority (__NR_SYSCALL_BASE + 96) +#define __NR_setpriority (__NR_SYSCALL_BASE + 97) +#define __NR_profil (__NR_SYSCALL_BASE + 98) +#define __NR_statfs (__NR_SYSCALL_BASE + 99) +#define __NR_fstatfs (__NR_SYSCALL_BASE + 100) +#define __NR_ioperm (__NR_SYSCALL_BASE + 101) +#define __NR_socketcall (__NR_SYSCALL_BASE + 102) +#define __NR_syslog (__NR_SYSCALL_BASE + 103) +#define __NR_setitimer (__NR_SYSCALL_BASE + 104) +#define __NR_getitimer (__NR_SYSCALL_BASE + 105) +#define __NR_stat (__NR_SYSCALL_BASE + 106) +#define __NR_lstat (__NR_SYSCALL_BASE + 107) +#define __NR_fstat (__NR_SYSCALL_BASE + 108) +#define __NR_olduname (__NR_SYSCALL_BASE + 109) +#define __NR_iopl (__NR_SYSCALL_BASE + 110) +#define __NR_vhangup (__NR_SYSCALL_BASE + 111) +#define __NR_idle (__NR_SYSCALL_BASE + 112) +#define __NR_vm86 (__NR_SYSCALL_BASE + 113) +#define __NR_wait4 (__NR_SYSCALL_BASE + 114) +#define __NR_swapoff (__NR_SYSCALL_BASE + 115) +#define __NR_sysinfo (__NR_SYSCALL_BASE + 116) +#define __NR_ipc (__NR_SYSCALL_BASE + 117) +#define __NR_fsync (__NR_SYSCALL_BASE + 118) +#define __NR_sigreturn (__NR_SYSCALL_BASE + 119) +#define __NR_clone (__NR_SYSCALL_BASE + 120) +#define __NR_setdomainname (__NR_SYSCALL_BASE + 121) +#define __NR_uname (__NR_SYSCALL_BASE + 122) +#define __NR_modify_ldt (__NR_SYSCALL_BASE + 123) +#define __NR_adjtimex (__NR_SYSCALL_BASE + 124) +#define __NR_mprotect (__NR_SYSCALL_BASE + 125) +#define __NR_sigprocmask (__NR_SYSCALL_BASE + 126) +#define __NR_create_module (__NR_SYSCALL_BASE + 127) +#define __NR_init_module (__NR_SYSCALL_BASE + 128) +#define __NR_delete_module (__NR_SYSCALL_BASE + 129) +#define __NR_get_kernel_syms (__NR_SYSCALL_BASE + 130) +#define __NR_quotactl (__NR_SYSCALL_BASE + 131) +#define __NR_getpgid (__NR_SYSCALL_BASE + 132) +#define __NR_fchdir (__NR_SYSCALL_BASE + 133) +#define __NR_bdflush (__NR_SYSCALL_BASE + 134) +#define __NR_sysfs (__NR_SYSCALL_BASE + 135) +#define __NR_personality (__NR_SYSCALL_BASE + 136) +#define __NR_afs_syscall (__NR_SYSCALL_BASE + 137) +#define __NR_setfsuid (__NR_SYSCALL_BASE + 138) +#define __NR_setfsgid (__NR_SYSCALL_BASE + 139) +#define __NR__llseek (__NR_SYSCALL_BASE + 140) +#define __NR_getdents (__NR_SYSCALL_BASE + 141) +#define __NR__newselect (__NR_SYSCALL_BASE + 142) +#define __NR_flock (__NR_SYSCALL_BASE + 143) +#define __NR_msync (__NR_SYSCALL_BASE + 144) +#define __NR_readv (__NR_SYSCALL_BASE + 145) +#define __NR_writev (__NR_SYSCALL_BASE + 146) +#define __NR_getsid (__NR_SYSCALL_BASE + 147) +#define __NR_fdatasync (__NR_SYSCALL_BASE + 148) +#define __NR__sysctl (__NR_SYSCALL_BASE + 149) +#define __NR_mlock (__NR_SYSCALL_BASE + 150) +#define __NR_munlock (__NR_SYSCALL_BASE + 151) +#define __NR_mlockall (__NR_SYSCALL_BASE + 152) +#define __NR_munlockall (__NR_SYSCALL_BASE + 153) +#define __NR_sched_setparam (__NR_SYSCALL_BASE + 154) +#define __NR_sched_getparam (__NR_SYSCALL_BASE + 155) +#define __NR_sched_setscheduler (__NR_SYSCALL_BASE + 156) +#define __NR_sched_getscheduler (__NR_SYSCALL_BASE + 157) +#define __NR_sched_yield (__NR_SYSCALL_BASE + 158) +#define __NR_sched_get_priority_max (__NR_SYSCALL_BASE + 159) +#define __NR_sched_get_priority_min (__NR_SYSCALL_BASE + 160) +#define __NR_sched_rr_get_interval (__NR_SYSCALL_BASE + 161) +#define __NR_nanosleep (__NR_SYSCALL_BASE + 162) +#define __NR_mremap (__NR_SYSCALL_BASE + 163) +#define __NR_setresuid (__NR_SYSCALL_BASE + 164) +#define __NR_getresuid (__NR_SYSCALL_BASE + 165) +#define __NR_query_module (__NR_SYSCALL_BASE + 166) +#define __NR_poll (__NR_SYSCALL_BASE + 167) +#define __NR_nfsservctl (__NR_SYSCALL_BASE + 168) +#define __NR_setresgid (__NR_SYSCALL_BASE + 169) +#define __NR_getresgid (__NR_SYSCALL_BASE + 170) +#define __NR_prctl (__NR_SYSCALL_BASE + 171) +#define __NR_rt_sigreturn (__NR_SYSCALL_BASE + 172) +#define __NR_rt_sigaction (__NR_SYSCALL_BASE + 173) +#define __NR_rt_sigprocmask (__NR_SYSCALL_BASE + 174) +#define __NR_rt_sigpending (__NR_SYSCALL_BASE + 175) +#define __NR_rt_sigtimedwait (__NR_SYSCALL_BASE + 176) +#define __NR_rt_sigqueueinfo (__NR_SYSCALL_BASE + 177) +#define __NR_rt_sigsuspend (__NR_SYSCALL_BASE + 178) +#define __NR_pread (__NR_SYSCALL_BASE + 179) +#define __NR_pwrite (__NR_SYSCALL_BASE + 180) +#define __NR_chown (__NR_SYSCALL_BASE + 181) +#define __NR_getcwd (__NR_SYSCALL_BASE + 182) +#define __NR_capget (__NR_SYSCALL_BASE + 183) +#define __NR_capset (__NR_SYSCALL_BASE + 184) +#define __NR_sigaltstack (__NR_SYSCALL_BASE + 185) +#define __NR_sendfile (__NR_SYSCALL_BASE + 186) +#define __NR_getpmsg (__NR_SYSCALL_BASE + 187) +#define __NR_putpmsg (__NR_SYSCALL_BASE + 188) +#define __NR_vfork (__NR_SYSCALL_BASE + 189) +#define __NR_ugetrlimit (__NR_SYSCALL_BASE + 190) +#define __NR_readahead (__NR_SYSCALL_BASE + 191) +#define __NR_mmap2 (__NR_SYSCALL_BASE + 192) +#define __NR_truncate64 (__NR_SYSCALL_BASE + 193) +#define __NR_ftruncate64 (__NR_SYSCALL_BASE + 194) +#define __NR_stat64 (__NR_SYSCALL_BASE + 195) +#define __NR_lstat64 (__NR_SYSCALL_BASE + 196) +#define __NR_fstat64 (__NR_SYSCALL_BASE + 197) +#define __NR_pciconfig_read (__NR_SYSCALL_BASE + 198) +#define __NR_pciconfig_write (__NR_SYSCALL_BASE + 199) +#define __NR_pciconfig_iobase (__NR_SYSCALL_BASE + 200) +#define __NR_multiplexer (__NR_SYSCALL_BASE + 201) +#define __NR_getdents64 (__NR_SYSCALL_BASE + 202) +#define __NR_pivot_root (__NR_SYSCALL_BASE + 203) +#define __NR_fcntl64 (__NR_SYSCALL_BASE + 204) +#define __NR_madvise (__NR_SYSCALL_BASE + 205) +#define __NR_mincore (__NR_SYSCALL_BASE + 206) +#define __NR_gettid (__NR_SYSCALL_BASE + 207) +#define __NR_tkill (__NR_SYSCALL_BASE + 208) +#define __NR_setxattr (__NR_SYSCALL_BASE + 209) +#define __NR_lsetxattr (__NR_SYSCALL_BASE + 210) +#define __NR_fsetxattr (__NR_SYSCALL_BASE + 211) +#define __NR_getxattr (__NR_SYSCALL_BASE + 212) +#define __NR_lgetxattr (__NR_SYSCALL_BASE + 213) +#define __NR_fgetxattr (__NR_SYSCALL_BASE + 214) +#define __NR_listxattr (__NR_SYSCALL_BASE + 215) +#define __NR_llistxattr (__NR_SYSCALL_BASE + 216) +#define __NR_flistxattr (__NR_SYSCALL_BASE + 217) +#define __NR_removexattr (__NR_SYSCALL_BASE + 218) +#define __NR_lremovexattr (__NR_SYSCALL_BASE + 219) +#define __NR_fremovexattr (__NR_SYSCALL_BASE + 220) +#define __NR_futex (__NR_SYSCALL_BASE + 221) +#define __NR_sched_setaffinity (__NR_SYSCALL_BASE + 222) +#define __NR_sched_getaffinity (__NR_SYSCALL_BASE + 223) +#define __NR_tuxcall (__NR_SYSCALL_BASE + 225) +#define __NR_sendfile64 (__NR_SYSCALL_BASE + 226) +#define __NR_io_setup (__NR_SYSCALL_BASE + 227) +#define __NR_io_destroy (__NR_SYSCALL_BASE + 228) +#define __NR_io_getevents (__NR_SYSCALL_BASE + 229) +#define __NR_io_submit (__NR_SYSCALL_BASE + 230) +#define __NR_io_cancel (__NR_SYSCALL_BASE + 231) +#define __NR_set_tid_address (__NR_SYSCALL_BASE + 232) +#define __NR_fadvise (__NR_SYSCALL_BASE + 233) +#define __NR_exit_group (__NR_SYSCALL_BASE + 234) +#define __NR_lookup_dcookie (__NR_SYSCALL_BASE + 235) +#define __NR_epoll_create (__NR_SYSCALL_BASE + 236) +#define __NR_epoll_ctl (__NR_SYSCALL_BASE + 237) +#define __NR_epoll_wait (__NR_SYSCALL_BASE + 238) +#define __NR_remap_file_pages (__NR_SYSCALL_BASE + 239) +#define __NR_timer_create (__NR_SYSCALL_BASE + 240) +#define __NR_timer_settime (__NR_SYSCALL_BASE + 241) +#define __NR_timer_gettime (__NR_SYSCALL_BASE + 242) +#define __NR_timer_getoverrun (__NR_SYSCALL_BASE + 243) +#define __NR_timer_delete (__NR_SYSCALL_BASE + 244) +#define __NR_clock_settime (__NR_SYSCALL_BASE + 245) +#define __NR_clock_gettime (__NR_SYSCALL_BASE + 246) +#define __NR_clock_getres (__NR_SYSCALL_BASE + 247) +#define __NR_clock_nanosleep (__NR_SYSCALL_BASE + 248) +#define __NR_swapcontext (__NR_SYSCALL_BASE + 249) +#define __NR_tgkill (__NR_SYSCALL_BASE + 250) +#define __NR_utimes (__NR_SYSCALL_BASE + 251) +#define __NR_statfs64 (__NR_SYSCALL_BASE + 252) +#define __NR_fstatfs64 (__NR_SYSCALL_BASE + 253) +#define __NR_fadvise64_64 (__NR_SYSCALL_BASE + 254) +#define __NR_rtas (__NR_SYSCALL_BASE + 255) +#define __NR_sys_debug_setcontext (__NR_SYSCALL_BASE + 256) +#define __NR_migrate_pages (__NR_SYSCALL_BASE + 258) +#define __NR_mbind (__NR_SYSCALL_BASE + 259) +#define __NR_get_mempolicy (__NR_SYSCALL_BASE + 260) +#define __NR_set_mempolicy (__NR_SYSCALL_BASE + 261) +#define __NR_mq_open (__NR_SYSCALL_BASE + 262) +#define __NR_mq_unlink (__NR_SYSCALL_BASE + 263) +#define __NR_mq_timedsend (__NR_SYSCALL_BASE + 264) +#define __NR_mq_timedreceive (__NR_SYSCALL_BASE + 265) +#define __NR_mq_notify (__NR_SYSCALL_BASE + 266) +#define __NR_mq_getsetattr (__NR_SYSCALL_BASE + 267) +#define __NR_kexec_load (__NR_SYSCALL_BASE + 268) +#define __NR_add_key (__NR_SYSCALL_BASE + 269) +#define __NR_request_key (__NR_SYSCALL_BASE + 270) +#define __NR_keyctl (__NR_SYSCALL_BASE + 271) +#define __NR_waitid (__NR_SYSCALL_BASE + 272) +#define __NR_ioprio_set (__NR_SYSCALL_BASE + 273) +#define __NR_ioprio_get (__NR_SYSCALL_BASE + 274) +#define __NR_inotify_init (__NR_SYSCALL_BASE + 275) +#define __NR_inotify_add_watch (__NR_SYSCALL_BASE + 276) +#define __NR_inotify_rm_watch (__NR_SYSCALL_BASE + 277) +#define __NR_spu_run (__NR_SYSCALL_BASE + 278) +#define __NR_spu_create (__NR_SYSCALL_BASE + 279) +#define __NR_pselect6 (__NR_SYSCALL_BASE + 280) +#define __NR_ppoll (__NR_SYSCALL_BASE + 281) +#define __NR_unshare (__NR_SYSCALL_BASE + 282) +#define __NR_splice (__NR_SYSCALL_BASE + 283) +#define __NR_tee (__NR_SYSCALL_BASE + 284) +#define __NR_vmsplice (__NR_SYSCALL_BASE + 285) +#define __NR_openat (__NR_SYSCALL_BASE + 286) +#define __NR_mkdirat (__NR_SYSCALL_BASE + 287) +#define __NR_mknodat (__NR_SYSCALL_BASE + 288) +#define __NR_fchownat (__NR_SYSCALL_BASE + 289) +#define __NR_futimesat (__NR_SYSCALL_BASE + 290) +#define __NR_fstatat (__NR_SYSCALL_BASE + 291) +#define __NR_unlinkat (__NR_SYSCALL_BASE + 292) +#define __NR_renameat (__NR_SYSCALL_BASE + 293) +#define __NR_linkat (__NR_SYSCALL_BASE + 294) +#define __NR_symlinkat (__NR_SYSCALL_BASE + 295) +#define __NR_readlinkat (__NR_SYSCALL_BASE + 296) +#define __NR_fchmodat (__NR_SYSCALL_BASE + 297) +#define __NR_faccessat (__NR_SYSCALL_BASE + 298) +#define __NR_get_robust_list (__NR_SYSCALL_BASE + 299) +#define __NR_set_robust_list (__NR_SYSCALL_BASE + 300) +#define __NR_move_pages (__NR_SYSCALL_BASE + 301) +#define __NR_getcpu (__NR_SYSCALL_BASE + 302) +#define __NR_epoll_pwait (__NR_SYSCALL_BASE + 303) +#define __NR_utimensat (__NR_SYSCALL_BASE + 304) +#define __NR_signalfd (__NR_SYSCALL_BASE + 305) +#define __NR_timerfd_create (__NR_SYSCALL_BASE + 306) +#define __NR_eventfd (__NR_SYSCALL_BASE + 307) +#define __NR_sync_file_range2 (__NR_SYSCALL_BASE + 308) +#define __NR_fallocate (__NR_SYSCALL_BASE + 309) +#define __NR_subpage_prot (__NR_SYSCALL_BASE + 310) +#define __NR_timerfd_settime (__NR_SYSCALL_BASE + 311) +#define __NR_timerfd_gettime (__NR_SYSCALL_BASE + 312) +#define __NR_signalfd4 (__NR_SYSCALL_BASE + 313) +#define __NR_eventfd2 (__NR_SYSCALL_BASE + 314) +#define __NR_epoll_create1 (__NR_SYSCALL_BASE + 315) +#define __NR_dup3 (__NR_SYSCALL_BASE + 316) +#define __NR_pipe2 (__NR_SYSCALL_BASE + 317) +#define __NR_inotify_init1 (__NR_SYSCALL_BASE + 318) +#define __NR_perf_event_open (__NR_SYSCALL_BASE + 319) +#define __NR_preadv (__NR_SYSCALL_BASE + 320) +#define __NR_pwritev (__NR_SYSCALL_BASE + 321) +#define __NR_rt_tgsigqueueinfo (__NR_SYSCALL_BASE + 322) + +/* Repeated with SYS_ prefix */ +#define SYS_restart_syscall (__NR_SYSCALL_BASE + 0) +#define SYS_exit (__NR_SYSCALL_BASE + 1) +#define SYS_fork (__NR_SYSCALL_BASE + 2) +#define SYS_read (__NR_SYSCALL_BASE + 3) +#define SYS_write (__NR_SYSCALL_BASE + 4) +#define SYS_open (__NR_SYSCALL_BASE + 5) +#define SYS_close (__NR_SYSCALL_BASE + 6) +#define SYS_waitpid (__NR_SYSCALL_BASE + 7) +#define SYS_creat (__NR_SYSCALL_BASE + 8) +#define SYS_link (__NR_SYSCALL_BASE + 9) +#define SYS_unlink (__NR_SYSCALL_BASE + 10) +#define SYS_execve (__NR_SYSCALL_BASE + 11) +#define SYS_chdir (__NR_SYSCALL_BASE + 12) +#define SYS_time (__NR_SYSCALL_BASE + 13) +#define SYS_mknod (__NR_SYSCALL_BASE + 14) +#define SYS_chmod (__NR_SYSCALL_BASE + 15) +#define SYS_lchown (__NR_SYSCALL_BASE + 16) +#define SYS_break (__NR_SYSCALL_BASE + 17) +#define SYS_oldstat (__NR_SYSCALL_BASE + 18) +#define SYS_lseek (__NR_SYSCALL_BASE + 19) +#define SYS_getpid (__NR_SYSCALL_BASE + 20) +#define SYS_mount (__NR_SYSCALL_BASE + 21) +#define SYS_umount (__NR_SYSCALL_BASE + 22) +#define SYS_setuid (__NR_SYSCALL_BASE + 23) +#define SYS_getuid (__NR_SYSCALL_BASE + 24) +#define SYS_stime (__NR_SYSCALL_BASE + 25) +#define SYS_ptrace (__NR_SYSCALL_BASE + 26) +#define SYS_alarm (__NR_SYSCALL_BASE + 27) +#define SYS_oldfstat (__NR_SYSCALL_BASE + 28) +#define SYS_pause (__NR_SYSCALL_BASE + 29) +#define SYS_utime (__NR_SYSCALL_BASE + 30) +#define SYS_stty (__NR_SYSCALL_BASE + 31) +#define SYS_gtty (__NR_SYSCALL_BASE + 32) +#define SYS_access (__NR_SYSCALL_BASE + 33) +#define SYS_nice (__NR_SYSCALL_BASE + 34) +#define SYS_ftime (__NR_SYSCALL_BASE + 35) +#define SYS_sync (__NR_SYSCALL_BASE + 36) +#define SYS_kill (__NR_SYSCALL_BASE + 37) +#define SYS_rename (__NR_SYSCALL_BASE + 38) +#define SYS_mkdir (__NR_SYSCALL_BASE + 39) +#define SYS_rmdir (__NR_SYSCALL_BASE + 40) +#define SYS_dup (__NR_SYSCALL_BASE + 41) +#define SYS_pipe (__NR_SYSCALL_BASE + 42) +#define SYS_times (__NR_SYSCALL_BASE + 43) +#define SYS_prof (__NR_SYSCALL_BASE + 44) +#define SYS_brk (__NR_SYSCALL_BASE + 45) +#define SYS_setgid (__NR_SYSCALL_BASE + 46) +#define SYS_getgid (__NR_SYSCALL_BASE + 47) +#define SYS_signal (__NR_SYSCALL_BASE + 48) +#define SYS_geteuid (__NR_SYSCALL_BASE + 49) +#define SYS_getegid (__NR_SYSCALL_BASE + 50) +#define SYS_acct (__NR_SYSCALL_BASE + 51) +#define SYS_umount2 (__NR_SYSCALL_BASE + 52) +#define SYS_lock (__NR_SYSCALL_BASE + 53) +#define SYS_ioctl (__NR_SYSCALL_BASE + 54) +#define SYS_fcntl (__NR_SYSCALL_BASE + 55) +#define SYS_mpx (__NR_SYSCALL_BASE + 56) +#define SYS_setpgid (__NR_SYSCALL_BASE + 57) +#define SYS_ulimit (__NR_SYSCALL_BASE + 58) +#define SYS_oldolduname (__NR_SYSCALL_BASE + 59) +#define SYS_umask (__NR_SYSCALL_BASE + 60) +#define SYS_chroot (__NR_SYSCALL_BASE + 61) +#define SYS_ustat (__NR_SYSCALL_BASE + 62) +#define SYS_dup2 (__NR_SYSCALL_BASE + 63) +#define SYS_getppid (__NR_SYSCALL_BASE + 64) +#define SYS_getpgrp (__NR_SYSCALL_BASE + 65) +#define SYS_setsid (__NR_SYSCALL_BASE + 66) +#define SYS_sigaction (__NR_SYSCALL_BASE + 67) +#define SYS_sgetmask (__NR_SYSCALL_BASE + 68) +#define SYS_ssetmask (__NR_SYSCALL_BASE + 69) +#define SYS_setreuid (__NR_SYSCALL_BASE + 70) +#define SYS_setregid (__NR_SYSCALL_BASE + 71) +#define SYS_sigsuspend (__NR_SYSCALL_BASE + 72) +#define SYS_sigpending (__NR_SYSCALL_BASE + 73) +#define SYS_sethostname (__NR_SYSCALL_BASE + 74) +#define SYS_setrlimit (__NR_SYSCALL_BASE + 75) +#define SYS_getrlimit (__NR_SYSCALL_BASE + 76) +#define SYS_getrusage (__NR_SYSCALL_BASE + 77) +#define SYS_gettimeofday (__NR_SYSCALL_BASE + 78) +#define SYS_settimeofday (__NR_SYSCALL_BASE + 79) +#define SYS_getgroups (__NR_SYSCALL_BASE + 80) +#define SYS_setgroups (__NR_SYSCALL_BASE + 81) +#define SYS_select (__NR_SYSCALL_BASE + 82) +#define SYS_symlink (__NR_SYSCALL_BASE + 83) +#define SYS_oldlstat (__NR_SYSCALL_BASE + 84) +#define SYS_readlink (__NR_SYSCALL_BASE + 85) +#define SYS_uselib (__NR_SYSCALL_BASE + 86) +#define SYS_swapon (__NR_SYSCALL_BASE + 87) +#define SYS_reboot (__NR_SYSCALL_BASE + 88) +#define SYS_readdir (__NR_SYSCALL_BASE + 89) +#define SYS_mmap (__NR_SYSCALL_BASE + 90) +#define SYS_munmap (__NR_SYSCALL_BASE + 91) +#define SYS_truncate (__NR_SYSCALL_BASE + 92) +#define SYS_ftruncate (__NR_SYSCALL_BASE + 93) +#define SYS_fchmod (__NR_SYSCALL_BASE + 94) +#define SYS_fchown (__NR_SYSCALL_BASE + 95) +#define SYS_getpriority (__NR_SYSCALL_BASE + 96) +#define SYS_setpriority (__NR_SYSCALL_BASE + 97) +#define SYS_profil (__NR_SYSCALL_BASE + 98) +#define SYS_statfs (__NR_SYSCALL_BASE + 99) +#define SYS_fstatfs (__NR_SYSCALL_BASE + 100) +#define SYS_ioperm (__NR_SYSCALL_BASE + 101) +#define SYS_socketcall (__NR_SYSCALL_BASE + 102) +#define SYS_syslog (__NR_SYSCALL_BASE + 103) +#define SYS_setitimer (__NR_SYSCALL_BASE + 104) +#define SYS_getitimer (__NR_SYSCALL_BASE + 105) +#define SYS_stat (__NR_SYSCALL_BASE + 106) +#define SYS_lstat (__NR_SYSCALL_BASE + 107) +#define SYS_fstat (__NR_SYSCALL_BASE + 108) +#define SYS_olduname (__NR_SYSCALL_BASE + 109) +#define SYS_iopl (__NR_SYSCALL_BASE + 110) +#define SYS_vhangup (__NR_SYSCALL_BASE + 111) +#define SYS_idle (__NR_SYSCALL_BASE + 112) +#define SYS_vm86 (__NR_SYSCALL_BASE + 113) +#define SYS_wait4 (__NR_SYSCALL_BASE + 114) +#define SYS_swapoff (__NR_SYSCALL_BASE + 115) +#define SYS_sysinfo (__NR_SYSCALL_BASE + 116) +#define SYS_ipc (__NR_SYSCALL_BASE + 117) +#define SYS_fsync (__NR_SYSCALL_BASE + 118) +#define SYS_sigreturn (__NR_SYSCALL_BASE + 119) +#define SYS_clone (__NR_SYSCALL_BASE + 120) +#define SYS_setdomainname (__NR_SYSCALL_BASE + 121) +#define SYS_uname (__NR_SYSCALL_BASE + 122) +#define SYS_modify_ldt (__NR_SYSCALL_BASE + 123) +#define SYS_adjtimex (__NR_SYSCALL_BASE + 124) +#define SYS_mprotect (__NR_SYSCALL_BASE + 125) +#define SYS_sigprocmask (__NR_SYSCALL_BASE + 126) +#define SYS_create_module (__NR_SYSCALL_BASE + 127) +#define SYS_init_module (__NR_SYSCALL_BASE + 128) +#define SYS_delete_module (__NR_SYSCALL_BASE + 129) +#define SYS_get_kernel_syms (__NR_SYSCALL_BASE + 130) +#define SYS_quotactl (__NR_SYSCALL_BASE + 131) +#define SYS_getpgid (__NR_SYSCALL_BASE + 132) +#define SYS_fchdir (__NR_SYSCALL_BASE + 133) +#define SYS_bdflush (__NR_SYSCALL_BASE + 134) +#define SYS_sysfs (__NR_SYSCALL_BASE + 135) +#define SYS_personality (__NR_SYSCALL_BASE + 136) +#define SYS_afs_syscall (__NR_SYSCALL_BASE + 137) +#define SYS_setfsuid (__NR_SYSCALL_BASE + 138) +#define SYS_setfsgid (__NR_SYSCALL_BASE + 139) +#define SYS__llseek (__NR_SYSCALL_BASE + 140) +#define SYS_getdents (__NR_SYSCALL_BASE + 141) +#define SYS__newselect (__NR_SYSCALL_BASE + 142) +#define SYS_flock (__NR_SYSCALL_BASE + 143) +#define SYS_msync (__NR_SYSCALL_BASE + 144) +#define SYS_readv (__NR_SYSCALL_BASE + 145) +#define SYS_writev (__NR_SYSCALL_BASE + 146) +#define SYS_getsid (__NR_SYSCALL_BASE + 147) +#define SYS_fdatasync (__NR_SYSCALL_BASE + 148) +#define SYS__sysctl (__NR_SYSCALL_BASE + 149) +#define SYS_mlock (__NR_SYSCALL_BASE + 150) +#define SYS_munlock (__NR_SYSCALL_BASE + 151) +#define SYS_mlockall (__NR_SYSCALL_BASE + 152) +#define SYS_munlockall (__NR_SYSCALL_BASE + 153) +#define SYS_sched_setparam (__NR_SYSCALL_BASE + 154) +#define SYS_sched_getparam (__NR_SYSCALL_BASE + 155) +#define SYS_sched_setscheduler (__NR_SYSCALL_BASE + 156) +#define SYS_sched_getscheduler (__NR_SYSCALL_BASE + 157) +#define SYS_sched_yield (__NR_SYSCALL_BASE + 158) +#define SYS_sched_get_priority_max (__NR_SYSCALL_BASE + 159) +#define SYS_sched_get_priority_min (__NR_SYSCALL_BASE + 160) +#define SYS_sched_rr_get_interval (__NR_SYSCALL_BASE + 161) +#define SYS_nanosleep (__NR_SYSCALL_BASE + 162) +#define SYS_mremap (__NR_SYSCALL_BASE + 163) +#define SYS_setresuid (__NR_SYSCALL_BASE + 164) +#define SYS_getresuid (__NR_SYSCALL_BASE + 165) +#define SYS_query_module (__NR_SYSCALL_BASE + 166) +#define SYS_poll (__NR_SYSCALL_BASE + 167) +#define SYS_nfsservctl (__NR_SYSCALL_BASE + 168) +#define SYS_setresgid (__NR_SYSCALL_BASE + 169) +#define SYS_getresgid (__NR_SYSCALL_BASE + 170) +#define SYS_prctl (__NR_SYSCALL_BASE + 171) +#define SYS_rt_sigreturn (__NR_SYSCALL_BASE + 172) +#define SYS_rt_sigaction (__NR_SYSCALL_BASE + 173) +#define SYS_rt_sigprocmask (__NR_SYSCALL_BASE + 174) +#define SYS_rt_sigpending (__NR_SYSCALL_BASE + 175) +#define SYS_rt_sigtimedwait (__NR_SYSCALL_BASE + 176) +#define SYS_rt_sigqueueinfo (__NR_SYSCALL_BASE + 177) +#define SYS_rt_sigsuspend (__NR_SYSCALL_BASE + 178) +#define SYS_pread (__NR_SYSCALL_BASE + 179) +#define SYS_pwrite (__NR_SYSCALL_BASE + 180) +#define SYS_chown (__NR_SYSCALL_BASE + 181) +#define SYS_getcwd (__NR_SYSCALL_BASE + 182) +#define SYS_capget (__NR_SYSCALL_BASE + 183) +#define SYS_capset (__NR_SYSCALL_BASE + 184) +#define SYS_sigaltstack (__NR_SYSCALL_BASE + 185) +#define SYS_sendfile (__NR_SYSCALL_BASE + 186) +#define SYS_getpmsg (__NR_SYSCALL_BASE + 187) +#define SYS_putpmsg (__NR_SYSCALL_BASE + 188) +#define SYS_vfork (__NR_SYSCALL_BASE + 189) +#define SYS_ugetrlimit (__NR_SYSCALL_BASE + 190) +#define SYS_readahead (__NR_SYSCALL_BASE + 191) +#define SYS_mmap2 (__NR_SYSCALL_BASE + 192) +#define SYS_truncate64 (__NR_SYSCALL_BASE + 193) +#define SYS_ftruncate64 (__NR_SYSCALL_BASE + 194) +#define SYS_stat64 (__NR_SYSCALL_BASE + 195) +#define SYS_lstat64 (__NR_SYSCALL_BASE + 196) +#define SYS_fstat64 (__NR_SYSCALL_BASE + 197) +#define SYS_pciconfig_read (__NR_SYSCALL_BASE + 198) +#define SYS_pciconfig_write (__NR_SYSCALL_BASE + 199) +#define SYS_pciconfig_iobase (__NR_SYSCALL_BASE + 200) +#define SYS_multiplexer (__NR_SYSCALL_BASE + 201) +#define SYS_getdents64 (__NR_SYSCALL_BASE + 202) +#define SYS_pivot_root (__NR_SYSCALL_BASE + 203) +#define SYS_fcntl64 (__NR_SYSCALL_BASE + 204) +#define SYS_madvise (__NR_SYSCALL_BASE + 205) +#define SYS_mincore (__NR_SYSCALL_BASE + 206) +#define SYS_gettid (__NR_SYSCALL_BASE + 207) +#define SYS_tkill (__NR_SYSCALL_BASE + 208) +#define SYS_setxattr (__NR_SYSCALL_BASE + 209) +#define SYS_lsetxattr (__NR_SYSCALL_BASE + 210) +#define SYS_fsetxattr (__NR_SYSCALL_BASE + 211) +#define SYS_getxattr (__NR_SYSCALL_BASE + 212) +#define SYS_lgetxattr (__NR_SYSCALL_BASE + 213) +#define SYS_fgetxattr (__NR_SYSCALL_BASE + 214) +#define SYS_listxattr (__NR_SYSCALL_BASE + 215) +#define SYS_llistxattr (__NR_SYSCALL_BASE + 216) +#define SYS_flistxattr (__NR_SYSCALL_BASE + 217) +#define SYS_removexattr (__NR_SYSCALL_BASE + 218) +#define SYS_lremovexattr (__NR_SYSCALL_BASE + 219) +#define SYS_fremovexattr (__NR_SYSCALL_BASE + 220) +#define SYS_futex (__NR_SYSCALL_BASE + 221) +#define SYS_sched_setaffinity (__NR_SYSCALL_BASE + 222) +#define SYS_sched_getaffinity (__NR_SYSCALL_BASE + 223) +#define SYS_tuxcall (__NR_SYSCALL_BASE + 225) +#define SYS_sendfile64 (__NR_SYSCALL_BASE + 226) +#define SYS_io_setup (__NR_SYSCALL_BASE + 227) +#define SYS_io_destroy (__NR_SYSCALL_BASE + 228) +#define SYS_io_getevents (__NR_SYSCALL_BASE + 229) +#define SYS_io_submit (__NR_SYSCALL_BASE + 230) +#define SYS_io_cancel (__NR_SYSCALL_BASE + 231) +#define SYS_set_tid_address (__NR_SYSCALL_BASE + 232) +#define SYS_fadvise (__NR_SYSCALL_BASE + 233) +#define SYS_exit_group (__NR_SYSCALL_BASE + 234) +#define SYS_lookup_dcookie (__NR_SYSCALL_BASE + 235) +#define SYS_epoll_create (__NR_SYSCALL_BASE + 236) +#define SYS_epoll_ctl (__NR_SYSCALL_BASE + 237) +#define SYS_epoll_wait (__NR_SYSCALL_BASE + 238) +#define SYS_remap_file_pages (__NR_SYSCALL_BASE + 239) +#define SYS_timer_create (__NR_SYSCALL_BASE + 240) +#define SYS_timer_settime (__NR_SYSCALL_BASE + 241) +#define SYS_timer_gettime (__NR_SYSCALL_BASE + 242) +#define SYS_timer_getoverrun (__NR_SYSCALL_BASE + 243) +#define SYS_timer_delete (__NR_SYSCALL_BASE + 244) +#define SYS_clock_settime (__NR_SYSCALL_BASE + 245) +#define SYS_clock_gettime (__NR_SYSCALL_BASE + 246) +#define SYS_clock_getres (__NR_SYSCALL_BASE + 247) +#define SYS_clock_nanosleep (__NR_SYSCALL_BASE + 248) +#define SYS_swapcontext (__NR_SYSCALL_BASE + 249) +#define SYS_tgkill (__NR_SYSCALL_BASE + 250) +#define SYS_utimes (__NR_SYSCALL_BASE + 251) +#define SYS_statfs64 (__NR_SYSCALL_BASE + 252) +#define SYS_fstatfs64 (__NR_SYSCALL_BASE + 253) +#define SYS_fadvise64_64 (__NR_SYSCALL_BASE + 254) +#define SYS_rtas (__NR_SYSCALL_BASE + 255) +#define SYS_sys_debug_setcontext (__NR_SYSCALL_BASE + 256) +#define SYS_migrate_pages (__NR_SYSCALL_BASE + 258) +#define SYS_mbind (__NR_SYSCALL_BASE + 259) +#define SYS_get_mempolicy (__NR_SYSCALL_BASE + 260) +#define SYS_set_mempolicy (__NR_SYSCALL_BASE + 261) +#define SYS_mq_open (__NR_SYSCALL_BASE + 262) +#define SYS_mq_unlink (__NR_SYSCALL_BASE + 263) +#define SYS_mq_timedsend (__NR_SYSCALL_BASE + 264) +#define SYS_mq_timedreceive (__NR_SYSCALL_BASE + 265) +#define SYS_mq_notify (__NR_SYSCALL_BASE + 266) +#define SYS_mq_getsetattr (__NR_SYSCALL_BASE + 267) +#define SYS_kexec_load (__NR_SYSCALL_BASE + 268) +#define SYS_add_key (__NR_SYSCALL_BASE + 269) +#define SYS_request_key (__NR_SYSCALL_BASE + 270) +#define SYS_keyctl (__NR_SYSCALL_BASE + 271) +#define SYS_waitid (__NR_SYSCALL_BASE + 272) +#define SYS_ioprio_set (__NR_SYSCALL_BASE + 273) +#define SYS_ioprio_get (__NR_SYSCALL_BASE + 274) +#define SYS_inotify_init (__NR_SYSCALL_BASE + 275) +#define SYS_inotify_add_watch (__NR_SYSCALL_BASE + 276) +#define SYS_inotify_rm_watch (__NR_SYSCALL_BASE + 277) +#define SYS_spu_run (__NR_SYSCALL_BASE + 278) +#define SYS_spu_create (__NR_SYSCALL_BASE + 279) +#define SYS_pselect6 (__NR_SYSCALL_BASE + 280) +#define SYS_ppoll (__NR_SYSCALL_BASE + 281) +#define SYS_unshare (__NR_SYSCALL_BASE + 282) +#define SYS_splice (__NR_SYSCALL_BASE + 283) +#define SYS_tee (__NR_SYSCALL_BASE + 284) +#define SYS_vmsplice (__NR_SYSCALL_BASE + 285) +#define SYS_openat (__NR_SYSCALL_BASE + 286) +#define SYS_mkdirat (__NR_SYSCALL_BASE + 287) +#define SYS_mknodat (__NR_SYSCALL_BASE + 288) +#define SYS_fchownat (__NR_SYSCALL_BASE + 289) +#define SYS_futimesat (__NR_SYSCALL_BASE + 290) +#define SYS_fstatat (__NR_SYSCALL_BASE + 291) +#define SYS_unlinkat (__NR_SYSCALL_BASE + 292) +#define SYS_renameat (__NR_SYSCALL_BASE + 293) +#define SYS_linkat (__NR_SYSCALL_BASE + 294) +#define SYS_symlinkat (__NR_SYSCALL_BASE + 295) +#define SYS_readlinkat (__NR_SYSCALL_BASE + 296) +#define SYS_fchmodat (__NR_SYSCALL_BASE + 297) +#define SYS_faccessat (__NR_SYSCALL_BASE + 298) +#define SYS_get_robust_list (__NR_SYSCALL_BASE + 299) +#define SYS_set_robust_list (__NR_SYSCALL_BASE + 300) +#define SYS_move_pages (__NR_SYSCALL_BASE + 301) +#define SYS_getcpu (__NR_SYSCALL_BASE + 302) +#define SYS_epoll_pwait (__NR_SYSCALL_BASE + 303) +#define SYS_utimensat (__NR_SYSCALL_BASE + 304) +#define SYS_signalfd (__NR_SYSCALL_BASE + 305) +#define SYS_timerfd_create (__NR_SYSCALL_BASE + 306) +#define SYS_eventfd (__NR_SYSCALL_BASE + 307) +#define SYS_sync_file_range2 (__NR_SYSCALL_BASE + 308) +#define SYS_fallocate (__NR_SYSCALL_BASE + 309) +#define SYS_subpage_prot (__NR_SYSCALL_BASE + 310) +#define SYS_timerfd_settime (__NR_SYSCALL_BASE + 311) +#define SYS_timerfd_gettime (__NR_SYSCALL_BASE + 312) +#define SYS_signalfd4 (__NR_SYSCALL_BASE + 313) +#define SYS_eventfd2 (__NR_SYSCALL_BASE + 314) +#define SYS_epoll_create1 (__NR_SYSCALL_BASE + 315) +#define SYS_dup3 (__NR_SYSCALL_BASE + 316) +#define SYS_pipe2 (__NR_SYSCALL_BASE + 317) +#define SYS_inotify_init1 (__NR_SYSCALL_BASE + 318) +#define SYS_perf_event_open (__NR_SYSCALL_BASE + 319) +#define SYS_preadv (__NR_SYSCALL_BASE + 320) +#define SYS_pwritev (__NR_SYSCALL_BASE + 321) +#define SYS_rt_tgsigqueueinfo (__NR_SYSCALL_BASE + 322) diff --git a/arch/ppc/bits/termios.h b/arch/ppc/bits/termios.h new file mode 100644 index 00000000..9f6abd83 --- /dev/null +++ b/arch/ppc/bits/termios.h @@ -0,0 +1,159 @@ +struct termios +{ +	tcflag_t c_iflag; +	tcflag_t c_oflag; +	tcflag_t c_cflag; +	tcflag_t c_lflag; +	cc_t c_line; +	cc_t c_cc[NCCS]; +	speed_t __c_ispeed; +	speed_t __c_ospeed; +}; + +#define VINTR     0 +#define VQUIT     1 +#define VERASE    2 +#define VKILL     3 +#define VEOF      4 +#define VTIME     5 +#define VMIN      6 +#define VSWTC     7 +#define VSTART    8 +#define VSTOP     9 +#define VSUSP    10 +#define VEOL     11 +#define VREPRINT 12 +#define VDISCARD 13 +#define VWERASE  14 +#define VLNEXT   15 +#define VEOL2    16 + +#define IGNBRK  0000001 +#define BRKINT  0000002 +#define IGNPAR  0000004 +#define PARMRK  0000010 +#define INPCK   0000020 +#define ISTRIP  0000040 +#define INLCR   0000100 +#define IGNCR   0000200 +#define ICRNL   0000400 +#define IUCLC   0001000 +#define IXON    0002000 +#define IXANY   0004000 +#define IXOFF   0010000 +#define IMAXBEL 0020000 + +#define OPOST  0000001 +#define OLCUC  0000002 +#define ONLCR  0000004 +#define OCRNL  0000010 +#define ONOCR  0000020 +#define ONLRET 0000040 +#define OFILL  0000100 +#define OFDEL  0000200 +#define NLDLY  0000400 +#define NL0    0000000 +#define NL1    0000400 +#define CRDLY  0003000 +#define CR0    0000000 +#define CR1    0001000 +#define CR2    0002000 +#define CR3    0003000 +#define TABDLY 0014000 +#define TAB0   0000000 +#define TAB1   0004000 +#define TAB2   0010000 +#define TAB3   0014000 +#define BSDLY  0020000 +#define BS0    0000000 +#define BS1    0020000 +#define FFDLY  0100000 +#define FF0    0000000 +#define FF1    0100000 + +#define VTDLY  0040000 +#define VT0    0000000 +#define VT1    0040000 + +/* ?? */ +#define XTABS  0014000 + +#define B0       0000000 +#define B50      0000001 +#define B75      0000002 +#define B110     0000003 +#define B134     0000004 +#define B150     0000005 +#define B200     0000006 +#define B300     0000007 +#define B600     0000010 +#define B1200    0000011 +#define B1800    0000012 +#define B2400    0000013 +#define B4800    0000014 +#define B9600    0000015 +#define B19200   0000016 +#define B38400   0000017 + +#define B57600   0010001 +#define B115200  0010002 +#define B230400  0010003 +#define B460800  0010004 +#define B500000  0010005 +#define B576000  0010006 +#define B921600  0010007 +#define B1000000 0010010 +#define B1152000 0010011 +#define B1500000 0010012 +#define B2000000 0010013 +#define B2500000 0010014 +#define B3000000 0010015 +#define B3500000 0010016 +#define B4000000 0010017 + +#define CBAUD    0010017 + +#define CSIZE  0000060 +#define CS5    0000000 +#define CS6    0000020 +#define CS7    0000040 +#define CS8    0000060 +#define CSTOPB 0000100 +#define CREAD  0000200 +#define PARENB 0000400 +#define PARODD 0001000 +#define HUPCL  0002000 +#define CLOCAL 0004000 + +#define CRTSCTS  020000000000 + +#define ISIG   0000001 +#define ICANON 0000002 +#define ECHO   0000010 +#define ECHOE  0000020 +#define ECHOK  0000040 +#define ECHONL 0000100 +#define NOFLSH 0000200 +#define TOSTOP 0000400 +#define IEXTEN 0100000 + +/* Extensions? */ +#define CBAUDEX 0010000 +#define ECHOCTL 0001000 +#define ECHOPRT 0002000 +#define ECHOKE 0004000 +#define FLUSHO 0010000 +#define PENDIN 0040000 + +#define TCOOFF 0 +#define TCOON  1 +#define TCIOFF 2 +#define TCION  3 + +#define TCIFLUSH  0 +#define TCOFLUSH  1 +#define TCIOFLUSH 2 + +#define TCSANOW   0 +#define TCSADRAIN 1 +#define TCSAFLUSH 2 diff --git a/arch/ppc/bits/user.h b/arch/ppc/bits/user.h new file mode 100644 index 00000000..c533fd8d --- /dev/null +++ b/arch/ppc/bits/user.h @@ -0,0 +1,40 @@ +struct user_fpregs_struct +{ +	struct fp_reg { +		unsigned sign1:1; +		unsigned unused:15; +		unsigned sign2:1; +		unsigned exponent:14; +		unsigned j:1; +		unsigned mantissa1:31; +		unsigned mantissa0:32; +	} fpregs[8]; +	unsigned fpsr:32; +	unsigned fpcr:32; +	unsigned char ftype[8]; +	unsigned int init_flag; +}; + +struct user_regs_struct +{ +	unsigned long uregs[18]; +}; + +struct user +{ +	struct user_regs_struct		regs; +	int				u_fpvalid; +	unsigned long			u_tsize; +	unsigned long			u_dsize; +	unsigned long			u_ssize; +	unsigned long			start_code; +	unsigned long			start_stack; +	long				signal; +	int				reserved; +	struct user_regs_struct		*u_ar0; +	unsigned long int		magic; +	char				u_comm[32]; +	int				u_debugreg[8]; +	struct user_fpregs_struct	u_fp; +	struct user_fpregs_struct	*u_fp0; +}; diff --git a/arch/ppc/bits/wchar.h b/arch/ppc/bits/wchar.h new file mode 100644 index 00000000..ffb26917 --- /dev/null +++ b/arch/ppc/bits/wchar.h @@ -0,0 +1,4 @@ +#ifndef WCHAR_MIN +#define WCHAR_MIN 0U +#define WCHAR_MAX 0xffffffffU +#endif diff --git a/arch/ppc/pthread_arch.h b/arch/ppc/pthread_arch.h new file mode 100644 index 00000000..5f96f2b0 --- /dev/null +++ b/arch/ppc/pthread_arch.h @@ -0,0 +1,6 @@ +typedef pthread_t (*__pthread_self_func_t)(void) __attribute__((const)); + +#define __pthread_self ((__pthread_self_func_t)0xffff0fe0) + +#define CANCEL_REG_SP 16 +#define CANCEL_REG_IP 18 diff --git a/arch/ppc/reloc.h b/arch/ppc/reloc.h new file mode 100644 index 00000000..10e89aa3 --- /dev/null +++ b/arch/ppc/reloc.h @@ -0,0 +1,26 @@ +#include <string.h> +#include <elf.h> + +#define ETC_LDSO_PATH "/etc/ld-musl-arm.path" + +#define IS_COPY(x) ((x)==R_ARM_COPY) +#define IS_PLT(x) ((x)==R_ARM_JUMP_SLOT) + +static inline void do_single_reloc(size_t *reloc_addr, int type, size_t sym_val, size_t sym_size, unsigned char *base_addr, size_t addend) +{ +	switch(type) { +	case R_ARM_ABS32: +		*reloc_addr += sym_val; +		break; +	case R_ARM_GLOB_DAT: +	case R_ARM_JUMP_SLOT: +		*reloc_addr = sym_val; +		break; +	case R_ARM_RELATIVE: +		*reloc_addr += (size_t)base_addr; +		break; +	case R_ARM_COPY: +		memcpy(reloc_addr, (void *)sym_val, sym_size); +		break; +	} +} diff --git a/crt/ppc/crt1.S b/crt/ppc/crt1.S new file mode 100644 index 00000000..abf64077 --- /dev/null +++ b/crt/ppc/crt1.S @@ -0,0 +1,27 @@ +#include <bits/asm.h> +        .weak  _init +        .weak  _fini +        .global _start +        .type   _start, %function +_start: +        mr      r9, r1                  // Save the original stack pointer. +        clrrwi  r1, r1, 4               // Align the stack to 16 bytes. +        lis     r13, _SDA_BASE_@ha      // r13 points to the small data area. +        addi    r13, r13, _SDA_BASE_@l  // +        li      r0, 0                   // Zero the frame pointer. +        stwu    r1, -16(r1)             // The initial stack frame. +        mtlr    r0                      // Clear the link register. +        stw     r0, 0(r1)               // And save it. +        lis     r3, main@ha             // Get main() ... +        addi    r3, r3, main@l +        lwz     r4, 0(r9)               // and argc... +        addi    r5, r9, 4               // and argv ... +        lis     r6, _init@ha            // and _init() ... +        addi    r6, r6, _init@l +        lis     r7, _fini@ha            // and _fini() ... +        addi    r7, r7, _fini@l +        li      r8, 0                   // ldso_fini == NULL +        bl       __libc_start_main      // Let's go! +        b       .                       // Never gets here. +        .end    _start +        .size   _start, .-_start diff --git a/src/internal/ppc/syscall.S b/src/internal/ppc/syscall.S new file mode 100644 index 00000000..e56abc6f --- /dev/null +++ b/src/internal/ppc/syscall.S @@ -0,0 +1,24 @@ +#include <bits/asm.h> +        .global __syscall +        .type   __syscall,@function +__syscall: +        mflr    r0 +        stw     r0, -4(r1)              // Save the return address. +        mr      r0, r3                  // Save the system call number +        mr      r3, r4                  // Shift the arguments: arg1 +        mr      r4, r5                  // arg2 +        mr      r5, r6                  // arg3 +        mr      r6, r7                  // arg4 +        mr      r7, r8                  // arg5 +        mr      r8, r9                  // arg6 +        sc +        mfcr    r0                      // Check for an error +        rlwinm  r4, r0, r0, 3, 3        // by checking for bit 28. +        cmplwi  r0, r4, 0               // It is an error if non-zero. +        beq     r0, 1f                  // Jump if not an error. +        neg     r3, r3                  // Negate the error number. +1:      lwz     r0, -4(r1)              // Restore the return address. +        mtlr    r0 +	blr +        .end    __syscall +        .size   __syscall, .-__syscall diff --git a/src/ldso/ppc/dlsym.S b/src/ldso/ppc/dlsym.S new file mode 100644 index 00000000..e36de10b --- /dev/null +++ b/src/ldso/ppc/dlsym.S @@ -0,0 +1,9 @@ +#include <bits/asm.h> +        .text +        .global dlsym +        .type   dlsym,@function +dlsym: +        mflr    r5                      // The return address is arg3. +        b       __dlsym +        .end    dlsym +        .size   dlsym, .-dlsym diff --git a/src/ldso/ppc/start.S b/src/ldso/ppc/start.S new file mode 100644 index 00000000..f3419824 --- /dev/null +++ b/src/ldso/ppc/start.S @@ -0,0 +1,22 @@ +#include <bits/asm.h> +        .global _start +        .type   _start,@function +_start: +        mr      r9, r1                  // Save the original stack pointer. +        clrrwi  r1, r1, 4               // Align the stack to 16 bytes. +        lis     r13, _SDA_BASE_@ha      // r13 points to the small data area. +        addi    r13, r13, _SDA_BASE_@l  // +        li      r0, 0                   // Zero the frame pointer. +        lwz     r3, 0(r9)               // and argc... +        addi    r4, r9, 4               // and argv ... +        mtlr    r0                      // Clear the link register. +        // Go to the musl dynamic linker entry point. +        bl      __dynlink +        cmpi    r4, 0, r3, 1            // Check for a 1. +        bne     r4, .                   // Stay here +        mtlr    r3                      // Set the link address... +        li      r3, 0 +        blr                             // and go. +        .end    _start +        .size   _start, .-_start + diff --git a/src/setjmp/ppc/longjmp.S b/src/setjmp/ppc/longjmp.S new file mode 100644 index 00000000..df13c7b1 --- /dev/null +++ b/src/setjmp/ppc/longjmp.S @@ -0,0 +1,17 @@ +#include <bits/asm.h> +        .global _longjmp +        .global longjmp +        .type   _longjmp,@function +        .type   longjmp,@function +_longjmp: +longjmp: +        cmpi    7, 0, r3, 0 +        bne     7, 1f +        addi    r3, r3, 1 +1:      lmw     r8, 4(r3)               // load r8-r31 +        mr      r6, r4 +        mtlr    r11 +        mtcr    r12 +        mr      r2, r9 +        mr      r1, r10 +        blr  diff --git a/src/setjmp/ppc/setjmp.S b/src/setjmp/ppc/setjmp.S new file mode 100644 index 00000000..7d0b9ac5 --- /dev/null +++ b/src/setjmp/ppc/setjmp.S @@ -0,0 +1,18 @@ +#include <bits/asm.h> +        .global __setjmp +        .global _setjmp +        .global setjmp +        .type   __setjmp,@function +        .type   _setjmp,@function +        .type   setjmp,@function +__setjmp: +_setjmp: +setjmp: +        mflr    r11 +        mfcr    r12 +        mr      r10, r1 +        mr      r9, r2 +        stmw    r8, 0(r3)               // save r8-r31 +        li      r3,0 +        blr + diff --git a/src/signal/ppc/restore.S b/src/signal/ppc/restore.S new file mode 100644 index 00000000..50887e91 --- /dev/null +++ b/src/signal/ppc/restore.S @@ -0,0 +1,13 @@ +#include <bits/asm.h> +#include <bits/syscall.h> +        .global __restore +        .type __restore,@function +__restore: +        li      r0, __NR_sigreturn +        sc + +        .global __restore_rt +        .type __restore_rt,@function +__restore_rt: +        li      r0, __NR_rt_sigreturn +        sc diff --git a/src/signal/ppc/sigsetjmp.S b/src/signal/ppc/sigsetjmp.S new file mode 100644 index 00000000..527ef8e4 --- /dev/null +++ b/src/signal/ppc/sigsetjmp.S @@ -0,0 +1,12 @@ +#include <bits/asm.h> +        .global sigsetjmp +        .type sigsetjmp,@function +sigsetjmp: +        lwz     r4, 64*4-2*4(r3)        // Second last long. +        cmpi    r4, 0, r4, 0 +        bne     r4, 1f +        addi    r5, r3, 64*4-1*4        // Address of last long. +        li      r4, 0 +        li      r3, 2 +        bl      sigprocmask +1:      b       setjmp diff --git a/src/thread/ppc/__unmapself.S b/src/thread/ppc/__unmapself.S new file mode 100644 index 00000000..e14663e7 --- /dev/null +++ b/src/thread/ppc/__unmapself.S @@ -0,0 +1,11 @@ +#include <bits/asm.h> +#include <bits/syscall.h> +        .text +        .global __unmapself +        .type   __unmapself,%function +__unmapself: +        li      r0, __NR_munmap +        sc +        li      r0, __NR_exit +        sc +        blr  | 
