initial commit
authornsz <nsz@port70.net>
Sat, 3 Mar 2012 18:14:58 +0000 (19:14 +0100)
committernsz <nsz@port70.net>
Sat, 3 Mar 2012 18:14:58 +0000 (19:14 +0100)
414 files changed:
Makefile [new file with mode: 0644]
arch/arm/atomic.h [new file with mode: 0644]
arch/arm/bits/alltypes.h.sh [new file with mode: 0755]
arch/arm/bits/endian.h [new file with mode: 0644]
arch/arm/bits/errno.h [new file with mode: 0644]
arch/arm/bits/fcntl.h [new file with mode: 0644]
arch/arm/bits/fenv.h [new file with mode: 0644]
arch/arm/bits/float.h [new file with mode: 0644]
arch/arm/bits/ioctl.h [new file with mode: 0644]
arch/arm/bits/ipc.h [new file with mode: 0644]
arch/arm/bits/limits.h [new file with mode: 0644]
arch/arm/bits/mman.h [new file with mode: 0644]
arch/arm/bits/msg.h [new file with mode: 0644]
arch/arm/bits/posix.h [new file with mode: 0644]
arch/arm/bits/reg.h [new file with mode: 0644]
arch/arm/bits/setjmp.h [new file with mode: 0644]
arch/arm/bits/shm.h [new file with mode: 0644]
arch/arm/bits/signal.h [new file with mode: 0644]
arch/arm/bits/socket.h [new file with mode: 0644]
arch/arm/bits/stat.h [new file with mode: 0644]
arch/arm/bits/statfs.h [new file with mode: 0644]
arch/arm/bits/stdarg.h [new file with mode: 0644]
arch/arm/bits/stdint.h [new file with mode: 0644]
arch/arm/bits/syscall.h [new file with mode: 0644]
arch/arm/bits/termios.h [new file with mode: 0644]
arch/arm/bits/user.h [new file with mode: 0644]
arch/arm/bits/wchar.h [new file with mode: 0644]
arch/arm/pthread_arch.h [new file with mode: 0644]
arch/arm/reloc.h [new file with mode: 0644]
arch/i386/atomic.h [new file with mode: 0644]
arch/i386/bits/alltypes.h [new file with mode: 0644]
arch/i386/bits/alltypes.h.sh [new file with mode: 0755]
arch/i386/bits/endian.h [new file with mode: 0644]
arch/i386/bits/errno.h [new file with mode: 0644]
arch/i386/bits/fcntl.h [new file with mode: 0644]
arch/i386/bits/fenv.h [new file with mode: 0644]
arch/i386/bits/float.h [new file with mode: 0644]
arch/i386/bits/ioctl.h [new file with mode: 0644]
arch/i386/bits/ipc.h [new file with mode: 0644]
arch/i386/bits/limits.h [new file with mode: 0644]
arch/i386/bits/mman.h [new file with mode: 0644]
arch/i386/bits/msg.h [new file with mode: 0644]
arch/i386/bits/posix.h [new file with mode: 0644]
arch/i386/bits/reg.h [new file with mode: 0644]
arch/i386/bits/setjmp.h [new file with mode: 0644]
arch/i386/bits/shm.h [new file with mode: 0644]
arch/i386/bits/signal.h [new file with mode: 0644]
arch/i386/bits/socket.h [new file with mode: 0644]
arch/i386/bits/stat.h [new file with mode: 0644]
arch/i386/bits/statfs.h [new file with mode: 0644]
arch/i386/bits/stdarg.h [new file with mode: 0644]
arch/i386/bits/stdint.h [new file with mode: 0644]
arch/i386/bits/syscall.h [new file with mode: 0644]
arch/i386/bits/termios.h [new file with mode: 0644]
arch/i386/bits/user.h [new file with mode: 0644]
arch/i386/bits/wchar.h [new file with mode: 0644]
arch/i386/pthread_arch.h [new file with mode: 0644]
arch/i386/reloc.h [new file with mode: 0644]
arch/x86_64/atomic.h [new file with mode: 0644]
arch/x86_64/bits/alltypes.h.sh [new file with mode: 0755]
arch/x86_64/bits/endian.h [new file with mode: 0644]
arch/x86_64/bits/errno.h [new file with mode: 0644]
arch/x86_64/bits/fcntl.h [new file with mode: 0644]
arch/x86_64/bits/fenv.h [new file with mode: 0644]
arch/x86_64/bits/float.h [new file with mode: 0644]
arch/x86_64/bits/ioctl.h [new file with mode: 0644]
arch/x86_64/bits/ipc.h [new file with mode: 0644]
arch/x86_64/bits/limits.h [new file with mode: 0644]
arch/x86_64/bits/mman.h [new file with mode: 0644]
arch/x86_64/bits/msg.h [new file with mode: 0644]
arch/x86_64/bits/posix.h [new file with mode: 0644]
arch/x86_64/bits/reg.h [new file with mode: 0644]
arch/x86_64/bits/setjmp.h [new file with mode: 0644]
arch/x86_64/bits/shm.h [new file with mode: 0644]
arch/x86_64/bits/signal.h [new file with mode: 0644]
arch/x86_64/bits/socket.h [new file with mode: 0644]
arch/x86_64/bits/stat.h [new file with mode: 0644]
arch/x86_64/bits/statfs.h [new file with mode: 0644]
arch/x86_64/bits/stdarg.h [new file with mode: 0644]
arch/x86_64/bits/stdint.h [new file with mode: 0644]
arch/x86_64/bits/syscall.h [new file with mode: 0644]
arch/x86_64/bits/termios.h [new file with mode: 0644]
arch/x86_64/bits/user.h [new file with mode: 0644]
arch/x86_64/bits/wchar.h [new file with mode: 0644]
arch/x86_64/pthread_arch.h [new file with mode: 0644]
arch/x86_64/reloc.h [new file with mode: 0644]
config.mak [new file with mode: 0644]
include/complex.h [new file with mode: 0644]
include/fenv.h [new file with mode: 0644]
include/float.h [new file with mode: 0644]
include/limits.h [new file with mode: 0644]
include/math.h [new file with mode: 0644]
include/stddef.h [new file with mode: 0644]
include/stdint.h [new file with mode: 0644]
include/tgmath.h [new file with mode: 0644]
src/fenv/fegetexceptflag.c [new file with mode: 0644]
src/fenv/feholdexcept.c [new file with mode: 0644]
src/fenv/fenv.c [new file with mode: 0644]
src/fenv/fesetexceptflag.c [new file with mode: 0644]
src/fenv/feupdateenv.c [new file with mode: 0644]
src/fenv/i386/fenv.s [new file with mode: 0644]
src/fenv/x86_64/fenv.s [new file with mode: 0644]
src/internal/ldhack.h [new file with mode: 0644]
src/internal/libm.h [new file with mode: 0644]
src/math/__cos.c [new file with mode: 0644]
src/math/__cosdf.c [new file with mode: 0644]
src/math/__cosl.c [new file with mode: 0644]
src/math/__exp.c [new file with mode: 0644]
src/math/__expf.c [new file with mode: 0644]
src/math/__fpclassify.c [new file with mode: 0644]
src/math/__fpclassifyf.c [new file with mode: 0644]
src/math/__fpclassifyl.c [new file with mode: 0644]
src/math/__invtrigl.c [new file with mode: 0644]
src/math/__invtrigl.h [new file with mode: 0644]
src/math/__log1p.h [new file with mode: 0644]
src/math/__log1pf.h [new file with mode: 0644]
src/math/__polevll.c [new file with mode: 0644]
src/math/__rem_pio2.c [new file with mode: 0644]
src/math/__rem_pio2_slow.c [new file with mode: 0644]
src/math/__rem_pio2f.c [new file with mode: 0644]
src/math/__rem_pio2l.h [new file with mode: 0644]
src/math/__signbit.c [new file with mode: 0644]
src/math/__signbitf.c [new file with mode: 0644]
src/math/__signbitl.c [new file with mode: 0644]
src/math/__sin.c [new file with mode: 0644]
src/math/__sindf.c [new file with mode: 0644]
src/math/__sinl.c [new file with mode: 0644]
src/math/__tan.c [new file with mode: 0644]
src/math/__tandf.c [new file with mode: 0644]
src/math/__tanl.c [new file with mode: 0644]
src/math/acos.c [new file with mode: 0644]
src/math/acosf.c [new file with mode: 0644]
src/math/acosh.c [new file with mode: 0644]
src/math/acoshf.c [new file with mode: 0644]
src/math/acoshl.c [new file with mode: 0644]
src/math/acosl.c [new file with mode: 0644]
src/math/asin.c [new file with mode: 0644]
src/math/asinf.c [new file with mode: 0644]
src/math/asinh.c [new file with mode: 0644]
src/math/asinhf.c [new file with mode: 0644]
src/math/asinhl.c [new file with mode: 0644]
src/math/asinl.c [new file with mode: 0644]
src/math/atan.c [new file with mode: 0644]
src/math/atan2.c [new file with mode: 0644]
src/math/atan2f.c [new file with mode: 0644]
src/math/atan2l.c [new file with mode: 0644]
src/math/atanf.c [new file with mode: 0644]
src/math/atanh.c [new file with mode: 0644]
src/math/atanhf.c [new file with mode: 0644]
src/math/atanhl.c [new file with mode: 0644]
src/math/atanl.c [new file with mode: 0644]
src/math/cbrt.c [new file with mode: 0644]
src/math/cbrtf.c [new file with mode: 0644]
src/math/cbrtl.c [new file with mode: 0644]
src/math/ceil.c [new file with mode: 0644]
src/math/ceilf.c [new file with mode: 0644]
src/math/ceill.c [new file with mode: 0644]
src/math/copysign.c [new file with mode: 0644]
src/math/copysignf.c [new file with mode: 0644]
src/math/copysignl.c [new file with mode: 0644]
src/math/cos.c [new file with mode: 0644]
src/math/cosf.c [new file with mode: 0644]
src/math/cosh.c [new file with mode: 0644]
src/math/coshf.c [new file with mode: 0644]
src/math/coshl.c [new file with mode: 0644]
src/math/cosl.c [new file with mode: 0644]
src/math/erf.c [new file with mode: 0644]
src/math/erff.c [new file with mode: 0644]
src/math/erfl.c [new file with mode: 0644]
src/math/exp.c [new file with mode: 0644]
src/math/exp2.c [new file with mode: 0644]
src/math/exp2f.c [new file with mode: 0644]
src/math/exp2l.c [new file with mode: 0644]
src/math/expf.c [new file with mode: 0644]
src/math/expl.c [new file with mode: 0644]
src/math/expm1.c [new file with mode: 0644]
src/math/expm1f.c [new file with mode: 0644]
src/math/expm1l.c [new file with mode: 0644]
src/math/fabs.c [new file with mode: 0644]
src/math/fabsf.c [new file with mode: 0644]
src/math/fabsl.c [new file with mode: 0644]
src/math/fdim.c [new file with mode: 0644]
src/math/fdimf.c [new file with mode: 0644]
src/math/fdiml.c [new file with mode: 0644]
src/math/floor.c [new file with mode: 0644]
src/math/floorf.c [new file with mode: 0644]
src/math/floorl.c [new file with mode: 0644]
src/math/fma.c [new file with mode: 0644]
src/math/fmaf.c [new file with mode: 0644]
src/math/fmal.c [new file with mode: 0644]
src/math/fmax.c [new file with mode: 0644]
src/math/fmaxf.c [new file with mode: 0644]
src/math/fmaxl.c [new file with mode: 0644]
src/math/fmin.c [new file with mode: 0644]
src/math/fminf.c [new file with mode: 0644]
src/math/fminl.c [new file with mode: 0644]
src/math/fmod.c [new file with mode: 0644]
src/math/fmodf.c [new file with mode: 0644]
src/math/fmodl.c [new file with mode: 0644]
src/math/frexp.c [new file with mode: 0644]
src/math/frexpf.c [new file with mode: 0644]
src/math/frexpl.c [new file with mode: 0644]
src/math/hypot.c [new file with mode: 0644]
src/math/hypotf.c [new file with mode: 0644]
src/math/hypotl.c [new file with mode: 0644]
src/math/i386/sqrt.s [new file with mode: 0644]
src/math/i386/sqrtf.s [new file with mode: 0644]
src/math/i386/sqrtl.s [new file with mode: 0644]
src/math/ilogb.c [new file with mode: 0644]
src/math/ilogbf.c [new file with mode: 0644]
src/math/ilogbl.c [new file with mode: 0644]
src/math/j0.c [new file with mode: 0644]
src/math/j0f.c [new file with mode: 0644]
src/math/j1.c [new file with mode: 0644]
src/math/j1f.c [new file with mode: 0644]
src/math/jn.c [new file with mode: 0644]
src/math/jnf.c [new file with mode: 0644]
src/math/ldexp.c [new file with mode: 0644]
src/math/ldexpf.c [new file with mode: 0644]
src/math/ldexpl.c [new file with mode: 0644]
src/math/lgamma.c [new file with mode: 0644]
src/math/lgamma_r.c [new file with mode: 0644]
src/math/lgammaf.c [new file with mode: 0644]
src/math/lgammaf_r.c [new file with mode: 0644]
src/math/lgammal.c [new file with mode: 0644]
src/math/llrint.c [new file with mode: 0644]
src/math/llrintf.c [new file with mode: 0644]
src/math/llrintl.c [new file with mode: 0644]
src/math/llround.c [new file with mode: 0644]
src/math/llroundf.c [new file with mode: 0644]
src/math/llroundl.c [new file with mode: 0644]
src/math/log.c [new file with mode: 0644]
src/math/log10.c [new file with mode: 0644]
src/math/log10f.c [new file with mode: 0644]
src/math/log10l.c [new file with mode: 0644]
src/math/log1p.c [new file with mode: 0644]
src/math/log1pf.c [new file with mode: 0644]
src/math/log1pl.c [new file with mode: 0644]
src/math/log2.c [new file with mode: 0644]
src/math/log2f.c [new file with mode: 0644]
src/math/log2l.c [new file with mode: 0644]
src/math/logb.c [new file with mode: 0644]
src/math/logbf.c [new file with mode: 0644]
src/math/logbl.c [new file with mode: 0644]
src/math/logf.c [new file with mode: 0644]
src/math/logl.c [new file with mode: 0644]
src/math/lrint.c [new file with mode: 0644]
src/math/lrintf.c [new file with mode: 0644]
src/math/lrintl.c [new file with mode: 0644]
src/math/lround.c [new file with mode: 0644]
src/math/lroundf.c [new file with mode: 0644]
src/math/lroundl.c [new file with mode: 0644]
src/math/modf.c [new file with mode: 0644]
src/math/modff.c [new file with mode: 0644]
src/math/modfl.c [new file with mode: 0644]
src/math/nearbyint.c [new file with mode: 0644]
src/math/nearbyintf.c [new file with mode: 0644]
src/math/nearbyintl.c [new file with mode: 0644]
src/math/nextafter.c [new file with mode: 0644]
src/math/nextafterf.c [new file with mode: 0644]
src/math/nextafterl.c [new file with mode: 0644]
src/math/nexttoward.c [new file with mode: 0644]
src/math/nexttowardf.c [new file with mode: 0644]
src/math/nexttowardl.c [new file with mode: 0644]
src/math/pow.c [new file with mode: 0644]
src/math/powf.c [new file with mode: 0644]
src/math/powl.c [new file with mode: 0644]
src/math/remainder.c [new file with mode: 0644]
src/math/remainderf.c [new file with mode: 0644]
src/math/remainderl.c [new file with mode: 0644]
src/math/remquo.c [new file with mode: 0644]
src/math/remquof.c [new file with mode: 0644]
src/math/remquol.c [new file with mode: 0644]
src/math/rint.c [new file with mode: 0644]
src/math/rintf.c [new file with mode: 0644]
src/math/rintl.c [new file with mode: 0644]
src/math/round.c [new file with mode: 0644]
src/math/roundf.c [new file with mode: 0644]
src/math/roundl.c [new file with mode: 0644]
src/math/scalb.c [new file with mode: 0644]
src/math/scalbf.c [new file with mode: 0644]
src/math/scalbln.c [new file with mode: 0644]
src/math/scalblnf.c [new file with mode: 0644]
src/math/scalblnl.c [new file with mode: 0644]
src/math/scalbn.c [new file with mode: 0644]
src/math/scalbnf.c [new file with mode: 0644]
src/math/scalbnl.c [new file with mode: 0644]
src/math/signgam.c [new file with mode: 0644]
src/math/sin.c [new file with mode: 0644]
src/math/sinf.c [new file with mode: 0644]
src/math/sinh.c [new file with mode: 0644]
src/math/sinhf.c [new file with mode: 0644]
src/math/sinhl.c [new file with mode: 0644]
src/math/sinl.c [new file with mode: 0644]
src/math/sqrt.c [new file with mode: 0644]
src/math/sqrtf.c [new file with mode: 0644]
src/math/sqrtl.c [new file with mode: 0644]
src/math/tan.c [new file with mode: 0644]
src/math/tanf.c [new file with mode: 0644]
src/math/tanh.c [new file with mode: 0644]
src/math/tanhf.c [new file with mode: 0644]
src/math/tanhl.c [new file with mode: 0644]
src/math/tanl.c [new file with mode: 0644]
src/math/tgammal.c [new file with mode: 0644]
src/math/trunc.c [new file with mode: 0644]
src/math/truncf.c [new file with mode: 0644]
src/math/truncl.c [new file with mode: 0644]
src/math/x86_64/e_sqrt.s [new file with mode: 0644]
src/math/x86_64/e_sqrtf.s [new file with mode: 0644]
src/math/x86_64/e_sqrtl.s [new file with mode: 0644]
test/io/Makefile [new file with mode: 0644]
test/io/cr/README [new file with mode: 0644]
test/io/cr/acos.testdata [new file with mode: 0644]
test/io/cr/acospi.testdata [new file with mode: 0644]
test/io/cr/asin.testdata [new file with mode: 0644]
test/io/cr/asinpi.testdata [new file with mode: 0644]
test/io/cr/atan.testdata [new file with mode: 0644]
test/io/cr/atanpi.testdata [new file with mode: 0644]
test/io/cr/cos.testdata [new file with mode: 0644]
test/io/cr/cosh.testdata [new file with mode: 0644]
test/io/cr/cospi.testdata [new file with mode: 0644]
test/io/cr/exp.testdata [new file with mode: 0644]
test/io/cr/expm1.testdata [new file with mode: 0644]
test/io/cr/log.testdata [new file with mode: 0644]
test/io/cr/log10.testdata [new file with mode: 0644]
test/io/cr/log1p.testdata [new file with mode: 0644]
test/io/cr/log2.testdata [new file with mode: 0644]
test/io/cr/pow.testdata [new file with mode: 0644]
test/io/cr/sin.testdata [new file with mode: 0644]
test/io/cr/sinh.testdata [new file with mode: 0644]
test/io/cr/sinpi.testdata [new file with mode: 0644]
test/io/cr/tan.testdata [new file with mode: 0644]
test/io/cr/tanpi.testdata [new file with mode: 0644]
test/io/run.sh [new file with mode: 0755]
test/io/t.c [new file with mode: 0644]
test/io/ucb/README [new file with mode: 0644]
test/io/ucb/acosd.input [new file with mode: 0644]
test/io/ucb/acosq.input [new file with mode: 0644]
test/io/ucb/acoss.input [new file with mode: 0644]
test/io/ucb/addd.input [new file with mode: 0644]
test/io/ucb/addq.input [new file with mode: 0644]
test/io/ucb/adds.input [new file with mode: 0644]
test/io/ucb/asind.input [new file with mode: 0644]
test/io/ucb/asinq.input [new file with mode: 0644]
test/io/ucb/asins.input [new file with mode: 0644]
test/io/ucb/atan2d.input [new file with mode: 0644]
test/io/ucb/atan2q.input [new file with mode: 0644]
test/io/ucb/atan2s.input [new file with mode: 0644]
test/io/ucb/atand.input [new file with mode: 0644]
test/io/ucb/atanq.input [new file with mode: 0644]
test/io/ucb/atans.input [new file with mode: 0644]
test/io/ucb/cabsd.input [new file with mode: 0644]
test/io/ucb/cabsq.input [new file with mode: 0644]
test/io/ucb/cabss.input [new file with mode: 0644]
test/io/ucb/ceild.input [new file with mode: 0644]
test/io/ucb/ceilq.input [new file with mode: 0644]
test/io/ucb/ceils.input [new file with mode: 0644]
test/io/ucb/cosd.input [new file with mode: 0644]
test/io/ucb/coshd.input [new file with mode: 0644]
test/io/ucb/coshq.input [new file with mode: 0644]
test/io/ucb/coshs.input [new file with mode: 0644]
test/io/ucb/cosq.input [new file with mode: 0644]
test/io/ucb/coss.input [new file with mode: 0644]
test/io/ucb/divd.input [new file with mode: 0644]
test/io/ucb/divq.input [new file with mode: 0644]
test/io/ucb/divs.input [new file with mode: 0644]
test/io/ucb/expd.input [new file with mode: 0644]
test/io/ucb/expq.input [new file with mode: 0644]
test/io/ucb/exps.input [new file with mode: 0644]
test/io/ucb/fabsd.input [new file with mode: 0644]
test/io/ucb/fabsq.input [new file with mode: 0644]
test/io/ucb/fabss.input [new file with mode: 0644]
test/io/ucb/floord.input [new file with mode: 0644]
test/io/ucb/floorq.input [new file with mode: 0644]
test/io/ucb/floors.input [new file with mode: 0644]
test/io/ucb/fmodd.input [new file with mode: 0644]
test/io/ucb/fmodq.input [new file with mode: 0644]
test/io/ucb/fmods.input [new file with mode: 0644]
test/io/ucb/hypotd.input [new file with mode: 0644]
test/io/ucb/hypotq.input [new file with mode: 0644]
test/io/ucb/hypots.input [new file with mode: 0644]
test/io/ucb/log10d.input [new file with mode: 0644]
test/io/ucb/log10q.input [new file with mode: 0644]
test/io/ucb/log10s.input [new file with mode: 0644]
test/io/ucb/logd.input [new file with mode: 0644]
test/io/ucb/logq.input [new file with mode: 0644]
test/io/ucb/logs.input [new file with mode: 0644]
test/io/ucb/muld.input [new file with mode: 0644]
test/io/ucb/mulq.input [new file with mode: 0644]
test/io/ucb/muls.input [new file with mode: 0644]
test/io/ucb/powd.input [new file with mode: 0644]
test/io/ucb/powq.input [new file with mode: 0644]
test/io/ucb/pows.input [new file with mode: 0644]
test/io/ucb/sind.input [new file with mode: 0644]
test/io/ucb/sinhd.input [new file with mode: 0644]
test/io/ucb/sinhq.input [new file with mode: 0644]
test/io/ucb/sinhs.input [new file with mode: 0644]
test/io/ucb/sinq.input [new file with mode: 0644]
test/io/ucb/sins.input [new file with mode: 0644]
test/io/ucb/sqrtd.input [new file with mode: 0644]
test/io/ucb/sqrtq.input [new file with mode: 0644]
test/io/ucb/sqrts.input [new file with mode: 0644]
test/io/ucb/subd.input [new file with mode: 0644]
test/io/ucb/subq.input [new file with mode: 0644]
test/io/ucb/subs.input [new file with mode: 0644]
test/io/ucb/tand.input [new file with mode: 0644]
test/io/ucb/tanhd.input [new file with mode: 0644]
test/io/ucb/tanhq.input [new file with mode: 0644]
test/io/ucb/tanhs.input [new file with mode: 0644]
test/io/ucb/tanq.input [new file with mode: 0644]
test/io/ucb/tans.input [new file with mode: 0644]
test/sanity/Makefile [new file with mode: 0644]
test/sanity/chk.sh [new file with mode: 0755]
test/sanity/t.c [new file with mode: 0644]

diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..8058229
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,40 @@
+SRCS = $(sort $(wildcard src/*/*.c))
+OBJS = $(SRCS:.c=.o)
+
+CFLAGS  = -Os -ffloat-store -nostdinc -ffreestanding -std=c99 -D_XOPEN_SOURCE=700 -pipe
+INC     = -I./include -I./src/internal -I./arch/$(ARCH)
+AR      = $(CROSS_COMPILE)ar
+RANLIB  = $(CROSS_COMPILE)ranlib
+OBJCOPY = $(CROSS_COMPILE)objcopy
+
+STATIC_LIBS = lib/libm.a
+ALL_LIBS = $(STATIC_LIBS)
+
+-include config.mak
+
+all: $(ALL_LIBS)
+
+clean:
+       rm -f $(OBJS)
+       rm -f $(ALL_LIBS) lib/*.[ao] lib/*.so
+       rm -f include/bits
+
+include/bits:
+       @test "$(ARCH)" || { echo "Please set ARCH in config.mak before running make." ; exit 1 ; }
+       ln -sf ../arch/$(ARCH)/bits $@
+
+include/bits/alltypes.h.sh: include/bits
+
+include/bits/alltypes.h: include/bits/alltypes.h.sh
+       sh $< > $@
+
+%.o: $(ARCH)/%.s
+       $(CC) $(CFLAGS) $(INC) -c -o $@ $<
+
+%.o: %.c include/bits/alltypes.h
+       $(CC) $(CFLAGS) $(INC) -c -o $@ $<
+
+lib/libm.a: $(OBJS)
+       rm -f $@
+       $(AR) rc $@ $(OBJS)
+       $(RANLIB) $@
diff --git a/arch/arm/atomic.h b/arch/arm/atomic.h
new file mode 100644 (file)
index 0000000..28d26c7
--- /dev/null
@@ -0,0 +1,112 @@
+#ifndef _INTERNAL_ATOMIC_H
+#define _INTERNAL_ATOMIC_H
+
+#include <stdint.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)
+{
+       int old;
+       for (;;) {
+               if (!((int (*)(int, int, volatile int *))0xffff0fc0)(t, s, p))
+                       return t;
+               if ((old=*p) != t)
+                       return old;
+       }
+}
+
+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(void)
+{
+}
+
+static inline void a_crash(void)
+{
+       *(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)
+{
+       a_and((int *)p, v);
+       a_and((int *)p+1, v>>32);
+}
+
+static inline void a_or_64(volatile uint64_t *p, uint64_t v)
+{
+       a_or((int *)p, v);
+       a_or((int *)p+1, v>>32);
+}
+
+#endif
diff --git a/arch/arm/bits/alltypes.h.sh b/arch/arm/bits/alltypes.h.sh
new file mode 100755 (executable)
index 0000000..ddc5c06
--- /dev/null
@@ -0,0 +1,122 @@
+#!/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 size_t;
+TYPEDEF int ssize_t;
+TYPEDEF long ptrdiff_t;
+
+TYPEDEF __builtin_va_list va_list;
+
+#ifndef __cplusplus
+TYPEDEF unsigned wchar_t;
+#endif
+TYPEDEF int wint_t;
+TYPEDEF long wctrans_t;
+TYPEDEF long wctype_t;
+
+TYPEDEF 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; };
+
+EOF
diff --git a/arch/arm/bits/endian.h b/arch/arm/bits/endian.h
new file mode 100644 (file)
index 0000000..172c338
--- /dev/null
@@ -0,0 +1 @@
+#define __BYTE_ORDER __LITTLE_ENDIAN
diff --git a/arch/arm/bits/errno.h b/arch/arm/bits/errno.h
new file mode 100644 (file)
index 0000000..c75720e
--- /dev/null
@@ -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/arm/bits/fcntl.h b/arch/arm/bits/fcntl.h
new file mode 100644 (file)
index 0000000..9db4258
--- /dev/null
@@ -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_GETLK 12
+#define F_SETLK 13
+#define F_SETLKW 14
+
+#define F_DUPFD_CLOEXEC 1030
diff --git a/arch/arm/bits/fenv.h b/arch/arm/bits/fenv.h
new file mode 100644 (file)
index 0000000..edbdea2
--- /dev/null
@@ -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/arm/bits/float.h b/arch/arm/bits/float.h
new file mode 100644 (file)
index 0000000..75fdc9b
--- /dev/null
@@ -0,0 +1,14 @@
+#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
diff --git a/arch/arm/bits/ioctl.h b/arch/arm/bits/ioctl.h
new file mode 100644 (file)
index 0000000..336c71c
--- /dev/null
@@ -0,0 +1,197 @@
+#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
+#define _IOC_NONE  0U
+#define _IOC_WRITE 1U
+#define _IOC_READ  2U
+
+#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(3,(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/arm/bits/ipc.h b/arch/arm/bits/ipc.h
new file mode 100644 (file)
index 0000000..51ad442
--- /dev/null
@@ -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/arm/bits/limits.h b/arch/arm/bits/limits.h
new file mode 100644 (file)
index 0000000..e19461d
--- /dev/null
@@ -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/arm/bits/mman.h b/arch/arm/bits/mman.h
new file mode 100644 (file)
index 0000000..302044e
--- /dev/null
@@ -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/arm/bits/msg.h b/arch/arm/bits/msg.h
new file mode 100644 (file)
index 0000000..3db8576
--- /dev/null
@@ -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/arm/bits/posix.h b/arch/arm/bits/posix.h
new file mode 100644 (file)
index 0000000..30a3871
--- /dev/null
@@ -0,0 +1,2 @@
+#define _POSIX_V6_ILP32_OFFBIG  1
+#define _POSIX_V7_ILP32_OFFBIG  1
diff --git a/arch/arm/bits/reg.h b/arch/arm/bits/reg.h
new file mode 100644 (file)
index 0000000..0c7bffc
--- /dev/null
@@ -0,0 +1,3 @@
+#undef __WORDSIZE
+#define __WORDSIZE 32
+/* FIXME */
diff --git a/arch/arm/bits/setjmp.h b/arch/arm/bits/setjmp.h
new file mode 100644 (file)
index 0000000..a4baec4
--- /dev/null
@@ -0,0 +1 @@
+typedef unsigned long jmp_buf [64];
diff --git a/arch/arm/bits/shm.h b/arch/arm/bits/shm.h
new file mode 100644 (file)
index 0000000..8807c4f
--- /dev/null
@@ -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/arm/bits/signal.h b/arch/arm/bits/signal.h
new file mode 100644 (file)
index 0000000..16f029b
--- /dev/null
@@ -0,0 +1,73 @@
+#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
diff --git a/arch/arm/bits/socket.h b/arch/arm/bits/socket.h
new file mode 100644 (file)
index 0000000..c464ed9
--- /dev/null
@@ -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/arm/bits/stat.h b/arch/arm/bits/stat.h
new file mode 100644 (file)
index 0000000..bb9314a
--- /dev/null
@@ -0,0 +1,22 @@
+/* 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;
+};
diff --git a/arch/arm/bits/statfs.h b/arch/arm/bits/statfs.h
new file mode 100644 (file)
index 0000000..f103f4e
--- /dev/null
@@ -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/arm/bits/stdarg.h b/arch/arm/bits/stdarg.h
new file mode 100644 (file)
index 0000000..fde3781
--- /dev/null
@@ -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/arm/bits/stdint.h b/arch/arm/bits/stdint.h
new file mode 100644 (file)
index 0000000..8e21a8c
--- /dev/null
@@ -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/arm/bits/syscall.h b/arch/arm/bits/syscall.h
new file mode 100644 (file)
index 0000000..b0379e0
--- /dev/null
@@ -0,0 +1,877 @@
+#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 __socketcall(nm,a,b,c,d,e,f) syscall(SYS_##nm, a, b, c, d, e, f)
+#define __socketcall_cp(nm,a,b,c,d,e,f) syscall_cp(SYS_##nm, a, b, c, d, e, f)
+
+#define __NR_restart_syscall   0
+#define __NR_exit      1
+#define __NR_fork      2
+#define __NR_read      3
+#define __NR_write     4
+#define __NR_open      5
+#define __NR_close     6
+#define __NR_creat     8
+#define __NR_link      9
+#define __NR_unlink    10
+#define __NR_execve    11
+#define __NR_chdir     12
+#define __NR_time      13
+#define __NR_mknod     14
+#define __NR_chmod     15
+#define __NR_lchown    16
+#define __NR_lseek     19
+#define __NR_getpid    20
+#define __NR_mount     21
+#define __NR_umount    22
+#define __NR_setuid    23
+#define __NR_getuid    24
+#define __NR_stime     25
+#define __NR_ptrace    26
+#define __NR_alarm     27
+#define __NR_pause     29
+#define __NR_utime     30
+#define __NR_access    33
+#define __NR_nice      34
+#define __NR_sync      36
+#define __NR_kill      37
+#define __NR_rename    38
+#define __NR_mkdir     39
+#define __NR_rmdir     40
+#define __NR_dup       41
+#define __NR_pipe      42
+#define __NR_times     43
+#define __NR_brk       45
+#define __NR_setgid    46
+#define __NR_getgid    47
+#define __NR_geteuid   49
+#define __NR_getegid   50
+#define __NR_acct      51
+#define __NR_umount2   52
+#define __NR_ioctl     54
+#define __NR_fcntl     55
+#define __NR_setpgid   57
+#define __NR_umask     60
+#define __NR_chroot    61
+#define __NR_ustat     62
+#define __NR_dup2      63
+#define __NR_getppid   64
+#define __NR_getpgrp   65
+#define __NR_setsid    66
+#define __NR_sigaction 67
+#define __NR_setreuid  70
+#define __NR_setregid  71
+#define __NR_sigsuspend        72
+#define __NR_sigpending        73
+#define __NR_sethostname       74
+#define __NR_setrlimit 75
+#define __NR_getrusage 77
+#define __NR_gettimeofday      78
+#define __NR_settimeofday      79
+#define __NR_getgroups 80
+#define __NR_setgroups 81
+#define __NR_select    82
+#define __NR_symlink   83
+#define __NR_readlink  85
+#define __NR_uselib    86
+#define __NR_swapon    87
+#define __NR_reboot    88
+#define __NR_readdir   89
+#define __NR_mmap      90
+#define __NR_munmap    91
+#define __NR_truncate  92
+#define __NR_ftruncate 93
+#define __NR_fchmod    94
+#define __NR_fchown    95
+#define __NR_getpriority       96
+#define __NR_setpriority       97
+#define __NR_statfs    99
+#define __NR_fstatfs   100
+#define __NR_socketcall        102
+#define __NR_syslog    103
+#define __NR_setitimer 104
+#define __NR_getitimer 105
+#define __NR_stat      106
+#define __NR_lstat     107
+#define __NR_fstat     108
+#define __NR_vhangup   111
+#define __NR_syscall   113
+#define __NR_wait4     114
+#define __NR_swapoff   115
+#define __NR_sysinfo   116
+#define __NR_ipc       117
+#define __NR_fsync     118
+#define __NR_sigreturn 119
+#define __NR_clone     120
+#define __NR_setdomainname     121
+#define __NR_uname     122
+#define __NR_adjtimex  124
+#define __NR_mprotect  125
+#define __NR_sigprocmask       126
+#define __NR_init_module       128
+#define __NR_delete_module     129
+#define __NR_quotactl  131
+#define __NR_getpgid   132
+#define __NR_fchdir    133
+#define __NR_bdflush   134
+#define __NR_sysfs     135
+#define __NR_personality       136
+#define __NR_setfsuid  138
+#define __NR_setfsgid  139
+#define __NR__llseek   140
+#define __NR_getdents  141
+#define __NR__newselect        142
+#define __NR_flock     143
+#define __NR_msync     144
+#define __NR_readv     145
+#define __NR_writev    146
+#define __NR_getsid    147
+#define __NR_fdatasync 148
+#define __NR__sysctl   149
+#define __NR_mlock     150
+#define __NR_munlock   151
+#define __NR_mlockall  152
+#define __NR_munlockall        153
+#define __NR_sched_setparam    154
+#define __NR_sched_getparam    155
+#define __NR_sched_setscheduler        156
+#define __NR_sched_getscheduler        157
+#define __NR_sched_yield       158
+#define __NR_sched_get_priority_max    159
+#define __NR_sched_get_priority_min    160
+#define __NR_sched_rr_get_interval     161
+#define __NR_nanosleep 162
+#define __NR_mremap    163
+#define __NR_setresuid 164
+#define __NR_getresuid 165
+#define __NR_poll      168
+#define __NR_nfsservctl        169
+#define __NR_setresgid 170
+#define __NR_getresgid 171
+#define __NR_prctl     172
+#define __NR_rt_sigreturn      173
+#define __NR_rt_sigaction      174
+#define __NR_rt_sigprocmask    175
+#define __NR_rt_sigpending     176
+#define __NR_rt_sigtimedwait   177
+#define __NR_rt_sigqueueinfo   178
+#define __NR_rt_sigsuspend     179
+#define __NR_pread64   180
+#define __NR_pwrite64  181
+#define __NR_chown     182
+#define __NR_getcwd    183
+#define __NR_capget    184
+#define __NR_capset    185
+#define __NR_sigaltstack       186
+#define __NR_sendfile  187
+#define __NR_vfork     190
+#define __NR_ugetrlimit        191
+#define __NR_mmap2     192
+#define __NR_truncate64        193
+#define __NR_ftruncate64       194
+#define __NR_stat64    195
+#define __NR_lstat64   196
+#define __NR_fstat64   197
+#define __NR_lchown32  198
+#define __NR_getuid32  199
+#define __NR_getgid32  200
+#define __NR_geteuid32 201
+#define __NR_getegid32 202
+#define __NR_setreuid32        203
+#define __NR_setregid32        204
+#define __NR_getgroups32       205
+#define __NR_setgroups32       206
+#define __NR_fchown32  207
+#define __NR_setresuid32       208
+#define __NR_getresuid32       209
+#define __NR_setresgid32       210
+#define __NR_getresgid32       211
+#define __NR_chown32   212
+#define __NR_setuid32  213
+#define __NR_setgid32  214
+#define __NR_setfsuid32        215
+#define __NR_setfsgid32        216
+#define __NR_getdents64        217
+#define __NR_pivot_root        218
+#define __NR_mincore   219
+#define __NR_madvise   220
+#define __NR_fcntl64   221
+#define __NR_gettid    224
+#define __NR_readahead 225
+#define __NR_setxattr  226
+#define __NR_lsetxattr 227
+#define __NR_fsetxattr 228
+#define __NR_getxattr  229
+#define __NR_lgetxattr 230
+#define __NR_fgetxattr 231
+#define __NR_listxattr 232
+#define __NR_llistxattr        233
+#define __NR_flistxattr        234
+#define __NR_removexattr       235
+#define __NR_lremovexattr      236
+#define __NR_fremovexattr      237
+#define __NR_tkill     238
+#define __NR_sendfile64        239
+#define __NR_futex     240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_io_setup  243
+#define __NR_io_destroy        244
+#define __NR_io_getevents      245
+#define __NR_io_submit 246
+#define __NR_io_cancel 247
+#define __NR_exit_group        248
+#define __NR_lookup_dcookie    249
+#define __NR_epoll_create      250
+#define __NR_epoll_ctl 251
+#define __NR_epoll_wait        252
+#define __NR_remap_file_pages  253
+#define __NR_set_tid_address   256
+#define __NR_timer_create      257
+#define __NR_timer_settime     258
+#define __NR_timer_gettime     259
+#define __NR_timer_getoverrun  260
+#define __NR_timer_delete      261
+#define __NR_clock_settime     262
+#define __NR_clock_gettime     263
+#define __NR_clock_getres      264
+#define __NR_clock_nanosleep   265
+#define __NR_statfs64  266
+#define __NR_fstatfs64 267
+#define __NR_tgkill    268
+#define __NR_utimes    269
+#define __NR_fadvise64_64      270
+#define __NR_pciconfig_iobase  271
+#define __NR_pciconfig_read    272
+#define __NR_pciconfig_write   273
+#define __NR_mq_open   274
+#define __NR_mq_unlink 275
+#define __NR_mq_timedsend      276
+#define __NR_mq_timedreceive   277
+#define __NR_mq_notify 278
+#define __NR_mq_getsetattr     279
+#define __NR_waitid    280
+#define __NR_socket    281
+#define __NR_bind      282
+#define __NR_connect   283
+#define __NR_listen    284
+#define __NR_accept    285
+#define __NR_getsockname       286
+#define __NR_getpeername       287
+#define __NR_socketpair        288
+#define __NR_send      289
+#define __NR_sendto    290
+#define __NR_recv      291
+#define __NR_recvfrom  292
+#define __NR_shutdown  293
+#define __NR_setsockopt        294
+#define __NR_getsockopt        295
+#define __NR_sendmsg   296
+#define __NR_recvmsg   297
+#define __NR_semop     298
+#define __NR_semget    299
+#define __NR_semctl    300
+#define __NR_msgsnd    301
+#define __NR_msgrcv    302
+#define __NR_msgget    303
+#define __NR_msgctl    304
+#define __NR_shmat     305
+#define __NR_shmdt     306
+#define __NR_shmget    307
+#define __NR_shmctl    308
+#define __NR_add_key   309
+#define __NR_request_key       310
+#define __NR_keyctl    311
+#define __NR_semtimedop        312
+#define __NR_vserver   313
+#define __NR_ioprio_set        314
+#define __NR_ioprio_get        315
+#define __NR_inotify_init      316
+#define __NR_inotify_add_watch 317
+#define __NR_inotify_rm_watch  318
+#define __NR_mbind     319
+#define __NR_get_mempolicy     320
+#define __NR_set_mempolicy     321
+#define __NR_openat    322
+#define __NR_mkdirat   323
+#define __NR_mknodat   324
+#define __NR_fchownat  325
+#define __NR_futimesat 326
+#define __NR_fstatat64 327
+#define __NR_unlinkat  328
+#define __NR_renameat  329
+#define __NR_linkat    330
+#define __NR_symlinkat 331
+#define __NR_readlinkat        332
+#define __NR_fchmodat  333
+#define __NR_faccessat 334
+#define __NR_pselect6  335
+#define __NR_ppoll     336
+#define __NR_unshare   337
+#define __NR_set_robust_list   338
+#define __NR_get_robust_list   339
+#define __NR_splice    340
+#define __NR_sync_file_range2  341
+#define __NR_tee       342
+#define __NR_vmsplice  343
+#define __NR_move_pages        344
+#define __NR_getcpu    345
+#define __NR_epoll_pwait       346
+#define __NR_kexec_load        347
+#define __NR_utimensat 348
+#define __NR_signalfd  349
+#define __NR_timerfd_create    350
+#define __NR_eventfd   351
+#define __NR_fallocate 352
+#define __NR_timerfd_settime   353
+#define __NR_timerfd_gettime   354
+#define __NR_signalfd4 355
+#define __NR_eventfd2  356
+#define __NR_epoll_create1     357
+#define __NR_dup3      358
+#define __NR_pipe2     359
+#define __NR_inotify_init1     360
+#define __NR_preadv    361
+#define __NR_pwritev   362
+#define __NR_rt_tgsigqueueinfo 363
+#define __NR_perf_event_open   364
+#define __NR_recvmmsg  365
+#define __NR_accept4   366
+#define __NR_fanotify_init     367
+#define __NR_fanotify_mark     368
+#define __NR_prlimit64 369
+#define __NR_name_to_handle_at 370
+#define __NR_open_by_handle_at 371
+#define __NR_clock_adjtime     372
+#define __NR_syncfs    373
+#define __NR_sendmmsg  374
+#define __NR_setns     375
+
+/* fixup legacy 16-bit junk */
+#undef __NR_lchown
+#undef __NR_getuid
+#undef __NR_getgid
+#undef __NR_geteuid
+#undef __NR_getegid
+#undef __NR_setreuid
+#undef __NR_setregid
+#undef __NR_getgroups
+#undef __NR_setgroups
+#undef __NR_fchown
+#undef __NR_setresuid
+#undef __NR_getresuid
+#undef __NR_setresgid
+#undef __NR_getresgid
+#undef __NR_chown
+#undef __NR_setuid
+#undef __NR_setgid
+#undef __NR_setfsuid
+#undef __NR_setfsgid
+#define __NR_lchown __NR_lchown32
+#define __NR_getuid __NR_getuid32
+#define __NR_getgid __NR_getgid32
+#define __NR_geteuid __NR_geteuid32
+#define __NR_getegid __NR_getegid32
+#define __NR_setreuid __NR_setreuid32
+#define __NR_setregid __NR_setregid32
+#define __NR_getgroups __NR_getgroups32
+#define __NR_setgroups __NR_setgroups32
+#define __NR_fchown __NR_fchown32
+#define __NR_setresuid __NR_setresuid32
+#define __NR_getresuid __NR_getresuid32
+#define __NR_setresgid __NR_setresgid32
+#define __NR_getresgid __NR_getresgid32
+#define __NR_chown __NR_chown32
+#define __NR_setuid __NR_setuid32
+#define __NR_setgid __NR_setgid32
+#define __NR_setfsuid __NR_setfsuid32
+#define __NR_setfsgid __NR_setfsgid32
+
+
+/* fixup legacy 32-bit-vs-lfs64 junk */
+#undef __NR_fcntl
+#undef __NR_getdents
+#undef __NR_ftruncate
+#undef __NR_truncate
+#undef __NR_stat
+#undef __NR_fstat
+#undef __NR_lstat
+#undef __NR_statfs
+#undef __NR_fstatfs
+#define __NR_fcntl __NR_fcntl64
+#define __NR_getdents __NR_getdents64
+#define __NR_ftruncate __NR_ftruncate64
+#define __NR_truncate __NR_truncate64
+#define __NR_stat __NR_stat64
+#define __NR_fstat __NR_fstat64
+#define __NR_lstat __NR_lstat64
+#define __NR_statfs __NR_statfs64
+#define __NR_fstatfs __NR_fstatfs64
+#define __NR_fstatat __NR_fstatat64
+#define __NR_pread __NR_pread64
+#define __NR_pwrite __NR_pwrite64
+
+#define __NR_fadvise __NR_fadvise64_64
+
+#undef __NR_getrlimit
+#define __NR_getrlimit __NR_ugetrlimit
+
+#undef __NR_select
+#define __NR_select __NR__newselect
+
+
+/* Repeated with SYS_ prefix */
+
+#define SYS_restart_syscall    0
+#define SYS_exit       1
+#define SYS_fork       2
+#define SYS_read       3
+#define SYS_write      4
+#define SYS_open       5
+#define SYS_close      6
+#define SYS_creat      8
+#define SYS_link       9
+#define SYS_unlink     10
+#define SYS_execve     11
+#define SYS_chdir      12
+#define SYS_time       13
+#define SYS_mknod      14
+#define SYS_chmod      15
+#define SYS_lchown     16
+#define SYS_lseek      19
+#define SYS_getpid     20
+#define SYS_mount      21
+#define SYS_umount     22
+#define SYS_setuid     23
+#define SYS_getuid     24
+#define SYS_stime      25
+#define SYS_ptrace     26
+#define SYS_alarm      27
+#define SYS_pause      29
+#define SYS_utime      30
+#define SYS_access     33
+#define SYS_nice       34
+#define SYS_sync       36
+#define SYS_kill       37
+#define SYS_rename     38
+#define SYS_mkdir      39
+#define SYS_rmdir      40
+#define SYS_dup        41
+#define SYS_pipe       42
+#define SYS_times      43
+#define SYS_brk        45
+#define SYS_setgid     46
+#define SYS_getgid     47
+#define SYS_geteuid    49
+#define SYS_getegid    50
+#define SYS_acct       51
+#define SYS_umount2    52
+#define SYS_ioctl      54
+#define SYS_fcntl      55
+#define SYS_setpgid    57
+#define SYS_umask      60
+#define SYS_chroot     61
+#define SYS_ustat      62
+#define SYS_dup2       63
+#define SYS_getppid    64
+#define SYS_getpgrp    65
+#define SYS_setsid     66
+#define SYS_sigaction  67
+#define SYS_setreuid   70
+#define SYS_setregid   71
+#define SYS_sigsuspend 72
+#define SYS_sigpending 73
+#define SYS_sethostname        74
+#define SYS_setrlimit  75
+#define SYS_getrusage  77
+#define SYS_gettimeofday       78
+#define SYS_settimeofday       79
+#define SYS_getgroups  80
+#define SYS_setgroups  81
+#define SYS_select     82
+#define SYS_symlink    83
+#define SYS_readlink   85
+#define SYS_uselib     86
+#define SYS_swapon     87
+#define SYS_reboot     88
+#define SYS_readdir    89
+#define SYS_mmap       90
+#define SYS_munmap     91
+#define SYS_truncate   92
+#define SYS_ftruncate  93
+#define SYS_fchmod     94
+#define SYS_fchown     95
+#define SYS_getpriority        96
+#define SYS_setpriority        97
+#define SYS_statfs     99
+#define SYS_fstatfs    100
+#define SYS_socketcall 102
+#define SYS_syslog     103
+#define SYS_setitimer  104
+#define SYS_getitimer  105
+#define SYS_stat       106
+#define SYS_lstat      107
+#define SYS_fstat      108
+#define SYS_vhangup    111
+#define SYS_syscall    113
+#define SYS_wait4      114
+#define SYS_swapoff    115
+#define SYS_sysinfo    116
+#define SYS_ipc        117
+#define SYS_fsync      118
+#define SYS_sigreturn  119
+#define SYS_clone      120
+#define SYS_setdomainname      121
+#define SYS_uname      122
+#define SYS_adjtimex   124
+#define SYS_mprotect   125
+#define SYS_sigprocmask        126
+#define SYS_init_module        128
+#define SYS_delete_module      129
+#define SYS_quotactl   131
+#define SYS_getpgid    132
+#define SYS_fchdir     133
+#define SYS_bdflush    134
+#define SYS_sysfs      135
+#define SYS_personality        136
+#define SYS_setfsuid   138
+#define SYS_setfsgid   139
+#define SYS__llseek    140
+#define SYS_getdents   141
+#define SYS__newselect 142
+#define SYS_flock      143
+#define SYS_msync      144
+#define SYS_readv      145
+#define SYS_writev     146
+#define SYS_getsid     147
+#define SYS_fdatasync  148
+#define SYS__sysctl    149
+#define SYS_mlock      150
+#define SYS_munlock    151
+#define SYS_mlockall   152
+#define SYS_munlockall 153
+#define SYS_sched_setparam     154
+#define SYS_sched_getparam     155
+#define SYS_sched_setscheduler 156
+#define SYS_sched_getscheduler 157
+#define SYS_sched_yield        158
+#define SYS_sched_get_priority_max     159
+#define SYS_sched_get_priority_min     160
+#define SYS_sched_rr_get_interval      161
+#define SYS_nanosleep  162
+#define SYS_mremap     163
+#define SYS_setresuid  164
+#define SYS_getresuid  165
+#define SYS_poll       168
+#define SYS_nfsservctl 169
+#define SYS_setresgid  170
+#define SYS_getresgid  171
+#define SYS_prctl      172
+#define SYS_rt_sigreturn       173
+#define SYS_rt_sigaction       174
+#define SYS_rt_sigprocmask     175
+#define SYS_rt_sigpending      176
+#define SYS_rt_sigtimedwait    177
+#define SYS_rt_sigqueueinfo    178
+#define SYS_rt_sigsuspend      179
+#define SYS_pread64    180
+#define SYS_pwrite64   181
+#define SYS_chown      182
+#define SYS_getcwd     183
+#define SYS_capget     184
+#define SYS_capset     185
+#define SYS_sigaltstack        186
+#define SYS_sendfile   187
+#define SYS_vfork      190
+#define SYS_ugetrlimit 191
+#define SYS_mmap2      192
+#define SYS_truncate64 193
+#define SYS_ftruncate64        194
+#define SYS_stat64     195
+#define SYS_lstat64    196
+#define SYS_fstat64    197
+#define SYS_lchown32   198
+#define SYS_getuid32   199
+#define SYS_getgid32   200
+#define SYS_geteuid32  201
+#define SYS_getegid32  202
+#define SYS_setreuid32 203
+#define SYS_setregid32 204
+#define SYS_getgroups32        205
+#define SYS_setgroups32        206
+#define SYS_fchown32   207
+#define SYS_setresuid32        208
+#define SYS_getresuid32        209
+#define SYS_setresgid32        210
+#define SYS_getresgid32        211
+#define SYS_chown32    212
+#define SYS_setuid32   213
+#define SYS_setgid32   214
+#define SYS_setfsuid32 215
+#define SYS_setfsgid32 216
+#define SYS_getdents64 217
+#define SYS_pivot_root 218
+#define SYS_mincore    219
+#define SYS_madvise    220
+#define SYS_fcntl64    221
+#define SYS_gettid     224
+#define SYS_readahead  225
+#define SYS_setxattr   226
+#define SYS_lsetxattr  227
+#define SYS_fsetxattr  228
+#define SYS_getxattr   229
+#define SYS_lgetxattr  230
+#define SYS_fgetxattr  231
+#define SYS_listxattr  232
+#define SYS_llistxattr 233
+#define SYS_flistxattr 234
+#define SYS_removexattr        235
+#define SYS_lremovexattr       236
+#define SYS_fremovexattr       237
+#define SYS_tkill      238
+#define SYS_sendfile64 239
+#define SYS_futex      240
+#define SYS_sched_setaffinity  241
+#define SYS_sched_getaffinity  242
+#define SYS_io_setup   243
+#define SYS_io_destroy 244
+#define SYS_io_getevents       245
+#define SYS_io_submit  246
+#define SYS_io_cancel  247
+#define SYS_exit_group 248
+#define SYS_lookup_dcookie     249
+#define SYS_epoll_create       250
+#define SYS_epoll_ctl  251
+#define SYS_epoll_wait 252
+#define SYS_remap_file_pages   253
+#define SYS_set_tid_address    256
+#define SYS_timer_create       257
+#define SYS_timer_settime      258
+#define SYS_timer_gettime      259
+#define SYS_timer_getoverrun   260
+#define SYS_timer_delete       261
+#define SYS_clock_settime      262
+#define SYS_clock_gettime      263
+#define SYS_clock_getres       264
+#define SYS_clock_nanosleep    265
+#define SYS_statfs64   266
+#define SYS_fstatfs64  267
+#define SYS_tgkill     268
+#define SYS_utimes     269
+#define SYS_fadvise64_64       270
+#define SYS_pciconfig_iobase   271
+#define SYS_pciconfig_read     272
+#define SYS_pciconfig_write    273
+#define SYS_mq_open    274
+#define SYS_mq_unlink  275
+#define SYS_mq_timedsend       276
+#define SYS_mq_timedreceive    277
+#define SYS_mq_notify  278
+#define SYS_mq_getsetattr      279
+#define SYS_waitid     280
+#define SYS_socket     281
+#define SYS_bind       282
+#define SYS_connect    283
+#define SYS_listen     284
+#define SYS_accept     285
+#define SYS_getsockname        286
+#define SYS_getpeername        287
+#define SYS_socketpair 288
+#define SYS_send       289
+#define SYS_sendto     290
+#define SYS_recv       291
+#define SYS_recvfrom   292
+#define SYS_shutdown   293
+#define SYS_setsockopt 294
+#define SYS_getsockopt 295
+#define SYS_sendmsg    296
+#define SYS_recvmsg    297
+#define SYS_semop      298
+#define SYS_semget     299
+#define SYS_semctl     300
+#define SYS_msgsnd     301
+#define SYS_msgrcv     302
+#define SYS_msgget     303
+#define SYS_msgctl     304
+#define SYS_shmat      305
+#define SYS_shmdt      306
+#define SYS_shmget     307
+#define SYS_shmctl     308
+#define SYS_add_key    309
+#define SYS_request_key        310
+#define SYS_keyctl     311
+#define SYS_semtimedop 312
+#define SYS_vserver    313
+#define SYS_ioprio_set 314
+#define SYS_ioprio_get 315
+#define SYS_inotify_init       316
+#define SYS_inotify_add_watch  317
+#define SYS_inotify_rm_watch   318
+#define SYS_mbind      319
+#define SYS_get_mempolicy      320
+#define SYS_set_mempolicy      321
+#define SYS_openat     322
+#define SYS_mkdirat    323
+#define SYS_mknodat    324
+#define SYS_fchownat   325
+#define SYS_futimesat  326
+#define SYS_fstatat64  327
+#define SYS_unlinkat   328
+#define SYS_renameat   329
+#define SYS_linkat     330
+#define SYS_symlinkat  331
+#define SYS_readlinkat 332
+#define SYS_fchmodat   333
+#define SYS_faccessat  334
+#define SYS_pselect6   335
+#define SYS_ppoll      336
+#define SYS_unshare    337
+#define SYS_set_robust_list    338
+#define SYS_get_robust_list    339
+#define SYS_splice     340
+#define SYS_sync_file_range2   341
+#define SYS_tee        342
+#define SYS_vmsplice   343
+#define SYS_move_pages 344
+#define SYS_getcpu     345
+#define SYS_epoll_pwait        346
+#define SYS_kexec_load 347
+#define SYS_utimensat  348
+#define SYS_signalfd   349
+#define SYS_timerfd_create     350
+#define SYS_eventfd    351
+#define SYS_fallocate  352
+#define SYS_timerfd_settime    353
+#define SYS_timerfd_gettime    354
+#define SYS_signalfd4  355
+#define SYS_eventfd2   356
+#define SYS_epoll_create1      357
+#define SYS_dup3       358
+#define SYS_pipe2      359
+#define SYS_inotify_init1      360
+#define SYS_preadv     361
+#define SYS_pwritev    362
+#define SYS_rt_tgsigqueueinfo  363
+#define SYS_perf_event_open    364
+#define SYS_recvmmsg   365
+#define SYS_accept4    366
+#define SYS_fanotify_init      367
+#define SYS_fanotify_mark      368
+#define SYS_prlimit64  369
+#define SYS_name_to_handle_at  370
+#define SYS_open_by_handle_at  371
+#define SYS_clock_adjtime      372
+#define SYS_syncfs     373
+#define SYS_sendmmsg   374
+#define SYS_setns      375
+
+/* fixup legacy 16-bit junk */
+#undef SYS_lchown
+#undef SYS_getuid
+#undef SYS_getgid
+#undef SYS_geteuid
+#undef SYS_getegid
+#undef SYS_setreuid
+#undef SYS_setregid
+#undef SYS_getgroups
+#undef SYS_setgroups
+#undef SYS_fchown
+#undef SYS_setresuid
+#undef SYS_getresuid
+#undef SYS_setresgid
+#undef SYS_getresgid
+#undef SYS_chown
+#undef SYS_setuid
+#undef SYS_setgid
+#undef SYS_setfsuid
+#undef SYS_setfsgid
+#define SYS_lchown SYS_lchown32
+#define SYS_getuid SYS_getuid32
+#define SYS_getgid SYS_getgid32
+#define SYS_geteuid SYS_geteuid32
+#define SYS_getegid SYS_getegid32
+#define SYS_setreuid SYS_setreuid32
+#define SYS_setregid SYS_setregid32
+#define SYS_getgroups SYS_getgroups32
+#define SYS_setgroups SYS_setgroups32
+#define SYS_fchown SYS_fchown32
+#define SYS_setresuid SYS_setresuid32
+#define SYS_getresuid SYS_getresuid32
+#define SYS_setresgid SYS_setresgid32
+#define SYS_getresgid SYS_getresgid32
+#define SYS_chown SYS_chown32
+#define SYS_setuid SYS_setuid32
+#define SYS_setgid SYS_setgid32
+#define SYS_setfsuid SYS_setfsuid32
+#define SYS_setfsgid SYS_setfsgid32
+
+
+/* fixup legacy 32-bit-vs-lfs64 junk */
+#undef SYS_fcntl
+#undef SYS_getdents
+#undef SYS_ftruncate
+#undef SYS_truncate
+#undef SYS_stat
+#undef SYS_fstat
+#undef SYS_lstat
+#undef SYS_statfs
+#undef SYS_fstatfs
+#define SYS_fcntl SYS_fcntl64
+#define SYS_getdents SYS_getdents64
+#define SYS_ftruncate SYS_ftruncate64
+#define SYS_truncate SYS_truncate64
+#define SYS_stat SYS_stat64
+#define SYS_fstat SYS_fstat64
+#define SYS_lstat SYS_lstat64
+#define SYS_statfs SYS_statfs64
+#define SYS_fstatfs SYS_fstatfs64
+#define SYS_fstatat SYS_fstatat64
+#define SYS_pread SYS_pread64
+#define SYS_pwrite SYS_pwrite64
+
+#define SYS_fadvise SYS_fadvise64_64
+
+#undef SYS_getrlimit
+#define SYS_getrlimit SYS_ugetrlimit
+
+#undef SYS_select
+#define SYS_select SYS__newselect
diff --git a/arch/arm/bits/termios.h b/arch/arm/bits/termios.h
new file mode 100644 (file)
index 0000000..9f6abd8
--- /dev/null
@@ -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/arm/bits/user.h b/arch/arm/bits/user.h
new file mode 100644 (file)
index 0000000..c533fd8
--- /dev/null
@@ -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/arm/bits/wchar.h b/arch/arm/bits/wchar.h
new file mode 100644 (file)
index 0000000..ffb2691
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef WCHAR_MIN
+#define WCHAR_MIN 0U
+#define WCHAR_MAX 0xffffffffU
+#endif
diff --git a/arch/arm/pthread_arch.h b/arch/arm/pthread_arch.h
new file mode 100644 (file)
index 0000000..e607c5d
--- /dev/null
@@ -0,0 +1,4 @@
+#define __pthread_self ((pthread_t (*)(void))0xffff0fe0)
+
+#define CANCEL_REG_SP 16
+#define CANCEL_REG_IP 18
diff --git a/arch/arm/reloc.h b/arch/arm/reloc.h
new file mode 100644 (file)
index 0000000..10e89aa
--- /dev/null
@@ -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/arch/i386/atomic.h b/arch/i386/atomic.h
new file mode 100644 (file)
index 0000000..755bea7
--- /dev/null
@@ -0,0 +1,128 @@
+#ifndef _INTERNAL_ATOMIC_H
+#define _INTERNAL_ATOMIC_H
+
+#include <stdint.h>
+
+static inline int a_ctz_64(uint64_t x)
+{
+       int r;
+       __asm__( "bsf %1,%0 ; jnz 1f ; bsf %2,%0 ; addl $32,%0\n1:"
+               : "=r"(r) : "r"((unsigned)x), "r"((unsigned)(x>>32)) );
+       return r;
+}
+
+static inline int a_ctz_l(unsigned long x)
+{
+       long r;
+       __asm__( "bsf %1,%0" : "=r"(r) : "r"(x) );
+       return r;
+}
+
+static inline void a_and_64(volatile uint64_t *p, uint64_t v)
+{
+       __asm__( "lock ; andl %1, (%0) ; lock ; andl %2, 4(%0)"
+               : : "r"((long *)p), "r"((unsigned)v), "r"((unsigned)(v>>32)) : "memory" );
+}
+
+static inline void a_or_64(volatile uint64_t *p, uint64_t v)
+{
+       __asm__( "lock ; orl %1, (%0) ; lock ; orl %2, 4(%0)"
+               : : "r"((long *)p), "r"((unsigned)v), "r"((unsigned)(v>>32)) : "memory" );
+}
+
+static inline void a_store_l(volatile void *p, long x)
+{
+       __asm__( "movl %1, %0" : "=m"(*(long *)p) : "r"(x) : "memory" );
+}
+
+static inline void a_or_l(volatile void *p, long v)
+{
+       __asm__( "lock ; orl %1, %0"
+               : "=m"(*(long *)p) : "r"(v) : "memory" );
+}
+
+static inline void *a_cas_p(volatile void *p, void *t, void *s)
+{
+       __asm__( "lock ; cmpxchg %3, %1"
+               : "=a"(t), "=m"(*(long *)p) : "a"(t), "r"(s) : "memory" );
+       return t;
+}
+
+static inline long a_cas_l(volatile void *p, long t, long s)
+{
+       __asm__( "lock ; cmpxchg %3, %1"
+               : "=a"(t), "=m"(*(long *)p) : "a"(t), "r"(s) : "memory" );
+       return t;
+}
+
+static inline int a_cas(volatile int *p, int t, int s)
+{
+       __asm__( "lock ; cmpxchg %3, %1"
+               : "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" );
+       return t;
+}
+
+static inline void *a_swap_p(void *volatile *x, void *v)
+{
+       __asm__( "xchg %0, %1" : "=r"(v), "=m"(*(void **)x) : "0"(v) : "memory" );
+       return v;
+}
+static inline long a_swap_l(volatile void *x, long v)
+{
+       __asm__( "xchg %0, %1" : "=r"(v), "=m"(*(long *)x) : "0"(v) : "memory" );
+       return v;
+}
+
+static inline void a_or(volatile void *p, int v)
+{
+       __asm__( "lock ; orl %1, %0"
+               : "=m"(*(int *)p) : "r"(v) : "memory" );
+}
+
+static inline void a_and(volatile void *p, int v)
+{
+       __asm__( "lock ; andl %1, %0"
+               : "=m"(*(int *)p) : "r"(v) : "memory" );
+}
+
+static inline int a_swap(volatile int *x, int v)
+{
+       __asm__( "xchg %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" );
+       return v;
+}
+
+#define a_xchg a_swap
+
+static inline int a_fetch_add(volatile int *x, int v)
+{
+       __asm__( "lock ; xadd %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" );
+       return v;
+}
+
+static inline void a_inc(volatile int *x)
+{
+       __asm__( "lock ; incl %0" : "=m"(*x) : "m"(*x) : "memory" );
+}
+
+static inline void a_dec(volatile int *x)
+{
+       __asm__( "lock ; decl %0" : "=m"(*x) : "m"(*x) : "memory" );
+}
+
+static inline void a_store(volatile int *p, int x)
+{
+       __asm__( "movl %1, %0" : "=m"(*p) : "r"(x) : "memory" );
+}
+
+static inline void a_spin(void)
+{
+       __asm__ __volatile__( "pause" : : : "memory" );
+}
+
+static inline void a_crash(void)
+{
+       __asm__ __volatile__( "hlt" : : : "memory" );
+}
+
+
+#endif
diff --git a/arch/i386/bits/alltypes.h b/arch/i386/bits/alltypes.h
new file mode 100644 (file)
index 0000000..9990274
--- /dev/null
@@ -0,0 +1,424 @@
+
+#if defined(__NEED_size_t) && !defined(__DEFINED_size_t)
+typedef unsigned size_t;
+#define __DEFINED_size_t
+#endif
+
+#if defined(__NEED_ssize_t) && !defined(__DEFINED_ssize_t)
+typedef int ssize_t;
+#define __DEFINED_ssize_t
+#endif
+
+#if defined(__NEED_ptrdiff_t) && !defined(__DEFINED_ptrdiff_t)
+typedef long ptrdiff_t;
+#define __DEFINED_ptrdiff_t
+#endif
+
+
+#if __GNUC__ >= 3
+#if defined(__NEED_va_list) && !defined(__DEFINED_va_list)
+typedef __builtin_va_list va_list;
+#define __DEFINED_va_list
+#endif
+
+#else
+#if defined(__NEED_va_list) && !defined(__DEFINED_va_list)
+typedef struct __va_list * va_list;
+#define __DEFINED_va_list
+#endif
+
+#endif
+
+#ifndef __cplusplus
+#ifdef __WCHAR_TYPE__
+#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
+typedef __WCHAR_TYPE__ wchar_t;
+#define __DEFINED_wchar_t
+#endif
+
+#else
+#if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
+typedef long wchar_t;
+#define __DEFINED_wchar_t
+#endif
+
+#endif
+#endif
+#if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t)
+typedef long wint_t;
+#define __DEFINED_wint_t
+#endif
+
+#if defined(__NEED_wctrans_t) && !defined(__DEFINED_wctrans_t)
+typedef long wctrans_t;
+#define __DEFINED_wctrans_t
+#endif
+
+#if defined(__NEED_wctype_t) && !defined(__DEFINED_wctype_t)
+typedef long wctype_t;
+#define __DEFINED_wctype_t
+#endif
+
+
+#if defined(__NEED_int8_t) && !defined(__DEFINED_int8_t)
+typedef char      int8_t;
+#define __DEFINED_int8_t
+#endif
+
+#if defined(__NEED_int16_t) && !defined(__DEFINED_int16_t)
+typedef short     int16_t;
+#define __DEFINED_int16_t
+#endif
+
+#if defined(__NEED_int32_t) && !defined(__DEFINED_int32_t)
+typedef int       int32_t;
+#define __DEFINED_int32_t
+#endif
+
+#if defined(__NEED_int64_t) && !defined(__DEFINED_int64_t)
+typedef long long int64_t;
+#define __DEFINED_int64_t
+#endif
+
+
+#if defined(__NEED_uint8_t) && !defined(__DEFINED_uint8_t)
+typedef unsigned char      uint8_t;
+#define __DEFINED_uint8_t
+#endif
+
+#if defined(__NEED_uint16_t) && !defined(__DEFINED_uint16_t)
+typedef unsigned short     uint16_t;
+#define __DEFINED_uint16_t
+#endif
+
+#if defined(__NEED_uint32_t) && !defined(__DEFINED_uint32_t)
+typedef unsigned int       uint32_t;
+#define __DEFINED_uint32_t
+#endif
+
+#if defined(__NEED_uint64_t) && !defined(__DEFINED_uint64_t)
+typedef unsigned long long uint64_t;
+#define __DEFINED_uint64_t
+#endif
+
+
+#if defined(__NEED___uint16_t) && !defined(__DEFINED___uint16_t)
+typedef unsigned short     __uint16_t;
+#define __DEFINED___uint16_t
+#endif
+
+#if defined(__NEED___uint32_t) && !defined(__DEFINED___uint32_t)
+typedef unsigned int       __uint32_t;
+#define __DEFINED___uint32_t
+#endif
+
+#if defined(__NEED___uint64_t) && !defined(__DEFINED___uint64_t)
+typedef unsigned long long __uint64_t;
+#define __DEFINED___uint64_t
+#endif
+
+
+#if defined(__NEED_int_fast8_t) && !defined(__DEFINED_int_fast8_t)
+typedef int8_t    int_fast8_t;
+#define __DEFINED_int_fast8_t
+#endif
+
+#if defined(__NEED_int_fast16_t) && !defined(__DEFINED_int_fast16_t)
+typedef int       int_fast16_t;
+#define __DEFINED_int_fast16_t
+#endif
+
+#if defined(__NEED_int_fast32_t) && !defined(__DEFINED_int_fast32_t)
+typedef int       int_fast32_t;
+#define __DEFINED_int_fast32_t
+#endif
+
+#if defined(__NEED_int_fast64_t) && !defined(__DEFINED_int_fast64_t)
+typedef int64_t   int_fast64_t;
+#define __DEFINED_int_fast64_t
+#endif
+
+
+#if defined(__NEED_uint_fast8_t) && !defined(__DEFINED_uint_fast8_t)
+typedef unsigned char      uint_fast8_t;
+#define __DEFINED_uint_fast8_t
+#endif
+
+#if defined(__NEED_uint_fast16_t) && !defined(__DEFINED_uint_fast16_t)
+typedef unsigned int       uint_fast16_t;
+#define __DEFINED_uint_fast16_t
+#endif
+
+#if defined(__NEED_uint_fast32_t) && !defined(__DEFINED_uint_fast32_t)
+typedef unsigned int       uint_fast32_t;
+#define __DEFINED_uint_fast32_t
+#endif
+
+#if defined(__NEED_uint_fast64_t) && !defined(__DEFINED_uint_fast64_t)
+typedef uint64_t           uint_fast64_t;
+#define __DEFINED_uint_fast64_t
+#endif
+
+
+#if defined(__NEED_intptr_t) && !defined(__DEFINED_intptr_t)
+typedef long          intptr_t;
+#define __DEFINED_intptr_t
+#endif
+
+#if defined(__NEED_uintptr_t) && !defined(__DEFINED_uintptr_t)
+typedef unsigned long uintptr_t;
+#define __DEFINED_uintptr_t
+#endif
+
+
+#if defined(__NEED_float_t) && !defined(__DEFINED_float_t)
+typedef long double float_t;
+#define __DEFINED_float_t
+#endif
+
+#if defined(__NEED_double_t) && !defined(__DEFINED_double_t)
+typedef long double double_t;
+#define __DEFINED_double_t
+#endif
+
+
+#if defined(__NEED_time_t) && !defined(__DEFINED_time_t)
+typedef long time_t;
+#define __DEFINED_time_t
+#endif
+
+#if defined(__NEED_suseconds_t) && !defined(__DEFINED_suseconds_t)
+typedef int suseconds_t;
+#define __DEFINED_suseconds_t
+#endif
+
+#if defined(__NEED_struct_timeval) && !defined(__DEFINED_struct_timeval)
+struct timeval { time_t tv_sec; int tv_usec; };
+#define __DEFINED_struct_timeval
+#endif
+
+#if defined(__NEED_struct_timespec) && !defined(__DEFINED_struct_timespec)
+struct timespec { time_t tv_sec; long tv_nsec; };
+#define __DEFINED_struct_timespec
+#endif
+
+
+#if defined(__NEED_pid_t) && !defined(__DEFINED_pid_t)
+typedef int pid_t;
+#define __DEFINED_pid_t
+#endif
+
+#if defined(__NEED_id_t) && !defined(__DEFINED_id_t)
+typedef int id_t;
+#define __DEFINED_id_t
+#endif
+
+#if defined(__NEED_uid_t) && !defined(__DEFINED_uid_t)
+typedef int uid_t;
+#define __DEFINED_uid_t
+#endif
+
+#if defined(__NEED_gid_t) && !defined(__DEFINED_gid_t)
+typedef int gid_t;
+#define __DEFINED_gid_t
+#endif
+
+#if defined(__NEED_key_t) && !defined(__DEFINED_key_t)
+typedef int key_t;
+#define __DEFINED_key_t
+#endif
+
+
+#if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t)
+typedef struct __pthread * pthread_t;
+#define __DEFINED_pthread_t
+#endif
+
+#if defined(__NEED_pthread_once_t) && !defined(__DEFINED_pthread_once_t)
+typedef int pthread_once_t;
+#define __DEFINED_pthread_once_t
+#endif
+
+#if defined(__NEED_pthread_key_t) && !defined(__DEFINED_pthread_key_t)
+typedef int pthread_key_t;
+#define __DEFINED_pthread_key_t
+#endif
+
+#if defined(__NEED_pthread_spinlock_t) && !defined(__DEFINED_pthread_spinlock_t)
+typedef int pthread_spinlock_t;
+#define __DEFINED_pthread_spinlock_t
+#endif
+
+
+#if defined(__NEED_pthread_attr_t) && !defined(__DEFINED_pthread_attr_t)
+typedef struct { union { int __i[9]; size_t __s[9]; } __u; } pthread_attr_t;
+#define __DEFINED_pthread_attr_t
+#endif
+
+#if defined(__NEED_pthread_mutexattr_t) && !defined(__DEFINED_pthread_mutexattr_t)
+typedef unsigned pthread_mutexattr_t;
+#define __DEFINED_pthread_mutexattr_t
+#endif
+
+#if defined(__NEED_pthread_condattr_t) && !defined(__DEFINED_pthread_condattr_t)
+typedef unsigned pthread_condattr_t;
+#define __DEFINED_pthread_condattr_t
+#endif
+
+#if defined(__NEED_pthread_barrierattr_t) && !defined(__DEFINED_pthread_barrierattr_t)
+typedef unsigned pthread_barrierattr_t;
+#define __DEFINED_pthread_barrierattr_t
+#endif
+
+#if defined(__NEED_pthread_rwlockattr_t) && !defined(__DEFINED_pthread_rwlockattr_t)
+typedef struct { unsigned __attr[2]; } pthread_rwlockattr_t;
+#define __DEFINED_pthread_rwlockattr_t
+#endif
+
+
+#if defined(__NEED_pthread_mutex_t) && !defined(__DEFINED_pthread_mutex_t)
+typedef struct { union { int __i[6]; void *__p[6]; } __u; } pthread_mutex_t;
+#define __DEFINED_pthread_mutex_t
+#endif
+
+#if defined(__NEED_pthread_cond_t) && !defined(__DEFINED_pthread_cond_t)
+typedef struct { union { int __i[12]; void *__p[12]; } __u; } pthread_cond_t;
+#define __DEFINED_pthread_cond_t
+#endif
+
+#if defined(__NEED_pthread_rwlock_t) && !defined(__DEFINED_pthread_rwlock_t)
+typedef struct { union { int __i[8]; void *__p[8]; } __u; } pthread_rwlock_t;
+#define __DEFINED_pthread_rwlock_t
+#endif
+
+#if defined(__NEED_pthread_barrier_t) && !defined(__DEFINED_pthread_barrier_t)
+typedef struct { union { int __i[5]; void *__p[5]; } __u; } pthread_barrier_t;
+#define __DEFINED_pthread_barrier_t
+#endif
+
+
+#if defined(__NEED_off_t) && !defined(__DEFINED_off_t)
+typedef long long off_t;
+#define __DEFINED_off_t
+#endif
+
+
+#if defined(__NEED_mode_t) && !defined(__DEFINED_mode_t)
+typedef unsigned int mode_t;
+#define __DEFINED_mode_t
+#endif
+
+
+#if defined(__NEED_nlink_t) && !defined(__DEFINED_nlink_t)
+typedef unsigned int nlink_t;
+#define __DEFINED_nlink_t
+#endif
+
+#if defined(__NEED_ino_t) && !defined(__DEFINED_ino_t)
+typedef unsigned long long ino_t;
+#define __DEFINED_ino_t
+#endif
+
+#if defined(__NEED_dev_t) && !defined(__DEFINED_dev_t)
+typedef long long dev_t;
+#define __DEFINED_dev_t
+#endif
+
+#if defined(__NEED_blksize_t) && !defined(__DEFINED_blksize_t)
+typedef long blksize_t;
+#define __DEFINED_blksize_t
+#endif
+
+#if defined(__NEED_blkcnt_t) && !defined(__DEFINED_blkcnt_t)
+typedef long long blkcnt_t;
+#define __DEFINED_blkcnt_t
+#endif
+
+#if defined(__NEED_fsblkcnt_t) && !defined(__DEFINED_fsblkcnt_t)
+typedef unsigned long long fsblkcnt_t;
+#define __DEFINED_fsblkcnt_t
+#endif
+
+#if defined(__NEED_fsfilcnt_t) && !defined(__DEFINED_fsfilcnt_t)
+typedef unsigned long long fsfilcnt_t;
+#define __DEFINED_fsfilcnt_t
+#endif
+
+
+#if defined(__NEED_timer_t) && !defined(__DEFINED_timer_t)
+typedef void * timer_t;
+#define __DEFINED_timer_t
+#endif
+
+#if defined(__NEED_clockid_t) && !defined(__DEFINED_clockid_t)
+typedef int clockid_t;
+#define __DEFINED_clockid_t
+#endif
+
+#if defined(__NEED_clock_t) && !defined(__DEFINED_clock_t)
+typedef unsigned long clock_t;
+#define __DEFINED_clock_t
+#endif
+
+
+#if defined(__NEED_sigset_t) && !defined(__DEFINED_sigset_t)
+typedef struct { unsigned long __bits[128/sizeof(long)]; } sigset_t;
+#define __DEFINED_sigset_t
+#endif
+
+#if defined(__NEED_siginfo_t) && !defined(__DEFINED_siginfo_t)
+typedef struct __siginfo siginfo_t;
+#define __DEFINED_siginfo_t
+#endif
+
+
+#if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
+typedef unsigned int socklen_t;
+#define __DEFINED_socklen_t
+#endif
+
+#if defined(__NEED_sa_family_t) && !defined(__DEFINED_sa_family_t)
+typedef unsigned short sa_family_t;
+#define __DEFINED_sa_family_t
+#endif
+
+#if defined(__NEED_in_port_t) && !defined(__DEFINED_in_port_t)
+typedef unsigned short in_port_t;
+#define __DEFINED_in_port_t
+#endif
+
+#if defined(__NEED_in_addr_t) && !defined(__DEFINED_in_addr_t)
+typedef unsigned int in_addr_t;
+#define __DEFINED_in_addr_t
+#endif
+
+#if defined(__NEED_struct_in_addr) && !defined(__DEFINED_struct_in_addr)
+struct in_addr { in_addr_t s_addr; };
+#define __DEFINED_struct_in_addr
+#endif
+
+
+#if defined(__NEED_FILE) && !defined(__DEFINED_FILE)
+typedef struct __FILE_s FILE;
+#define __DEFINED_FILE
+#endif
+
+
+#if defined(__NEED_nl_item) && !defined(__DEFINED_nl_item)
+typedef int nl_item;
+#define __DEFINED_nl_item
+#endif
+
+
+#if defined(__NEED_locale_t) && !defined(__DEFINED_locale_t)
+typedef struct __locale * locale_t;
+#define __DEFINED_locale_t
+#endif
+
+
+#if defined(__NEED_struct_iovec) && !defined(__DEFINED_struct_iovec)
+struct iovec { void *iov_base; size_t iov_len; };
+#define __DEFINED_struct_iovec
+#endif
+
+
diff --git a/arch/i386/bits/alltypes.h.sh b/arch/i386/bits/alltypes.h.sh
new file mode 100755 (executable)
index 0000000..b1505a1
--- /dev/null
@@ -0,0 +1,130 @@
+#!/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 size_t;
+TYPEDEF int ssize_t;
+TYPEDEF long ptrdiff_t;
+
+#if __GNUC__ >= 3
+TYPEDEF __builtin_va_list va_list;
+#else
+TYPEDEF struct __va_list * va_list;
+#endif
+
+#ifndef __cplusplus
+#ifdef __WCHAR_TYPE__
+TYPEDEF __WCHAR_TYPE__ wchar_t;
+#else
+TYPEDEF long wchar_t;
+#endif
+#endif
+TYPEDEF long wint_t;
+TYPEDEF long wctrans_t;
+TYPEDEF long wctype_t;
+
+TYPEDEF 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 long double float_t;
+TYPEDEF long 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; };
+
+EOF
diff --git a/arch/i386/bits/endian.h b/arch/i386/bits/endian.h
new file mode 100644 (file)
index 0000000..172c338
--- /dev/null
@@ -0,0 +1 @@
+#define __BYTE_ORDER __LITTLE_ENDIAN
diff --git a/arch/i386/bits/errno.h b/arch/i386/bits/errno.h
new file mode 100644 (file)
index 0000000..c75720e
--- /dev/null
@@ -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/i386/bits/fcntl.h b/arch/i386/bits/fcntl.h
new file mode 100644 (file)
index 0000000..33a5185
--- /dev/null
@@ -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 0200000
+#define O_NOFOLLOW  0400000
+#define O_CLOEXEC  02000000
+
+#define O_ASYNC      020000
+#define O_DIRECT     040000
+#define O_LARGEFILE 0100000
+#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_GETLK 12
+#define F_SETLK 13
+#define F_SETLKW 14
+
+#define F_DUPFD_CLOEXEC 1030
diff --git a/arch/i386/bits/fenv.h b/arch/i386/bits/fenv.h
new file mode 100644 (file)
index 0000000..24df041
--- /dev/null
@@ -0,0 +1,34 @@
+#define FE_INVALID    1
+#define __FE_DENORM   2
+#define FE_DIVBYZERO  4
+#define FE_OVERFLOW   8
+#define FE_UNDERFLOW  16
+#define FE_INEXACT    32
+
+#define FE_ALL_EXCEPT 63
+
+#define FE_TONEAREST  0
+#define FE_DOWNWARD   0x400
+#define FE_UPWARD     0x800
+#define FE_TOWARDZERO 0xc00
+
+typedef unsigned short fexcept_t;
+
+typedef struct {
+       unsigned short __control_word;
+       unsigned short __unused1;
+       unsigned short __status_word;
+       unsigned short __unused2;
+       unsigned short __tags;
+       unsigned short __unused3;
+       unsigned int __eip;
+       unsigned short __cs_selector;
+       unsigned int __opcode:11;
+       unsigned int __unused4:5;
+       unsigned int __data_offset;
+       unsigned short __data_selector;
+       unsigned short __unused5;
+       unsigned int __mxcsr;
+} fenv_t;
+
+#define FE_DFL_ENV      ((const fenv_t *) -1)
diff --git a/arch/i386/bits/float.h b/arch/i386/bits/float.h
new file mode 100644 (file)
index 0000000..044b516
--- /dev/null
@@ -0,0 +1,14 @@
+#define FLT_ROUNDS 1
+#define FLT_EVAL_METHOD 2
+
+#define LDBL_MIN     3.3621031431120935063e-4932L
+#define LDBL_MAX     1.1897314953572317650e+4932L
+#define LDBL_EPSILON 1.0842021724855044340e-19L
+
+#define LDBL_MANT_DIG 64
+#define LDBL_MIN_EXP (-16381)
+#define LDBL_MAX_EXP 16384
+
+#define LDBL_DIG 18
+#define LDBL_MIN_10_EXP (-4931)
+#define LDBL_MAX_10_EXP 4932
diff --git a/arch/i386/bits/ioctl.h b/arch/i386/bits/ioctl.h
new file mode 100644 (file)
index 0000000..336c71c
--- /dev/null
@@ -0,0 +1,197 @@
+#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
+#define _IOC_NONE  0U
+#define _IOC_WRITE 1U
+#define _IOC_READ  2U
+
+#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(3,(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/i386/bits/ipc.h b/arch/i386/bits/ipc.h
new file mode 100644 (file)
index 0000000..51ad442
--- /dev/null
@@ -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/i386/bits/limits.h b/arch/i386/bits/limits.h
new file mode 100644 (file)
index 0000000..e19461d
--- /dev/null
@@ -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/i386/bits/mman.h b/arch/i386/bits/mman.h
new file mode 100644 (file)
index 0000000..302044e
--- /dev/null
@@ -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/i386/bits/msg.h b/arch/i386/bits/msg.h
new file mode 100644 (file)
index 0000000..3db8576
--- /dev/null
@@ -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/i386/bits/posix.h b/arch/i386/bits/posix.h
new file mode 100644 (file)
index 0000000..30a3871
--- /dev/null
@@ -0,0 +1,2 @@
+#define _POSIX_V6_ILP32_OFFBIG  1
+#define _POSIX_V7_ILP32_OFFBIG  1
diff --git a/arch/i386/bits/reg.h b/arch/i386/bits/reg.h
new file mode 100644 (file)
index 0000000..8bc2582
--- /dev/null
@@ -0,0 +1,19 @@
+#undef __WORDSIZE
+#define __WORDSIZE 32
+#define EBX 0
+#define ECX 1
+#define EDX 2
+#define ESI 3
+#define EDI 4
+#define EBP 5
+#define EAX 6
+#define DS 7
+#define ES 8
+#define FS 9
+#define GS 10
+#define ORIG_EAX 11
+#define EIP 12
+#define CS 13
+#define EFL 14
+#define UESP 15
+#define SS 16
diff --git a/arch/i386/bits/setjmp.h b/arch/i386/bits/setjmp.h
new file mode 100644 (file)
index 0000000..b6595bd
--- /dev/null
@@ -0,0 +1 @@
+typedef unsigned long jmp_buf [7];
diff --git a/arch/i386/bits/shm.h b/arch/i386/bits/shm.h
new file mode 100644 (file)
index 0000000..8807c4f
--- /dev/null
@@ -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/i386/bits/signal.h b/arch/i386/bits/signal.h
new file mode 100644 (file)
index 0000000..6a55f94
--- /dev/null
@@ -0,0 +1,82 @@
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+
+struct __fpstate {
+       unsigned long __x[7];
+       unsigned char __y[80];
+       unsigned long __z;
+};
+
+typedef struct {
+       unsigned long __gregs[19];
+       void *__fpregs;
+       unsigned long __oldmask, __cr2;
+} 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;
+       struct __fpstate __fpregs_mem;
+} 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 short gs, __gsh, fs, __fsh, es, __esh, ds, __dsh;
+       unsigned long edi, esi, ebp, esp, ebx, edx, ecx, eax;
+       unsigned long trapno, err, eip;
+       unsigned short cs, __csh;
+       unsigned long eflags, esp_at_signal;
+       unsigned short ss, __ssh;
+       struct __fpstate *fpstate;
+       unsigned long oldmask, cr2;
+};
+#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
diff --git a/arch/i386/bits/socket.h b/arch/i386/bits/socket.h
new file mode 100644 (file)
index 0000000..c464ed9
--- /dev/null
@@ -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/i386/bits/stat.h b/arch/i386/bits/stat.h
new file mode 100644 (file)
index 0000000..bb9314a
--- /dev/null
@@ -0,0 +1,22 @@
+/* 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;
+};
diff --git a/arch/i386/bits/statfs.h b/arch/i386/bits/statfs.h
new file mode 100644 (file)
index 0000000..f103f4e
--- /dev/null
@@ -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/i386/bits/stdarg.h b/arch/i386/bits/stdarg.h
new file mode 100644 (file)
index 0000000..6b1830d
--- /dev/null
@@ -0,0 +1,9 @@
+#define __VA_ALIGNED_SIZE(x) ((sizeof(x) + sizeof(int) - 1) & ~(sizeof(int) - 1))
+
+#define va_start(ap, last) ((ap) = (void *)(((char *)&(last)) + __VA_ALIGNED_SIZE(last)))
+#define va_end(ap) ((void)0)
+#define va_copy(dest, src) ((dest) = (src))
+
+#define va_arg(ap, type) \
+       ( ((ap) = (va_list)((char *)(ap) + __VA_ALIGNED_SIZE(type))), \
+       *(type *)(void *)((char *)(ap) - __VA_ALIGNED_SIZE(type)) )
diff --git a/arch/i386/bits/stdint.h b/arch/i386/bits/stdint.h
new file mode 100644 (file)
index 0000000..8e21a8c
--- /dev/null
@@ -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/i386/bits/syscall.h b/arch/i386/bits/syscall.h
new file mode 100644 (file)
index 0000000..1147e9f
--- /dev/null
@@ -0,0 +1,957 @@
+#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) __SYSCALL_LL_E((x))
+
+static inline long __syscall0(long __n)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n) : "memory");
+       return __ret;
+}
+
+#ifndef __PIC__
+
+static inline long __syscall1(long __n, long __a1)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n), "b"(__a1) : "memory");
+       return __ret;
+}
+
+static inline long __syscall2(long __n, long __a1, long __a2)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n), "b"(__a1), "c"(__a2) : "memory");
+       return __ret;
+}
+
+static inline long __syscall3(long __n, long __a1, long __a2, long __a3)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n), "b"(__a1), "c"(__a2), "d"(__a3) : "memory");
+       return __ret;
+}
+
+static inline long __syscall4(long __n, long __a1, long __a2, long __a3, long __a4)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n), "b"(__a1), "c"(__a2), "d"(__a3), "S"(__a4) : "memory");
+       return __ret;
+}
+
+static inline long __syscall5(long __n, long __a1, long __a2, long __a3, long __a4, long __a5)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("int $128" : "=a"(__ret) : "a"(__n), "b"(__a1), "c"(__a2), "d"(__a3), "S"(__a4), "D"(__a5) : "memory");
+       return __ret;
+}
+
+static inline long __syscall6(long __n, long __a1, long __a2, long __a3, long __a4, long __a5, long __a6)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("pushl %7 ; pushl %%ebp ; mov 4(%%esp),%%ebp ; int $128 ; popl %%ebp ; popl %%ecx"
+               : "=a"(__ret) : "a"(__n), "b"(__a1), "c"(__a2), "d"(__a3), "S"(__a4), "D"(__a5), "g"(__a6) : "memory");
+       return __ret;
+}
+
+#else
+
+static inline long __syscall1(long __n, long __a1)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx"
+               : "=a"(__ret) : "a"(__n), "r"(__a1) : "memory");
+       return __ret;
+}
+
+static inline long __syscall2(long __n, long __a1, long __a2)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx"
+               : "=a"(__ret) : "a"(__n), "r"(__a1), "c"(__a2) : "memory");
+       return __ret;
+}
+
+static inline long __syscall3(long __n, long __a1, long __a2, long __a3)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx"
+               : "=a"(__ret) : "a"(__n), "r"(__a1), "c"(__a2), "d"(__a3) : "memory");
+       return __ret;
+}
+
+static inline long __syscall4(long __n, long __a1, long __a2, long __a3, long __a4)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("xchg %2,%%ebx ; int $128 ; xchg %2,%%ebx"
+               : "=a"(__ret) : "a"(__n), "r"(__a1), "c"(__a2), "d"(__a3), "S"(__a4) : "memory");
+       return __ret;
+}
+
+#if 0
+static inline long __syscall5(long __n, long __a1, long __a2, long __a3, long __a4, long __a5)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("pushl %2 ; pushl %%ebx ; mov 4(%%esp),%%ebx ; int $128 ; popl %%ebx ; popl %%ecx"
+               : "=a"(__ret) : "a"(__n), "g"(__a1), "c"(__a2), "d"(__a3), "S"(__a4), "D"(__a5) : "memory");
+       return __ret;
+}
+#else
+static inline long __syscall5(long __n, long __a1, long __a2, long __a3, long __a4, long __a5)
+{
+       return (__syscall)(__n, __a1, __a2, __a3, __a4, __a5);
+}
+#endif
+
+static inline long __syscall6(long __n, long __a1, long __a2, long __a3, long __a4, long __a5, long __a6)
+{
+       return (__syscall)(__n, __a1, __a2, __a3, __a4, __a5, __a6);
+}
+
+#endif
+
+
+#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 }))
+
+#define __NR_restart_syscall      0
+#define __NR_exit                1
+#define __NR_fork                2
+#define __NR_read                3
+#define __NR_write               4
+#define __NR_open                5
+#define __NR_close               6
+#define __NR_waitpid             7
+#define __NR_creat               8
+#define __NR_link                9
+#define __NR_unlink             10
+#define __NR_execve             11
+#define __NR_chdir              12
+#define __NR_time               13
+#define __NR_mknod              14
+#define __NR_chmod              15
+#define __NR_lchown             16
+#define __NR_break              17
+#define __NR_oldstat            18
+#define __NR_lseek              19
+#define __NR_getpid             20
+#define __NR_mount              21
+#define __NR_umount             22
+#define __NR_setuid             23
+#define __NR_getuid             24
+#define __NR_stime              25
+#define __NR_ptrace             26
+#define __NR_alarm              27
+#define __NR_oldfstat           28
+#define __NR_pause              29
+#define __NR_utime              30
+#define __NR_stty               31
+#define __NR_gtty               32
+#define __NR_access             33
+#define __NR_nice               34
+#define __NR_ftime              35
+#define __NR_sync               36
+#define __NR_kill               37
+#define __NR_rename             38
+#define __NR_mkdir              39
+#define __NR_rmdir              40
+#define __NR_dup                41
+#define __NR_pipe               42
+#define __NR_times              43
+#define __NR_prof               44
+#define __NR_brk                45
+#define __NR_setgid             46
+#define __NR_getgid             47
+#define __NR_signal             48
+#define __NR_geteuid            49
+#define __NR_getegid            50
+#define __NR_acct               51
+#define __NR_umount2            52
+#define __NR_lock               53
+#define __NR_ioctl              54
+#define __NR_fcntl              55
+#define __NR_mpx                56
+#define __NR_setpgid            57
+#define __NR_ulimit             58
+#define __NR_oldolduname        59
+#define __NR_umask              60
+#define __NR_chroot             61
+#define __NR_ustat              62
+#define __NR_dup2               63
+#define __NR_getppid            64
+#define __NR_getpgrp            65
+#define __NR_setsid             66
+#define __NR_sigaction          67
+#define __NR_sgetmask           68
+#define __NR_ssetmask           69
+#define __NR_setreuid           70
+#define __NR_setregid           71
+#define __NR_sigsuspend                 72
+#define __NR_sigpending                 73
+#define __NR_sethostname        74
+#define __NR_setrlimit          75
+#define __NR_getrlimit          76   /* Back compatible 2Gig limited rlimit */
+#define __NR_getrusage          77
+#define __NR_gettimeofday       78
+#define __NR_settimeofday       79
+#define __NR_getgroups          80
+#define __NR_setgroups          81
+#define __NR_select             82
+#define __NR_symlink            83
+#define __NR_oldlstat           84
+#define __NR_readlink           85
+#define __NR_uselib             86
+#define __NR_swapon             87
+#define __NR_reboot             88
+#define __NR_readdir            89
+#define __NR_mmap               90
+#define __NR_munmap             91
+#define __NR_truncate           92
+#define __NR_ftruncate          93
+#define __NR_fchmod             94
+#define __NR_fchown             95
+#define __NR_getpriority        96
+#define __NR_setpriority        97
+#define __NR_profil             98
+#define __NR_statfs            99
+#define __NR_fstatfs           100
+#define __NR_ioperm            101
+#define __NR_socketcall                102
+#define __NR_syslog            103
+#define __NR_setitimer         104
+#define __NR_getitimer         105
+#define __NR_stat              106
+#define __NR_lstat             107
+#define __NR_fstat             108
+#define __NR_olduname          109
+#define __NR_iopl              110
+#define __NR_vhangup           111
+#define __NR_idle              112
+#define __NR_vm86old           113
+#define __NR_wait4             114
+#define __NR_swapoff           115
+#define __NR_sysinfo           116
+#define __NR_ipc               117
+#define __NR_fsync             118
+#define __NR_sigreturn         119
+#define __NR_clone             120
+#define __NR_setdomainname     121
+#define __NR_uname             122
+#define __NR_modify_ldt                123
+#define __NR_adjtimex          124
+#define __NR_mprotect          125
+#define __NR_sigprocmask       126
+#define __NR_create_module     127
+#define __NR_init_module       128
+#define __NR_delete_module     129
+#define __NR_get_kernel_syms   130
+#define __NR_quotactl          131
+#define __NR_getpgid           132
+#define __NR_fchdir            133
+#define __NR_bdflush           134
+#define __NR_sysfs             135
+#define __NR_personality       136
+#define __NR_afs_syscall       137
+#define __NR_setfsuid          138
+#define __NR_setfsgid          139
+#define __NR__llseek           140
+#define __NR_getdents          141
+#define __NR__newselect                142
+#define __NR_flock             143
+#define __NR_msync             144
+#define __NR_readv             145
+#define __NR_writev            146
+#define __NR_getsid            147
+#define __NR_fdatasync         148
+#define __NR__sysctl           149
+#define __NR_mlock             150
+#define __NR_munlock           151
+#define __NR_mlockall          152
+#define __NR_munlockall                153
+#define __NR_sched_setparam            154
+#define __NR_sched_getparam            155
+#define __NR_sched_setscheduler                156
+#define __NR_sched_getscheduler                157
+#define __NR_sched_yield               158
+#define __NR_sched_get_priority_max    159
+#define __NR_sched_get_priority_min    160
+#define __NR_sched_rr_get_interval     161
+#define __NR_nanosleep         162
+#define __NR_mremap            163
+#define __NR_setresuid         164
+#define __NR_getresuid         165
+#define __NR_vm86              166
+#define __NR_query_module      167
+#define __NR_poll              168
+#define __NR_nfsservctl                169
+#define __NR_setresgid         170
+#define __NR_getresgid         171
+#define __NR_prctl              172
+#define __NR_rt_sigreturn      173
+#define __NR_rt_sigaction      174
+#define __NR_rt_sigprocmask    175
+#define __NR_rt_sigpending     176
+#define __NR_rt_sigtimedwait   177
+#define __NR_rt_sigqueueinfo   178
+#define __NR_rt_sigsuspend     179
+#define __NR_pread64           180
+#define __NR_pwrite64          181
+#define __NR_chown             182
+#define __NR_getcwd            183
+#define __NR_capget            184
+#define __NR_capset            185
+#define __NR_sigaltstack       186
+#define __NR_sendfile          187
+#define __NR_getpmsg           188
+#define __NR_putpmsg           189
+#define __NR_vfork             190
+#define __NR_ugetrlimit                191
+#define __NR_mmap2             192
+#define __NR_truncate64                193
+#define __NR_ftruncate64       194
+#define __NR_stat64            195
+#define __NR_lstat64           196
+#define __NR_fstat64           197
+#define __NR_lchown32          198
+#define __NR_getuid32          199
+#define __NR_getgid32          200
+#define __NR_geteuid32         201
+#define __NR_getegid32         202
+#define __NR_setreuid32                203
+#define __NR_setregid32                204
+#define __NR_getgroups32       205
+#define __NR_setgroups32       206
+#define __NR_fchown32          207
+#define __NR_setresuid32       208
+#define __NR_getresuid32       209
+#define __NR_setresgid32       210
+#define __NR_getresgid32       211
+#define __NR_chown32           212
+#define __NR_setuid32          213
+#define __NR_setgid32          214
+#define __NR_setfsuid32                215
+#define __NR_setfsgid32                216
+#define __NR_pivot_root                217
+#define __NR_mincore           218
+#define __NR_madvise           219
+#define __NR_madvise1          219
+#define __NR_getdents64                220
+#define __NR_fcntl64           221
+/* 223 is unused */
+#define __NR_gettid            224
+#define __NR_readahead         225
+#define __NR_setxattr          226
+#define __NR_lsetxattr         227
+#define __NR_fsetxattr         228
+#define __NR_getxattr          229
+#define __NR_lgetxattr         230
+#define __NR_fgetxattr         231
+#define __NR_listxattr         232
+#define __NR_llistxattr                233
+#define __NR_flistxattr                234
+#define __NR_removexattr       235
+#define __NR_lremovexattr      236
+#define __NR_fremovexattr      237
+#define __NR_tkill             238
+#define __NR_sendfile64                239
+#define __NR_futex             240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_set_thread_area   243
+#define __NR_get_thread_area   244
+#define __NR_io_setup          245
+#define __NR_io_destroy                246
+#define __NR_io_getevents      247
+#define __NR_io_submit         248
+#define __NR_io_cancel         249
+#define __NR_fadvise64         250
+/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
+#define __NR_exit_group                252
+#define __NR_lookup_dcookie    253
+#define __NR_epoll_create      254
+#define __NR_epoll_ctl         255
+#define __NR_epoll_wait                256
+#define __NR_remap_file_pages  257
+#define __NR_set_tid_address   258
+#define __NR_timer_create      259
+#define __NR_timer_settime     (__NR_timer_create+1)
+#define __NR_timer_gettime     (__NR_timer_create+2)
+#define __NR_timer_getoverrun  (__NR_timer_create+3)
+#define __NR_timer_delete      (__NR_timer_create+4)
+#define __NR_clock_settime     (__NR_timer_create+5)
+#define __NR_clock_gettime     (__NR_timer_create+6)
+#define __NR_clock_getres      (__NR_timer_create+7)
+#define __NR_clock_nanosleep   (__NR_timer_create+8)
+#define __NR_statfs64          268
+#define __NR_fstatfs64         269
+#define __NR_tgkill            270
+#define __NR_utimes            271
+#define __NR_fadvise64_64      272
+#define __NR_vserver           273
+#define __NR_mbind             274
+#define __NR_get_mempolicy     275
+#define __NR_set_mempolicy     276
+#define __NR_mq_open           277
+#define __NR_mq_unlink         (__NR_mq_open+1)
+#define __NR_mq_timedsend      (__NR_mq_open+2)
+#define __NR_mq_timedreceive   (__NR_mq_open+3)
+#define __NR_mq_notify         (__NR_mq_open+4)
+#define __NR_mq_getsetattr     (__NR_mq_open+5)
+#define __NR_kexec_load                283
+#define __NR_waitid            284
+/* #define __NR_sys_setaltroot 285 */
+#define __NR_add_key           286
+#define __NR_request_key       287
+#define __NR_keyctl            288
+#define __NR_ioprio_set                289
+#define __NR_ioprio_get                290
+#define __NR_inotify_init      291
+#define __NR_inotify_add_watch 292
+#define __NR_inotify_rm_watch  293
+#define __NR_migrate_pages     294
+#define __NR_openat            295
+#define __NR_mkdirat           296
+#define __NR_mknodat           297
+#define __NR_fchownat          298
+#define __NR_futimesat         299
+#define __NR_fstatat64         300
+#define __NR_unlinkat          301
+#define __NR_renameat          302
+#define __NR_linkat            303
+#define __NR_symlinkat         304
+#define __NR_readlinkat                305
+#define __NR_fchmodat          306
+#define __NR_faccessat         307
+#define __NR_pselect6          308
+#define __NR_ppoll             309
+#define __NR_unshare           310
+#define __NR_set_robust_list   311
+#define __NR_get_robust_list   312
+#define __NR_splice            313
+#define __NR_sync_file_range   314
+#define __NR_tee               315
+#define __NR_vmsplice          316
+#define __NR_move_pages                317
+#define __NR_getcpu            318
+#define __NR_epoll_pwait       319
+#define __NR_utimensat         320
+#define __NR_signalfd          321
+#define __NR_timerfd_create    322
+#define __NR_eventfd           323
+#define __NR_fallocate         324
+#define __NR_timerfd_settime   325
+#define __NR_timerfd_gettime   326
+#define __NR_signalfd4         327
+#define __NR_eventfd2          328
+#define __NR_epoll_create1     329
+#define __NR_dup3              330
+#define __NR_pipe2             331
+#define __NR_inotify_init1     332
+#define __NR_preadv            333
+#define __NR_pwritev           334
+#define __NR_prlimit64         340
+
+/* fixup legacy 16-bit junk */
+#undef __NR_lchown
+#undef __NR_getuid
+#undef __NR_getgid
+#undef __NR_geteuid
+#undef __NR_getegid
+#undef __NR_setreuid
+#undef __NR_setregid
+#undef __NR_getgroups
+#undef __NR_setgroups
+#undef __NR_fchown
+#undef __NR_setresuid
+#undef __NR_getresuid
+#undef __NR_setresgid
+#undef __NR_getresgid
+#undef __NR_chown
+#undef __NR_setuid
+#undef __NR_setgid
+#undef __NR_setfsuid
+#undef __NR_setfsgid
+#define __NR_lchown __NR_lchown32
+#define __NR_getuid __NR_getuid32
+#define __NR_getgid __NR_getgid32
+#define __NR_geteuid __NR_geteuid32
+#define __NR_getegid __NR_getegid32
+#define __NR_setreuid __NR_setreuid32
+#define __NR_setregid __NR_setregid32
+#define __NR_getgroups __NR_getgroups32
+#define __NR_setgroups __NR_setgroups32
+#define __NR_fchown __NR_fchown32
+#define __NR_setresuid __NR_setresuid32
+#define __NR_getresuid __NR_getresuid32
+#define __NR_setresgid __NR_setresgid32
+#define __NR_getresgid __NR_getresgid32
+#define __NR_chown __NR_chown32
+#define __NR_setuid __NR_setuid32
+#define __NR_setgid __NR_setgid32
+#define __NR_setfsuid __NR_setfsuid32
+#define __NR_setfsgid __NR_setfsgid32
+
+
+/* fixup legacy 32-bit-vs-lfs64 junk */
+#undef __NR_fcntl
+#undef __NR_getdents
+#undef __NR_ftruncate
+#undef __NR_truncate
+#undef __NR_stat
+#undef __NR_fstat
+#undef __NR_lstat
+#undef __NR_statfs
+#undef __NR_fstatfs
+#define __NR_fcntl __NR_fcntl64
+#define __NR_getdents __NR_getdents64
+#define __NR_ftruncate __NR_ftruncate64
+#define __NR_truncate __NR_truncate64
+#define __NR_stat __NR_stat64
+#define __NR_fstat __NR_fstat64
+#define __NR_lstat __NR_lstat64
+#define __NR_statfs __NR_statfs64
+#define __NR_fstatfs __NR_fstatfs64
+#define __NR_fstatat __NR_fstatat64
+#define __NR_pread __NR_pread64
+#define __NR_pwrite __NR_pwrite64
+
+#define __NR_fadvise __NR_fadvise64_64
+
+#undef __NR_getrlimit
+#define __NR_getrlimit __NR_ugetrlimit
+
+#undef __NR_select
+#define __NR_select __NR__newselect
+
+
+/* Repeated with SYS_ prefix */
+
+#define SYS_restart_syscall      0
+#define SYS_exit                 1
+#define SYS_fork                 2
+#define SYS_read                 3
+#define SYS_write                4
+#define SYS_open                 5
+#define SYS_close                6
+#define SYS_waitpid              7
+#define SYS_creat                8
+#define SYS_link                 9
+#define SYS_unlink              10
+#define SYS_execve              11
+#define SYS_chdir               12
+#define SYS_time                13
+#define SYS_mknod               14
+#define SYS_chmod               15
+#define SYS_lchown              16
+#define SYS_break               17
+#define SYS_oldstat             18
+#define SYS_lseek               19
+#define SYS_getpid              20
+#define SYS_mount               21
+#define SYS_umount              22
+#define SYS_setuid              23
+#define SYS_getuid              24
+#define SYS_stime               25
+#define SYS_ptrace              26
+#define SYS_alarm               27
+#define SYS_oldfstat            28
+#define SYS_pause               29
+#define SYS_utime               30
+#define SYS_stty                31
+#define SYS_gtty                32
+#define SYS_access              33
+#define SYS_nice                34
+#define SYS_ftime               35
+#define SYS_sync                36
+#define SYS_kill                37
+#define SYS_rename              38
+#define SYS_mkdir               39
+#define SYS_rmdir               40
+#define SYS_dup                 41
+#define SYS_pipe                42
+#define SYS_times               43
+#define SYS_prof                44
+#define SYS_brk                 45
+#define SYS_setgid              46
+#define SYS_getgid              47
+#define SYS_signal              48
+#define SYS_geteuid             49
+#define SYS_getegid             50
+#define SYS_acct                51
+#define SYS_umount2             52
+#define SYS_lock                53
+#define SYS_ioctl               54
+#define SYS_fcntl               55
+#define SYS_mpx                 56
+#define SYS_setpgid             57
+#define SYS_ulimit              58
+#define SYS_oldolduname         59
+#define SYS_umask               60
+#define SYS_chroot              61
+#define SYS_ustat               62
+#define SYS_dup2                63
+#define SYS_getppid             64
+#define SYS_getpgrp             65
+#define SYS_setsid              66
+#define SYS_sigaction           67
+#define SYS_sgetmask            68
+#define SYS_ssetmask            69
+#define SYS_setreuid            70
+#define SYS_setregid            71
+#define SYS_sigsuspend          72
+#define SYS_sigpending          73
+#define SYS_sethostname         74
+#define SYS_setrlimit           75
+#define SYS_getrlimit           76   /* Back compatible 2Gig limited rlimit */
+#define SYS_getrusage           77
+#define SYS_gettimeofday        78
+#define SYS_settimeofday        79
+#define SYS_getgroups           80
+#define SYS_setgroups           81
+#define SYS_select              82
+#define SYS_symlink             83
+#define SYS_oldlstat            84
+#define SYS_readlink            85
+#define SYS_uselib              86
+#define SYS_swapon              87
+#define SYS_reboot              88
+#define SYS_readdir             89
+#define SYS_mmap                90
+#define SYS_munmap              91
+#define SYS_truncate            92
+#define SYS_ftruncate           93
+#define SYS_fchmod              94
+#define SYS_fchown              95
+#define SYS_getpriority         96
+#define SYS_setpriority         97
+#define SYS_profil              98
+#define SYS_statfs             99
+#define SYS_fstatfs            100
+#define SYS_ioperm             101
+#define SYS_socketcall         102
+#define SYS_syslog             103
+#define SYS_setitimer          104
+#define SYS_getitimer          105
+#define SYS_stat               106
+#define SYS_lstat              107
+#define SYS_fstat              108
+#define SYS_olduname           109
+#define SYS_iopl               110
+#define SYS_vhangup            111
+#define SYS_idle               112
+#define SYS_vm86old            113
+#define SYS_wait4              114
+#define SYS_swapoff            115
+#define SYS_sysinfo            116
+#define SYS_ipc                117
+#define SYS_fsync              118
+#define SYS_sigreturn          119
+#define SYS_clone              120
+#define SYS_setdomainname      121
+#define SYS_uname              122
+#define SYS_modify_ldt         123
+#define SYS_adjtimex           124
+#define SYS_mprotect           125
+#define SYS_sigprocmask        126
+#define SYS_create_module      127
+#define SYS_init_module        128
+#define SYS_delete_module      129
+#define SYS_get_kernel_syms    130
+#define SYS_quotactl           131
+#define SYS_getpgid            132
+#define SYS_fchdir             133
+#define SYS_bdflush            134
+#define SYS_sysfs              135
+#define SYS_personality        136
+#define SYS_afs_syscall        137
+#define SYS_setfsuid           138
+#define SYS_setfsgid           139
+#define SYS__llseek            140
+#define SYS_getdents           141
+#define SYS__newselect         142
+#define SYS_flock              143
+#define SYS_msync              144
+#define SYS_readv              145
+#define SYS_writev             146
+#define SYS_getsid             147
+#define SYS_fdatasync          148
+#define SYS__sysctl            149
+#define SYS_mlock              150
+#define SYS_munlock            151
+#define SYS_mlockall           152
+#define SYS_munlockall         153
+#define SYS_sched_setparam             154
+#define SYS_sched_getparam             155
+#define SYS_sched_setscheduler         156
+#define SYS_sched_getscheduler         157
+#define SYS_sched_yield                158
+#define SYS_sched_get_priority_max     159
+#define SYS_sched_get_priority_min     160
+#define SYS_sched_rr_get_interval      161
+#define SYS_nanosleep          162
+#define SYS_mremap             163
+#define SYS_setresuid          164
+#define SYS_getresuid          165
+#define SYS_vm86               166
+#define SYS_query_module       167
+#define SYS_poll               168
+#define SYS_nfsservctl         169
+#define SYS_setresgid          170
+#define SYS_getresgid          171
+#define SYS_prctl              172
+#define SYS_rt_sigreturn       173
+#define SYS_rt_sigaction       174
+#define SYS_rt_sigprocmask     175
+#define SYS_rt_sigpending      176
+#define SYS_rt_sigtimedwait    177
+#define SYS_rt_sigqueueinfo    178
+#define SYS_rt_sigsuspend      179
+#define SYS_pread64            180
+#define SYS_pwrite64           181
+#define SYS_chown              182
+#define SYS_getcwd             183
+#define SYS_capget             184
+#define SYS_capset             185
+#define SYS_sigaltstack        186
+#define SYS_sendfile           187
+#define SYS_getpmsg            188
+#define SYS_putpmsg            189
+#define SYS_vfork              190
+#define SYS_ugetrlimit         191
+#define SYS_mmap2              192
+#define SYS_truncate64         193
+#define SYS_ftruncate64        194
+#define SYS_stat64             195
+#define SYS_lstat64            196
+#define SYS_fstat64            197
+#define SYS_lchown32           198
+#define SYS_getuid32           199
+#define SYS_getgid32           200
+#define SYS_geteuid32          201
+#define SYS_getegid32          202
+#define SYS_setreuid32         203
+#define SYS_setregid32         204
+#define SYS_getgroups32        205
+#define SYS_setgroups32        206
+#define SYS_fchown32           207
+#define SYS_setresuid32        208
+#define SYS_getresuid32        209
+#define SYS_setresgid32        210
+#define SYS_getresgid32        211
+#define SYS_chown32            212
+#define SYS_setuid32           213
+#define SYS_setgid32           214
+#define SYS_setfsuid32         215
+#define SYS_setfsgid32         216
+#define SYS_pivot_root         217
+#define SYS_mincore            218
+#define SYS_madvise            219
+#define SYS_madvise1           219
+#define SYS_getdents64         220
+#define SYS_fcntl64            221
+/* 223 is unused */
+#define SYS_gettid             224
+#define SYS_readahead          225
+#define SYS_setxattr           226
+#define SYS_lsetxattr          227
+#define SYS_fsetxattr          228
+#define SYS_getxattr           229
+#define SYS_lgetxattr          230
+#define SYS_fgetxattr          231
+#define SYS_listxattr          232
+#define SYS_llistxattr         233
+#define SYS_flistxattr         234
+#define SYS_removexattr        235
+#define SYS_lremovexattr       236
+#define SYS_fremovexattr       237
+#define SYS_tkill              238
+#define SYS_sendfile64         239
+#define SYS_futex              240
+#define SYS_sched_setaffinity  241
+#define SYS_sched_getaffinity  242
+#define SYS_set_thread_area    243
+#define SYS_get_thread_area    244
+#define SYS_io_setup           245
+#define SYS_io_destroy         246
+#define SYS_io_getevents       247
+#define SYS_io_submit          248
+#define SYS_io_cancel          249
+#define SYS_fadvise64          250
+/* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
+#define SYS_exit_group         252
+#define SYS_lookup_dcookie     253
+#define SYS_epoll_create       254
+#define SYS_epoll_ctl          255
+#define SYS_epoll_wait         256
+#define SYS_remap_file_pages   257
+#define SYS_set_tid_address    258
+#define SYS_timer_create       259
+#define SYS_timer_settime      (SYS_timer_create+1)
+#define SYS_timer_gettime      (SYS_timer_create+2)
+#define SYS_timer_getoverrun   (SYS_timer_create+3)
+#define SYS_timer_delete       (SYS_timer_create+4)
+#define SYS_clock_settime      (SYS_timer_create+5)
+#define SYS_clock_gettime      (SYS_timer_create+6)
+#define SYS_clock_getres       (SYS_timer_create+7)
+#define SYS_clock_nanosleep    (SYS_timer_create+8)
+#define SYS_statfs64           268
+#define SYS_fstatfs64          269
+#define SYS_tgkill             270
+#define SYS_utimes             271
+#define SYS_fadvise64_64       272
+#define SYS_vserver            273
+#define SYS_mbind              274
+#define SYS_get_mempolicy      275
+#define SYS_set_mempolicy      276
+#define SYS_mq_open            277
+#define SYS_mq_unlink          (SYS_mq_open+1)
+#define SYS_mq_timedsend       (SYS_mq_open+2)
+#define SYS_mq_timedreceive    (SYS_mq_open+3)
+#define SYS_mq_notify          (SYS_mq_open+4)
+#define SYS_mq_getsetattr      (SYS_mq_open+5)
+#define SYS_kexec_load         283
+#define SYS_waitid             284
+/* #define SYS_sys_setaltroot  285 */
+#define SYS_add_key            286
+#define SYS_request_key        287
+#define SYS_keyctl             288
+#define SYS_ioprio_set         289
+#define SYS_ioprio_get         290
+#define SYS_inotify_init       291
+#define SYS_inotify_add_watch  292
+#define SYS_inotify_rm_watch   293
+#define SYS_migrate_pages      294
+#define SYS_openat             295
+#define SYS_mkdirat            296
+#define SYS_mknodat            297
+#define SYS_fchownat           298
+#define SYS_futimesat          299
+#define SYS_fstatat64          300
+#define SYS_unlinkat           301
+#define SYS_renameat           302
+#define SYS_linkat             303
+#define SYS_symlinkat          304
+#define SYS_readlinkat         305
+#define SYS_fchmodat           306
+#define SYS_faccessat          307
+#define SYS_pselect6           308
+#define SYS_ppoll              309
+#define SYS_unshare            310
+#define SYS_set_robust_list    311
+#define SYS_get_robust_list    312
+#define SYS_splice             313
+#define SYS_sync_file_range    314
+#define SYS_tee                315
+#define SYS_vmsplice           316
+#define SYS_move_pages         317
+#define SYS_getcpu             318
+#define SYS_epoll_pwait        319
+#define SYS_utimensat          320
+#define SYS_signalfd           321
+#define SYS_timerfd_create     322
+#define SYS_eventfd            323
+#define SYS_fallocate          324
+#define SYS_timerfd_settime    325
+#define SYS_timerfd_gettime    326
+#define SYS_signalfd4          327
+#define SYS_eventfd2           328
+#define SYS_epoll_create1      329
+#define SYS_dup3               330
+#define SYS_pipe2              331
+#define SYS_inotify_init1      332
+#define SYS_preadv             333
+#define SYS_pwritev            334
+#define SYS_prlimit64          340
+
+/* fixup legacy 16-bit junk */
+#undef SYS_lchown
+#undef SYS_getuid
+#undef SYS_getgid
+#undef SYS_geteuid
+#undef SYS_getegid
+#undef SYS_setreuid
+#undef SYS_setregid
+#undef SYS_getgroups
+#undef SYS_setgroups
+#undef SYS_fchown
+#undef SYS_setresuid
+#undef SYS_getresuid
+#undef SYS_setresgid
+#undef SYS_getresgid
+#undef SYS_chown
+#undef SYS_setuid
+#undef SYS_setgid
+#undef SYS_setfsuid
+#undef SYS_setfsgid
+#define SYS_lchown SYS_lchown32
+#define SYS_getuid SYS_getuid32
+#define SYS_getgid SYS_getgid32
+#define SYS_geteuid SYS_geteuid32
+#define SYS_getegid SYS_getegid32
+#define SYS_setreuid SYS_setreuid32
+#define SYS_setregid SYS_setregid32
+#define SYS_getgroups SYS_getgroups32
+#define SYS_setgroups SYS_setgroups32
+#define SYS_fchown SYS_fchown32
+#define SYS_setresuid SYS_setresuid32
+#define SYS_getresuid SYS_getresuid32
+#define SYS_setresgid SYS_setresgid32
+#define SYS_getresgid SYS_getresgid32
+#define SYS_chown SYS_chown32
+#define SYS_setuid SYS_setuid32
+#define SYS_setgid SYS_setgid32
+#define SYS_setfsuid SYS_setfsuid32
+#define SYS_setfsgid SYS_setfsgid32
+
+
+/* fixup legacy 32-bit-vs-lfs64 junk */
+#undef SYS_fcntl
+#undef SYS_getdents
+#undef SYS_ftruncate
+#undef SYS_truncate
+#undef SYS_stat
+#undef SYS_fstat
+#undef SYS_lstat
+#undef SYS_statfs
+#undef SYS_fstatfs
+#define SYS_fcntl SYS_fcntl64
+#define SYS_getdents SYS_getdents64
+#define SYS_ftruncate SYS_ftruncate64
+#define SYS_truncate SYS_truncate64
+#define SYS_stat SYS_stat64
+#define SYS_fstat SYS_fstat64
+#define SYS_lstat SYS_lstat64
+#define SYS_statfs SYS_statfs64
+#define SYS_fstatfs SYS_fstatfs64
+#define SYS_fstatat SYS_fstatat64
+#define SYS_pread SYS_pread64
+#define SYS_pwrite SYS_pwrite64
+
+#define SYS_fadvise SYS_fadvise64_64
+
+#undef SYS_getrlimit
+#define SYS_getrlimit SYS_ugetrlimit
+
+#undef SYS_select
+#define SYS_select SYS__newselect
diff --git a/arch/i386/bits/termios.h b/arch/i386/bits/termios.h
new file mode 100644 (file)
index 0000000..9f6abd8
--- /dev/null
@@ -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/i386/bits/user.h b/arch/i386/bits/user.h
new file mode 100644 (file)
index 0000000..998c062
--- /dev/null
@@ -0,0 +1,45 @@
+#undef __WORDSIZE
+#define __WORDSIZE 32
+
+struct user_fpregs_struct
+{
+       long cwd, swd, twd, fip, fcs, foo, fos, st_space[20];
+};
+
+struct user_fpxregs_struct
+{
+       unsigned short cwd, swd, twd, fop;
+       long fip, fcs, foo, fos, mxcsr, reserved;
+       long st_space[32], xmm_space[32], padding[56];
+};
+
+struct user_regs_struct
+{
+       long ebx, ecx, edx, esi, edi, ebp, eax, xds, xes, xfs, xgs;
+       long orig_eax, eip, xcs, eflags, esp, xss;
+};
+
+struct user
+{
+       struct user_regs_struct         regs;
+       int                             u_fpvalid;
+       struct user_fpregs_struct       i387;
+       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;
+       struct user_fpregs_struct       *u_fpstate;
+       unsigned long                   magic;
+       char                            u_comm[32];
+       int                             u_debugreg[8];
+};
+
+#define PAGE_MASK              (~(PAGE_SIZE-1))
+#define NBPG                   PAGE_SIZE
+#define UPAGES                 1
+#define HOST_TEXT_START_ADDR   (u.start_code)
+#define HOST_STACK_END_ADDR    (u.start_stack + u.u_ssize * NBPG)
diff --git a/arch/i386/bits/wchar.h b/arch/i386/bits/wchar.h
new file mode 100644 (file)
index 0000000..c969c5b
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef WCHAR_MIN
+#define WCHAR_MIN (-1-0x7fffffff)
+#define WCHAR_MAX (0x7fffffff)
+#endif
diff --git a/arch/i386/pthread_arch.h b/arch/i386/pthread_arch.h
new file mode 100644 (file)
index 0000000..1acb4e6
--- /dev/null
@@ -0,0 +1,9 @@
+static inline struct pthread *__pthread_self(void)
+{
+       struct pthread *self;
+       __asm__ __volatile__ ("movl %%gs:0,%0" : "=r" (self) );
+       return self;
+}
+
+#define CANCEL_REG_SP 7
+#define CANCEL_REG_IP 14
diff --git a/arch/i386/reloc.h b/arch/i386/reloc.h
new file mode 100644 (file)
index 0000000..490113a
--- /dev/null
@@ -0,0 +1,29 @@
+#include <string.h>
+#include <elf.h>
+
+#define ETC_LDSO_PATH "/etc/ld-musl-i386.path"
+
+#define IS_COPY(x) ((x)==R_386_COPY)
+#define IS_PLT(x) ((x)==R_386_JMP_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_386_32:
+               *reloc_addr += sym_val;
+               break;
+       case R_386_PC32:
+               *reloc_addr += sym_val - (size_t)reloc_addr;
+               break;
+       case R_386_GLOB_DAT:
+       case R_386_JMP_SLOT:
+               *reloc_addr = sym_val;
+               break;
+       case R_386_RELATIVE:
+               *reloc_addr += (size_t)base_addr;
+               break;
+       case R_386_COPY:
+               memcpy(reloc_addr, (void *)sym_val, sym_size);
+               break;
+       }
+}
diff --git a/arch/x86_64/atomic.h b/arch/x86_64/atomic.h
new file mode 100644 (file)
index 0000000..90e91cd
--- /dev/null
@@ -0,0 +1,127 @@
+#ifndef _INTERNAL_ATOMIC_H
+#define _INTERNAL_ATOMIC_H
+
+#include <stdint.h>
+
+static inline int a_ctz_64(uint64_t x)
+{
+       long r;
+       __asm__( "bsf %1,%0" : "=r"(r) : "r"(x) );
+       return r;
+}
+
+static inline int a_ctz_l(unsigned long x)
+{
+       long r;
+       __asm__( "bsf %1,%0" : "=r"(r) : "r"(x) );
+       return r;
+}
+
+static inline void a_and_64(volatile uint64_t *p, uint64_t v)
+{
+       __asm__( "lock ; andq %1, %0"
+                        : "=m"(*(long *)p) : "r"(v) : "memory" );
+}
+
+static inline void a_or_64(volatile uint64_t *p, uint64_t v)
+{
+       __asm__( "lock ; orq %1, %0"
+                        : "=m"(*(long *)p) : "r"(v) : "memory" );
+}
+
+static inline void a_store_l(volatile void *p, long x)
+{
+       __asm__( "movq %1, %0" : "=m"(*(long *)p) : "r"(x) : "memory" );
+}
+
+static inline void a_or_l(volatile void *p, long v)
+{
+       __asm__( "lock ; orq %1, %0"
+               : "=m"(*(long *)p) : "r"(v) : "memory" );
+}
+
+static inline void *a_cas_p(volatile void *p, void *t, void *s)
+{
+       __asm__( "lock ; cmpxchg %3, %1"
+               : "=a"(t), "=m"(*(long *)p) : "a"(t), "r"(s) : "memory" );
+       return t;
+}
+
+static inline long a_cas_l(volatile void *p, long t, long s)
+{
+       __asm__( "lock ; cmpxchg %3, %1"
+               : "=a"(t), "=m"(*(long *)p) : "a"(t), "r"(s) : "memory" );
+       return t;
+}
+
+static inline int a_cas(volatile int *p, int t, int s)
+{
+       __asm__( "lock ; cmpxchgl %3, %1"
+               : "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" );
+       return t;
+}
+
+static inline void *a_swap_p(void *volatile *x, void *v)
+{
+       __asm__( "xchg %0, %1" : "=r"(v), "=m"(*(void **)x) : "0"(v) : "memory" );
+       return v;
+}
+static inline long a_swap_l(volatile void *x, long v)
+{
+       __asm__( "xchg %0, %1" : "=r"(v), "=m"(*(long *)x) : "0"(v) : "memory" );
+       return v;
+}
+
+static inline void a_or(volatile void *p, int v)
+{
+       __asm__( "lock ; orl %1, %0"
+               : "=m"(*(int *)p) : "r"(v) : "memory" );
+}
+
+static inline void a_and(volatile void *p, int v)
+{
+       __asm__( "lock ; andl %1, %0"
+               : "=m"(*(int *)p) : "r"(v) : "memory" );
+}
+
+static inline int a_swap(volatile int *x, int v)
+{
+       __asm__( "xchg %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" );
+       return v;
+}
+
+#define a_xchg a_swap
+
+static inline int a_fetch_add(volatile int *x, int v)
+{
+       __asm__( "lock ; xadd %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" );
+       return v;
+}
+
+static inline void a_inc(volatile int *x)
+{
+       __asm__( "lock ; incl %0" : "=m"(*x) : "m"(*x) : "memory" );
+}
+
+static inline void a_dec(volatile int *x)
+{
+       __asm__( "lock ; decl %0" : "=m"(*x) : "m"(*x) : "memory" );
+}
+
+static inline void a_store(volatile int *p, int x)
+{
+       __asm__( "movl %1, %0" : "=m"(*p) : "r"(x) : "memory" );
+}
+
+static inline void a_spin(void)
+{
+       __asm__ __volatile__( "pause" : : : "memory" );
+}
+
+static inline void a_crash(void)
+{
+       __asm__ __volatile__( "hlt" : : : "memory" );
+}
+
+
+#endif
diff --git a/arch/x86_64/bits/alltypes.h.sh b/arch/x86_64/bits/alltypes.h.sh
new file mode 100755 (executable)
index 0000000..929a0f6
--- /dev/null
@@ -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 long 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 int wctrans_t;
+TYPEDEF int wctype_t;
+
+TYPEDEF char      int8_t;
+TYPEDEF short     int16_t;
+TYPEDEF int       int32_t;
+TYPEDEF long      int64_t;
+
+TYPEDEF unsigned char      uint8_t;
+TYPEDEF unsigned short     uint16_t;
+TYPEDEF unsigned int       uint32_t;
+TYPEDEF unsigned long      uint64_t;
+
+TYPEDEF unsigned short     __uint16_t;
+TYPEDEF unsigned int       __uint32_t;
+TYPEDEF unsigned 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 double float_t;
+TYPEDEF double double_t;
+
+TYPEDEF long time_t;
+TYPEDEF long suseconds_t;
+STRUCT timeval { time_t tv_sec; long tv_usec; };
+STRUCT timespec { time_t tv_sec; long tv_nsec; };
+
+TYPEDEF int pid_t;
+TYPEDEF int id_t;
+TYPEDEF unsigned int uid_t;
+TYPEDEF unsigned 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[14]; size_t __s[7]; } __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[10]; void *__p[5]; } __u; } pthread_mutex_t;
+TYPEDEF struct { union { int __i[12]; void *__p[6]; } __u; } pthread_cond_t;
+TYPEDEF struct { union { int __i[14]; void *__p[7]; } __u; } pthread_rwlock_t;
+TYPEDEF struct { union { int __i[8]; void *__p[4]; } __u; } pthread_barrier_t;
+
+TYPEDEF long off_t;
+
+TYPEDEF unsigned int mode_t;
+
+TYPEDEF unsigned long nlink_t;
+TYPEDEF unsigned long long ino_t;
+TYPEDEF unsigned 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 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/x86_64/bits/endian.h b/arch/x86_64/bits/endian.h
new file mode 100644 (file)
index 0000000..172c338
--- /dev/null
@@ -0,0 +1 @@
+#define __BYTE_ORDER __LITTLE_ENDIAN
diff --git a/arch/x86_64/bits/errno.h b/arch/x86_64/bits/errno.h
new file mode 100644 (file)
index 0000000..c75720e
--- /dev/null
@@ -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/x86_64/bits/fcntl.h b/arch/x86_64/bits/fcntl.h
new file mode 100644 (file)
index 0000000..f3e9950
--- /dev/null
@@ -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 0200000
+#define O_NOFOLLOW  0400000
+#define O_CLOEXEC  02000000
+
+#define O_ASYNC      020000
+#define O_DIRECT     040000
+#define O_LARGEFILE       0
+#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_GETLK 5
+#define F_SETLK 6
+#define F_SETLKW 7
+
+#define F_DUPFD_CLOEXEC 1030
diff --git a/arch/x86_64/bits/fenv.h b/arch/x86_64/bits/fenv.h
new file mode 100644 (file)
index 0000000..24df041
--- /dev/null
@@ -0,0 +1,34 @@
+#define FE_INVALID    1
+#define __FE_DENORM   2
+#define FE_DIVBYZERO  4
+#define FE_OVERFLOW   8
+#define FE_UNDERFLOW  16
+#define FE_INEXACT    32
+
+#define FE_ALL_EXCEPT 63
+
+#define FE_TONEAREST  0
+#define FE_DOWNWARD   0x400
+#define FE_UPWARD     0x800
+#define FE_TOWARDZERO 0xc00
+
+typedef unsigned short fexcept_t;
+
+typedef struct {
+       unsigned short __control_word;
+       unsigned short __unused1;
+       unsigned short __status_word;
+       unsigned short __unused2;
+       unsigned short __tags;
+       unsigned short __unused3;
+       unsigned int __eip;
+       unsigned short __cs_selector;
+       unsigned int __opcode:11;
+       unsigned int __unused4:5;
+       unsigned int __data_offset;
+       unsigned short __data_selector;
+       unsigned short __unused5;
+       unsigned int __mxcsr;
+} fenv_t;
+
+#define FE_DFL_ENV      ((const fenv_t *) -1)
diff --git a/arch/x86_64/bits/float.h b/arch/x86_64/bits/float.h
new file mode 100644 (file)
index 0000000..a58424e
--- /dev/null
@@ -0,0 +1,14 @@
+#define FLT_ROUNDS 1
+#define FLT_EVAL_METHOD 1
+
+#define LDBL_MIN     3.3621031431120935063e-4932L
+#define LDBL_MAX     1.1897314953572317650e+4932L
+#define LDBL_EPSILON 1.0842021724855044340e-19L
+
+#define LDBL_MANT_DIG 64
+#define LDBL_MIN_EXP (-16381)
+#define LDBL_MAX_EXP 16384
+
+#define LDBL_DIG 18
+#define LDBL_MIN_10_EXP (-4931)
+#define LDBL_MAX_10_EXP 4932
diff --git a/arch/x86_64/bits/ioctl.h b/arch/x86_64/bits/ioctl.h
new file mode 100644 (file)
index 0000000..7f3c038
--- /dev/null
@@ -0,0 +1,197 @@
+#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
+#define _IOC_NONE  0U
+#define _IOC_WRITE 1U
+#define _IOC_READ  2U
+
+#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(3,(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/x86_64/bits/ipc.h b/arch/x86_64/bits/ipc.h
new file mode 100644 (file)
index 0000000..51ad442
--- /dev/null
@@ -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/x86_64/bits/limits.h b/arch/x86_64/bits/limits.h
new file mode 100644 (file)
index 0000000..2ba566b
--- /dev/null
@@ -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 64
+#endif
+
+#define LONG_MAX  0x7fffffffffffffffL
+#define LLONG_MAX  0x7fffffffffffffffLL
diff --git a/arch/x86_64/bits/mman.h b/arch/x86_64/bits/mman.h
new file mode 100644 (file)
index 0000000..dc61b50
--- /dev/null
@@ -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/x86_64/bits/msg.h b/arch/x86_64/bits/msg.h
new file mode 100644 (file)
index 0000000..badcf16
--- /dev/null
@@ -0,0 +1,13 @@
+struct msqid_ds
+{
+       struct ipc_perm msg_perm;
+       time_t msg_stime;
+       time_t msg_rtime;
+       time_t msg_ctime;
+       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/x86_64/bits/posix.h b/arch/x86_64/bits/posix.h
new file mode 100644 (file)
index 0000000..c37b94c
--- /dev/null
@@ -0,0 +1,2 @@
+#define _POSIX_V6_LP64_OFF64  1
+#define _POSIX_V7_LP64_OFF64  1
diff --git a/arch/x86_64/bits/reg.h b/arch/x86_64/bits/reg.h
new file mode 100644 (file)
index 0000000..a4df04c
--- /dev/null
@@ -0,0 +1,29 @@
+#undef __WORDSIZE
+#define __WORDSIZE 64
+#define R15    0
+#define R14    1
+#define R13    2
+#define R12    3
+#define RBP    4
+#define RBX    5
+#define R11    6
+#define R10    7
+#define R9     8
+#define R8     9
+#define RAX    10
+#define RCX    11
+#define RDX    12
+#define RSI    13
+#define RDI    14
+#define ORIG_RAX 15
+#define RIP    16
+#define CS     17
+#define EFLAGS 18
+#define RSP    19
+#define SS     20
+#define FS_BASE 21
+#define GS_BASE 22
+#define DS     23
+#define ES     24
+#define FS     25
+#define GS     26
diff --git a/arch/x86_64/bits/setjmp.h b/arch/x86_64/bits/setjmp.h
new file mode 100644 (file)
index 0000000..c5b9e4a
--- /dev/null
@@ -0,0 +1 @@
+typedef unsigned long jmp_buf [9];
diff --git a/arch/x86_64/bits/shm.h b/arch/x86_64/bits/shm.h
new file mode 100644 (file)
index 0000000..abf1d50
--- /dev/null
@@ -0,0 +1,15 @@
+#define SHMLBA 4096
+
+struct shmid_ds
+{
+       struct ipc_perm shm_perm;
+       size_t shm_segsz;
+       time_t shm_atime;
+       time_t shm_dtime;
+       time_t shm_ctime;
+       pid_t shm_cpid;
+       pid_t shm_lpid;
+       unsigned long shm_nattch;
+       unsigned long __pad1;
+       unsigned long __pad2;
+};
diff --git a/arch/x86_64/bits/signal.h b/arch/x86_64/bits/signal.h
new file mode 100644 (file)
index 0000000..ecc4e9f
--- /dev/null
@@ -0,0 +1,80 @@
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+
+struct __fpstate {
+       unsigned long __x[4];
+       unsigned char __y[384];
+       unsigned long __z[12];
+};
+
+typedef struct {
+       unsigned long __gregs[23];
+       void *__fpregs;
+       unsigned long __reserved1[8];
+} 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;
+       struct __fpstate __fpregs_mem;
+} 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 r8, r9, r10, r11, r12, r13, r14, r15;
+       unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
+       unsigned short cs, gs, fs, __pad0;
+       unsigned long err, trapno, oldmask, cr2;
+       struct __fpstate *fpstate;
+       unsigned long __reserved1[8];
+};
+#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
diff --git a/arch/x86_64/bits/socket.h b/arch/x86_64/bits/socket.h
new file mode 100644 (file)
index 0000000..878ab11
--- /dev/null
@@ -0,0 +1,10 @@
+struct msghdr
+{
+       void *msg_name;
+       socklen_t msg_namelen;
+       struct iovec *msg_iov;
+       int msg_iovlen, __pad1;
+       void *msg_control;
+       socklen_t msg_controllen, __pad2;
+       int msg_flags;
+};
diff --git a/arch/x86_64/bits/stat.h b/arch/x86_64/bits/stat.h
new file mode 100644 (file)
index 0000000..2145796
--- /dev/null
@@ -0,0 +1,22 @@
+/* copied from kernel definition, but with padding replaced
+ * by the corresponding correctly-sized userspace types. */
+
+struct stat {
+       unsigned long st_dev;
+       ino_t st_ino;
+       nlink_t st_nlink;
+
+       mode_t st_mode;
+       uid_t st_uid;
+       gid_t st_gid;
+       unsigned int    __pad0;
+       dev_t st_rdev;
+       off_t st_size;
+       blksize_t st_blksize;
+       blkcnt_t st_blocks;
+
+       struct timespec st_atim;
+       struct timespec st_mtim;
+       struct timespec st_ctim;
+       long __unused[3];
+};
diff --git a/arch/x86_64/bits/statfs.h b/arch/x86_64/bits/statfs.h
new file mode 100644 (file)
index 0000000..f103f4e
--- /dev/null
@@ -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/x86_64/bits/stdarg.h b/arch/x86_64/bits/stdarg.h
new file mode 100644 (file)
index 0000000..fde3781
--- /dev/null
@@ -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/x86_64/bits/stdint.h b/arch/x86_64/bits/stdint.h
new file mode 100644 (file)
index 0000000..878e4de
--- /dev/null
@@ -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      INT64_MIN
+#define INTPTR_MAX      INT64_MAX
+#define UINTPTR_MAX     UINT64_MAX
+#define PTRDIFF_MIN     INT64_MIN
+#define PTRDIFF_MAX     INT64_MAX
+#define SIG_ATOMIC_MIN  INT64_MIN
+#define SIG_ATOMIC_MAX  INT64_MAX
+#define SIZE_MAX        UINT64_MAX
diff --git a/arch/x86_64/bits/syscall.h b/arch/x86_64/bits/syscall.h
new file mode 100644 (file)
index 0000000..5eeb8a6
--- /dev/null
@@ -0,0 +1,699 @@
+#define __SYSCALL_LL_E(x) (x)
+#define __SYSCALL_LL_O(x) (x)
+
+static inline long __syscall0(long __n)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("syscall" : "=a"(__ret) : "a"(__n) : "rcx", "r11", "memory");
+       return __ret;
+}
+
+static inline long __syscall1(long __n, long __a1)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("syscall" : "=a"(__ret) : "a"(__n), "D"(__a1) : "rcx", "r11", "memory");
+       return __ret;
+}
+
+static inline long __syscall2(long __n, long __a1, long __a2)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("syscall" : "=a"(__ret) : "a"(__n), "D"(__a1), "S"(__a2)
+                                                 : "rcx", "r11", "memory");
+       return __ret;
+}
+
+static inline long __syscall3(long __n, long __a1, long __a2, long __a3)
+{
+       unsigned long __ret;
+       __asm__ __volatile__ ("syscall" : "=a"(__ret) : "a"(__n), "D"(__a1), "S"(__a2),
+                                                 "d"(__a3) : "rcx", "r11", "memory");
+       return __ret;
+}
+
+static inline long __syscall4(long __n, long __a1, long __a2, long __a3, long __a4)
+{
+       unsigned long __ret;
+       register long __r10 __asm__("r10") = __a4;
+       __asm__ __volatile__ ("syscall" : "=a"(__ret) : "a"(__n), "D"(__a1), "S"(__a2),
+                                                 "d"(__a3), "r"(__r10): "rcx", "r11", "memory");
+       return __ret;
+}
+
+static inline long __syscall5(long __n, long __a1, long __a2, long __a3, long __a4, long __a5)
+{
+       unsigned long __ret;
+       register long __r10 __asm__("r10") = __a4;
+       register long __r8 __asm__("r8") = __a5;
+       __asm__ __volatile__ ("syscall" : "=a"(__ret) : "a"(__n), "D"(__a1), "S"(__a2),
+                                                 "d"(__a3), "r"(__r10), "r"(__r8) : "rcx", "r11", "memory");
+       return __ret;
+}
+
+static inline long __syscall6(long __n, long __a1, long __a2, long __a3, long __a4, long __a5, long __a6)
+{
+       unsigned long __ret;
+       register long __r10 __asm__("r10") = __a4;
+       register long __r8 __asm__("r8") = __a5;
+       register long __r9 __asm__("r9") = __a6;
+       __asm__ __volatile__ ("syscall" : "=a"(__ret) : "a"(__n), "D"(__a1), "S"(__a2),
+                                                 "d"(__a3), "r"(__r10), "r"(__r8), "r"(__r9) : "rcx", "r11", "memory");
+       return __ret;
+}
+
+#define __socketcall(nm,a,b,c,d,e,f) syscall(__NR_##nm, a, b, c, d, e, f)
+#define __socketcall_cp(nm,a,b,c,d,e,f) syscall_cp(__NR_##nm, a, b, c, d, e, f)
+
+#define __NR_read                              0
+#define __NR_write                             1
+#define __NR_open                              2
+#define __NR_close                             3
+#define __NR_stat                              4
+#define __NR_fstat                             5
+#define __NR_lstat                             6
+#define __NR_poll                              7
+#define __NR_lseek                             8
+#define __NR_mmap                              9
+#define __NR_mprotect                  10
+#define __NR_munmap                            11
+#define __NR_brk                               12
+#define __NR_rt_sigaction              13
+#define __NR_rt_sigprocmask            14
+#define __NR_rt_sigreturn              15
+#define __NR_ioctl                             16
+#define __NR_pread64                   17
+#define __NR_pwrite64                  18
+#define __NR_readv                             19
+#define __NR_writev                            20
+#define __NR_access                            21
+#define __NR_pipe                              22
+#define __NR_select                            23
+#define __NR_sched_yield               24
+#define __NR_mremap                            25
+#define __NR_msync                             26
+#define __NR_mincore                   27
+#define __NR_madvise                   28
+#define __NR_shmget                            29
+#define __NR_shmat                             30
+#define __NR_shmctl                            31
+#define __NR_dup                               32
+#define __NR_dup2                              33
+#define __NR_pause                             34
+#define __NR_nanosleep                 35
+#define __NR_getitimer                 36
+#define __NR_alarm                             37
+#define __NR_setitimer                 38
+#define __NR_getpid                            39
+#define __NR_sendfile                  40
+#define __NR_socket                            41
+#define __NR_connect                   42
+#define __NR_accept                            43
+#define __NR_sendto                            44
+#define __NR_recvfrom                  45
+#define __NR_sendmsg                   46
+#define __NR_recvmsg                   47
+#define __NR_shutdown                  48
+#define __NR_bind                              49
+#define __NR_listen                            50
+#define __NR_getsockname               51
+#define __NR_getpeername               52
+#define __NR_socketpair                        53
+#define __NR_setsockopt                        54
+#define __NR_getsockopt                        55
+#define __NR_clone                             56
+#define __NR_fork                              57
+#define __NR_vfork                             58
+#define __NR_execve                            59
+#define __NR_exit                              60
+#define __NR_wait4                             61
+#define __NR_kill                              62
+#define __NR_uname                             63
+#define __NR_semget                            64
+#define __NR_semop                             65
+#define __NR_semctl                            66
+#define __NR_shmdt                             67
+#define __NR_msgget                            68
+#define __NR_msgsnd                            69
+#define __NR_msgrcv                            70
+#define __NR_msgctl                            71
+#define __NR_fcntl                             72
+#define __NR_flock                             73
+#define __NR_fsync                             74
+#define __NR_fdatasync                 75
+#define __NR_truncate                  76
+#define __NR_ftruncate                 77
+#define __NR_getdents                  78
+#define __NR_getcwd                            79
+#define __NR_chdir                             80
+#define __NR_fchdir                            81
+#define __NR_rename                            82
+#define __NR_mkdir                             83
+#define __NR_rmdir                             84
+#define __NR_creat                             85
+#define __NR_link                              86
+#define __NR_unlink                            87
+#define __NR_symlink                   88
+#define __NR_readlink                  89
+#define __NR_chmod                             90
+#define __NR_fchmod                            91
+#define __NR_chown                             92
+#define __NR_fchown                            93
+#define __NR_lchown                            94
+#define __NR_umask                             95
+#define __NR_gettimeofday              96
+#define __NR_getrlimit                 97
+#define __NR_getrusage                 98
+#define __NR_sysinfo                   99
+#define __NR_times                             100
+#define __NR_ptrace                            101
+#define __NR_getuid                            102
+#define __NR_syslog                            103
+#define __NR_getgid                            104
+#define __NR_setuid                            105
+#define __NR_setgid                            106
+#define __NR_geteuid                   107
+#define __NR_getegid                   108
+#define __NR_setpgid                   109
+#define __NR_getppid                   110
+#define __NR_getpgrp                   111
+#define __NR_setsid                            112
+#define __NR_setreuid                  113
+#define __NR_setregid                  114
+#define __NR_getgroups                 115
+#define __NR_setgroups                 116
+#define __NR_setresuid                 117
+#define __NR_getresuid                 118
+#define __NR_setresgid                 119
+#define __NR_getresgid                 120
+#define __NR_getpgid                   121
+#define __NR_setfsuid                  122
+#define __NR_setfsgid                  123
+#define __NR_getsid                            124
+#define __NR_capget                            125
+#define __NR_capset                            126
+#define __NR_rt_sigpending             127
+#define __NR_rt_sigtimedwait   128
+#define __NR_rt_sigqueueinfo   129
+#define __NR_rt_sigsuspend             130
+#define __NR_sigaltstack               131
+#define __NR_utime                             132
+#define __NR_mknod                             133
+#define __NR_uselib                            134
+#define __NR_personality               135
+#define __NR_ustat                             136
+#define __NR_statfs                            137
+#define __NR_fstatfs                   138
+#define __NR_sysfs                             139
+#define __NR_getpriority                       140
+#define __NR_setpriority                       141
+#define __NR_sched_setparam                    142
+#define __NR_sched_getparam                    143
+#define __NR_sched_setscheduler                144
+#define __NR_sched_getscheduler                145
+#define __NR_sched_get_priority_max    146
+#define __NR_sched_get_priority_min    147
+#define __NR_sched_rr_get_interval     148
+#define __NR_mlock                                     149
+#define __NR_munlock                           150
+#define __NR_mlockall                          151
+#define __NR_munlockall                                152
+#define __NR_vhangup                           153
+#define __NR_modify_ldt                                154
+#define __NR_pivot_root                                155
+#define __NR__sysctl                           156
+#define __NR_prctl                                     157
+#define __NR_arch_prctl                                158
+#define __NR_adjtimex                          159
+#define __NR_setrlimit                         160
+#define __NR_chroot                                    161
+#define __NR_sync                                      162
+#define __NR_acct                                      163
+#define __NR_settimeofday                      164
+#define __NR_mount                                     165
+#define __NR_umount2                           166
+#define __NR_swapon                                    167
+#define __NR_swapoff                           168
+#define __NR_reboot                                    169
+#define __NR_sethostname                       170
+#define __NR_setdomainname                     171
+#define __NR_iopl                                      172
+#define __NR_ioperm                                    173
+#define __NR_create_module                     174
+#define __NR_init_module                       175
+#define __NR_delete_module                     176
+#define __NR_get_kernel_syms           177
+#define __NR_query_module                      178
+#define __NR_quotactl                          179
+#define __NR_nfsservctl                                180
+#define __NR_getpmsg                           181
+#define __NR_putpmsg                           182
+#define __NR_afs_syscall                       183
+#define __NR_tuxcall                           184
+#define __NR_security                          185
+#define __NR_gettid                                    186
+#define __NR_readahead                         187
+#define __NR_setxattr                          188
+#define __NR_lsetxattr                         189
+#define __NR_fsetxattr                         190
+#define __NR_getxattr                          191
+#define __NR_lgetxattr                         192
+#define __NR_fgetxattr                         193
+#define __NR_listxattr                         194
+#define __NR_llistxattr                                195
+#define __NR_flistxattr                                196
+#define __NR_removexattr                       197
+#define __NR_lremovexattr                      198
+#define __NR_fremovexattr                      199
+#define __NR_tkill                                     200
+#define __NR_time                                      201
+#define __NR_futex                                     202
+#define __NR_sched_setaffinity         203
+#define __NR_sched_getaffinity         204
+#define __NR_set_thread_area           205
+#define __NR_io_setup                          206
+#define __NR_io_destroy                                207
+#define __NR_io_getevents                      208
+#define __NR_io_submit                         209
+#define __NR_io_cancel                         210
+#define __NR_get_thread_area           211
+#define __NR_lookup_dcookie                    212
+#define __NR_epoll_create                      213
+#define __NR_epoll_ctl_old                     214
+#define __NR_epoll_wait_old                    215
+#define __NR_remap_file_pages          216
+#define __NR_getdents64                                217
+#define __NR_set_tid_address           218
+#define __NR_restart_syscall           219
+#define __NR_semtimedop                                220
+#define __NR_fadvise64                         221
+#define __NR_timer_create                      222
+#define __NR_timer_settime                     223
+#define __NR_timer_gettime                     224
+#define __NR_timer_getoverrun          225
+#define __NR_timer_delete                      226
+#define __NR_clock_settime                     227
+#define __NR_clock_gettime                     228
+#define __NR_clock_getres                      229
+#define __NR_clock_nanosleep           230
+#define __NR_exit_group                                231
+#define __NR_epoll_wait                                232
+#define __NR_epoll_ctl                         233
+#define __NR_tgkill                                    234
+#define __NR_utimes                                    235
+#define __NR_vserver                           236
+#define __NR_mbind                                     237
+#define __NR_set_mempolicy                     238
+#define __NR_get_mempolicy                     239
+#define __NR_mq_open                           240
+#define __NR_mq_unlink                         241
+#define __NR_mq_timedsend                      242
+#define __NR_mq_timedreceive           243
+#define __NR_mq_notify                         244
+#define __NR_mq_getsetattr                     245
+#define __NR_kexec_load                                246
+#define __NR_waitid                                    247
+#define __NR_add_key                           248
+#define __NR_request_key                       249
+#define __NR_keyctl                                    250
+#define __NR_ioprio_set                                251
+#define __NR_ioprio_get                                252
+#define __NR_inotify_init                      253
+#define __NR_inotify_add_watch         254
+#define __NR_inotify_rm_watch          255
+#define __NR_migrate_pages                     256
+#define __NR_openat                                    257
+#define __NR_mkdirat                           258
+#define __NR_mknodat                           259
+#define __NR_fchownat                          260
+#define __NR_futimesat                         261
+#define __NR_newfstatat                                262
+#define __NR_unlinkat                          263
+#define __NR_renameat                          264
+#define __NR_linkat                                    265
+#define __NR_symlinkat                         266
+#define __NR_readlinkat                                267
+#define __NR_fchmodat                          268
+#define __NR_faccessat                         269
+#define __NR_pselect6                          270
+#define __NR_ppoll                                     271
+#define __NR_unshare                           272
+#define __NR_set_robust_list           273
+#define __NR_get_robust_list           274
+#define __NR_splice                                    275
+#define __NR_tee                                       276
+#define __NR_sync_file_range           277
+#define __NR_vmsplice                          278
+#define __NR_move_pages                                279
+#define __NR_utimensat                         280
+#define __NR_epoll_pwait                       281
+#define __NR_signalfd                          282
+#define __NR_timerfd_create                    283
+#define __NR_eventfd                           284
+#define __NR_fallocate                         285
+#define __NR_timerfd_settime           286
+#define __NR_timerfd_gettime           287
+#define __NR_accept4                           288
+#define __NR_signalfd4                         289
+#define __NR_eventfd2                          290
+#define __NR_epoll_create1                     291
+#define __NR_dup3                                      292
+#define __NR_pipe2                                     293
+#define __NR_inotify_init1                     294
+#define __NR_preadv                                    295
+#define __NR_pwritev                           296
+#define __NR_rt_tgsigqueueinfo         297
+#define __NR_perf_event_open           298
+#define __NR_recvmmsg                          299
+#define __NR_fanotify_init                     300
+#define __NR_fanotify_mark                     301
+#define __NR_prlimit64                         302
+
+#undef __NR_fstatat
+#undef __NR_pread
+#undef __NR_pwrite
+#undef __NR_getdents
+#define __NR_fstatat __NR_newfstatat
+#define __NR_pread __NR_pread64
+#define __NR_pwrite __NR_pwrite64
+#define __NR_getdents __NR_getdents64
+#define __NR_fadvise __NR_fadvise64
+
+
+
+/* Repeat with SYS_ prefix */
+
+#define SYS_read                               0
+#define SYS_write                              1
+#define SYS_open                               2
+#define SYS_close                              3
+#define SYS_stat                               4
+#define SYS_fstat                              5
+#define SYS_lstat                              6
+#define SYS_poll                               7
+#define SYS_lseek                              8
+#define SYS_mmap                               9
+#define SYS_mprotect                   10
+#define SYS_munmap                             11
+#define SYS_brk                                12
+#define SYS_rt_sigaction               13
+#define SYS_rt_sigprocmask             14
+#define SYS_rt_sigreturn               15
+#define SYS_ioctl                              16
+#define SYS_pread64                    17
+#define SYS_pwrite64                   18
+#define SYS_readv                              19
+#define SYS_writev                             20
+#define SYS_access                             21
+#define SYS_pipe                               22
+#define SYS_select                             23
+#define SYS_sched_yield                24
+#define SYS_mremap                             25
+#define SYS_msync                              26
+#define SYS_mincore                    27
+#define SYS_madvise                    28
+#define SYS_shmget                             29
+#define SYS_shmat                              30
+#define SYS_shmctl                             31
+#define SYS_dup                                32
+#define SYS_dup2                               33
+#define SYS_pause                              34
+#define SYS_nanosleep                  35
+#define SYS_getitimer                  36
+#define SYS_alarm                              37
+#define SYS_setitimer                  38
+#define SYS_getpid                             39
+#define SYS_sendfile                   40
+#define SYS_socket                             41
+#define SYS_connect                    42
+#define SYS_accept                             43
+#define SYS_sendto                             44
+#define SYS_recvfrom                   45
+#define SYS_sendmsg                    46
+#define SYS_recvmsg                    47
+#define SYS_shutdown                   48
+#define SYS_bind                               49
+#define SYS_listen                             50
+#define SYS_getsockname                51
+#define SYS_getpeername                52
+#define SYS_socketpair                 53
+#define SYS_setsockopt                 54
+#define SYS_getsockopt                 55
+#define SYS_clone                              56
+#define SYS_fork                               57
+#define SYS_vfork                              58
+#define SYS_execve                             59
+#define SYS_exit                               60
+#define SYS_wait4                              61
+#define SYS_kill                               62
+#define SYS_uname                              63
+#define SYS_semget                             64
+#define SYS_semop                              65
+#define SYS_semctl                             66
+#define SYS_shmdt                              67
+#define SYS_msgget                             68
+#define SYS_msgsnd                             69
+#define SYS_msgrcv                             70
+#define SYS_msgctl                             71
+#define SYS_fcntl                              72
+#define SYS_flock                              73
+#define SYS_fsync                              74
+#define SYS_fdatasync                  75
+#define SYS_truncate                   76
+#define SYS_ftruncate                  77
+#define SYS_getdents                   78
+#define SYS_getcwd                             79
+#define SYS_chdir                              80
+#define SYS_fchdir                             81
+#define SYS_rename                             82
+#define SYS_mkdir                              83
+#define SYS_rmdir                              84
+#define SYS_creat                              85
+#define SYS_link                               86
+#define SYS_unlink                             87
+#define SYS_symlink                    88
+#define SYS_readlink                   89
+#define SYS_chmod                              90
+#define SYS_fchmod                             91
+#define SYS_chown                              92
+#define SYS_fchown                             93
+#define SYS_lchown                             94
+#define SYS_umask                              95
+#define SYS_gettimeofday               96
+#define SYS_getrlimit                  97
+#define SYS_getrusage                  98
+#define SYS_sysinfo                    99
+#define SYS_times                              100
+#define SYS_ptrace                             101
+#define SYS_getuid                             102
+#define SYS_syslog                             103
+#define SYS_getgid                             104
+#define SYS_setuid                             105
+#define SYS_setgid                             106
+#define SYS_geteuid                    107
+#define SYS_getegid                    108
+#define SYS_setpgid                    109
+#define SYS_getppid                    110
+#define SYS_getpgrp                    111
+#define SYS_setsid                             112
+#define SYS_setreuid                   113
+#define SYS_setregid                   114
+#define SYS_getgroups                  115
+#define SYS_setgroups                  116
+#define SYS_setresuid                  117
+#define SYS_getresuid                  118
+#define SYS_setresgid                  119
+#define SYS_getresgid                  120
+#define SYS_getpgid                    121
+#define SYS_setfsuid                   122
+#define SYS_setfsgid                   123
+#define SYS_getsid                             124
+#define SYS_capget                             125
+#define SYS_capset                             126
+#define SYS_rt_sigpending              127
+#define SYS_rt_sigtimedwait    128
+#define SYS_rt_sigqueueinfo    129
+#define SYS_rt_sigsuspend              130
+#define SYS_sigaltstack                131
+#define SYS_utime                              132
+#define SYS_mknod                              133
+#define SYS_uselib                             134
+#define SYS_personality                135
+#define SYS_ustat                              136
+#define SYS_statfs                             137
+#define SYS_fstatfs                    138
+#define SYS_sysfs                              139
+#define SYS_getpriority                        140
+#define SYS_setpriority                        141
+#define SYS_sched_setparam                     142
+#define SYS_sched_getparam                     143
+#define SYS_sched_setscheduler         144
+#define SYS_sched_getscheduler         145
+#define SYS_sched_get_priority_max     146
+#define SYS_sched_get_priority_min     147
+#define SYS_sched_rr_get_interval      148
+#define SYS_mlock                                      149
+#define SYS_munlock                            150
+#define SYS_mlockall                           151
+#define SYS_munlockall                         152
+#define SYS_vhangup                            153
+#define SYS_modify_ldt                         154
+#define SYS_pivot_root                         155
+#define SYS__sysctl                            156
+#define SYS_prctl                                      157
+#define SYS_arch_prctl                         158
+#define SYS_adjtimex                           159
+#define SYS_setrlimit                          160
+#define SYS_chroot                                     161
+#define SYS_sync                                       162
+#define SYS_acct                                       163
+#define SYS_settimeofday                       164
+#define SYS_mount                                      165
+#define SYS_umount2                            166
+#define SYS_swapon                                     167
+#define SYS_swapoff                            168
+#define SYS_reboot                                     169
+#define SYS_sethostname                        170
+#define SYS_setdomainname                      171
+#define SYS_iopl                                       172
+#define SYS_ioperm                                     173
+#define SYS_create_module                      174
+#define SYS_init_module                        175
+#define SYS_delete_module                      176
+#define SYS_get_kernel_syms            177
+#define SYS_query_module                       178
+#define SYS_quotactl                           179
+#define SYS_nfsservctl                         180
+#define SYS_getpmsg                            181
+#define SYS_putpmsg                            182
+#define SYS_afs_syscall                        183
+#define SYS_tuxcall                            184
+#define SYS_security                           185
+#define SYS_gettid                                     186
+#define SYS_readahead                          187
+#define SYS_setxattr                           188
+#define SYS_lsetxattr                          189
+#define SYS_fsetxattr                          190
+#define SYS_getxattr                           191
+#define SYS_lgetxattr                          192
+#define SYS_fgetxattr                          193
+#define SYS_listxattr                          194
+#define SYS_llistxattr                         195
+#define SYS_flistxattr                         196
+#define SYS_removexattr                        197
+#define SYS_lremovexattr                       198
+#define SYS_fremovexattr                       199
+#define SYS_tkill                                      200
+#define SYS_time                                       201
+#define SYS_futex                                      202
+#define SYS_sched_setaffinity          203
+#define SYS_sched_getaffinity          204
+#define SYS_set_thread_area            205
+#define SYS_io_setup                           206
+#define SYS_io_destroy                         207
+#define SYS_io_getevents                       208
+#define SYS_io_submit                          209
+#define SYS_io_cancel                          210
+#define SYS_get_thread_area            211
+#define SYS_lookup_dcookie                     212
+#define SYS_epoll_create                       213
+#define SYS_epoll_ctl_old                      214
+#define SYS_epoll_wait_old                     215
+#define SYS_remap_file_pages           216
+#define SYS_getdents64                         217
+#define SYS_set_tid_address            218
+#define SYS_restart_syscall            219
+#define SYS_semtimedop                         220
+#define SYS_fadvise64                          221
+#define SYS_timer_create                       222
+#define SYS_timer_settime                      223
+#define SYS_timer_gettime                      224
+#define SYS_timer_getoverrun           225
+#define SYS_timer_delete                       226
+#define SYS_clock_settime                      227
+#define SYS_clock_gettime                      228
+#define SYS_clock_getres                       229
+#define SYS_clock_nanosleep            230
+#define SYS_exit_group                         231
+#define SYS_epoll_wait                         232
+#define SYS_epoll_ctl                          233
+#define SYS_tgkill                                     234
+#define SYS_utimes                                     235
+#define SYS_vserver                            236
+#define SYS_mbind                                      237
+#define SYS_set_mempolicy                      238
+#define SYS_get_mempolicy                      239
+#define SYS_mq_open                            240
+#define SYS_mq_unlink                          241
+#define SYS_mq_timedsend                       242
+#define SYS_mq_timedreceive            243
+#define SYS_mq_notify                          244
+#define SYS_mq_getsetattr                      245
+#define SYS_kexec_load                         246
+#define SYS_waitid                                     247
+#define SYS_add_key                            248
+#define SYS_request_key                        249
+#define SYS_keyctl                                     250
+#define SYS_ioprio_set                         251
+#define SYS_ioprio_get                         252
+#define SYS_inotify_init                       253
+#define SYS_inotify_add_watch          254
+#define SYS_inotify_rm_watch           255
+#define SYS_migrate_pages                      256
+#define SYS_openat                                     257
+#define SYS_mkdirat                            258
+#define SYS_mknodat                            259
+#define SYS_fchownat                           260
+#define SYS_futimesat                          261
+#define SYS_newfstatat                         262
+#define SYS_unlinkat                           263
+#define SYS_renameat                           264
+#define SYS_linkat                                     265
+#define SYS_symlinkat                          266
+#define SYS_readlinkat                         267
+#define SYS_fchmodat                           268
+#define SYS_faccessat                          269
+#define SYS_pselect6                           270
+#define SYS_ppoll                                      271
+#define SYS_unshare                            272
+#define SYS_set_robust_list            273
+#define SYS_get_robust_list            274
+#define SYS_splice                                     275
+#define SYS_tee                                        276
+#define SYS_sync_file_range            277
+#define SYS_vmsplice                           278
+#define SYS_move_pages                         279
+#define SYS_utimensat                          280
+#define SYS_epoll_pwait                        281
+#define SYS_signalfd                           282
+#define SYS_timerfd_create                     283
+#define SYS_eventfd                            284
+#define SYS_fallocate                          285
+#define SYS_timerfd_settime            286
+#define SYS_timerfd_gettime            287
+#define SYS_accept4                            288
+#define SYS_signalfd4                          289
+#define SYS_eventfd2                           290
+#define SYS_epoll_create1                      291
+#define SYS_dup3                                       292
+#define SYS_pipe2                                      293
+#define SYS_inotify_init1                      294
+#define SYS_preadv                                     295
+#define SYS_pwritev                            296
+#define SYS_rt_tgsigqueueinfo          297
+#define SYS_perf_event_open            298
+#define SYS_recvmmsg                           299
+#define SYS_fanotify_init                      300
+#define SYS_fanotify_mark                      301
+#define SYS_prlimit64                          302
+
+#undef SYS_fstatat
+#undef SYS_pread
+#undef SYS_pwrite
+#undef SYS_getdents
+#define SYS_fstatat SYS_newfstatat
+#define SYS_pread SYS_pread64
+#define SYS_pwrite SYS_pwrite64
+#define SYS_getdents SYS_getdents64
+#define SYS_fadvise SYS_fadvise64
+
+
diff --git a/arch/x86_64/bits/termios.h b/arch/x86_64/bits/termios.h
new file mode 100644 (file)
index 0000000..9f6abd8
--- /dev/null
@@ -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/x86_64/bits/user.h b/arch/x86_64/bits/user.h
new file mode 100644 (file)
index 0000000..384f18e
--- /dev/null
@@ -0,0 +1,42 @@
+#undef __WORDSIZE
+#define __WORDSIZE 64
+
+struct user_fpregs_struct
+{
+       uint16_t cwd, swd, ftw, fop;
+       uint64_t rip, rdp;
+       uint32_t mxcsr, mxcs_mask;
+       uint32_t st_space[32], xmm_space[64], padding[24];
+};
+
+struct user_regs_struct
+{
+       unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8;
+       unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip;
+       unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs;
+};
+
+struct user
+{
+       struct user_regs_struct         regs;
+       int                             u_fpvalid;
+       struct user_fpregs_struct       i387;
+       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;
+       struct user_fpregs_struct       *u_fpstate;
+       unsigned long                   magic;
+       char                            u_comm[32];
+       unsigned long                   u_debugreg[8];
+};
+
+#define PAGE_MASK              (~(PAGE_SIZE-1))
+#define NBPG                   PAGE_SIZE
+#define UPAGES                 1
+#define HOST_TEXT_START_ADDR   (u.start_code)
+#define HOST_STACK_END_ADDR    (u.start_stack + u.u_ssize * NBPG)
diff --git a/arch/x86_64/bits/wchar.h b/arch/x86_64/bits/wchar.h
new file mode 100644 (file)
index 0000000..c969c5b
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef WCHAR_MIN
+#define WCHAR_MIN (-1-0x7fffffff)
+#define WCHAR_MAX (0x7fffffff)
+#endif
diff --git a/arch/x86_64/pthread_arch.h b/arch/x86_64/pthread_arch.h
new file mode 100644 (file)
index 0000000..96bc22c
--- /dev/null
@@ -0,0 +1,9 @@
+static inline struct pthread *__pthread_self(void)
+{
+       struct pthread *self;
+       __asm__ __volatile__ ("movq %%fs:0,%0" : "=r" (self) );
+       return self;
+}
+
+#define CANCEL_REG_SP 15
+#define CANCEL_REG_IP 16
diff --git a/arch/x86_64/reloc.h b/arch/x86_64/reloc.h
new file mode 100644 (file)
index 0000000..b0bbfb3
--- /dev/null
@@ -0,0 +1,31 @@
+#include <stdint.h>
+#include <string.h>
+#include <elf.h>
+
+#define ETC_LDSO_PATH "/etc/ld-musl-x86_64.path"
+
+#define IS_COPY(x) ((x)==R_X86_64_COPY)
+#define IS_PLT(x) ((x)==R_X86_64_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_X86_64_GLOB_DAT:
+       case R_X86_64_JUMP_SLOT:
+       case R_X86_64_64:
+               *reloc_addr = sym_val + addend;
+               break;
+       case R_X86_64_32:
+               *(uint32_t *)reloc_addr = sym_val + addend;
+               break;
+       case R_X86_64_PC32:
+               *reloc_addr = sym_val + addend - (size_t)reloc_addr + (size_t)base_addr;
+               break;
+       case R_X86_64_RELATIVE:
+               *reloc_addr = (size_t)base_addr + addend;
+               break;
+       case R_X86_64_COPY:
+               memcpy(reloc_addr, (void *)sym_val, sym_size);
+               break;
+       }
+}
diff --git a/config.mak b/config.mak
new file mode 100644 (file)
index 0000000..da18f0f
--- /dev/null
@@ -0,0 +1 @@
+ARCH=i386
diff --git a/include/complex.h b/include/complex.h
new file mode 100644 (file)
index 0000000..a47853a
--- /dev/null
@@ -0,0 +1,103 @@
+#ifndef _COMPLEX_H
+#define _COMPLEX_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define complex _Complex
+#define _Complex_I 1fi
+#define I _Complex_I
+
+double complex cacos(double complex);
+float complex cacosf(float complex);
+long double complex cacosl(long double complex);
+
+double complex casin(double complex);
+float complex casinf(float complex);
+long double complex casinl(long double complex);
+
+double complex catan(double complex);
+float complex catanf(float complex);
+long double complex catanl(long double complex);
+
+double complex ccos(double complex);
+float complex ccosf(float complex);
+long double complex ccosl(long double complex);
+
+double complex csin(double complex);
+float complex csinf(float complex);
+long double complex csinl(long double complex);
+
+double complex ctan(double complex);
+float complex ctanf(float complex);
+long double complex ctanl(long double complex);
+
+double complex cacosh(double complex);
+float complex cacoshf(float complex);
+long double complex cacoshl(long double complex);
+
+double complex casinh(double complex);
+float complex casinhf(float complex);
+long double complex casinhl(long double complex);
+
+double complex catanh(double complex);
+float complex catanhf(float complex);
+long double complex catanhl(long double complex);
+
+double complex ccosh(double complex);
+float complex ccoshf(float complex);
+long double complex ccoshl(long double complex);
+
+double complex csinh(double complex);
+float complex csinhf(float complex);
+long double complex csinhl(long double complex);
+
+double complex ctanh(double complex);
+float complex ctanhf(float complex);
+long double complex ctanhl(long double complex);
+
+double complex cexp(double complex);
+float complex cexpf(float complex);
+long double complex cexpl(long double complex);
+
+double complex clog(double complex);
+float complex clogf(float complex);
+long double complex clogl(long double complex);
+
+double cabs(double complex);
+float cabsf(float complex);
+long double cabsl(long double complex);
+
+double complex cpow(double complex, double complex);
+float complex cpowf(float complex, float complex);
+long double complex cpowl(long double complex, long double complex);
+
+double complex csqrt(double complex);
+float complex csqrtf(float complex);
+long double complex csqrtl(long double complex);
+
+double carg(double complex);
+float cargf(float complex);
+long double cargl(long double complex);
+
+double cimag(double complex);
+float cimagf(float complex);
+long double cimagl(long double complex);
+
+double complex conj(double complex);
+float complex conjf(float complex);
+long double complex conjl(long double complex);
+
+double complex cproj(double complex);
+float complex cprojf(float complex);
+long double complex cprojl(long double complex);
+
+double creal(double complex);
+float crealf(float complex);
+long double creall(long double complex);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/include/fenv.h b/include/fenv.h
new file mode 100644 (file)
index 0000000..05de990
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef _FENV_H
+#define _FENV_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <bits/fenv.h>
+
+int feclearexcept(int);
+int fegetexceptflag(fexcept_t *, int);
+int feraiseexcept(int);
+int fesetexceptflag(const fexcept_t *, int);
+int fetestexcept(int);
+
+int fegetround(void);
+int fesetround(int);
+
+int fegetenv(fenv_t *);
+int feholdexcept(fenv_t *);
+int fesetenv(const fenv_t *);
+int feupdateenv(const fenv_t *);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+
diff --git a/include/float.h b/include/float.h
new file mode 100644 (file)
index 0000000..ef91f37
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef _FLOAT_H
+#define _FLOAT_H
+
+#define FLT_RADIX 2
+
+#define FLT_MIN 1.17549435e-38F
+#define FLT_MAX 3.40282347e+38F
+#define FLT_EPSILON 1.19209290e-07F
+
+#define FLT_MANT_DIG 24
+#define FLT_MIN_EXP (-125)
+#define FLT_MAX_EXP 128
+
+#define FLT_DIG 6
+#define FLT_MIN_10_EXP (-37)
+#define FLT_MAX_10_EXP 38
+
+#define DBL_MIN 2.2250738585072014e-308
+#define DBL_MAX 1.7976931348623157e+308
+#define DBL_EPSILON 2.2204460492503131e-16
+
+#define DBL_MANT_DIG 53
+#define DBL_MIN_EXP (-1021)
+#define DBL_MAX_EXP 1024
+
+#define DBL_DIG 15
+#define DBL_MIN_10_EXP (-307)
+#define DBL_MAX_10_EXP 308
+
+#include <bits/float.h>
+
+#define DECIMAL_DIG LDBL_DIG
+
+#endif
diff --git a/include/limits.h b/include/limits.h
new file mode 100644 (file)
index 0000000..56f7a12
--- /dev/null
@@ -0,0 +1,135 @@
+#ifndef _LIMITS_H
+#define _LIMITS_H
+
+/* Most limits are system-specific */
+
+#include <bits/limits.h>
+
+/* Some universal constants... */
+
+#define CHAR_BIT 8
+#define SCHAR_MIN (-128)
+#define SCHAR_MAX 127
+#define UCHAR_MAX 255
+#define CHAR_MIN (-128)
+#define CHAR_MAX 127
+#define SHRT_MIN  (-1-0x7fff)
+#define SHRT_MAX  0x7fff
+#define USHRT_MAX 0xffff
+#define INT_MIN  (-1-0x7fffffff)
+#define INT_MAX  0x7fffffff
+#define UINT_MAX 0xffffffffU
+#define LONG_MIN (-LONG_MAX-1)
+#define ULONG_MAX (2UL*LONG_MAX+1)
+#define LLONG_MIN (-LLONG_MAX-1)
+#define ULLONG_MAX (2ULL*LLONG_MAX+1)
+
+#define MB_LEN_MAX 4
+
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
+ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+
+#define PIPE_BUF 4096
+#define PAGESIZE PAGE_SIZE
+#define FILESIZEBITS 64
+#define NAME_MAX 255
+#define SYMLINK_MAX 255
+#define PATH_MAX 4096
+#define NZERO 20
+#define NGROUPS_MAX 32
+#define ARG_MAX 131072
+#define IOV_MAX 1024
+#define SYMLOOP_MAX 40
+#define WORD_BIT 32
+#define SSIZE_MAX LONG_MAX
+#define TZNAME_MAX 6
+#define TTY_NAME_MAX 20
+#define HOST_NAME_MAX 255
+
+/* Implementation choices... */
+
+#define PTHREAD_KEYS_MAX  1024
+#define PTHREAD_STACK_MIN PAGE_SIZE
+#define PTHREAD_DESTRUCTOR_ITERATIONS 4
+#define SEM_VALUE_MAX 0x7fffffff
+#define SEM_NSEMS_MAX 256
+#define DELAYTIMER_MAX 0x7fffffff
+#define MQ_PRIO_MAX 32768
+
+/* Arbitrary numbers... */
+
+#define BC_BASE_MAX 99
+#define BC_DIM_MAX 2048
+#define BC_SCALE_MAX 99
+#define BC_STRING_MAX 1000
+#define CHARCLASS_NAME_MAX 14
+#define COLL_WEIGHTS_MAX 2
+#define EXPR_NEST_MAX 32
+#define LINE_MAX 4096
+#define RE_DUP_MAX 255
+
+#define NL_ARGMAX 9
+#define NL_LANGMAX 32
+#define NL_MSGMAX 32767
+#define NL_NMAX (MB_LEN_MAX*4)
+#define NL_SETMAX 255
+#define NL_TEXTMAX 2048
+
+#endif
+
+/* POSIX/SUS requirements follow. These numbers come directly
+ * from SUS and have nothing to do with the host system. */
+
+#define _POSIX_AIO_LISTIO_MAX   2
+#define _POSIX_AIO_MAX          1
+#define _POSIX_ARG_MAX          4096
+#define _POSIX_CHILD_MAX        25
+#define _POSIX_CLOCKRES_MIN     20000000
+#define _POSIX_DELAYTIMER_MAX   32
+#define _POSIX_HOST_NAME_MAX    255
+#define _POSIX_LINK_MAX         8
+#define _POSIX_LOGIN_NAME_MAX   9
+#define _POSIX_MAX_CANON        255
+#define _POSIX_MAX_INPUT        255
+#define _POSIX_MQ_OPEN_MAX      8
+#define _POSIX_MQ_PRIO_MAX      32
+#define _POSIX_NAME_MAX         14
+#define _POSIX_NGROUPS_MAX      8
+#define _POSIX_OPEN_MAX         20
+#define _POSIX_PATH_MAX         256
+#define _POSIX_PIPE_BUF         512
+#define _POSIX_RE_DUP_MAX       255
+#define _POSIX_RTSIG_MAX        8
+#define _POSIX_SEM_NSEMS_MAX    256
+#define _POSIX_SEM_VALUE_MAX    32767
+#define _POSIX_SIGQUEUE_MAX     32
+#define _POSIX_SSIZE_MAX        32767
+#define _POSIX_STREAM_MAX       8
+#define _POSIX_SS_REPL_MAX      4
+#define _POSIX_SYMLINK_MAX      255
+#define _POSIX_SYMLOOP_MAX      8
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
+#define _POSIX_THREAD_KEYS_MAX  128
+#define _POSIX_THREAD_THREADS_MAX 64
+#define _POSIX_TIMER_MAX        32
+#define _POSIX_TRACE_EVENT_NAME_MAX 30
+#define _POSIX_TRACE_NAME_MAX   8
+#define _POSIX_TRACE_SYS_MAX    8
+#define _POSIX_TRACE_USER_EVENT_MAX 32
+#define _POSIX_TTY_NAME_MAX     9
+#define _POSIX_TZNAME_MAX       6
+#define _POSIX2_BC_BASE_MAX     99
+#define _POSIX2_BC_DIM_MAX      2048
+#define _POSIX2_BC_SCALE_MAX    99
+#define _POSIX2_BC_STRING_MAX   1000
+#define _POSIX2_CHARCLASS_NAME_MAX 14
+#define _POSIX2_COLL_WEIGHTS_MAX 2
+#define _POSIX2_EXPR_NEST_MAX   32
+#define _POSIX2_LINE_MAX        2048
+#define _POSIX2_RE_DUP_MAX      255
+
+#define _XOPEN_IOV_MAX          16
+#define _XOPEN_NAME_MAX         255
+#define _XOPEN_PATH_MAX         1024
+
+#endif
diff --git a/include/math.h b/include/math.h
new file mode 100644 (file)
index 0000000..67810a0
--- /dev/null
@@ -0,0 +1,367 @@
+#ifndef _MATH_H
+#define _MATH_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define __NEED_float_t
+#define __NEED_double_t
+#define __NEED___uint16_t
+#define __NEED___uint32_t
+#define __NEED___uint64_t
+#include <bits/alltypes.h>
+
+#define __MAKE_FLOAT(i) (((union { int __i; float __f; }){ .__i = i }).__f)
+
+#define NAN       __MAKE_FLOAT(0x7fc00000)
+#define INFINITY  __MAKE_FLOAT(0x7f800000)
+
+#define HUGE_VALF INFINITY
+#define HUGE_VAL  ((double)INFINITY)
+#define HUGE_VALL ((long double)INFINITY)
+
+#define MAXFLOAT  __MAKE_FLOAT(0x7f7fffff)
+
+#define MATH_ERRNO  1
+#define MATH_EXCEPT 2
+#define math_errhandling 2
+
+#define FP_ILOGBNAN (((unsigned)-1)>>1)
+#define FP_ILOGB0 (~FP_ILOGBNAN)
+
+#define FP_NAN       0
+#define FP_INFINITE  1
+#define FP_ZERO      2
+#define FP_SUBNORMAL 3
+#define FP_NORMAL    4
+
+int __fpclassify(double);
+int __fpclassifyf(float);
+int __fpclassifyl(long double);
+
+#define fpclassify(x) ( \
+       sizeof(x) == sizeof(float) ? __fpclassifyf(x) : \
+       sizeof(x) == sizeof(double) ? __fpclassify(x) : \
+       __fpclassifyl(x) )
+
+#define isinf(x)    (fpclassify(x) == FP_INFINITE)
+#define isnan(x)    (fpclassify(x) == FP_NAN)
+#define isnormal(x) (fpclassify(x) == FP_NORMAL)
+#define isfinite(x) (fpclassify(x) > FP_INFINITE)
+
+int __signbit(double);
+int __signbitf(float);
+int __signbitl(long double);
+
+#define signbit(x) ( \
+       sizeof(x) == sizeof(float) ? __signbitf(x) : \
+       sizeof(x) == sizeof(double) ? __signbit(x) : \
+       __signbitl(x) )
+
+#define isunordered(x,y) (isnan((x)) ? ((void)(y),1) : isnan((y)))
+static inline int __isrel(long double __x, long double __y, int __rel)
+{
+       if (isunordered(__x, __y)) return 0;
+       if (__rel==-2) return __x < __y;
+       if (__rel==2) return __x > __y;
+       if (__rel==-1) return __x <= __y;
+       if (__rel==1) return __x >= __y;
+       return __x != __y;
+}
+
+#define isless(x,y) __isrel((x), (y), -2)
+#define islessequal(x,y) __isrel((x), (y), -1)
+#define islessgreater(x,y) __isrel((x), (y), 0)
+#define isgreaterequal(x,y) __isrel((x), (y), 1)
+#define isgreater(x,y) __isrel((x), (y), 2)
+
+double      acos(double);
+float       acosf(float);
+long double acosl(long double);
+
+double      acosh(double);
+float       acoshf(float);
+long double acoshl(long double);
+
+double      asin(double);
+float       asinf(float);
+long double asinl(long double);
+
+double      asinh(double);
+float       asinhf(float);
+long double asinhl(long double);
+
+double      atan(double);
+float       atanf(float);
+long double atanl(long double);
+
+double      atan2(double, double);
+float       atan2f(float, float);
+long double atan2l(long double, long double);
+
+double      atanh(double);
+float       atanhf(float);
+long double atanhl(long double);
+
+double      cbrt(double);
+float       cbrtf(float);
+long double cbrtl(long double);
+
+double      ceil(double);
+float       ceilf(float);
+long double ceill(long double);
+
+double      copysign(double, double);
+float       copysignf(float, float);
+long double copysignl(long double, long double);
+
+double      cos(double);
+float       cosf(float);
+long double cosl(long double);
+
+double      cosh(double);
+float       coshf(float);
+long double coshl(long double);
+
+double      erf(double);
+float       erff(float);
+long double erfl(long double);
+
+double      erfc(double);
+float       erfcf(float);
+long double erfcl(long double);
+
+double      exp(double);
+float       expf(float);
+long double expl(long double);
+
+double      exp2(double);
+float       exp2f(float);
+long double exp2l(long double);
+
+double      expm1(double);
+float       expm1f(float);
+long double expm1l(long double);
+
+double      fabs(double);
+float       fabsf(float);
+long double fabsl(long double);
+
+double      fdim(double, double);
+float       fdimf(float, float);
+long double fdiml(long double, long double);
+
+double      floor(double);
+float       floorf(float);
+long double floorl(long double);
+
+double      fma(double, double, double);
+float       fmaf(float, float, float);
+long double fmal(long double, long double, long double);
+
+double      fmax(double, double);
+float       fmaxf(float, float);
+long double fmaxl(long double, long double);
+
+double      fmin(double, double);
+float       fminf(float, float);
+long double fminl(long double, long double);
+
+double      fmod(double, double);
+float       fmodf(float, float);
+long double fmodl(long double, long double);
+
+double      frexp(double, int *);
+float       frexpf(float value, int *);
+long double frexpl(long double value, int *);
+
+double      hypot(double, double);
+float       hypotf(float, float);
+long double hypotl(long double, long double);
+
+int         ilogb(double);
+int         ilogbf(float);
+int         ilogbl(long double);
+
+double      ldexp(double, int);
+float       ldexpf(float, int);
+long double ldexpl(long double, int);
+
+double      lgamma(double);
+float       lgammaf(float);
+long double lgammal(long double);
+
+long long   llrint(double);
+long long   llrintf(float);
+long long   llrintl(long double);
+
+long long   llround(double);
+long long   llroundf(float);
+long long   llroundl(long double);
+
+double      log(double);
+float       logf(float);
+long double logl(long double);
+
+double      log10(double);
+float       log10f(float);
+long double log10l(long double);
+
+double      log1p(double);
+float       log1pf(float);
+long double log1pl(long double);
+
+double      log2(double);
+float       log2f(float);
+long double log2l(long double);
+
+double      logb(double);
+float       logbf(float);
+long double logbl(long double);
+
+long        lrint(double);
+long        lrintf(float);
+long        lrintl(long double);
+
+long        lround(double);
+long        lroundf(float);
+long        lroundl(long double);
+
+double      modf(double, double *);
+float       modff(float, float *);
+long double modfl(long double, long double *);
+
+double      nan(const char *);
+float       nanf(const char *);
+long double nanl(const char *);
+
+double      nearbyint(double);
+float       nearbyintf(float);
+long double nearbyintl(long double);
+
+double      nextafter(double, double);
+float       nextafterf(float, float);
+long double nextafterl(long double, long double);
+
+double      nexttoward(double, long double);
+float       nexttowardf(float, long double);
+long double nexttowardl(long double, long double);
+
+double      pow(double, double);
+float       powf(float, float);
+long double powl(long double, long double);
+
+double      remainder(double, double);
+float       remainderf(float, float);
+long double remainderl(long double, long double);
+
+double      remquo(double, double, int *);
+float       remquof(float, float, int *);
+long double remquol(long double, long double, int *);
+
+double      rint(double);
+float       rintf(float);
+long double rintl(long double);
+
+double      round(double);
+float       roundf(float);
+long double roundl(long double);
+
+double      scalbln(double, long);
+float       scalblnf(float, long);
+long double scalblnl(long double, long);
+
+double      scalbn(double, int);
+float       scalbnf(float, int);
+long double scalbnl(long double, int);
+
+double      sin(double);
+float       sinf(float);
+long double sinl(long double);
+
+double      sinh(double);
+float       sinhf(float);
+long double sinhl(long double);
+
+double      sqrt(double);
+float       sqrtf(float);
+long double sqrtl(long double);
+
+double      tan(double);
+float       tanf(float);
+long double tanl(long double);
+
+double      tanh(double);
+float       tanhf(float);
+long double tanhl(long double);
+
+double      tgamma(double);
+float       tgammaf(float);
+long double tgammal(long double);
+
+double      trunc(double);
+float       truncf(float);
+long double truncl(long double);
+
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
+#define M_E             2.7182818284590452354   /* e */
+#define M_LOG2E         1.4426950408889634074   /* log_2 e */
+#define M_LOG10E        0.43429448190325182765  /* log_10 e */
+#define M_LN2           0.69314718055994530942  /* log_e 2 */
+#define M_LN10          2.30258509299404568402  /* log_e 10 */
+#define M_PI            3.14159265358979323846  /* pi */
+#define M_PI_2          1.57079632679489661923  /* pi/2 */
+#define M_PI_4          0.78539816339744830962  /* pi/4 */
+#define M_1_PI          0.31830988618379067154  /* 1/pi */
+#define M_2_PI          0.63661977236758134308  /* 2/pi */
+#define M_2_SQRTPI      1.12837916709551257390  /* 2/sqrt(pi) */
+#define M_SQRT2         1.41421356237309504880  /* sqrt(2) */
+#define M_SQRT1_2       0.70710678118654752440  /* 1/sqrt(2) */
+
+extern int signgam;
+
+double      gamma(double);
+float       gammaf(float);
+long double gammal(long double);
+
+double      lgamma_r(double, int*);
+float       lgammaf_r(float, int*);
+long double lgammal_r(long double, int*);
+
+double      j0(double);
+float       j0f(float);
+long double j0l(long double);
+
+double      j1(double);
+float       j1f(float);
+long double j1l(long double);
+
+double      jn(int, double);
+float       jnf(int, float);
+long double jnl(int, long double);
+
+double      y0(double);
+float       y0f(float);
+long double y0l(long double);
+
+double      y1(double);
+float       y1f(float);
+long double y1l(long double);
+
+double      yn(int, double);
+float       ynf(int, float);
+long double ynl(int, long double);
+#endif
+
+#ifdef _GNU_SOURCE
+double      scalb(double, double);
+float       scalbf(float, float);
+long double scalbl(long double, long double);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/include/stddef.h b/include/stddef.h
new file mode 100644 (file)
index 0000000..dbf5a4a
--- /dev/null
@@ -0,0 +1,19 @@
+#ifndef _STDDEF_H
+#define _STDDEF_H
+
+#undef NULL
+#ifdef __cplusplus
+#define NULL 0
+#else
+#define NULL ((void*)0)
+#endif
+
+#define __NEED_ptrdiff_t
+#define __NEED_size_t
+#define __NEED_wchar_t
+
+#include <bits/alltypes.h>
+
+#define offsetof(type, member) ((size_t)( (char *)&(((type *)0)->member) - (char *)0 ))
+
+#endif
diff --git a/include/stdint.h b/include/stdint.h
new file mode 100644 (file)
index 0000000..5400667
--- /dev/null
@@ -0,0 +1,103 @@
+#ifndef _STDINT_H
+#define _STDINT_H
+
+#define __NEED_int8_t
+#define __NEED_int16_t
+#define __NEED_int32_t
+#define __NEED_int64_t
+
+#define __NEED_uint8_t
+#define __NEED_uint16_t
+#define __NEED_uint32_t
+#define __NEED_uint64_t
+
+#define __NEED_int_fast8_t
+#define __NEED_int_fast16_t
+#define __NEED_int_fast32_t
+#define __NEED_int_fast64_t
+
+#define __NEED_uint_fast8_t
+#define __NEED_uint_fast16_t
+#define __NEED_uint_fast32_t
+#define __NEED_uint_fast64_t
+
+#define __NEED_intptr_t
+#define __NEED_uintptr_t
+
+#include <bits/alltypes.h>
+
+typedef int8_t  int_least8_t;
+typedef int16_t int_least16_t;
+typedef int32_t int_least32_t;
+typedef int64_t int_least64_t;
+
+typedef uint8_t  uint_least8_t;
+typedef uint16_t uint_least16_t;
+typedef uint32_t uint_least32_t;
+typedef uint64_t uint_least64_t;
+
+typedef long long          intmax_t;
+typedef unsigned long long uintmax_t;
+
+#if !defined __cplusplus || defined __STDC_LIMIT_MACROS
+
+#define INT8_MIN   (-1-0x7f)
+#define INT16_MIN  (-1-0x7fff)
+#define INT32_MIN  (-1-0x7fffffff)
+#define INT64_MIN  (-1-0x7fffffffffffffffLL)
+
+#define INT8_MAX   (0x7f)
+#define INT16_MAX  (0x7fff)
+#define INT32_MAX  (0x7fffffff)
+#define INT64_MAX  (0x7fffffffffffffffLL)
+
+#define UINT8_MAX  (0xff)
+#define UINT16_MAX (0xffff)
+#define UINT32_MAX (0xffffffff)
+#define UINT64_MAX (0xffffffffffffffffULL)
+
+#define INT_LEAST8_MIN   INT8_MIN
+#define INT_LEAST16_MIN  INT16_MIN
+#define INT_LEAST32_MIN  INT32_MIN
+#define INT_LEAST64_MIN  INT64_MIN
+
+#define INT_LEAST8_MAX   INT8_MAX
+#define INT_LEAST16_MAX  INT16_MAX
+#define INT_LEAST32_MAX  INT32_MAX
+#define INT_LEAST64_MAX  INT64_MAX
+
+#define UINT_LEAST8_MAX  UINT8_MAX
+#define UINT_LEAST16_MAX UINT16_MAX
+#define UINT_LEAST32_MAX UINT32_MAX
+#define UINT_LEAST64_MAX UINT64_MAX
+
+#define INTMAX_MIN  INT64_MIN
+#define INTMAX_MAX  INT64_MAX
+#define UINTMAX_MAX UINT64_MAX
+
+#define WINT_MIN INT32_MIN
+#define WINT_MAX INT32_MAX
+
+#include <bits/wchar.h>
+#include <bits/stdint.h>
+
+#endif
+
+#if !defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+#define INT8_C(c)  c
+#define INT16_C(c) c
+#define INT32_C(c) c
+#define INT64_C(c) c ## LL
+
+#define UINT8_C(c)  c ## U
+#define UINT16_C(c) c ## U
+#define UINT32_C(c) c ## U
+#define UINT64_C(c) c ## ULL
+
+#define INTMAX_C(c)  c ## LL
+#define UINTMAX_C(c) c ## ULL
+
+#endif
+
+#endif
diff --git a/include/tgmath.h b/include/tgmath.h
new file mode 100644 (file)
index 0000000..169601a
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _TGMATH_H
+#define _TGMATH_H
+
+// C11 only
+// See C11 6.5.1.1 for generic selections
+// See C11 7.25 for tgmath.h
+
+#include <math.h>
+#include <complex.h>
+
+#define __tg_real(__fun, x) _Generic(x, \
+       float: __fun ## f, \
+       long double: __fun ## l, \
+       default: __fun)
+#define __tg_real_2(__fun, x, y) _Generic(x, \
+       float: __tg_real(__fun, y), \
+       long double: __fun ## l, \
+       default: _Generic(y, \
+               long double: __fun ## l, \
+               default: __fun))
+#define __tg_real_3(__fun, x, y, z) _Generic(x, \
+       float: __tg_real_2(__fun, y, z), \
+       long double: __fun ## l, \
+       default: _Generic(y, \
+               long double: __fun ## l, \
+               default: _Generic(z, \
+                       long double: __fun ## l, \
+                       default: __fun)))
+// FIXME: imaginary type
+#define __tg_complex(__fun, x) _Generic(x, \
+       float: __fun ## f, \
+       long double: __fun ## l, \
+       float complex: __fun ## f, \
+       long double complex: __fun ## l, \
+       default: __fun)
+#define __tg_real_complex(__fun, x) _Generic(x, \
+       float: __fun ## f, \
+       long double: __fun ## l, \
+       float complex: c ## __fun ## f, \
+       double complex: c ## __fun, \
+       long double complex: c ## __fun ## l, \
+       default: __fun)
+
+#define acos(x)         __tg_real_complex(acos, (x))(x)
+#define acosh(x)        __tg_real_complex(acosh, (x))(x)
+#define asin(x)         __tg_real_complex(asin, (x))(x)
+#define asinh(x)        __tg_real_complex(asinh, (x))(x)
+#define atan(x)         __tg_real_complex(atan, (x))(x)
+#define atan2(x)        __tg_real_2(atan2, (x), (y))((x), (y))
+#define atanh(x)        __tg_real_complex(atanh, (x))(x)
+#define carg(x)         __tg_complex(carg, (x))(x)
+#define cbrt(x)         __tg_real(cbrt, (x))(x)
+#define ceil(x)         __tg_real(ceil, (x))(x)
+#define cimag(x)        __tg_complex(cimag, (x))(x)
+#define conj(x)         __tg_complex(conj, (x))(x)
+#define copysign(x,y)   __tg_real_2(copysign, (x), (y))((x), (y))
+#define cos(x)          __tg_real_complex(cos, (x))(x)
+#define cosh(x)         __tg_real_complex(cosh, (x))(x)
+#define cproj(x)        __tg_complex(cproj, (x))(x)
+#define creal(x)        __tg_complex(creal, (x))(x)
+#define erf(x)          __tg_real(erf, (x))(x)
+#define erfc(x)         __tg_real(erfc, (x))(x)
+#define exp(x)          __tg_real_complex(exp, (x))(x)
+#define exp2(x)         __tg_real(exp2, (x))(x)
+#define expm1(x)        __tg_real(expm1, (x))(x)
+#define fabs(x)         __tg_real_complex(fabs, (x))(x)
+#define fdim(x)         __tg_real(fdim, (x))(x)
+#define floor(x)        __tg_real(floor, (x))(x)
+#define fma(x,y,z)      __tg_real_3(fma, (x), (y), (z))((x), (y), (z))
+#define fmax(x,y)       __tg_real_2(fmax, (x), (y))((x), (y))
+#define fmin(x,y)       __tg_real_2(fmin, (x), (y))((x), (y))
+#define fmod(x,y)       __tg_real_2(fmod, (x), (y))((x), (y))
+#define frexp(x,y)      __tg_real(frexp, (x))((x), (y))
+#define hypot(x,y)      __tg_real_2(hypot, (x), (y))((x), (y))
+#define ilogb(x)        __tg_real(ilogb, (x))(x)
+#define ldexp(x,y)      __tg_real(ldexp, (x))((x), (y))
+#define lgamma(x)       __tg_real(lgamma, (x))(x)
+#define llrint(x)       __tg_real(llrint, (x))(x)
+#define llround(x)      __tg_real(llround, (x))(x)
+#define log(x)          __tg_real_complex(log, (x))(x)
+#define log10(x)        __tg_real(log10, (x))(x)
+#define log1p(x)        __tg_real(log1p, (x))(x)
+#define log2(x)         __tg_real(log2, (x))(x)
+#define logb(x)         __tg_real(logb, (x))(x)
+#define lrint(x)        __tg_real(lrint, (x))(x)
+#define lround(x)       __tg_real(lround, (x))(x)
+#define nearbyint(x)    __tg_real(nearbyint, (x))(x)
+#define nextafter(x,y)  __tg_real_2(nextafter, (x), (y)((x), (y))
+#define nexttoward(x,y) __tg_real_2(nexttoward, (x), (y))((x), (y))
+#define pow(x)          __tg_real_complex(pow, (x))(x)
+#define remainder(x,y)  __tg_real_2(remainder, (x), (y))((x), (y))
+#define remquo(x,y,z)   __tg_real_2(remquo, (x), (y))((x), (y), (z))
+#define rint(x)         __tg_real(rint, (x))(x)
+#define round(x)        __tg_real(round, (x))(x)
+#define scalbln(x,y)    __tg_real(scalbln, (x))((x), (y))
+#define scalbn(x, y)    __tg_real(scalbn, (x))((x), (y))
+#define sin(x)          __tg_real_complex(sin, (x))(x)
+#define sinh(x)         __tg_real_complex(sinh, (x))(x)
+#define sqrt(x)         __tg_real_complex(sqrt, (x))(x)
+#define tan(x)          __tg_real_complex(tan, (x))(x)
+#define tanh(x)         __tg_real_complex(tanh, (x))(x)
+#define tgamma(x)       __tg_real(tgamma, (x))(x)
+#define trunc(x)        __tg_real(trunc, (x))(x)
+
+#endif
diff --git a/src/fenv/fegetexceptflag.c b/src/fenv/fegetexceptflag.c
new file mode 100644 (file)
index 0000000..bab0b44
--- /dev/null
@@ -0,0 +1,7 @@
+#include <fenv.h>
+
+int fegetexceptflag(fexcept_t *fp, int mask)
+{
+       *fp = fetestexcept(mask);
+       return 0;
+}
diff --git a/src/fenv/feholdexcept.c b/src/fenv/feholdexcept.c
new file mode 100644 (file)
index 0000000..4c6da23
--- /dev/null
@@ -0,0 +1,7 @@
+#include <fenv.h>
+
+int feholdexcept(fenv_t *envp)
+{
+       fegetenv(envp);
+       return 0;
+}
diff --git a/src/fenv/fenv.c b/src/fenv/fenv.c
new file mode 100644 (file)
index 0000000..f77599b
--- /dev/null
@@ -0,0 +1,38 @@
+#include <fenv.h>
+