summaryrefslogtreecommitdiff
path: root/libc
diff options
context:
space:
mode:
Diffstat (limited to 'libc')
-rw-r--r--libc/ChangeLog66
-rw-r--r--libc/Makeconfig9
-rw-r--r--libc/NEWS5
-rw-r--r--libc/math/libm-test.inc8
-rw-r--r--libc/stdlib/longlong.h80
-rw-r--r--libc/sysdeps/ieee754/dbl-64/s_fma.c4
-rw-r--r--libc/sysdeps/ieee754/dbl-64/s_fmaf.c4
-rw-r--r--libc/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c4
-rw-r--r--libc/sysdeps/ieee754/ldbl-128/s_fmal.c5
-rw-r--r--libc/sysdeps/ieee754/ldbl-96/s_fmal.c5
-rw-r--r--libc/sysdeps/unix/sysv/linux/i386/Makefile1
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile3
-rw-r--r--libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile2
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-32/Makefile3
-rw-r--r--libc/sysdeps/unix/sysv/linux/s390/s390-64/Makefile3
-rw-r--r--libc/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile3
-rw-r--r--libc/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile3
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86/Makefile4
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86/bits/wchar.h (renamed from libc/sysdeps/unix/sysv/linux/i386/bits/wchar.h)0
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86/sys/elf.h (renamed from libc/sysdeps/unix/sysv/linux/i386/sys/elf.h)0
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86/sys/vm86.h (renamed from libc/sysdeps/unix/sysv/linux/i386/sys/vm86.h)0
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/Makefile1
-rw-r--r--libc/sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h4
23 files changed, 173 insertions, 44 deletions
diff --git a/libc/ChangeLog b/libc/ChangeLog
index 009e75ed1..49daa0e35 100644
--- a/libc/ChangeLog
+++ b/libc/ChangeLog
@@ -1,3 +1,69 @@
+2012-06-01 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile
+ (default-abi): New variable.
+ * sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile: New file.
+ * sysdeps/unix/sysv/linux/s390/s390-32/Makefile (default-abi): New
+ variable.
+ * sysdeps/unix/sysv/linux/s390/s390-64/Makefile (default-abi):
+ Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc32/Makefile (default-abi):
+ Likewise.
+ * sysdeps/unix/sysv/linux/sparc/sparc64/Makefile (default-abi):
+ Likewise.
+
+ * Makeconfig [abi-variants && !default-abi] (default-abi): Remove
+ definition. Document in comment.
+
+2012-06-01 David S. Miller <davem@davemloft.net>
+
+ * stdlib/longlong.h: Updated from GCC.
+
+2012-06-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ [BZ #14117]
+ * sysdeps/unix/sysv/linux/i386/Makefile (sysdep_headers):
+ Don't add sys/elf.h sys/perm.h sys/reg.h sys/vm86.h
+ sys/debugreg.h sys/io.h here.
+ * sysdeps/unix/sysv/linux/x86/Makefile (sysdep_headers): Add
+ sys/elf.h sys/perm.h sys/reg.h sys/vm86.h sys/debugreg.h
+ sys/io.h.
+ * sysdeps/unix/sysv/linux/x86_64/Makefile (sysdep_headers):
+ Don't add sys/perm.h sys/reg.h sys/debugreg.h sys/io.h here.
+ * sysdeps/unix/sysv/linux/i386/sys/elf.h: Renamed to ...
+ * sysdeps/unix/sysv/linux/x86/sys/elf.h: This.
+ * sysdeps/unix/sysv/linux/i386/sys/vm86.h: Renamed to ...
+ * sysdeps/unix/sysv/linux/x86/sys/vm86.h: This.
+
+ * sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h (DR_LEN_8):
+ Define only if __x86_64__ is defined.
+
+2012-06-01 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #14048]
+ * sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c (__ieee754_fmod):
+ Use int64_t for variable i.
+ * math/libm-test.inc (fmod_test): Add more tests.
+
+ * sysdeps/ieee754/dbl-64/s_fmaf.c (__fmaf): Ensure temp + (double)
+ z computation is not scheduled after fetestexcept.
+ * sysdeps/ieee754/ldbl-128/s_fmal.c: Include <math_private.h>.
+ Use math_force_eval instead of asm to ensure calculation scheduled
+ before exception test.
+ * sysdeps/ieee754/ldbl-96/s_fmal.c: Include <math_private.h>.
+ Ensure a1 + u.d computation is not scheduled after fetestexcept.
+
+2012-06-01 Aurelien Jarno <aurelien@aurel32.net>
+
+ * sysdeps/ieee754/dbl-64/s_fma.c (__fma): Ensure a1 + u.d
+ computation is not scheduled after fetestexcept.
+
+2012-06-01 H.J. Lu <hongjiu.lu@intel.com>
+
+ [BZ #14117]
+ * sysdeps/unix/sysv/linux/i386/bits/wchar.h: Renamed to ...
+ * sysdeps/unix/sysv/linux/x86/bits/wchar.h: This.
+
2012-06-01 Adhemerval Zanella <azanella@linux.vnet.ibm.com>
* sysdeps/powerpc/fpu/k_cosf.c: Fix underflow generation.
diff --git a/libc/Makeconfig b/libc/Makeconfig
index f3c8802f8..ef0421c95 100644
--- a/libc/Makeconfig
+++ b/libc/Makeconfig
@@ -805,13 +805,8 @@ ifeq (yes, $(build-shared))
# defines abi-$(variant)-condition to be the condition for those options
# to use in a C #if condition. abi-includes may be defined to a list of
# headers to include in the generated header, if the default does not
-# suffice.
-
-ifdef abi-variants
-ifndef default-abi
-default-abi = $(firstword $(abi-variants))
-endif
-endif
+# suffice. default-abi is defined to be the ABI for the current glibc
+# build.
ifndef abi-includes
abi-includes := bits/wordsize.h
diff --git a/libc/NEWS b/libc/NEWS
index 654175ae8..2f596ffd2 100644
--- a/libc/NEWS
+++ b/libc/NEWS
@@ -27,8 +27,9 @@ Version 2.16
13916, 13917, 13918, 13919, 13920, 13921, 13922, 13923, 13924, 13926,
13927, 13928, 13938, 13941, 13942, 13954, 13955, 13956, 13963, 13967,
13968, 13970, 13973, 13979, 13983, 13986, 14012, 14027, 14033, 14034,
- 14036, 14040, 14043, 14044, 14049, 14053, 14055, 14059, 14064, 14075,
- 14080, 14083, 14103, 14104, 14109, 14112, 14122, 14123, 14153, 14183
+ 14036, 14040, 14043, 14044, 14048, 14049, 14053, 14055, 14059, 14064,
+ 14075, 14080, 14083, 14103, 14104, 14109, 14112, 14122, 14123, 14153,
+ 14183
* Support for the x32 ABI on x86-64 added. The x32 target is selected by
configuring glibc with:
diff --git a/libc/math/libm-test.inc b/libc/math/libm-test.inc
index c2176929b..0eed5978a 100644
--- a/libc/math/libm-test.inc
+++ b/libc/math/libm-test.inc
@@ -4136,6 +4136,14 @@ fmod_test (void)
TEST_ff_f (fmod, 6.5, -2.25L, 2.0L);
TEST_ff_f (fmod, -6.5, -2.25L, -2.0L);
+ TEST_ff_f (fmod, 0x0.fffffep-126L, 0x1p-149L, plus_zero);
+#ifndef TEST_FLOAT
+ TEST_ff_f (fmod, 0x0.fffffffffffffp-1022L, 0x1p-1074L, plus_zero);
+#endif
+#if defined TEST_LDOUBLE && LDBL_MIN_EXP <= -16381
+ TEST_ff_f (fmod, 0x0.fffffffffffffffep-16382L, 0x1p-16445L, plus_zero);
+#endif
+
END (fmod);
}
diff --git a/libc/stdlib/longlong.h b/libc/stdlib/longlong.h
index 4fa9d4683..ad42907f5 100644
--- a/libc/stdlib/longlong.h
+++ b/libc/stdlib/longlong.h
@@ -1127,6 +1127,29 @@ UDItype __umulsidi3 (USItype, USItype);
"rJ" ((USItype) (al)), \
"rI" ((USItype) (bl)) \
__CLOBBER_CC)
+#if defined (__sparc_v9__)
+#define umul_ppmm(w1, w0, u, v) \
+ do { \
+ register USItype __g1 asm ("g1"); \
+ __asm__ ("umul\t%2,%3,%1\n\t" \
+ "srlx\t%1, 32, %0" \
+ : "=r" ((USItype) (w1)), \
+ "=r" (__g1) \
+ : "r" ((USItype) (u)), \
+ "r" ((USItype) (v))); \
+ (w0) = __g1; \
+ } while (0)
+#define udiv_qrnnd(__q, __r, __n1, __n0, __d) \
+ __asm__ ("mov\t%2,%%y\n\t" \
+ "udiv\t%3,%4,%0\n\t" \
+ "umul\t%0,%4,%1\n\t" \
+ "sub\t%3,%1,%1" \
+ : "=&r" ((USItype) (__q)), \
+ "=&r" ((USItype) (__r)) \
+ : "r" ((USItype) (__n1)), \
+ "r" ((USItype) (__n0)), \
+ "r" ((USItype) (__d)))
+#else
#if defined (__sparc_v8__)
#define umul_ppmm(w1, w0, u, v) \
__asm__ ("umul %2,%3,%1;rd %%y,%0" \
@@ -1292,37 +1315,44 @@ UDItype __umulsidi3 (USItype, USItype);
#define UDIV_TIME (3+7*32) /* 7 instructions/iteration. 32 iterations. */
#endif /* __sparclite__ */
#endif /* __sparc_v8__ */
+#endif /* __sparc_v9__ */
#endif /* sparc32 */
#if ((defined (__sparc__) && defined (__arch64__)) || defined (__sparcv9)) \
&& W_TYPE_SIZE == 64
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("addcc %r4,%5,%1\n\t" \
- "add %r2,%3,%0\n\t" \
- "bcs,a,pn %%xcc, 1f\n\t" \
- "add %0, 1, %0\n" \
- "1:" \
- : "=r" ((UDItype)(sh)), \
- "=&r" ((UDItype)(sl)) \
- : "%rJ" ((UDItype)(ah)), \
- "rI" ((UDItype)(bh)), \
- "%rJ" ((UDItype)(al)), \
- "rI" ((UDItype)(bl)) \
- __CLOBBER_CC)
+ do { \
+ UDItype __carry = 0; \
+ __asm__ ("addcc\t%r5,%6,%1\n\t" \
+ "add\t%r3,%4,%0\n\t" \
+ "movcs\t%%xcc, 1, %2\n\t" \
+ "add\t%0, %2, %0" \
+ : "=r" ((UDItype)(sh)), \
+ "=&r" ((UDItype)(sl)), \
+ "+r" (__carry) \
+ : "%rJ" ((UDItype)(ah)), \
+ "rI" ((UDItype)(bh)), \
+ "%rJ" ((UDItype)(al)), \
+ "rI" ((UDItype)(bl)) \
+ __CLOBBER_CC); \
+ } while (0)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subcc %r4,%5,%1\n\t" \
- "sub %r2,%3,%0\n\t" \
- "bcs,a,pn %%xcc, 1f\n\t" \
- "sub %0, 1, %0\n\t" \
- "1:" \
- : "=r" ((UDItype)(sh)), \
- "=&r" ((UDItype)(sl)) \
- : "rJ" ((UDItype)(ah)), \
- "rI" ((UDItype)(bh)), \
- "rJ" ((UDItype)(al)), \
- "rI" ((UDItype)(bl)) \
- __CLOBBER_CC)
+#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
+ do { \
+ UDItype __carry = 0; \
+ __asm__ ("subcc\t%r5,%6,%1\n\t" \
+ "sub\t%r3,%4,%0\n\t" \
+ "movcs\t%%xcc, 1, %2\n\t" \
+ "add\t%0, %2, %0" \
+ : "=r" ((UDItype)(sh)), \
+ "=&r" ((UDItype)(sl)), \
+ "+r" (__carry) \
+ : "%rJ" ((UDItype)(ah)), \
+ "rI" ((UDItype)(bh)), \
+ "%rJ" ((UDItype)(al)), \
+ "rI" ((UDItype)(bl)) \
+ __CLOBBER_CC); \
+ } while (0)
#define umul_ppmm(wh, wl, u, v) \
do { \
diff --git a/libc/sysdeps/ieee754/dbl-64/s_fma.c b/libc/sysdeps/ieee754/dbl-64/s_fma.c
index ab20a801a..ce3bd36fa 100644
--- a/libc/sysdeps/ieee754/dbl-64/s_fma.c
+++ b/libc/sysdeps/ieee754/dbl-64/s_fma.c
@@ -1,5 +1,5 @@
/* Compute x * y + z as ternary operation.
- Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2010-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
@@ -158,6 +158,8 @@ __fma (double x, double y, double z)
if ((u.ieee.mantissa1 & 1) == 0)
u.ieee.mantissa1 |= libc_fetestexcept (FE_INEXACT) != 0;
v.d = a1 + u.d;
+ /* Ensure the addition is not scheduled after fetestexcept call. */
+ math_force_eval (v.d);
}
/* Reset rounding mode and test for inexact simultaneously. */
diff --git a/libc/sysdeps/ieee754/dbl-64/s_fmaf.c b/libc/sysdeps/ieee754/dbl-64/s_fmaf.c
index 7a939aaed..e7a0650f0 100644
--- a/libc/sysdeps/ieee754/dbl-64/s_fmaf.c
+++ b/libc/sysdeps/ieee754/dbl-64/s_fmaf.c
@@ -1,5 +1,5 @@
/* Compute x * y + z as ternary operation.
- Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2010-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
@@ -40,6 +40,8 @@ __fmaf (float x, float y, float z)
/* Perform addition with round to odd. */
u.d = temp + (double) z;
+ /* Ensure the addition is not scheduled after fetestexcept call. */
+ math_force_eval (u.d);
/* Reset rounding mode and test for inexact simultaneously. */
int j = libc_feupdateenv_test (&env, FE_INEXACT) != 0;
diff --git a/libc/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c b/libc/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
index 6d2540447..a630d10fe 100644
--- a/libc/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
+++ b/libc/sysdeps/ieee754/dbl-64/wordsize-64/e_fmod.c
@@ -24,8 +24,8 @@ static const double one = 1.0, Zero[] = {0.0, -0.0,};
double
__ieee754_fmod (double x, double y)
{
- int32_t n,i,ix,iy;
- int64_t hx,hy,hz,sx;
+ int32_t n,ix,iy;
+ int64_t hx,hy,hz,sx,i;
EXTRACT_WORDS64(hx,x);
EXTRACT_WORDS64(hy,y);
diff --git a/libc/sysdeps/ieee754/ldbl-128/s_fmal.c b/libc/sysdeps/ieee754/ldbl-128/s_fmal.c
index 3b85b17fa..963bbd734 100644
--- a/libc/sysdeps/ieee754/ldbl-128/s_fmal.c
+++ b/libc/sysdeps/ieee754/ldbl-128/s_fmal.c
@@ -1,5 +1,5 @@
/* Compute x * y + z as ternary operation.
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
@@ -21,6 +21,7 @@
#include <math.h>
#include <fenv.h>
#include <ieee754.h>
+#include <math_private.h>
/* This implementation uses rounding to odd to avoid problems with
double rounding. See a paper by Boldo and Melquiond:
@@ -175,7 +176,7 @@ __fmal (long double x, long double y, long double z)
u.ieee.mantissa3 |= fetestexcept (FE_INEXACT) != 0;
v.d = a1 + u.d;
/* Ensure the addition is not scheduled after fetestexcept call. */
- asm volatile ("" : : "m" (v));
+ math_force_eval (v.d);
int j = fetestexcept (FE_INEXACT) != 0;
feupdateenv (&env);
/* Ensure the following computations are performed in default rounding
diff --git a/libc/sysdeps/ieee754/ldbl-96/s_fmal.c b/libc/sysdeps/ieee754/ldbl-96/s_fmal.c
index 76866fbfa..ca1e0905a 100644
--- a/libc/sysdeps/ieee754/ldbl-96/s_fmal.c
+++ b/libc/sysdeps/ieee754/ldbl-96/s_fmal.c
@@ -1,5 +1,5 @@
/* Compute x * y + z as ternary operation.
- Copyright (C) 2010 Free Software Foundation, Inc.
+ Copyright (C) 2010-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Jakub Jelinek <jakub@redhat.com>, 2010.
@@ -21,6 +21,7 @@
#include <math.h>
#include <fenv.h>
#include <ieee754.h>
+#include <math_private.h>
/* This implementation uses rounding to odd to avoid problems with
double rounding. See a paper by Boldo and Melquiond:
@@ -174,6 +175,8 @@ __fmal (long double x, long double y, long double z)
if ((u.ieee.mantissa1 & 1) == 0)
u.ieee.mantissa1 |= fetestexcept (FE_INEXACT) != 0;
v.d = a1 + u.d;
+ /* Ensure the addition is not scheduled after fetestexcept call. */
+ math_force_eval (v.d);
int j = fetestexcept (FE_INEXACT) != 0;
feupdateenv (&env);
/* Ensure the following computations are performed in default rounding
diff --git a/libc/sysdeps/unix/sysv/linux/i386/Makefile b/libc/sysdeps/unix/sysv/linux/i386/Makefile
index f4585d788..acc30219e 100644
--- a/libc/sysdeps/unix/sysv/linux/i386/Makefile
+++ b/libc/sysdeps/unix/sysv/linux/i386/Makefile
@@ -3,7 +3,6 @@ default-abi := 32
ifeq ($(subdir),misc)
sysdep_routines += ioperm iopl vm86 call_pselect6 call_fallocate
-sysdep_headers += sys/elf.h sys/perm.h sys/reg.h sys/vm86.h sys/debugreg.h sys/io.h
endif
ifeq ($(subdir),elf)
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile
index 966a7689e..84324aa7e 100644
--- a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/Makefile
@@ -1,3 +1,6 @@
+# See Makeconfig regarding the use of default-abi.
+default-abi := 32
+
ifeq ($(subdir),resource)
sysdep_routines += oldgetrlimit64
endif
diff --git a/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile
new file mode 100644
index 000000000..3ba3b1f6e
--- /dev/null
+++ b/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile
@@ -0,0 +1,2 @@
+# See Makeconfig regarding the use of default-abi.
+default-abi := 64
diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-32/Makefile b/libc/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
index a509c9312..3216804f7 100644
--- a/libc/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
+++ b/libc/sysdeps/unix/sysv/linux/s390/s390-32/Makefile
@@ -1,3 +1,6 @@
+# See Makeconfig regarding the use of default-abi.
+default-abi := 32
+
ifeq ($(subdir),login)
sysdep_routines += utmp32 utmpx32
libutil-routines += login32
diff --git a/libc/sysdeps/unix/sysv/linux/s390/s390-64/Makefile b/libc/sysdeps/unix/sysv/linux/s390/s390-64/Makefile
index 283361b3f..1f6ad2106 100644
--- a/libc/sysdeps/unix/sysv/linux/s390/s390-64/Makefile
+++ b/libc/sysdeps/unix/sysv/linux/s390/s390-64/Makefile
@@ -1,3 +1,6 @@
+# See Makeconfig regarding the use of default-abi.
+default-abi := 64
+
ifeq ($(subdir),misc)
sysdep_headers += sys/elf.h
endif
diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile b/libc/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile
index 8f7e76be2..21c7dc168 100644
--- a/libc/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile
+++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc32/Makefile
@@ -1,3 +1,6 @@
+# See Makeconfig regarding the use of default-abi.
+default-abi := 32
+
asm-CPPFLAGS = -D__ASSEMBLY__
ASFLAGS-.os += -fPIC
LD += -melf32_sparc
diff --git a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
index df4533af6..3e29dd841 100644
--- a/libc/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
+++ b/libc/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
@@ -1,2 +1,5 @@
+# See Makeconfig regarding the use of default-abi.
+default-abi := 64
+
sysdep-CFLAGS += -fcall-used-g6
LD += -melf64_sparc
diff --git a/libc/sysdeps/unix/sysv/linux/x86/Makefile b/libc/sysdeps/unix/sysv/linux/x86/Makefile
index cf4a55cf0..6412a9ef3 100644
--- a/libc/sysdeps/unix/sysv/linux/x86/Makefile
+++ b/libc/sysdeps/unix/sysv/linux/x86/Makefile
@@ -12,3 +12,7 @@ abi-64-ld-soname := ld-linux-x86-64.so.2
abi-x32-options := -U__i386__ -D__x86_64__ -D__ILP32__ -U__LP64__
abi-x32-condition := defined __x86_64__ && defined __ILP32__
abi-x32-ld-soname := ld-linux-x32.so.2
+
+ifeq ($(subdir),misc)
+sysdep_headers += sys/elf.h sys/perm.h sys/reg.h sys/vm86.h sys/debugreg.h sys/io.h
+endif
diff --git a/libc/sysdeps/unix/sysv/linux/i386/bits/wchar.h b/libc/sysdeps/unix/sysv/linux/x86/bits/wchar.h
index ec0f34a47..ec0f34a47 100644
--- a/libc/sysdeps/unix/sysv/linux/i386/bits/wchar.h
+++ b/libc/sysdeps/unix/sysv/linux/x86/bits/wchar.h
diff --git a/libc/sysdeps/unix/sysv/linux/i386/sys/elf.h b/libc/sysdeps/unix/sysv/linux/x86/sys/elf.h
index 1f4524cba..1f4524cba 100644
--- a/libc/sysdeps/unix/sysv/linux/i386/sys/elf.h
+++ b/libc/sysdeps/unix/sysv/linux/x86/sys/elf.h
diff --git a/libc/sysdeps/unix/sysv/linux/i386/sys/vm86.h b/libc/sysdeps/unix/sysv/linux/x86/sys/vm86.h
index c41b55d7b..c41b55d7b 100644
--- a/libc/sysdeps/unix/sysv/linux/i386/sys/vm86.h
+++ b/libc/sysdeps/unix/sysv/linux/x86/sys/vm86.h
diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/Makefile b/libc/sysdeps/unix/sysv/linux/x86_64/Makefile
index dd4ab59c5..d6a9d360d 100644
--- a/libc/sysdeps/unix/sysv/linux/x86_64/Makefile
+++ b/libc/sysdeps/unix/sysv/linux/x86_64/Makefile
@@ -1,6 +1,5 @@
ifeq ($(subdir),misc)
sysdep_routines += ioperm iopl
-sysdep_headers += sys/perm.h sys/reg.h sys/debugreg.h sys/io.h
endif
ifeq ($(subdir),stdlib)
diff --git a/libc/sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h b/libc/sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h
index 84a901743..de10277e2 100644
--- a/libc/sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h
+++ b/libc/sysdeps/unix/sysv/linux/x86_64/sys/debugreg.h
@@ -54,7 +54,9 @@
#define DR_LEN_1 (0x0) /* Settings for data length to trap on */
#define DR_LEN_2 (0x4)
#define DR_LEN_4 (0xC)
-#define DR_LEN_8 (0x8)
+#ifdef __x86_64__
+# define DR_LEN_8 (0x8)
+#endif
/* The low byte to the control register determine which registers are
enabled. There are 4 fields of two bits. One bit is "local", meaning