path: root/arch/mips/bits/
diff options
authorRich Felker <>2012-07-11 04:22:13 -0400
committerRich Felker <>2012-07-11 04:22:13 -0400
commit6315004f6102dca44c4ba50654a36967b8b9c2a6 (patch)
tree7b48d4ac93ecb9993ffc2d01c8762a4e954d4000 /arch/mips/bits/
parentcd8d72451662f0157d06fcf666669db543dcea3b (diff)
initial version of mips (o32) port, based on work by Richard Pennington (rdp)
basically, this version of the code was obtained by starting with rdp's work from his ellcc source tree, adapting it to musl's build system and coding style, auditing the bits headers for discrepencies with kernel definitions or glibc/LSB ABI or large file issues, fixing up incompatibility with the old binutils from aboriginal linux, and adding some new special cases to deal with the oddities of sigaction and pipe syscall interfaces on mips. at present, minimal test programs work, but some interfaces are broken or missing. threaded programs probably will not link.
Diffstat (limited to 'arch/mips/bits/')
1 files changed, 122 insertions, 0 deletions
diff --git a/arch/mips/bits/ b/arch/mips/bits/
new file mode 100755
index 00000000..a5357708
--- /dev/null
+++ b/arch/mips/bits/
@@ -0,0 +1,122 @@
+sed -e << EOF \
+'/^TYPEDEF/s/TYPEDEF \(.*\) \([^ ]*\);$/#if defined(__NEED_\2) \&\& !defined(__DEFINED_\2)\
+typedef \1 \2;\
+#define __DEFINED_\2\
+/^STRUCT/s/STRUCT * \([^ ]*\) \(.*\);$/#if defined(__NEED_struct_\1) \&\& !defined(__DEFINED_struct_\1)\
+struct \1 \2;\
+#define __DEFINED_struct_\1\
+/^UNION/s/UNION * \([^ ]*\) \(.*\);$/#if defined(__NEED_union_\1) \&\& !defined(__DEFINED_union_\1)\
+union \1 \2;\
+#define __DEFINED_union_\1\
+TYPEDEF unsigned size_t;
+TYPEDEF int ssize_t;
+TYPEDEF long ptrdiff_t;
+TYPEDEF __builtin_va_list va_list;
+#ifndef __cplusplus
+TYPEDEF int wchar_t;
+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 long long dev_t;
+TYPEDEF long blksize_t;
+TYPEDEF 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; };