diff options
Diffstat (limited to 'sysdeps/unix/sysv')
-rw-r--r-- | sysdeps/unix/sysv/linux/netatalk/at.h (renamed from sysdeps/unix/sysv/linux/netatalk/atalk.h) | 0 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/netinet/ip_icmp.h | 105 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/Dist | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/clone.S | 48 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/kernel_stat.h | 45 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/statbuf.h | 79 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h | 43 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/powerpc/sysdep.h | 3 |
8 files changed, 214 insertions, 112 deletions
diff --git a/sysdeps/unix/sysv/linux/netatalk/atalk.h b/sysdeps/unix/sysv/linux/netatalk/at.h index be3a72d48f..be3a72d48f 100644 --- a/sysdeps/unix/sysv/linux/netatalk/atalk.h +++ b/sysdeps/unix/sysv/linux/netatalk/at.h diff --git a/sysdeps/unix/sysv/linux/netinet/ip_icmp.h b/sysdeps/unix/sysv/linux/netinet/ip_icmp.h index cb50193b37..be7959ee7f 100644 --- a/sysdeps/unix/sysv/linux/netinet/ip_icmp.h +++ b/sysdeps/unix/sysv/linux/netinet/ip_icmp.h @@ -24,6 +24,74 @@ __BEGIN_DECLS +struct icmphdr +{ + u_int8_t type; /* message type */ + u_int8_t code; /* type sub-code */ + u_int16_t checksum; + union + { + struct + { + u_int16_t id; + u_int16_t sequence; + } echo; /* echo datagram */ + u_int32_t gateway; /* gateway address */ + struct + { + u_int16_t __unused; + u_int16_t mtu; + } frag; /* path mtu discovery */ + } un; +}; + +#define ICMP_ECHOREPLY 0 /* Echo Reply */ +#define ICMP_DEST_UNREACH 3 /* Destination Unreachable */ +#define ICMP_SOURCE_QUENCH 4 /* Source Quench */ +#define ICMP_REDIRECT 5 /* Redirect (change route) */ +#define ICMP_ECHO 8 /* Echo Request */ +#define ICMP_TIME_EXCEEDED 11 /* Time Exceeded */ +#define ICMP_PARAMETERPROB 12 /* Parameter Problem */ +#define ICMP_TIMESTAMP 13 /* Timestamp Request */ +#define ICMP_TIMESTAMPREPLY 14 /* Timestamp Reply */ +#define ICMP_INFO_REQUEST 15 /* Information Request */ +#define ICMP_INFO_REPLY 16 /* Information Reply */ +#define ICMP_ADDRESS 17 /* Address Mask Request */ +#define ICMP_ADDRESSREPLY 18 /* Address Mask Reply */ +#define NR_ICMP_TYPES 18 + + +/* Codes for UNREACH. */ +#define ICMP_NET_UNREACH 0 /* Network Unreachable */ +#define ICMP_HOST_UNREACH 1 /* Host Unreachable */ +#define ICMP_PROT_UNREACH 2 /* Protocol Unreachable */ +#define ICMP_PORT_UNREACH 3 /* Port Unreachable */ +#define ICMP_FRAG_NEEDED 4 /* Fragmentation Needed/DF set */ +#define ICMP_SR_FAILED 5 /* Source Route failed */ +#define ICMP_NET_UNKNOWN 6 +#define ICMP_HOST_UNKNOWN 7 +#define ICMP_HOST_ISOLATED 8 +#define ICMP_NET_ANO 9 +#define ICMP_HOST_ANO 10 +#define ICMP_NET_UNR_TOS 11 +#define ICMP_HOST_UNR_TOS 12 +#define ICMP_PKT_FILTERED 13 /* Packet filtered */ +#define ICMP_PREC_VIOLATION 14 /* Precedence violation */ +#define ICMP_PREC_CUTOFF 15 /* Precedence cut off */ +#define NR_ICMP_UNREACH 15 /* instead of hardcoding immediate value */ + +/* Codes for REDIRECT. */ +#define ICMP_REDIR_NET 0 /* Redirect Net */ +#define ICMP_REDIR_HOST 1 /* Redirect Host */ +#define ICMP_REDIR_NETTOS 2 /* Redirect Net for TOS */ +#define ICMP_REDIR_HOSTTOS 3 /* Redirect Host for TOS */ + +/* Codes for TIME_EXCEEDED. */ +#define ICMP_EXC_TTL 0 /* TTL count exceeded */ +#define ICMP_EXC_FRAGTIME 1 /* Fragment Reass time exceeded */ + + +#ifdef __USE_BSD /* * Copyright (c) 1982, 1986, 1993 * The Regents of the University of California. All rights reserved. @@ -65,31 +133,37 @@ __BEGIN_DECLS /* * Internal of an ICMP Router Advertisement */ -struct icmp_ra_addr { - u_int32_t ira_addr; - u_int32_t ira_preference; +struct icmp_ra_addr +{ + u_int32_t ira_addr; + u_int32_t ira_preference; }; -struct icmp { +struct icmp +{ u_int8_t icmp_type; /* type of message, see below */ u_int8_t icmp_code; /* type sub code */ u_int16_t icmp_cksum; /* ones complement checksum of struct */ - union { + union + { u_char ih_pptr; /* ICMP_PARAMPROB */ struct in_addr ih_gwaddr; /* gateway address */ - struct ih_idseq { /* echo datagram */ + struct ih_idseq /* echo datagram */ + { u_int16_t icd_id; u_int16_t icd_seq; } ih_idseq; u_int32_t ih_void; /* ICMP_UNREACH_NEEDFRAG -- Path MTU Discovery (RFC1191) */ - struct ih_pmtu { + struct ih_pmtu + { u_int16_t ipm_void; u_int16_t ipm_nextmtu; } ih_pmtu; - struct ih_rtradv { + struct ih_rtradv + { u_int8_t irt_num_addrs; u_int8_t irt_wpa; u_int16_t irt_lifetime; @@ -105,13 +179,16 @@ struct icmp { #define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs #define icmp_wpa icmp_hun.ih_rtradv.irt_wpa #define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime - union { - struct { + union + { + struct + { u_int32_t its_otime; u_int32_t its_rtime; u_int32_t its_ttime; } id_ts; - struct { + struct + { struct ip idi_ip; /* options and then 64 bits of data */ } id_ip; @@ -149,11 +226,9 @@ struct icmp { #endif /* Definition of type and code fields. */ -#define ICMP_ECHOREPLY 0 /* echo reply */ +/* defined above: ICMP_ECHOREPLY, ICMP_REDIRECT, ICMP_ECHO */ #define ICMP_UNREACH 3 /* dest unreachable, codes: */ #define ICMP_SOURCEQUENCH 4 /* packet lost, slow down */ -#define ICMP_REDIRECT 5 /* shorter route, codes: */ -#define ICMP_ECHO 8 /* echo service */ #define ICMP_ROUTERADVERT 9 /* router advertisement */ #define ICMP_ROUTERSOLICIT 10 /* router solicitation */ #define ICMP_TIMXCEED 11 /* time exceeded, code: */ @@ -205,6 +280,8 @@ struct icmp { (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \ (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY) +#endif /* __USE_BSD */ + __END_DECLS #endif /* netinet/ip_icmp.h */ diff --git a/sysdeps/unix/sysv/linux/powerpc/Dist b/sysdeps/unix/sysv/linux/powerpc/Dist index 3df65c325c..c8c265c474 100644 --- a/sysdeps/unix/sysv/linux/powerpc/Dist +++ b/sysdeps/unix/sysv/linux/powerpc/Dist @@ -2,3 +2,6 @@ clone.S ioctl-types.h termbits.h termios.h +kernel_stat.h +kernel_termios.h +sys/kernel_termios.h diff --git a/sysdeps/unix/sysv/linux/powerpc/clone.S b/sysdeps/unix/sysv/linux/powerpc/clone.S index 0afd0717f4..d255abfe0f 100644 --- a/sysdeps/unix/sysv/linux/powerpc/clone.S +++ b/sysdeps/unix/sysv/linux/powerpc/clone.S @@ -27,22 +27,30 @@ /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg); */ -ENTRY(clone) +ENTRY(__clone) /* Set up stack frame, save registers. */ - stwu 1,-20(1) + stwu 1,-32(1) stw 31,16(1) + stw 30,20(1) - /* Check for child_stack == NULL, fn == NULL. */ - mr. 31,4 + /* Check for child_stack == NULL || fn == NULL. */ + cmpwi 0,4,0 cmpwi 1,3,0 cror 2+0*4,2+0*4,2+1*4 beq- 0,badargs - /* Save 'fn' and its argument on the new stack. */ - stw 3,0(4) - stw 6,4(4) + /* Set up stack frame for child. */ + addi 4,4,-16 + clrrwi 4,4,4 + li 0,0 + stw 0,0(4) - /* 'flags' argument is (only) parameter to clone syscall. */ + /* Save new stack, fn, args across syscall. */ + mr 30,3 /* Function in r30. */ + mr 31,6 /* Arguments in r31. */ + + /* 'flags' argument is first parameter to clone syscall. (The other + argument is the stack pointer, already in r4.) */ mr 3,5 /* Do the call. */ @@ -51,22 +59,22 @@ ENTRY(clone) beq child /* Parent. Restore registers & return. */ - lwz 31,20(1) - addi 1,1,20 + lwz 31,16(1) + lwz 30,20(1) + addi 1,1,32 blr child: - /* Get address of procedure to call. */ - lwz 0,0(31) - /* Set up argument register. */ - lwz 3,4(31) - mtlr 0 - /* Switch to new stack. */ - mr 1,31 /* Call procedure. */ + mtlr 30 + mr 3,31 blrl /* Call _exit with result from procedure. */ - DO_CALL (SYS_ify (exit)) +#ifdef PIC + b _exit@plt +#else + b _exit +#endif badargs: li 3,-EINVAL @@ -76,3 +84,7 @@ error: #else b __syscall_error #endif + +PSEUDO_END (__clone) + +weak_alias (__clone, clone) diff --git a/sysdeps/unix/sysv/linux/powerpc/kernel_stat.h b/sysdeps/unix/sysv/linux/powerpc/kernel_stat.h new file mode 100644 index 0000000000..c07e182748 --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/kernel_stat.h @@ -0,0 +1,45 @@ +/* Definition of `struct stat' used in the kernel. + Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +struct kernel_stat + { + unsigned int st_dev; + unsigned int st_ino; + unsigned int st_mode; + unsigned short st_nlink; + unsigned int st_uid; + unsigned int st_gid; + unsigned int st_rdev; + unsigned long int st_size; + unsigned long int st_blksize; + unsigned long int st_blocks; + unsigned long int st_atime; + unsigned long int __unused1; +#define _HAVE___UNUSED1 + unsigned long int st_mtime; + unsigned long int __unused2; +#define _HAVE___UNUSED2 + unsigned long int st_ctime; + unsigned long int __unused3; +#define _HAVE___UNUSED3 + unsigned long int __unused4; +#define _HAVE___UNUSED4 + unsigned long int __unused5; +#define _HAVE___UNUSED5 + }; diff --git a/sysdeps/unix/sysv/linux/powerpc/statbuf.h b/sysdeps/unix/sysv/linux/powerpc/statbuf.h deleted file mode 100644 index 5be5736931..0000000000 --- a/sysdeps/unix/sysv/linux/powerpc/statbuf.h +++ /dev/null @@ -1,79 +0,0 @@ -/* Copyright (C) 1992, 1995, 1996, 1997 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef _STATBUF_H -#define _STATBUF_H 1 - -/* Versions of the `struct stat' data structure. */ -#define _STAT_VER_LINUX 1 -#define _STAT_VER_SVR4 2 -#define _STAT_VER _STAT_VER_LINUX /* The one defined below. */ - -/* Versions of the `xmknod' interface. */ -#define _MKNOD_VER_LINUX 1 -#define _MKNOD_VER_SVR4 2 -#define _MKNOD_VER _MKNOD_VER_LINUX /* The bits defined below. */ - - -struct stat - { - unsigned int st_dev; /* Device. */ - unsigned int st_ino; /* File serial number. */ - unsigned int st_mode; /* File mode. */ - unsigned short int st_nlink; /* Link count. */ - unsigned int st_uid; /* User ID of the file's owner. */ - unsigned int st_gid; /* Group ID of the file's group.*/ - unsigned int st_rdev; /* Device number, if device. */ - long int st_size; /* Size of file, in bytes. */ - unsigned long int st_blksize; /* Optimal block size for I/O. */ -#define _STATBUF_ST_BLKSIZE /* Tell code we have this member. */ - - unsigned long int st_blocks; /* Number of 512-byte blocks allocated. */ - unsigned long int st_atime; /* Time of last access. */ - unsigned long int __unused1; - unsigned long int st_mtime; /* Time of last modification. */ - unsigned long int __unused2; - unsigned long int st_ctime; /* Time of last status change. */ - unsigned long int __unused3; - unsigned long int __unused4; - unsigned long int __unused5; - }; - -/* Encoding of the file mode. */ - -#define __S_IFMT 0170000 /* These bits determine file type. */ - -/* File types. */ -#define __S_IFDIR 0040000 /* Directory. */ -#define __S_IFCHR 0020000 /* Character device. */ -#define __S_IFBLK 0060000 /* Block device. */ -#define __S_IFREG 0100000 /* Regular file. */ -#define __S_IFIFO 0010000 /* FIFO. */ -#define __S_IFLNK 0120000 /* Symbolic link. */ -#define __S_IFSOCK 0140000 /* Socket. */ - -/* Protection bits. */ - -#define __S_ISUID 04000 /* Set user ID on execution. */ -#define __S_ISGID 02000 /* Set group ID on execution. */ -#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */ -#define __S_IREAD 0400 /* Read by owner. */ -#define __S_IWRITE 0200 /* Write by owner. */ -#define __S_IEXEC 0100 /* Execute by owner. */ - -#endif /* statbuf.h */ diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h b/sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h new file mode 100644 index 0000000000..c5e9e2684a --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/sys/kernel_termios.h @@ -0,0 +1,43 @@ +/* Copyright (C) 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef _SYS_KERNEL_TERMIOS_H +#define _SYS_KERNEL_TERMIOS_H 1 +/* The following corresponds to the values from the Linux 2.0.28 kernel. */ + +/* We need the definition of tcflag_t, cc_t, and speed_t. */ +#include <termbits.h> + +#define __KERNEL_NCCS 19 + +struct __kernel_termios + { + tcflag_t c_iflag; /* input mode flags */ + tcflag_t c_oflag; /* output mode flags */ + tcflag_t c_cflag; /* control mode flags */ + tcflag_t c_lflag; /* local mode flags */ + cc_t c_cc[__KERNEL_NCCS]; /* control characters */ + cc_t c_line; /* line discipline */ + int c_ispeed; /* input speed */ + int c_ospeed; /* output speed */ + }; + +#define _HAVE_C_ISPEED 1 +#define _HAVE_C_OSPEED 1 + +#endif /* sys/kernel_termios.h */ diff --git a/sysdeps/unix/sysv/linux/powerpc/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/sysdep.h index d6d33bf7af..6cad9ae087 100644 --- a/sysdeps/unix/sysv/linux/powerpc/sysdep.h +++ b/sysdeps/unix/sysv/linux/powerpc/sysdep.h @@ -43,7 +43,7 @@ #ifdef PIC #define PSEUDO(name, syscall_name, args) \ - .text; \ + .section ".text"; \ ENTRY (name) \ DO_CALL (SYS_ify (syscall_name)); \ bnslr; \ @@ -56,6 +56,7 @@ bnslr; \ b __syscall_error #endif + #define ret /* Nothing (should be 'blr', but never reached). */ #endif /* ASSEMBLER */ |