diff --git a/libc/Android.mk b/libc/Android.mk
index 9881d59..1ce2feb 100644
--- a/libc/Android.mk
+++ b/libc/Android.mk
@@ -346,13 +346,15 @@
 	arch-arm/bionic/__get_sp.S \
 	arch-arm/bionic/_exit_with_stack_teardown.S \
 	arch-arm/bionic/_setjmp.S \
-	arch-arm/bionic/atomics_arm.S \
+	arch-arm/bionic/atomics_arm.c \
 	arch-arm/bionic/clone.S \
 	arch-arm/bionic/eabi.c \
 	arch-arm/bionic/ffs.S \
+	arch-arm/bionic/futex_arm.S \
 	arch-arm/bionic/kill.S \
 	arch-arm/bionic/libgcc_compat.c \
 	arch-arm/bionic/tkill.S \
+	arch-arm/bionic/tgkill.S \
 	arch-arm/bionic/memcmp.S \
 	arch-arm/bionic/memcmp16.S \
 	arch-arm/bionic/memcpy.S \
@@ -394,9 +396,9 @@
 	arch-x86/bionic/__get_sp.S \
 	arch-x86/bionic/__get_tls.c \
 	arch-x86/bionic/__set_tls.c \
-	arch-x86/bionic/atomics_x86.S \
 	arch-x86/bionic/clone.S \
 	arch-x86/bionic/_exit_with_stack_teardown.S \
+	arch-x86/bionic/futex_x86.S \
 	arch-x86/bionic/setjmp.S \
 	arch-x86/bionic/_setjmp.S \
 	arch-x86/bionic/sigsetjmp.S \
@@ -474,7 +476,12 @@
 else # !arm
   ifeq ($(TARGET_ARCH),x86)
     libc_crt_target_cflags :=
-    # TARGET_GLOBAL_CFLAGS from build/core/combo/TARGET_linux-x86.mk sets all required flags.
+    ifeq ($(ARCH_X86_HAVE_SSE2),true)
+        libc_crt_target_cflags += -DUSE_SSE2=1
+    endif
+    ifeq ($(ARCH_X86_HAVE_SSSE3),true)
+        libc_crt_target_cflags += -DUSE_SSSE3=1
+    endif
   endif # x86
 endif # !arm
 
@@ -640,7 +647,13 @@
 # ========================================================
 include $(CLEAR_VARS)
 
-LOCAL_CFLAGS := $(libc_common_cflags)
+# pthread deadlock prediction:
+# set -DPTHREAD_DEBUG -DPTHREAD_DEBUG_ENABLED=1 to enable support for
+# pthread deadlock prediction.
+# Since this code is experimental it is disabled by default.
+# see libc/bionic/pthread_debug.c for details
+
+LOCAL_CFLAGS := $(libc_common_cflags) -DPTHREAD_DEBUG -DPTHREAD_DEBUG_ENABLED=0
 LOCAL_C_INCLUDES := $(libc_common_c_includes)
 
 LOCAL_SRC_FILES := \
@@ -648,6 +661,7 @@
 	$(libc_static_common_src_files) \
 	bionic/dlmalloc.c \
 	bionic/malloc_debug_common.c \
+	bionic/pthread_debug.c \
 	bionic/libc_init_dynamic.c
 
 LOCAL_MODULE:= libc
@@ -718,7 +732,7 @@
 
 LOCAL_MODULE:= libc_malloc_debug_qemu
 
-LOCAL_SHARED_LIBRARIES := libc
+LOCAL_SHARED_LIBRARIES := libc libdl
 LOCAL_WHOLE_STATIC_LIBRARIES := libc_common
 LOCAL_SYSTEM_SHARED_LIBRARIES :=
 
diff --git a/libc/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index 2da38b7..b9bd9e7 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -64,6 +64,7 @@
 # see comments in arch-arm/bionic/kill.S to understand why we don't generate an ARM stub for kill/tkill
 int     kill(pid_t, int)           -1,37
 int     tkill(pid_t tid, int sig)  -1,238
+int     tgkill(pid_t tgid, pid_t tid, int sig)  -1,270
 int     __ptrace:ptrace(int request, int pid, void* addr, void* data)  26
 int     __set_thread_area:set_thread_area(void*  user_desc)  -1,243
 int     __getpriority:getpriority(int, int)  96
@@ -190,7 +191,7 @@
 int           __timer_getoverrun:timer_getoverrun(timer_t)                                              260,262
 int           __timer_delete:timer_delete(timer_t)                                                      261,263
 int           utimes(const char*, const struct timeval tvp[2])                          269, 271
-int           utimensat(int, const char *, const struct timespec times[2], int)         348, 320
+int           utimensat(int, const char *, const struct timespec times[2], int)         348, 320, 320
 
 # signals
 int     sigaction(int, const struct sigaction *, struct sigaction *)  67
@@ -229,7 +230,7 @@
 int           socketpair:socketcall:8(int, int, int, int*)    -1,102
 int           sendto:socketcall:11(int, const void *, size_t, int, const struct sockaddr *, socklen_t)  -1,102
 int           recvfrom:socketcall:12(int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *)  -1,102
-int           shutdown:socketcall:13(int, int)  -1,102
+int           shutdown:socketcall:13(int, int)  -1,102,-1
 int           setsockopt:socketcall:14(int, int, int, const void *, socklen_t)  -1,102
 int           getsockopt:socketcall:15(int, int, int, void *, socklen_t *)    -1,102
 int           sendmsg:socketcall:16(int, const struct msghdr *, unsigned int)  -1,102
diff --git a/libc/arch-arm/bionic/atomics_arm.S b/libc/arch-arm/bionic/atomics_arm.S
deleted file mode 100644
index 4d9cbcf..0000000
--- a/libc/arch-arm/bionic/atomics_arm.S
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#include <sys/linux-syscalls.h>
-#include <machine/asm.h>
-#include <machine/cpu-features.h>
-
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-
-#if defined(__ARM_HAVE_LDREX_STREX)
-/*
- * ===========================================================================
- *      ARMv6+ implementation
- * ===========================================================================
- */
-
-/* r0(addr) -> r0(old) */
-ENTRY(__atomic_dec)
-    mov     r1, r0                      @ copy addr so we don't clobber it
-1:  ldrex   r0, [r1]                    @ load current value into r0
-    sub     r2, r0, #1                  @ generate new value into r2
-    strex   r3, r2, [r1]                @ try to store new value; result in r3
-    cmp     r3, #0                      @ success?
-    bxeq    lr                          @ yes, return
-    b       1b                          @ no, retry
-END(__atomic_dec)
-
-/* r0(addr) -> r0(old) */
-ENTRY(__atomic_inc)
-    mov     r1, r0
-1:  ldrex   r0, [r1]
-    add     r2, r0, #1
-    strex   r3, r2, [r1]
-    cmp     r3, #0
-    bxeq    lr
-    b       1b
-END(__atomic_inc)
-
-/* r0(old) r1(new) r2(addr) -> r0(zero_if_succeeded) */
-ENTRY(__atomic_cmpxchg)
-1:  mov     ip, #2                      @ ip=2 means "new != old"
-    ldrex   r3, [r2]                    @ load current value into r3
-    teq     r0, r3                      @ new == old?
-    strexeq ip, r1, [r2]                @ yes, try store, set ip to 0 or 1
-    teq     ip, #1                      @ strex failure?
-    beq     1b                          @ yes, retry
-    mov     r0, ip                      @ return 0 on success, 2 on failure
-    bx      lr
-END(__atomic_cmpxchg)
-
-/* r0(new) r1(addr) -> r0(old) */
-ENTRY(__atomic_swap)
-1:  ldrex   r2, [r1]
-    strex   r3, r0, [r1]
-    teq     r3, #0
-    bne     1b
-    mov     r0, r2
-    bx      lr
-END(__atomic_swap)
-
-#else /*not defined __ARM_HAVE_LDREX_STREX*/
-/*
- * ===========================================================================
- *      Pre-ARMv6 implementation
- * ===========================================================================
- */
-
-    /* int __kernel_cmpxchg(int oldval, int newval, int* ptr) */
-    .equ    kernel_cmpxchg, 0xFFFF0FC0
-    .equ    kernel_atomic_base, 0xFFFF0FFF
-
-/* r0(addr) -> r0(old) */
-ENTRY(__atomic_dec)
-    .save {r4, lr}
-    stmdb   sp!, {r4, lr}
-    mov     r2, r0
-1: @ atomic_dec
-    ldr     r0, [r2]
-    mov     r3, #kernel_atomic_base
-    add     lr, pc, #4
-    sub     r1, r0, #1
-    add     pc, r3, #(kernel_cmpxchg - kernel_atomic_base)
-    bcc     1b
-    add     r0, r1, #1
-    ldmia   sp!, {r4, lr}
-    bx      lr
-END(__atomic_dec)
-
-/* r0(addr) -> r0(old) */
-ENTRY(__atomic_inc)
-    .save {r4, lr}
-    stmdb   sp!, {r4, lr}
-    mov     r2, r0
-1: @ atomic_inc
-    ldr     r0, [r2]
-    mov     r3, #kernel_atomic_base
-    add     lr, pc, #4
-    add     r1, r0, #1
-    add     pc, r3, #(kernel_cmpxchg - kernel_atomic_base)
-    bcc     1b
-    sub     r0, r1, #1
-    ldmia   sp!, {r4, lr}
-    bx      lr
-END(__atomic_inc)
-
-/* r0(old) r1(new) r2(addr) -> r0(zero_if_succeeded) */
-ENTRY(__atomic_cmpxchg)
-    .save {r4, lr}
-    stmdb   sp!, {r4, lr}
-    mov     r4, r0          /* r4 = save oldvalue */
-1: @ atomic_cmpxchg
-    mov     r3, #kernel_atomic_base
-    add     lr, pc, #4
-    mov     r0, r4          /* r0 = oldvalue */
-    add     pc, r3, #(kernel_cmpxchg - kernel_atomic_base)
-    bcs     2f              /* swap was made. we're good, return. */
-    ldr     r3, [r2]        /* swap not made, see if it's because *ptr!=oldvalue */
-    cmp     r3, r4
-    beq     1b
-2: @ atomic_cmpxchg
-    ldmia   sp!, {r4, lr}
-    bx      lr
-END(__atomic_cmpxchg)
-
-/* r0(new) r1(addr) -> r0(old) */
-ENTRY(__atomic_swap)
-    swp     r0, r0, [r1]
-    bx      lr
-END(__atomic_swap)
-
-#endif /*not defined __ARM_HAVE_LDREX_STREX*/
-
-
-/* __futex_wait(*ftx, val, *timespec) */
-/* __futex_wake(*ftx, counter) */
-/* __futex_syscall3(*ftx, op, val) */
-/* __futex_syscall4(*ftx, op, val, *timespec) */
-
-.global __futex_wait
-.type __futex_wait, %function
-
-.global __futex_wake
-.type __futex_wake, %function
-
-.global __futex_syscall3
-.type __futex_syscall3, %function
-
-.global __futex_syscall4
-.type __futex_syscall4, %function
-
-#if __ARM_EABI__
-
-ENTRY(__futex_syscall3)
-    stmdb   sp!, {r4, r7}
-    .save   {r4, r7}
-    ldr     r7, =__NR_futex
-    swi     #0
-    ldmia   sp!, {r4, r7}
-    bx      lr
-END(__futex_syscall3)
-
-ENTRY(__futex_wait)
-    stmdb   sp!, {r4, r7}
-    .save   {r4, r7}
-    mov     r3, r2
-    mov     r2, r1
-    mov     r1, #FUTEX_WAIT
-    ldr     r7, =__NR_futex
-    swi     #0
-    ldmia   sp!, {r4, r7}
-    bx      lr
-END(__futex_wait)
-
-ENTRY(__futex_wake)
-    .save   {r4, r7}
-    stmdb   sp!, {r4, r7}
-    mov     r2, r1
-    mov     r1, #FUTEX_WAKE
-    ldr     r7, =__NR_futex
-    swi     #0
-    ldmia   sp!, {r4, r7}
-    bx      lr
-END(__futex_wake)
-
-#else
-
-ENTRY(__futex_syscall3)
-    swi     #__NR_futex
-    bx      lr
-END(__futex_syscall3)
-
-ENTRY(__futex_wait)
-    mov     r3, r2
-    mov     r2, r1
-    mov     r1, #FUTEX_WAIT
-    swi     #__NR_futex
-    bx      lr
-END(__futex_wait)
-
-ENTRY(__futex_wake)
-    mov     r2, r1
-    mov     r1, #FUTEX_WAKE
-    swi     #__NR_futex
-    bx      lr
-END(__futex_wake)
-
-#endif
-
-ENTRY(__futex_syscall4)
-    b __futex_syscall3
-END(__futex_syscall4)
diff --git a/libc/arch-arm/bionic/atomics_arm.c b/libc/arch-arm/bionic/atomics_arm.c
new file mode 100644
index 0000000..d69eaff
--- /dev/null
+++ b/libc/arch-arm/bionic/atomics_arm.c
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+
+/* The purpose of this file is to export a small set of atomic-related
+ * functions from the C library, to ensure binary ABI compatibility for
+ * the NDK.
+ *
+ * These functions were initially exposed by the NDK through <sys/atomics.h>,
+ * which was unfortunate because their implementation didn't provide any
+ * memory barriers at all.
+ *
+ * This wasn't a problem for the platform code that used them, because it
+ * used explicit barrier instructions around them. On the other hand, it means
+ * that any NDK-generated machine code that linked against them would not
+ * perform correctly when running on multi-core devices.
+ *
+ * To fix this, the platform code was first modified to not use any of these
+ * functions (everything is now inlined through assembly statements, see
+ * libc/private/bionic_arm_inline.h and the headers it includes.
+ *
+ * The functions here are thus only for the benefit of NDK applications,
+ * and now includes full memory barriers to prevent any random memory ordering
+ * issue from cropping.
+ *
+ * Note that we also provide an updated <sys/atomics.h> header that defines
+ * always_inlined versions of the functions that use the GCC builtin
+ * intrinsics to perform the same thing.
+ *
+ * NOTE: There is no need for a similar file for non-ARM platforms.
+ */
+
+/* DO NOT INCLUDE <sys/atomics.h> HERE ! */
+
+int
+__atomic_cmpxchg(int old, int _new, volatile int *ptr)
+{
+    /* We must return 0 on success */
+    return __sync_val_compare_and_swap(ptr, old, _new) != old;
+}
+
+int
+__atomic_swap(int _new, volatile int *ptr)
+{
+    int prev;
+    do {
+        prev = *ptr;
+    } while (__sync_val_compare_and_swap(ptr, prev, _new) != prev);
+    return prev;
+}
+
+int
+__atomic_dec(volatile int *ptr)
+{
+  return __sync_fetch_and_sub (ptr, 1);
+}
+
+int
+__atomic_inc(volatile int *ptr)
+{
+  return __sync_fetch_and_add (ptr, 1);
+}
diff --git a/libc/arch-arm/bionic/crtbegin_dynamic.S b/libc/arch-arm/bionic/crtbegin_dynamic.S
index 0999084..6ca0845 100644
--- a/libc/arch-arm/bionic/crtbegin_dynamic.S
+++ b/libc/arch-arm/bionic/crtbegin_dynamic.S
@@ -43,21 +43,17 @@
 #    - address of an "onexit" function, not used on any
 #      platform supported by Bionic
 #
-#    - address of the "main" function of the program. We
-#      can't hard-code it in the adr pseudo instruction
-#      so we use a tiny trampoline that will get relocated
-#      by the dynamic linker before this code runs
+#    - address of the "main" function of the program.
 #
 #    - address of the constructor list
 #
 _start:	
 	mov	r0, sp
 	mov	r1, #0
-	adr r2, 0f
-	adr r3, 1f
-	b	__libc_init
-
-0:  b   main
+	ldr	r2, =main
+	adr	r3, 1f
+	ldr	r4, =__libc_init
+	bx	r4
 
 1:  .long   __PREINIT_ARRAY__
     .long   __INIT_ARRAY__
diff --git a/libc/arch-arm/bionic/crtbegin_static.S b/libc/arch-arm/bionic/crtbegin_static.S
index 13b05b2..e62ac1d 100644
--- a/libc/arch-arm/bionic/crtbegin_static.S
+++ b/libc/arch-arm/bionic/crtbegin_static.S
@@ -43,21 +43,17 @@
 #    - address of an "onexit" function, not used on any
 #      platform supported by Bionic
 #
-#    - address of the "main" function of the program. We
-#      can't hard-code it in the adr pseudo instruction
-#      so we use a tiny trampoline that will get relocated
-#      by the dynamic linker before this code runs
+#    - address of the "main" function of the program.
 #
 #    - address of the constructor list
 #
 _start:	
 	mov	r0, sp
 	mov	r1, #0
-	adr r2, 0f
-	adr r3, 1f
-	b	__libc_init
-
-0:  b   main
+	ldr	r2, =main
+	adr	r3, 1f
+	ldr	r4, =__libc_init
+	bx	r4
 
 1:  .long   __PREINIT_ARRAY__
     .long   __INIT_ARRAY__
diff --git a/libc/arch-arm/bionic/futex_arm.S b/libc/arch-arm/bionic/futex_arm.S
new file mode 100644
index 0000000..7041663
--- /dev/null
+++ b/libc/arch-arm/bionic/futex_arm.S
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#include <sys/linux-syscalls.h>
+#include <machine/asm.h>
+#include <machine/cpu-features.h>
+
+#define FUTEX_WAIT 0
+#define FUTEX_WAKE 1
+
+/* __futex_wait(*ftx, val, *timespec) */
+/* __futex_wake(*ftx, counter) */
+/* __futex_syscall3(*ftx, op, val) */
+/* __futex_syscall4(*ftx, op, val, *timespec) */
+
+.global __futex_wait
+.type __futex_wait, %function
+
+.global __futex_wake
+.type __futex_wake, %function
+
+.global __futex_syscall3
+.type __futex_syscall3, %function
+
+.global __futex_syscall4
+.type __futex_syscall4, %function
+
+#if __ARM_EABI__
+
+ENTRY(__futex_syscall3)
+    stmdb   sp!, {r4, r7}
+    .save   {r4, r7}
+    ldr     r7, =__NR_futex
+    swi     #0
+    ldmia   sp!, {r4, r7}
+    bx      lr
+END(__futex_syscall3)
+
+ENTRY(__futex_wait)
+    stmdb   sp!, {r4, r7}
+    .save   {r4, r7}
+    mov     r3, r2
+    mov     r2, r1
+    mov     r1, #FUTEX_WAIT
+    ldr     r7, =__NR_futex
+    swi     #0
+    ldmia   sp!, {r4, r7}
+    bx      lr
+END(__futex_wait)
+
+ENTRY(__futex_wake)
+    .save   {r4, r7}
+    stmdb   sp!, {r4, r7}
+    mov     r2, r1
+    mov     r1, #FUTEX_WAKE
+    ldr     r7, =__NR_futex
+    swi     #0
+    ldmia   sp!, {r4, r7}
+    bx      lr
+END(__futex_wake)
+
+#else
+
+ENTRY(__futex_syscall3)
+    swi     #__NR_futex
+    bx      lr
+END(__futex_syscall3)
+
+ENTRY(__futex_wait)
+    mov     r3, r2
+    mov     r2, r1
+    mov     r1, #FUTEX_WAIT
+    swi     #__NR_futex
+    bx      lr
+END(__futex_wait)
+
+ENTRY(__futex_wake)
+    mov     r2, r1
+    mov     r1, #FUTEX_WAKE
+    swi     #__NR_futex
+    bx      lr
+END(__futex_wake)
+
+#endif
+
+ENTRY(__futex_syscall4)
+    b __futex_syscall3
+END(__futex_syscall4)
diff --git a/libc/arch-arm/bionic/libgcc_compat.c b/libc/arch-arm/bionic/libgcc_compat.c
index d184566..a5cb219 100644
--- a/libc/arch-arm/bionic/libgcc_compat.c
+++ b/libc/arch-arm/bionic/libgcc_compat.c
@@ -66,7 +66,7 @@
  * any native shared library generated with it should now be safe from that
  * problem. On the other hand, existing shared libraries distributed with
  * applications that were generated with a previous version of the NDK
- * still need all 1.5/1.6 helper functions in libc.so and libn.so
+ * still need all 1.5/1.6 helper functions in libc.so and libm.so
  *
  * After 3.2, the toolchain was updated again, adding __aeabi_f2uiz to the
  * list of requirements. Technically, this is due to mis-linked NDK libraries
@@ -113,6 +113,8 @@
     XX(__aeabi_l2d)          \
     XX(__aeabi_l2f)          \
     XX(__aeabi_lmul)         \
+    XX(__aeabi_llsl)         \
+    XX(__aeabi_llsr)         \
     XX(__aeabi_ui2d)         \
     XX(__aeabi_ui2f)         \
     XX(__aeabi_ul2d)         \
diff --git a/libc/arch-arm/bionic/tgkill.S b/libc/arch-arm/bionic/tgkill.S
new file mode 100644
index 0000000..da5c0af
--- /dev/null
+++ b/libc/arch-arm/bionic/tgkill.S
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+/* unlike our auto-generated syscall stubs, this code saves lr
+   on the stack, as well as a few other registers. this makes
+   our stack unwinder happy, when we generate debug stack
+   traces after the C library or other parts of the system
+   abort due to a fatal runtime error (e.g. detection
+   of a corrupted malloc heap).
+*/
+
+#include <sys/linux-syscalls.h>
+#include <machine/asm.h>
+
+#ifndef __NR_tgkill
+#define __NR_tgkill  268
+#endif
+
+ENTRY(tgkill)
+    stmfd   sp!, {r4-r7, ip, lr}
+    ldr     r7, =__NR_tgkill
+    swi     #0
+    ldmfd   sp!, {r4-r7, ip, lr}
+    movs    r0, r0
+    bxpl    lr
+    b       __set_syscall_errno
+END(tgkill)
diff --git a/libc/arch-sh/syscalls/tgkill.S b/libc/arch-sh/syscalls/tgkill.S
new file mode 100644
index 0000000..222f836
--- /dev/null
+++ b/libc/arch-sh/syscalls/tgkill.S
@@ -0,0 +1,32 @@
+/* autogenerated by gensyscalls.py */
+#include <sys/linux-syscalls.h>
+
+    .text
+    .type tgkill, @function
+    .globl tgkill
+    .align 4
+
+tgkill:
+
+    /* invoke trap */
+    mov.l   0f, r3  /* trap num */
+    trapa   #(3 + 0x10)
+
+    /* check return value */
+    cmp/pz  r0
+    bt      __NR_tgkill_end
+
+    /* keep error number */
+    sts.l   pr, @-r15
+    mov.l   1f, r1
+    jsr     @r1
+    mov     r0, r4
+    lds.l   @r15+, pr
+
+__NR_tgkill_end:
+    rts
+    nop
+
+    .align  2
+0:  .long   __NR_tgkill
+1:  .long   __set_syscall_errno
diff --git a/libc/arch-x86/bionic/atomics_x86.S b/libc/arch-x86/bionic/futex_x86.S
similarity index 100%
rename from libc/arch-x86/bionic/atomics_x86.S
rename to libc/arch-x86/bionic/futex_x86.S
diff --git a/libc/arch-x86/string/sse2-memset5-atom.S b/libc/arch-x86/string/sse2-memset5-atom.S
index 4b7f71b..557c019 100644
--- a/libc/arch-x86/string/sse2-memset5-atom.S
+++ b/libc/arch-x86/string/sse2-memset5-atom.S
@@ -93,7 +93,7 @@
 # define SETRTNVAL	movl DEST(%esp), %eax
 #endif
 
-#ifdef SHARED
+#if (defined SHARED || defined __PIC__)
 # define ENTRANCE	PUSH (%ebx);
 # define RETURN_END	POP (%ebx); ret
 # define RETURN		RETURN_END; CFI_PUSH (%ebx)
@@ -313,7 +313,7 @@
 	PUSH (%ebx)
 	mov	$SHARED_CACHE_SIZE, %ebx
 #else
-# ifdef SHARED
+# if (defined SHARED || defined __PIC__)
 	call	__i686.get_pc_thunk.bx
 	add	$_GLOBAL_OFFSET_TABLE_, %ebx
 	mov	__x86_shared_cache_size@GOTOFF(%ebx), %ebx
@@ -331,7 +331,7 @@
 # define RESTORE_EBX_STATE CFI_PUSH (%ebx)
 	cmp	$DATA_CACHE_SIZE, %ecx
 #else
-# ifdef SHARED
+# if (defined SHARED || defined __PIC__)
 #  define RESTORE_EBX_STATE
 	call	__i686.get_pc_thunk.bx
 	add	$_GLOBAL_OFFSET_TABLE_, %ebx
@@ -436,7 +436,7 @@
 	jae	L(128bytesormore_nt)
 	sfence
 L(shared_cache_loop_end):
-#if defined DATA_CACHE_SIZE || !defined SHARED
+#if defined DATA_CACHE_SIZE || !(defined SHARED || defined __PIC__)
 	POP (%ebx)
 #endif
 	BRANCH_TO_JMPTBL_ENTRY (L(table_16_128bytes))
diff --git a/libc/arch-x86/string/ssse3-memcpy5.S b/libc/arch-x86/string/ssse3-memcpy5.S
index b4773df..1bf6d22 100644
--- a/libc/arch-x86/string/ssse3-memcpy5.S
+++ b/libc/arch-x86/string/ssse3-memcpy5.S
@@ -104,7 +104,7 @@
 #define PUSH(REG)	pushl REG; CFI_PUSH (REG)
 #define POP(REG)	popl REG; CFI_POP (REG)
 
-#ifdef SHARED
+#if (defined SHARED || defined __PIC__)
 # define PARMS		8		/* Preserve EBX.  */
 # define ENTRANCE	PUSH (%ebx);
 # define RETURN_END	POP (%ebx); ret
@@ -216,7 +216,7 @@
 #ifdef SHARED_CACHE_SIZE_HALF
 	cmp	$SHARED_CACHE_SIZE_HALF, %ecx
 #else
-# ifdef SHARED
+# if (defined SHARED || defined __PIC__)
 	call	__i686.get_pc_thunk.bx
 	add	$_GLOBAL_OFFSET_TABLE_, %ebx
 	cmp	__x86_shared_cache_size_half@GOTOFF(%ebx), %ecx
@@ -287,7 +287,7 @@
 #ifdef DATA_CACHE_SIZE_HALF
 	cmp	$DATA_CACHE_SIZE_HALF, %ecx
 #else
-# ifdef SHARED
+# if (defined SHARED || defined __PIC__)
 	call	__i686.get_pc_thunk.bx
 	add	$_GLOBAL_OFFSET_TABLE_, %ebx
 	cmp	__x86_data_cache_size_half@GOTOFF(%ebx), %ecx
diff --git a/libc/arch-x86/syscalls.mk b/libc/arch-x86/syscalls.mk
index 7d3d937..d2ceb42 100644
--- a/libc/arch-x86/syscalls.mk
+++ b/libc/arch-x86/syscalls.mk
@@ -27,6 +27,7 @@
 syscall_src += arch-x86/syscalls/__brk.S
 syscall_src += arch-x86/syscalls/kill.S
 syscall_src += arch-x86/syscalls/tkill.S
+syscall_src += arch-x86/syscalls/tgkill.S
 syscall_src += arch-x86/syscalls/__ptrace.S
 syscall_src += arch-x86/syscalls/__set_thread_area.S
 syscall_src += arch-x86/syscalls/__getpriority.S
diff --git a/libc/arch-x86/syscalls/tgkill.S b/libc/arch-x86/syscalls/tgkill.S
new file mode 100644
index 0000000..99af740
--- /dev/null
+++ b/libc/arch-x86/syscalls/tgkill.S
@@ -0,0 +1,29 @@
+/* autogenerated by gensyscalls.py */
+#include <sys/linux-syscalls.h>
+
+    .text
+    .type tgkill, @function
+    .globl tgkill
+    .align 4
+
+tgkill:
+    pushl   %ebx
+    pushl   %ecx
+    pushl   %edx
+    mov     16(%esp), %ebx
+    mov     20(%esp), %ecx
+    mov     24(%esp), %edx
+    movl    $__NR_tgkill, %eax
+    int     $0x80
+    cmpl    $-129, %eax
+    jb      1f
+    negl    %eax
+    pushl   %eax
+    call    __set_errno
+    addl    $4, %esp
+    orl     $-1, %eax
+1:
+    popl    %edx
+    popl    %ecx
+    popl    %ebx
+    ret
diff --git a/libc/bionic/atomics_x86.c b/libc/bionic/atomics_x86.c
deleted file mode 100644
index fd60f4f..0000000
--- a/libc/bionic/atomics_x86.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-#include <sys/atomics.h>
-
-#define FUTEX_SYSCALL 240
-#define FUTEX_WAIT 0
-#define FUTEX_WAKE 1
-
-int __futex_wait(volatile void *ftx, int val)
-{
-    int ret;
-    asm volatile (
-        "int $0x80;"
-        : "=a" (ret)
-        : "0" (FUTEX_SYSCALL),
-          "b" (ftx),
-          "c" (FUTEX_WAIT),
-          "d" (val),
-          "S" (0)
-    );
-    return ret;
-}
-
-int __futex_wake(volatile void *ftx, int count)
-{
-    int ret;
-    asm volatile (
-        "int $0x80;"
-        : "=a" (ret)
-        : "0" (FUTEX_SYSCALL),
-          "b" (ftx),
-          "c" (FUTEX_WAKE),
-          "d" (count)
-    );
-    return ret;
-}
-
-int __atomic_cmpxchg(int old, int new, volatile int* addr) {
-    int xchg;
-    asm volatile (
-        "lock;"
-        "cmpxchg %%ecx, (%%edx);"
-        "setne %%al;"
-        : "=a" (xchg)
-        : "a" (old),
-          "c" (new),
-          "d" (addr)
-    );
-    return xchg;
-}
-
-int __atomic_swap(int new, volatile int* addr) {
-    int old;
-    asm volatile (
-        "lock;"
-        "xchg %%ecx, (%%edx);"
-        : "=c" (old)
-        : "c" (new),
-          "d" (addr)
-    );
-    return old;
-}
-
-int __atomic_dec(volatile int* addr) {
-    int old;
-    do {
-        old = *addr;
-    } while (atomic_cmpxchg(old, old-1, addr));
-    return old;
-}
diff --git a/libc/bionic/dlmalloc.c b/libc/bionic/dlmalloc.c
index 8c75e9c..496cd1c 100644
--- a/libc/bionic/dlmalloc.c
+++ b/libc/bionic/dlmalloc.c
@@ -774,6 +774,22 @@
 void* dlmemalign(size_t, size_t);
 
 /*
+  int posix_memalign(void **memptr, size_t alignment, size_t size);
+  Places a pointer to a newly allocated chunk of size bytes, aligned
+  in accord with the alignment argument, in *memptr.
+
+  The return value is 0 on success, and ENOMEM on failure.
+
+  The alignment argument should be a power of two. If the argument is
+  not a power of two, the nearest greater power is used.
+  8-byte alignment is guaranteed by normal malloc calls, so don't
+  bother calling memalign with an argument of 8 or less.
+
+  Overreliance on posix_memalign is a sure way to fragment space.
+*/
+int posix_memalign(void **memptr, size_t alignment, size_t size);
+
+/*
   valloc(size_t n);
   Equivalent to memalign(pagesize, n), where pagesize is the page
   size of the system. If the pagesize is unknown, 4096 is used.
@@ -4507,6 +4523,18 @@
   return internal_memalign(gm, alignment, bytes);
 }
 
+int posix_memalign(void **memptr, size_t alignment, size_t size) {
+  int ret = 0;
+
+  *memptr = dlmemalign(alignment, size);
+
+  if (*memptr == 0) {
+    ret = ENOMEM;
+  }
+
+  return ret;
+}
+
 void** dlindependent_calloc(size_t n_elements, size_t elem_size,
                                  void* chunks[]) {
   size_t sz = elem_size; /* serves as 1-element array */
diff --git a/libc/bionic/libc_init_dynamic.c b/libc/bionic/libc_init_dynamic.c
index 4bb2a81..1c8480c 100644
--- a/libc/bionic/libc_init_dynamic.c
+++ b/libc/bionic/libc_init_dynamic.c
@@ -76,6 +76,12 @@
 
     __libc_init_common(elfdata);
 
+    /* Setup pthread routines accordingly to the environment.
+     * Requires system properties
+     */
+    extern void pthread_debug_init(void);
+    pthread_debug_init();
+
     /* Setup malloc routines accordingly to the environment.
      * Requires system properties
      */
diff --git a/libc/bionic/pthread.c b/libc/bionic/pthread.c
index 885adcc..fdfe508 100644
--- a/libc/bionic/pthread.c
+++ b/libc/bionic/pthread.c
@@ -51,6 +51,9 @@
 #include <stdio.h>
 #include <bionic_pthread.h>
 
+extern void pthread_debug_mutex_lock_check(pthread_mutex_t *mutex);
+extern void pthread_debug_mutex_unlock_check(pthread_mutex_t *mutex);
+
 extern int  __pthread_clone(int (*fn)(void*), void *child_stack, int flags, void *arg);
 extern void _exit_with_stack_teardown(void * stackBase, int stackSize, int retCode);
 extern void _exit_thread(int  retCode);
@@ -81,9 +84,6 @@
 #define PTHREAD_ATTR_FLAG_USER_STACK    0x00000002
 
 #define DEFAULT_STACKSIZE (1024 * 1024)
-#define STACKBASE 0x10000000
-
-static uint8_t * gStackBase = (uint8_t *)STACKBASE;
 
 static pthread_mutex_t mmap_lock = PTHREAD_MUTEX_INITIALIZER;
 
@@ -252,7 +252,7 @@
 
     pthread_mutex_lock(&mmap_lock);
 
-    stack = mmap((void *)gStackBase, size,
+    stack = mmap(NULL, size,
                  PROT_READ | PROT_WRITE,
                  MAP_PRIVATE | MAP_ANONYMOUS | MAP_NORESERVE,
                  -1, 0);
@@ -697,7 +697,7 @@
             goto Exit;
         }
     }
-    while ( __atomic_cmpxchg( flags, flags | PTHREAD_ATTR_FLAG_DETACHED,
+    while ( __bionic_cmpxchg( flags, flags | PTHREAD_ATTR_FLAG_DETACHED,
                               (volatile int*)&thread->attr.flags ) != 0 );
 Exit:
     pthread_mutex_unlock(&gThreadListLock);
@@ -746,12 +746,6 @@
 }
 
 
-// mutex lock states
-//
-// 0: unlocked
-// 1: locked, no waiters
-// 2: locked, maybe waiters
-
 /* a mutex is implemented as a 32-bit integer holding the following fields
  *
  * bits:     name     description
@@ -762,18 +756,146 @@
  * 1-0       state    lock state (0, 1 or 2)
  */
 
+/* Convenience macro, creates a mask of 'bits' bits that starts from
+ * the 'shift'-th least significant bit in a 32-bit word.
+ *
+ * Examples: FIELD_MASK(0,4)  -> 0xf
+ *           FIELD_MASK(16,9) -> 0x1ff0000
+ */
+#define  FIELD_MASK(shift,bits)           (((1 << (bits))-1) << (shift))
 
-#define  MUTEX_OWNER(m)  (((m)->value >> 16) & 0xffff)
-#define  MUTEX_COUNTER(m) (((m)->value >> 2) & 0xfff)
+/* This one is used to create a bit pattern from a given field value */
+#define  FIELD_TO_BITS(val,shift,bits)    (((val) & ((1 << (bits))-1)) << (shift))
 
-#define  MUTEX_TYPE_MASK       0xc000
-#define  MUTEX_TYPE_NORMAL     0x0000
-#define  MUTEX_TYPE_RECURSIVE  0x4000
-#define  MUTEX_TYPE_ERRORCHECK 0x8000
+/* And this one does the opposite, i.e. extract a field's value from a bit pattern */
+#define  FIELD_FROM_BITS(val,shift,bits)  (((val) >> (shift)) & ((1 << (bits))-1))
 
-#define  MUTEX_COUNTER_SHIFT  2
-#define  MUTEX_COUNTER_MASK   0x1ffc
-#define  MUTEX_SHARED_MASK    0x2000
+/* Mutex state:
+ *
+ * 0 for unlocked
+ * 1 for locked, no waiters
+ * 2 for locked, maybe waiters
+ */
+#define  MUTEX_STATE_SHIFT      0
+#define  MUTEX_STATE_LEN        2
+
+#define  MUTEX_STATE_MASK           FIELD_MASK(MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+#define  MUTEX_STATE_FROM_BITS(v)   FIELD_FROM_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+#define  MUTEX_STATE_TO_BITS(v)     FIELD_TO_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+
+#define  MUTEX_STATE_UNLOCKED            0   /* must be 0 to match __PTHREAD_MUTEX_INIT_VALUE */
+#define  MUTEX_STATE_LOCKED_UNCONTENDED  1   /* must be 1 due to atomic dec in unlock operation */
+#define  MUTEX_STATE_LOCKED_CONTENDED    2   /* must be 1 + LOCKED_UNCONTENDED due to atomic dec */
+
+#define  MUTEX_STATE_FROM_BITS(v)    FIELD_FROM_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+#define  MUTEX_STATE_TO_BITS(v)      FIELD_TO_BITS(v, MUTEX_STATE_SHIFT, MUTEX_STATE_LEN)
+
+#define  MUTEX_STATE_BITS_UNLOCKED            MUTEX_STATE_TO_BITS(MUTEX_STATE_UNLOCKED)
+#define  MUTEX_STATE_BITS_LOCKED_UNCONTENDED  MUTEX_STATE_TO_BITS(MUTEX_STATE_LOCKED_UNCONTENDED)
+#define  MUTEX_STATE_BITS_LOCKED_CONTENDED    MUTEX_STATE_TO_BITS(MUTEX_STATE_LOCKED_CONTENDED)
+
+/* return true iff the mutex if locked with no waiters */
+#define  MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(v)  (((v) & MUTEX_STATE_MASK) == MUTEX_STATE_BITS_LOCKED_UNCONTENDED)
+
+/* return true iff the mutex if locked with maybe waiters */
+#define  MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(v)   (((v) & MUTEX_STATE_MASK) == MUTEX_STATE_BITS_LOCKED_CONTENDED)
+
+/* used to flip from LOCKED_UNCONTENDED to LOCKED_CONTENDED */
+#define  MUTEX_STATE_BITS_FLIP_CONTENTION(v)      ((v) ^ (MUTEX_STATE_BITS_LOCKED_CONTENDED ^ MUTEX_STATE_BITS_LOCKED_UNCONTENDED))
+
+/* Mutex counter:
+ *
+ * We need to check for overflow before incrementing, and we also need to
+ * detect when the counter is 0
+ */
+#define  MUTEX_COUNTER_SHIFT         2
+#define  MUTEX_COUNTER_LEN           11
+#define  MUTEX_COUNTER_MASK          FIELD_MASK(MUTEX_COUNTER_SHIFT, MUTEX_COUNTER_LEN)
+
+#define  MUTEX_COUNTER_BITS_WILL_OVERFLOW(v)    (((v) & MUTEX_COUNTER_MASK) == MUTEX_COUNTER_MASK)
+#define  MUTEX_COUNTER_BITS_IS_ZERO(v)          (((v) & MUTEX_COUNTER_MASK) == 0)
+
+/* Used to increment the counter directly after overflow has been checked */
+#define  MUTEX_COUNTER_BITS_ONE      FIELD_TO_BITS(1,MUTEX_COUNTER_SHIFT,MUTEX_COUNTER_LEN)
+
+/* Returns true iff the counter is 0 */
+#define  MUTEX_COUNTER_BITS_ARE_ZERO(v)  (((v) & MUTEX_COUNTER_MASK) == 0)
+
+/* Mutex shared bit flag
+ *
+ * This flag is set to indicate that the mutex is shared among processes.
+ * This changes the futex opcode we use for futex wait/wake operations
+ * (non-shared operations are much faster).
+ */
+#define  MUTEX_SHARED_SHIFT    13
+#define  MUTEX_SHARED_MASK     FIELD_MASK(MUTEX_SHARED_SHIFT,1)
+
+/* Mutex type:
+ *
+ * We support normal, recursive and errorcheck mutexes.
+ *
+ * The constants defined here *cannot* be changed because they must match
+ * the C library ABI which defines the following initialization values in
+ * <pthread.h>:
+ *
+ *   __PTHREAD_MUTEX_INIT_VALUE
+ *   __PTHREAD_RECURSIVE_MUTEX_VALUE
+ *   __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE
+ */
+#define  MUTEX_TYPE_SHIFT      14
+#define  MUTEX_TYPE_LEN        2
+#define  MUTEX_TYPE_MASK       FIELD_MASK(MUTEX_TYPE_SHIFT,MUTEX_TYPE_LEN)
+
+#define  MUTEX_TYPE_NORMAL          0  /* Must be 0 to match __PTHREAD_MUTEX_INIT_VALUE */
+#define  MUTEX_TYPE_RECURSIVE       1
+#define  MUTEX_TYPE_ERRORCHECK      2
+
+#define  MUTEX_TYPE_TO_BITS(t)       FIELD_TO_BITS(t, MUTEX_TYPE_SHIFT, MUTEX_TYPE_LEN)
+
+#define  MUTEX_TYPE_BITS_NORMAL      MUTEX_TYPE_TO_BITS(MUTEX_TYPE_NORMAL)
+#define  MUTEX_TYPE_BITS_RECURSIVE   MUTEX_TYPE_TO_BITS(MUTEX_TYPE_RECURSIVE)
+#define  MUTEX_TYPE_BITS_ERRORCHECK  MUTEX_TYPE_TO_BITS(MUTEX_TYPE_ERRORCHECK)
+
+/* Mutex owner field:
+ *
+ * This is only used for recursive and errorcheck mutexes. It holds the
+ * kernel TID of the owning thread. Note that this works because the Linux
+ * kernel _only_ uses 16-bit values for thread ids.
+ *
+ * More specifically, it will wrap to 10000 when it reaches over 32768 for
+ * application processes. You can check this by running the following inside
+ * an adb shell session:
+ *
+    OLDPID=$$;
+    while true; do
+    NEWPID=$(sh -c 'echo $$')
+    if [ "$NEWPID" -gt 32768 ]; then
+        echo "AARGH: new PID $NEWPID is too high!"
+        exit 1
+    fi
+    if [ "$NEWPID" -lt "$OLDPID" ]; then
+        echo "****** Wrapping from PID $OLDPID to $NEWPID. *******"
+    else
+        echo -n "$NEWPID!"
+    fi
+    OLDPID=$NEWPID
+    done
+
+ * Note that you can run the same example on a desktop Linux system,
+ * the wrapping will also happen at 32768, but will go back to 300 instead.
+ */
+#define  MUTEX_OWNER_SHIFT     16
+#define  MUTEX_OWNER_LEN       16
+
+#define  MUTEX_OWNER_FROM_BITS(v)    FIELD_FROM_BITS(v,MUTEX_OWNER_SHIFT,MUTEX_OWNER_LEN)
+#define  MUTEX_OWNER_TO_BITS(v)      FIELD_TO_BITS(v,MUTEX_OWNER_SHIFT,MUTEX_OWNER_LEN)
+
+/* Convenience macros.
+ *
+ * These are used to form or modify the bit pattern of a given mutex value
+ */
+
+
 
 /* a mutex attribute holds the following fields
  *
@@ -872,7 +994,7 @@
         return EINVAL;
 
     if (__likely(attr == NULL)) {
-        mutex->value = MUTEX_TYPE_NORMAL;
+        mutex->value = MUTEX_TYPE_BITS_NORMAL;
         return 0;
     }
 
@@ -881,13 +1003,13 @@
 
     switch (*attr & MUTEXATTR_TYPE_MASK) {
     case PTHREAD_MUTEX_NORMAL:
-        value |= MUTEX_TYPE_NORMAL;
+        value |= MUTEX_TYPE_BITS_NORMAL;
         break;
     case PTHREAD_MUTEX_RECURSIVE:
-        value |= MUTEX_TYPE_RECURSIVE;
+        value |= MUTEX_TYPE_BITS_RECURSIVE;
         break;
     case PTHREAD_MUTEX_ERRORCHECK:
-        value |= MUTEX_TYPE_ERRORCHECK;
+        value |= MUTEX_TYPE_BITS_ERRORCHECK;
         break;
     default:
         return EINVAL;
@@ -897,20 +1019,6 @@
     return 0;
 }
 
-int pthread_mutex_destroy(pthread_mutex_t *mutex)
-{
-    int ret;
-
-    /* use trylock to ensure that the mutex value is
-     * valid and is not already locked. */
-    ret = pthread_mutex_trylock(mutex);
-    if (ret != 0)
-        return ret;
-
-    mutex->value = 0xdead10cc;
-    return 0;
-}
-
 
 /*
  * Lock a non-recursive mutex.
@@ -925,23 +1033,25 @@
  * the lock state field.
  */
 static __inline__ void
-_normal_lock(pthread_mutex_t*  mutex)
+_normal_lock(pthread_mutex_t*  mutex, int shared)
 {
-    /* We need to preserve the shared flag during operations */
-    int  shared = mutex->value & MUTEX_SHARED_MASK;
+    /* convenience shortcuts */
+    const int unlocked           = shared | MUTEX_STATE_BITS_UNLOCKED;
+    const int locked_uncontended = shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
     /*
      * The common case is an unlocked mutex, so we begin by trying to
-     * change the lock's state from 0 to 1.  __atomic_cmpxchg() returns 0
-     * if it made the swap successfully.  If the result is nonzero, this
-     * lock is already held by another thread.
+     * change the lock's state from 0 (UNLOCKED) to 1 (LOCKED).
+     * __bionic_cmpxchg() returns 0 if it made the swap successfully.
+     * If the result is nonzero, this lock is already held by another thread.
      */
-    if (__atomic_cmpxchg(shared|0, shared|1, &mutex->value ) != 0) {
+    if (__bionic_cmpxchg(unlocked, locked_uncontended, &mutex->value) != 0) {
+        const int locked_contended = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
         /*
          * We want to go to sleep until the mutex is available, which
-         * requires promoting it to state 2.  We need to swap in the new
-         * state value and then wait until somebody wakes us up.
+         * requires promoting it to state 2 (CONTENDED). We need to
+         * swap in the new state value and then wait until somebody wakes us up.
          *
-         * __atomic_swap() returns the previous value.  We swap 2 in and
+         * __bionic_swap() returns the previous value.  We swap 2 in and
          * see if we got zero back; if so, we have acquired the lock.  If
          * not, another thread still holds the lock and we wait again.
          *
@@ -952,8 +1062,8 @@
          * that the mutex is in state 2 when we go to sleep on it, which
          * guarantees a wake-up call.
          */
-        while (__atomic_swap(shared|2, &mutex->value ) != (shared|0))
-            __futex_wait_ex(&mutex->value, shared, shared|2, 0);
+        while (__bionic_swap(locked_contended, &mutex->value) != unlocked)
+            __futex_wait_ex(&mutex->value, shared, locked_contended, 0);
     }
     ANDROID_MEMBAR_FULL();
 }
@@ -963,19 +1073,16 @@
  * that we are in fact the owner of this lock.
  */
 static __inline__ void
-_normal_unlock(pthread_mutex_t*  mutex)
+_normal_unlock(pthread_mutex_t*  mutex, int shared)
 {
     ANDROID_MEMBAR_FULL();
 
-    /* We need to preserve the shared flag during operations */
-    int  shared = mutex->value & MUTEX_SHARED_MASK;
-
     /*
      * The mutex state will be 1 or (rarely) 2.  We use an atomic decrement
-     * to release the lock.  __atomic_dec() returns the previous value;
+     * to release the lock.  __bionic_atomic_dec() returns the previous value;
      * if it wasn't 1 we have to do some additional work.
      */
-    if (__atomic_dec(&mutex->value) != (shared|1)) {
+    if (__bionic_atomic_dec(&mutex->value) != (shared|MUTEX_STATE_BITS_LOCKED_UNCONTENDED)) {
         /*
          * Start by releasing the lock.  The decrement changed it from
          * "contended lock" to "uncontended lock", which means we still
@@ -1017,153 +1124,232 @@
     }
 }
 
-static pthread_mutex_t  __recursive_lock = PTHREAD_MUTEX_INITIALIZER;
-
-static void
-_recursive_lock(void)
+/* This common inlined function is used to increment the counter of an
+ * errorcheck or recursive mutex.
+ *
+ * For errorcheck mutexes, it will return EDEADLK
+ * If the counter overflows, it will return EAGAIN
+ * Otherwise, it atomically increments the counter and returns 0
+ * after providing an acquire barrier.
+ *
+ * mtype is the current mutex type
+ * mvalue is the current mutex value (already loaded)
+ * mutex pointers to the mutex.
+ */
+static __inline__ __attribute__((always_inline)) int
+_recursive_increment(pthread_mutex_t* mutex, int mvalue, int mtype)
 {
-    _normal_lock(&__recursive_lock);
+    if (mtype == MUTEX_TYPE_BITS_ERRORCHECK) {
+        /* trying to re-lock a mutex we already acquired */
+        return EDEADLK;
+    }
+
+    /* Detect recursive lock overflow and return EAGAIN.
+     * This is safe because only the owner thread can modify the
+     * counter bits in the mutex value.
+     */
+    if (MUTEX_COUNTER_BITS_WILL_OVERFLOW(mvalue)) {
+        return EAGAIN;
+    }
+
+    /* We own the mutex, but other threads are able to change
+     * the lower bits (e.g. promoting it to "contended"), so we
+     * need to use an atomic cmpxchg loop to update the counter.
+     */
+    for (;;) {
+        /* increment counter, overflow was already checked */
+        int newval = mvalue + MUTEX_COUNTER_BITS_ONE;
+        if (__likely(__bionic_cmpxchg(mvalue, newval, &mutex->value) == 0)) {
+            /* mutex is still locked, not need for a memory barrier */
+            return 0;
+        }
+        /* the value was changed, this happens when another thread changes
+         * the lower state bits from 1 to 2 to indicate contention. This
+         * cannot change the counter, so simply reload and try again.
+         */
+        mvalue = mutex->value;
+    }
 }
 
-static void
-_recursive_unlock(void)
+__LIBC_HIDDEN__
+int pthread_mutex_lock_impl(pthread_mutex_t *mutex)
 {
-    _normal_unlock(&__recursive_lock );
+    int mvalue, mtype, tid, new_lock_type, shared;
+
+    if (__unlikely(mutex == NULL))
+        return EINVAL;
+
+    mvalue = mutex->value;
+    mtype = (mvalue & MUTEX_TYPE_MASK);
+    shared = (mvalue & MUTEX_SHARED_MASK);
+
+    /* Handle normal case first */
+    if ( __likely(mtype == MUTEX_TYPE_BITS_NORMAL) ) {
+        _normal_lock(mutex, shared);
+        return 0;
+    }
+
+    /* Do we already own this recursive or error-check mutex ? */
+    tid = __get_thread()->kernel_id;
+    if ( tid == MUTEX_OWNER_FROM_BITS(mvalue) )
+        return _recursive_increment(mutex, mvalue, mtype);
+
+    /* Add in shared state to avoid extra 'or' operations below */
+    mtype |= shared;
+
+    /* First, if the mutex is unlocked, try to quickly acquire it.
+     * In the optimistic case where this works, set the state to 1 to
+     * indicate locked with no contention */
+    if (mvalue == mtype) {
+        int newval = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
+        if (__bionic_cmpxchg(mvalue, newval, &mutex->value) == 0) {
+            ANDROID_MEMBAR_FULL();
+            return 0;
+        }
+        /* argh, the value changed, reload before entering the loop */
+        mvalue = mutex->value;
+    }
+
+    for (;;) {
+        int newval;
+
+        /* if the mutex is unlocked, its value should be 'mtype' and
+         * we try to acquire it by setting its owner and state atomically.
+         * NOTE: We put the state to 2 since we _know_ there is contention
+         * when we are in this loop. This ensures all waiters will be
+         * unlocked.
+         */
+        if (mvalue == mtype) {
+            newval = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_CONTENDED;
+            /* TODO: Change this to __bionic_cmpxchg_acquire when we
+             *        implement it to get rid of the explicit memory
+             *        barrier below.
+             */
+            if (__unlikely(__bionic_cmpxchg(mvalue, newval, &mutex->value) != 0)) {
+                mvalue = mutex->value;
+                continue;
+            }
+            ANDROID_MEMBAR_FULL();
+            return 0;
+        }
+
+        /* the mutex is already locked by another thread, if its state is 1
+         * we will change it to 2 to indicate contention. */
+        if (MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(mvalue)) {
+            newval = MUTEX_STATE_BITS_FLIP_CONTENTION(mvalue); /* locked state 1 => state 2 */
+            if (__unlikely(__bionic_cmpxchg(mvalue, newval, &mutex->value) != 0)) {
+                mvalue = mutex->value;
+                continue;
+            }
+            mvalue = newval;
+        }
+
+        /* wait until the mutex is unlocked */
+        __futex_wait_ex(&mutex->value, shared, mvalue, NULL);
+
+        mvalue = mutex->value;
+    }
+    /* NOTREACHED */
 }
 
 int pthread_mutex_lock(pthread_mutex_t *mutex)
 {
-    int mtype, tid, new_lock_type, shared;
-
-    if (__unlikely(mutex == NULL))
-        return EINVAL;
-
-    mtype = (mutex->value & MUTEX_TYPE_MASK);
-    shared = (mutex->value & MUTEX_SHARED_MASK);
-
-    /* Handle normal case first */
-    if ( __likely(mtype == MUTEX_TYPE_NORMAL) ) {
-        _normal_lock(mutex);
-        return 0;
-    }
-
-    /* Do we already own this recursive or error-check mutex ? */
-    tid = __get_thread()->kernel_id;
-    if ( tid == MUTEX_OWNER(mutex) )
-    {
-        int  oldv, counter;
-
-        if (mtype == MUTEX_TYPE_ERRORCHECK) {
-            /* trying to re-lock a mutex we already acquired */
-            return EDEADLK;
+    int err = pthread_mutex_lock_impl(mutex);
+#ifdef PTHREAD_DEBUG
+    if (PTHREAD_DEBUG_ENABLED) {
+        if (!err) {
+            pthread_debug_mutex_lock_check(mutex);
         }
-        /*
-         * We own the mutex, but other threads are able to change
-         * the contents (e.g. promoting it to "contended"), so we
-         * need to hold the global lock.
-         */
-        _recursive_lock();
-        oldv         = mutex->value;
-        counter      = (oldv + (1 << MUTEX_COUNTER_SHIFT)) & MUTEX_COUNTER_MASK;
-        mutex->value = (oldv & ~MUTEX_COUNTER_MASK) | counter;
-        _recursive_unlock();
-        return 0;
     }
-
-    /* We don't own the mutex, so try to get it.
-     *
-     * First, we try to change its state from 0 to 1, if this
-     * doesn't work, try to change it to state 2.
-     */
-    new_lock_type = 1;
-
-    /* compute futex wait opcode and restore shared flag in mtype */
-    mtype |= shared;
-
-    for (;;) {
-        int  oldv;
-
-        _recursive_lock();
-        oldv = mutex->value;
-        if (oldv == mtype) { /* uncontended released lock => 1 or 2 */
-            mutex->value = ((tid << 16) | mtype | new_lock_type);
-        } else if ((oldv & 3) == 1) { /* locked state 1 => state 2 */
-            oldv ^= 3;
-            mutex->value = oldv;
-        }
-        _recursive_unlock();
-
-        if (oldv == mtype)
-            break;
-
-        /*
-         * The lock was held, possibly contended by others.  From
-         * now on, if we manage to acquire the lock, we have to
-         * assume that others are still contending for it so that
-         * we'll wake them when we unlock it.
-         */
-        new_lock_type = 2;
-
-        __futex_wait_ex(&mutex->value, shared, oldv, NULL);
-    }
-    return 0;
+#endif
+    return err;
 }
 
-
-int pthread_mutex_unlock(pthread_mutex_t *mutex)
+__LIBC_HIDDEN__
+int pthread_mutex_unlock_impl(pthread_mutex_t *mutex)
 {
-    int mtype, tid, oldv, shared;
+    int mvalue, mtype, tid, oldv, shared;
 
     if (__unlikely(mutex == NULL))
         return EINVAL;
 
-    mtype  = (mutex->value & MUTEX_TYPE_MASK);
-    shared = (mutex->value & MUTEX_SHARED_MASK);
+    mvalue = mutex->value;
+    mtype  = (mvalue & MUTEX_TYPE_MASK);
+    shared = (mvalue & MUTEX_SHARED_MASK);
 
     /* Handle common case first */
-    if (__likely(mtype == MUTEX_TYPE_NORMAL)) {
-        _normal_unlock(mutex);
+    if (__likely(mtype == MUTEX_TYPE_BITS_NORMAL)) {
+        _normal_unlock(mutex, shared);
         return 0;
     }
 
     /* Do we already own this recursive or error-check mutex ? */
     tid = __get_thread()->kernel_id;
-    if ( tid != MUTEX_OWNER(mutex) )
+    if ( tid != MUTEX_OWNER_FROM_BITS(mvalue) )
         return EPERM;
 
-    /* We do, decrement counter or release the mutex if it is 0 */
-    _recursive_lock();
-    oldv = mutex->value;
-    if (oldv & MUTEX_COUNTER_MASK) {
-        mutex->value = oldv - (1 << MUTEX_COUNTER_SHIFT);
-        oldv = 0;
-    } else {
-        mutex->value = shared | mtype;
+    /* If the counter is > 0, we can simply decrement it atomically.
+     * Since other threads can mutate the lower state bits (and only the
+     * lower state bits), use a cmpxchg to do it.
+     */
+    if (!MUTEX_COUNTER_BITS_IS_ZERO(mvalue)) {
+        for (;;) {
+            int newval = mvalue - MUTEX_COUNTER_BITS_ONE;
+            if (__likely(__bionic_cmpxchg(mvalue, newval, &mutex->value) == 0)) {
+                /* success: we still own the mutex, so no memory barrier */
+                return 0;
+            }
+            /* the value changed, so reload and loop */
+            mvalue = mutex->value;
+        }
     }
-    _recursive_unlock();
+
+    /* the counter is 0, so we're going to unlock the mutex by resetting
+     * its value to 'unlocked'. We need to perform a swap in order
+     * to read the current state, which will be 2 if there are waiters
+     * to awake.
+     *
+     * TODO: Change this to __bionic_swap_release when we implement it
+     *        to get rid of the explicit memory barrier below.
+     */
+    ANDROID_MEMBAR_FULL();  /* RELEASE BARRIER */
+    mvalue = __bionic_swap(mtype | shared | MUTEX_STATE_BITS_UNLOCKED, &mutex->value);
 
     /* Wake one waiting thread, if any */
-    if ((oldv & 3) == 2) {
+    if (MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(mvalue)) {
         __futex_wake_ex(&mutex->value, shared, 1);
     }
     return 0;
 }
 
-
-int pthread_mutex_trylock(pthread_mutex_t *mutex)
+int pthread_mutex_unlock(pthread_mutex_t *mutex)
 {
-    int mtype, tid, oldv, shared;
+#ifdef PTHREAD_DEBUG
+    if (PTHREAD_DEBUG_ENABLED) {
+        pthread_debug_mutex_unlock_check(mutex);
+    }
+#endif
+    return pthread_mutex_unlock_impl(mutex);
+}
+
+__LIBC_HIDDEN__
+int pthread_mutex_trylock_impl(pthread_mutex_t *mutex)
+{
+    int mvalue, mtype, tid, oldv, shared;
 
     if (__unlikely(mutex == NULL))
         return EINVAL;
 
-    mtype  = (mutex->value & MUTEX_TYPE_MASK);
-    shared = (mutex->value & MUTEX_SHARED_MASK);
+    mvalue = mutex->value;
+    mtype  = (mvalue & MUTEX_TYPE_MASK);
+    shared = (mvalue & MUTEX_SHARED_MASK);
 
     /* Handle common case first */
-    if ( __likely(mtype == MUTEX_TYPE_NORMAL) )
+    if ( __likely(mtype == MUTEX_TYPE_BITS_NORMAL) )
     {
-        if (__atomic_cmpxchg(shared|0, shared|1, &mutex->value) == 0) {
+        if (__bionic_cmpxchg(shared|MUTEX_STATE_BITS_UNLOCKED,
+                             shared|MUTEX_STATE_BITS_LOCKED_UNCONTENDED,
+                             &mutex->value) == 0) {
             ANDROID_MEMBAR_FULL();
             return 0;
         }
@@ -1173,39 +1359,36 @@
 
     /* Do we already own this recursive or error-check mutex ? */
     tid = __get_thread()->kernel_id;
-    if ( tid == MUTEX_OWNER(mutex) )
-    {
-        int counter;
+    if ( tid == MUTEX_OWNER_FROM_BITS(mvalue) )
+        return _recursive_increment(mutex, mvalue, mtype);
 
-        if (mtype == MUTEX_TYPE_ERRORCHECK) {
-            /* already locked by ourselves */
-            return EDEADLK;
-        }
+    /* Same as pthread_mutex_lock, except that we don't want to wait, and
+     * the only operation that can succeed is a single cmpxchg to acquire the
+     * lock if it is released / not owned by anyone. No need for a complex loop.
+     */
+    mtype |= shared | MUTEX_STATE_BITS_UNLOCKED;
+    mvalue = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
 
-        _recursive_lock();
-        oldv = mutex->value;
-        counter = (oldv + (1 << MUTEX_COUNTER_SHIFT)) & MUTEX_COUNTER_MASK;
-        mutex->value = (oldv & ~MUTEX_COUNTER_MASK) | counter;
-        _recursive_unlock();
+    if (__likely(__bionic_cmpxchg(mtype, mvalue, &mutex->value) == 0)) {
+        ANDROID_MEMBAR_FULL();
         return 0;
     }
 
-    /* Restore sharing bit in mtype */
-    mtype |= shared;
-
-    /* Try to lock it, just once. */
-    _recursive_lock();
-    oldv = mutex->value;
-    if (oldv == mtype)  /* uncontended released lock => state 1 */
-        mutex->value = ((tid << 16) | mtype | 1);
-    _recursive_unlock();
-
-    if (oldv != mtype)
-        return EBUSY;
-
-    return 0;
+    return EBUSY;
 }
 
+int pthread_mutex_trylock(pthread_mutex_t *mutex)
+{
+    int err = pthread_mutex_trylock_impl(mutex);
+#ifdef PTHREAD_DEBUG
+    if (PTHREAD_DEBUG_ENABLED) {
+        if (!err) {
+            pthread_debug_mutex_lock_check(mutex);
+        }
+    }
+#endif
+    return err;
+}
 
 /* initialize 'ts' with the difference between 'abstime' and the current time
  * according to 'clock'. Returns -1 if abstime already expired, or 0 otherwise.
@@ -1241,12 +1424,13 @@
     }
 }
 
-int pthread_mutex_lock_timeout_np(pthread_mutex_t *mutex, unsigned msecs)
+__LIBC_HIDDEN__
+int pthread_mutex_lock_timeout_np_impl(pthread_mutex_t *mutex, unsigned msecs)
 {
     clockid_t        clock = CLOCK_MONOTONIC;
     struct timespec  abstime;
     struct timespec  ts;
-    int              mtype, tid, oldv, new_lock_type, shared;
+    int               mvalue, mtype, tid, oldv, new_lock_type, shared;
 
     /* compute absolute expiration time */
     __timespec_to_relative_msec(&abstime, msecs, clock);
@@ -1254,24 +1438,29 @@
     if (__unlikely(mutex == NULL))
         return EINVAL;
 
-    mtype  = (mutex->value & MUTEX_TYPE_MASK);
-    shared = (mutex->value & MUTEX_SHARED_MASK);
+    mvalue = mutex->value;
+    mtype  = (mvalue & MUTEX_TYPE_MASK);
+    shared = (mvalue & MUTEX_SHARED_MASK);
 
     /* Handle common case first */
-    if ( __likely(mtype == MUTEX_TYPE_NORMAL) )
+    if ( __likely(mtype == MUTEX_TYPE_BITS_NORMAL) )
     {
-        /* fast path for uncontended lock */
-        if (__atomic_cmpxchg(shared|0, shared|1, &mutex->value) == 0) {
+        const int unlocked           = shared | MUTEX_STATE_BITS_UNLOCKED;
+        const int locked_uncontended = shared | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
+        const int locked_contended   = shared | MUTEX_STATE_BITS_LOCKED_CONTENDED;
+
+        /* fast path for uncontended lock. Note: MUTEX_TYPE_BITS_NORMAL is 0 */
+        if (__bionic_cmpxchg(unlocked, locked_uncontended, &mutex->value) == 0) {
             ANDROID_MEMBAR_FULL();
             return 0;
         }
 
         /* loop while needed */
-        while (__atomic_swap(shared|2, &mutex->value) != (shared|0)) {
+        while (__bionic_swap(locked_contended, &mutex->value) != unlocked) {
             if (__timespec_to_absolute(&ts, &abstime, clock) < 0)
                 return EBUSY;
 
-            __futex_wait_ex(&mutex->value, shared, shared|2, &ts);
+            __futex_wait_ex(&mutex->value, shared, locked_contended, &ts);
         }
         ANDROID_MEMBAR_FULL();
         return 0;
@@ -1279,66 +1468,106 @@
 
     /* Do we already own this recursive or error-check mutex ? */
     tid = __get_thread()->kernel_id;
-    if ( tid == MUTEX_OWNER(mutex) )
-    {
-        int  oldv, counter;
+    if ( tid == MUTEX_OWNER_FROM_BITS(mvalue) )
+        return _recursive_increment(mutex, mvalue, mtype);
 
-        if (mtype == MUTEX_TYPE_ERRORCHECK) {
-            /* already locked by ourselves */
-            return EDEADLK;
+    /* the following implements the same loop than pthread_mutex_lock_impl
+     * but adds checks to ensure that the operation never exceeds the
+     * absolute expiration time.
+     */
+    mtype |= shared;
+
+    /* first try a quick lock */
+    if (mvalue == mtype) {
+        mvalue = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_UNCONTENDED;
+        if (__likely(__bionic_cmpxchg(mtype, mvalue, &mutex->value) == 0)) {
+            ANDROID_MEMBAR_FULL();
+            return 0;
         }
-
-        _recursive_lock();
-        oldv = mutex->value;
-        counter = (oldv + (1 << MUTEX_COUNTER_SHIFT)) & MUTEX_COUNTER_MASK;
-        mutex->value = (oldv & ~MUTEX_COUNTER_MASK) | counter;
-        _recursive_unlock();
-        return 0;
+        mvalue = mutex->value;
     }
 
-    /* We don't own the mutex, so try to get it.
-     *
-     * First, we try to change its state from 0 to 1, if this
-     * doesn't work, try to change it to state 2.
-     */
-    new_lock_type = 1;
-
-    /* Compute wait op and restore sharing bit in mtype */
-    mtype  |= shared;
-
     for (;;) {
-        int  oldv;
-        struct timespec  ts;
+        struct timespec ts;
 
-        _recursive_lock();
-        oldv = mutex->value;
-        if (oldv == mtype) { /* uncontended released lock => 1 or 2 */
-            mutex->value = ((tid << 16) | mtype | new_lock_type);
-        } else if ((oldv & 3) == 1) { /* locked state 1 => state 2 */
-            oldv ^= 3;
-            mutex->value = oldv;
+        /* if the value is 'unlocked', try to acquire it directly */
+        /* NOTE: put state to 2 since we know there is contention */
+        if (mvalue == mtype) /* unlocked */ {
+            mvalue = MUTEX_OWNER_TO_BITS(tid) | mtype | MUTEX_STATE_BITS_LOCKED_CONTENDED;
+            if (__bionic_cmpxchg(mtype, mvalue, &mutex->value) == 0) {
+                ANDROID_MEMBAR_FULL();
+                return 0;
+            }
+            /* the value changed before we could lock it. We need to check
+             * the time to avoid livelocks, reload the value, then loop again. */
+            if (__timespec_to_absolute(&ts, &abstime, clock) < 0)
+                return EBUSY;
+
+            mvalue = mutex->value;
+            continue;
         }
-        _recursive_unlock();
 
-        if (oldv == mtype)
-            break;
+        /* The value is locked. If 'uncontended', try to switch its state
+         * to 'contented' to ensure we get woken up later. */
+        if (MUTEX_STATE_BITS_IS_LOCKED_UNCONTENDED(mvalue)) {
+            int newval = MUTEX_STATE_BITS_FLIP_CONTENTION(mvalue);
+            if (__bionic_cmpxchg(mvalue, newval, &mutex->value) != 0) {
+                /* this failed because the value changed, reload it */
+                mvalue = mutex->value;
+            } else {
+                /* this succeeded, update mvalue */
+                mvalue = newval;
+            }
+        }
 
-        /*
-         * The lock was held, possibly contended by others.  From
-         * now on, if we manage to acquire the lock, we have to
-         * assume that others are still contending for it so that
-         * we'll wake them when we unlock it.
-         */
-        new_lock_type = 2;
-
+        /* check time and update 'ts' */
         if (__timespec_to_absolute(&ts, &abstime, clock) < 0)
             return EBUSY;
 
-        __futex_wait_ex(&mutex->value, shared, oldv, &ts);
+        /* Only wait to be woken up if the state is '2', otherwise we'll
+         * simply loop right now. This can happen when the second cmpxchg
+         * in our loop failed because the mutex was unlocked by another
+         * thread.
+         */
+        if (MUTEX_STATE_BITS_IS_LOCKED_CONTENDED(mvalue)) {
+            if (__futex_wait_ex(&mutex->value, shared, mvalue, &ts) == ETIMEDOUT) {
+                return EBUSY;
+            }
+            mvalue = mutex->value;
+        }
     }
+    /* NOTREACHED */
+}
+
+int pthread_mutex_lock_timeout_np(pthread_mutex_t *mutex, unsigned msecs)
+{
+    int err = pthread_mutex_lock_timeout_np_impl(mutex, msecs);
+#ifdef PTHREAD_DEBUG
+    if (PTHREAD_DEBUG_ENABLED) {
+        if (!err) {
+            pthread_debug_mutex_lock_check(mutex);
+        }
+    }
+#endif
+    return err;
+}
+
+int pthread_mutex_destroy(pthread_mutex_t *mutex)
+{
+    int ret;
+
+    /* use trylock to ensure that the mutex value is
+     * valid and is not already locked. */
+    ret = pthread_mutex_trylock_impl(mutex);
+    if (ret != 0)
+        return ret;
+
+    mutex->value = 0xdead10cc;
     return 0;
 }
 
+
+
 int pthread_condattr_init(pthread_condattr_t *attr)
 {
     if (attr == NULL)
@@ -1436,7 +1665,7 @@
         long oldval = cond->value;
         long newval = ((oldval - COND_COUNTER_INCREMENT) & COND_COUNTER_MASK)
                       | flags;
-        if (__atomic_cmpxchg(oldval, newval, &cond->value) == 0)
+        if (__bionic_cmpxchg(oldval, newval, &cond->value) == 0)
             break;
     }
 
@@ -1844,7 +2073,7 @@
 }
 
 // man says this should be in <linux/unistd.h>, but it isn't
-extern int tkill(int tid, int sig);
+extern int tgkill(int tgid, int tid, int sig);
 
 int pthread_kill(pthread_t tid, int sig)
 {
@@ -1852,7 +2081,7 @@
     int  old_errno = errno;
     pthread_internal_t * thread = (pthread_internal_t *)tid;
 
-    ret = tkill(thread->kernel_id, sig);
+    ret = tgkill(getpid(), thread->kernel_id, sig);
     if (ret < 0) {
         ret = errno;
         errno = old_errno;
@@ -1894,7 +2123,7 @@
     /* 'in_set_ptr' is the second parameter to __rt_sigprocmask. It must be NULL
      * if 'set' is NULL to ensure correct semantics (which in this case would
      * be to ignore 'how' and return the current signal set into 'oset'.
-      */
+     */
     if (set == NULL) {
         in_set_ptr = NULL;
     } else {
@@ -1934,18 +2163,70 @@
 {
     static pthread_mutex_t   once_lock = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
     volatile pthread_once_t* ocptr = once_control;
+    pthread_once_t value;
 
-    pthread_once_t tmp = *ocptr;
-    ANDROID_MEMBAR_FULL();
-    if (tmp == PTHREAD_ONCE_INIT) {
-        pthread_mutex_lock( &once_lock );
-        if (*ocptr == PTHREAD_ONCE_INIT) {
-            (*init_routine)();
-            ANDROID_MEMBAR_FULL();
-            *ocptr = ~PTHREAD_ONCE_INIT;
-        }
-        pthread_mutex_unlock( &once_lock );
+    /* PTHREAD_ONCE_INIT is 0, we use the following bit flags
+     *
+     *   bit 0 set  -> initialization is under way
+     *   bit 1 set  -> initialization is complete
+     */
+#define ONCE_INITIALIZING           (1 << 0)
+#define ONCE_COMPLETED              (1 << 1)
+
+    /* First check if the once is already initialized. This will be the common
+    * case and we want to make this as fast as possible. Note that this still
+    * requires a load_acquire operation here to ensure that all the
+    * stores performed by the initialization function are observable on
+    * this CPU after we exit.
+    */
+    if (__likely((*ocptr & ONCE_COMPLETED) != 0)) {
+        ANDROID_MEMBAR_FULL();
+        return 0;
     }
+
+    for (;;) {
+        /* Try to atomically set the INITIALIZING flag.
+         * This requires a cmpxchg loop, and we may need
+         * to exit prematurely if we detect that 
+         * COMPLETED is now set.
+         */
+        int32_t  oldval, newval;
+
+        do {
+            oldval = *ocptr;
+            if ((oldval & ONCE_COMPLETED) != 0)
+                break;
+
+            newval = oldval | ONCE_INITIALIZING;
+        } while (__bionic_cmpxchg(oldval, newval, ocptr) != 0);
+
+        if ((oldval & ONCE_COMPLETED) != 0) {
+            /* We detected that COMPLETED was set while in our loop */
+            ANDROID_MEMBAR_FULL();
+            return 0;
+        }
+
+        if ((oldval & ONCE_INITIALIZING) == 0) {
+            /* We got there first, we can jump out of the loop to
+             * handle the initialization */
+            break;
+        }
+
+        /* Another thread is running the initialization and hasn't completed
+         * yet, so wait for it, then try again. */
+        __futex_wait_ex(ocptr, 0, oldval, NULL);
+    }
+
+    /* call the initialization function. */
+    (*init_routine)();
+
+    /* Do a store_release indicating that initialization is complete */
+    ANDROID_MEMBAR_FULL();
+    *ocptr = ONCE_COMPLETED;
+
+    /* Wake up any waiters, if any */
+    __futex_wake_ex(ocptr, 0, INT_MAX);
+
     return 0;
 }
 
diff --git a/libc/bionic/pthread_debug.c b/libc/bionic/pthread_debug.c
new file mode 100644
index 0000000..7ee208c
--- /dev/null
+++ b/libc/bionic/pthread_debug.c
@@ -0,0 +1,903 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/types.h>
+#include <sys/atomics.h>
+#include <sys/system_properties.h>
+#include <sys/mman.h>
+
+#if HAVE_DLADDR
+#include <dlfcn.h>
+#endif
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <pthread.h>
+#include <unwind.h>
+#include <unistd.h>
+
+#include "logd.h"
+#include "bionic_tls.h"
+
+/*
+ * ===========================================================================
+ *      Deadlock prediction
+ * ===========================================================================
+ */
+/*
+The idea is to predict the possibility of deadlock by recording the order
+in which locks are acquired.  If we see an attempt to acquire a lock
+out of order, we can identify the locks and offending code.
+
+To make this work, we need to keep track of the locks held by each thread,
+and create history trees for each lock.  When a thread tries to acquire
+a new lock, we walk through the "history children" of the lock, looking
+for a match with locks the thread already holds.  If we find a match,
+it means the thread has made a request that could result in a deadlock.
+
+To support recursive locks, we always allow re-locking a currently-held
+lock, and maintain a recursion depth count.
+
+An ASCII-art example, where letters represent locks:
+
+        A
+       /|\
+      / | \
+     B  |  D
+      \ |
+       \|
+        C
+
+The above is the tree we'd have after handling lock synchronization
+sequences "ABC", "AC", "AD".  A has three children, {B, C, D}.  C is also
+a child of B.  (The lines represent pointers between parent and child.
+Every node can have multiple parents and multiple children.)
+
+If we hold AC, and want to lock B, we recursively search through B's
+children to see if A or C appears.  It does, so we reject the attempt.
+(A straightforward way to implement it: add a link from C to B, then
+determine whether the graph starting at B contains a cycle.)
+
+If we hold AC and want to lock D, we would succeed, creating a new link
+from C to D.
+
+Updates to MutexInfo structs are only allowed for the thread that holds
+the lock, so we actually do most of our deadlock prediction work after
+the lock has been acquired.
+*/
+
+// =============================================================================
+// log functions
+// =============================================================================
+
+#define LOGD(format, ...)  \
+    __libc_android_log_print(ANDROID_LOG_DEBUG, \
+            "pthread_debug", (format), ##__VA_ARGS__ )
+
+#define LOGW(format, ...)  \
+    __libc_android_log_print(ANDROID_LOG_WARN, \
+            "pthread_debug", (format), ##__VA_ARGS__ )
+
+#define LOGE(format, ...)  \
+    __libc_android_log_print(ANDROID_LOG_ERROR, \
+            "pthread_debug", (format), ##__VA_ARGS__ )
+
+#define LOGI(format, ...)  \
+    __libc_android_log_print(ANDROID_LOG_INFO, \
+            "pthread_debug", (format), ##__VA_ARGS__ )
+
+static const char* const kStartBanner =
+        "===============================================================";
+
+static const char* const kEndBanner =
+        "===============================================================";
+
+extern char* __progname;
+
+// =============================================================================
+// map info functions
+// =============================================================================
+
+typedef struct mapinfo {
+    struct mapinfo *next;
+    unsigned start;
+    unsigned end;
+    char name[];
+} mapinfo;
+
+static mapinfo* sMapInfo = NULL;
+
+static mapinfo *parse_maps_line(char *line)
+{
+    mapinfo *mi;
+    int len = strlen(line);
+
+    if(len < 1) return 0;
+    line[--len] = 0;
+
+    if(len < 50) return 0;
+    if(line[20] != 'x') return 0;
+
+    mi = malloc(sizeof(mapinfo) + (len - 47));
+    if(mi == 0) return 0;
+
+    mi->start = strtoul(line, 0, 16);
+    mi->end = strtoul(line + 9, 0, 16);
+    /* To be filled in parse_elf_info if the mapped section starts with
+     * elf_header
+     */
+    mi->next = 0;
+    strcpy(mi->name, line + 49);
+
+    return mi;
+}
+
+static mapinfo *init_mapinfo(int pid)
+{
+    struct mapinfo *milist = NULL;
+    char data[1024];
+    sprintf(data, "/proc/%d/maps", pid);
+    FILE *fp = fopen(data, "r");
+    if(fp) {
+        while(fgets(data, sizeof(data), fp)) {
+            mapinfo *mi = parse_maps_line(data);
+            if(mi) {
+                mi->next = milist;
+                milist = mi;
+            }
+        }
+        fclose(fp);
+    }
+
+    return milist;
+}
+
+static void deinit_mapinfo(mapinfo *mi)
+{
+   mapinfo *del;
+   while(mi) {
+       del = mi;
+       mi = mi->next;
+       free(del);
+   }
+}
+
+/* Find the containing map info for the pc */
+static const mapinfo *pc_to_mapinfo(mapinfo *mi, unsigned pc, unsigned *rel_pc)
+{
+    *rel_pc = pc;
+    while(mi) {
+        if((pc >= mi->start) && (pc < mi->end)){
+            // Only calculate the relative offset for shared libraries
+            if (strstr(mi->name, ".so")) {
+                *rel_pc -= mi->start;
+            }
+            return mi;
+        }
+        mi = mi->next;
+    }
+    return NULL;
+}
+
+// =============================================================================
+// stack trace functions
+// =============================================================================
+
+#define STACK_TRACE_DEPTH 16
+
+typedef struct
+{
+    size_t count;
+    intptr_t* addrs;
+} stack_crawl_state_t;
+
+/* depends how the system includes define this */
+#ifdef HAVE_UNWIND_CONTEXT_STRUCT
+typedef struct _Unwind_Context __unwind_context;
+#else
+typedef _Unwind_Context __unwind_context;
+#endif
+
+static _Unwind_Reason_Code trace_function(__unwind_context *context, void *arg)
+{
+    stack_crawl_state_t* state = (stack_crawl_state_t*)arg;
+    if (state->count) {
+        intptr_t ip = (intptr_t)_Unwind_GetIP(context);
+        if (ip) {
+            state->addrs[0] = ip;
+            state->addrs++;
+            state->count--;
+            return _URC_NO_REASON;
+        }
+    }
+    /*
+     * If we run out of space to record the address or 0 has been seen, stop
+     * unwinding the stack.
+     */
+    return _URC_END_OF_STACK;
+}
+
+static inline
+int get_backtrace(intptr_t* addrs, size_t max_entries)
+{
+    stack_crawl_state_t state;
+    state.count = max_entries;
+    state.addrs = (intptr_t*)addrs;
+    _Unwind_Backtrace(trace_function, (void*)&state);
+    return max_entries - state.count;
+}
+
+static void log_backtrace(intptr_t* addrs, size_t c)
+{
+    int index = 0;
+    size_t i;
+    for (i=0 ; i<c; i++) {
+        unsigned int relpc;
+        void* offset = 0;
+        const char* symbol = NULL;
+
+#if HAVE_DLADDR
+        Dl_info info;
+        if (dladdr((void*)addrs[i], &info)) {
+            offset = info.dli_saddr;
+            symbol = info.dli_sname;
+        }
+#endif
+
+        if (symbol || index>0 || !HAVE_DLADDR) {
+            /*
+             * this test is a bit sketchy, but it allows us to skip the
+             * stack trace entries due to this debugging code. it works
+             * because those don't have a symbol (they're not exported)
+             */
+            mapinfo const* mi = pc_to_mapinfo(sMapInfo, addrs[i], &relpc);
+            char const* soname = mi ? mi->name : NULL;
+#if HAVE_DLADDR
+            if (!soname)
+                soname = info.dli_fname;
+#endif
+            if (!soname)
+                soname = "unknown";
+
+            if (symbol) {
+                LOGW("          "
+                     "#%02d  pc %08lx  %s (%s+0x%x)",
+                     index, relpc, soname, symbol,
+                     addrs[i] - (intptr_t)offset);
+            } else {
+                LOGW("          "
+                     "#%02d  pc %08lx  %s",
+                     index, relpc, soname);
+            }
+            index++;
+        }
+    }
+}
+
+/****************************************************************************/
+
+/*
+ * level <= 0 : deadlock prediction disabled
+ * level    1 : deadlock prediction enabled, w/o call stacks
+ * level    2 : deadlock prediction enabled w/ call stacks
+ */
+#define CAPTURE_CALLSTACK 2
+static int sPthreadDebugLevel = 0;
+static pid_t sPthreadDebugDisabledThread = -1;
+static pthread_mutex_t sDbgLock = PTHREAD_MUTEX_INITIALIZER;
+
+/****************************************************************************/
+
+/* some simple/lame malloc replacement
+ * NOT thread-safe and leaks everything
+ */
+
+#define DBG_ALLOC_BLOCK_SIZE PAGESIZE
+static size_t sDbgAllocOffset = DBG_ALLOC_BLOCK_SIZE;
+static char* sDbgAllocPtr = NULL;
+
+static void* DbgAllocLocked(size_t size) {
+    if ((sDbgAllocOffset + size) > DBG_ALLOC_BLOCK_SIZE) {
+        sDbgAllocOffset = 0;
+        sDbgAllocPtr = mmap(NULL, DBG_ALLOC_BLOCK_SIZE, PROT_READ|PROT_WRITE,
+                MAP_ANON | MAP_PRIVATE, 0, 0);
+        if (sDbgAllocPtr == MAP_FAILED) {
+            return NULL;
+        }
+    }
+    void* addr = sDbgAllocPtr + sDbgAllocOffset;
+    sDbgAllocOffset += size;
+    return addr;
+}
+
+static void* debug_realloc(void *ptr, size_t size, size_t old_size) {
+    void* addr = mmap(NULL, size, PROT_READ|PROT_WRITE,
+            MAP_ANON | MAP_PRIVATE, 0, 0);
+    if (addr != MAP_FAILED) {
+        if (ptr) {
+            memcpy(addr, ptr, old_size);
+            munmap(ptr, old_size);
+        }
+    } else {
+        addr = NULL;
+    }
+    return addr;
+}
+
+/*****************************************************************************/
+
+struct MutexInfo;
+
+typedef struct CallStack {
+    intptr_t    depth;
+    intptr_t*   addrs;
+} CallStack;
+
+typedef struct MutexInfo* MutexInfoListEntry;
+typedef struct CallStack  CallStackListEntry;
+
+typedef struct GrowingList {
+    int alloc;
+    int count;
+    union {
+        void*               data;
+        MutexInfoListEntry* list;
+        CallStackListEntry* stack;
+    };
+} GrowingList;
+
+typedef GrowingList MutexInfoList;
+typedef GrowingList CallStackList;
+
+typedef struct MutexInfo {
+    // thread currently holding the lock or 0
+    pid_t               owner;
+
+    // most-recently-locked doubly-linked list
+    struct MutexInfo*   prev;
+    struct MutexInfo*   next;
+
+    // for reentrant locks
+    int                 lockCount;
+    // when looking for loops in the graph, marks visited nodes
+    int                 historyMark;
+    // the actual mutex
+    pthread_mutex_t*    mutex;
+    // list of locks directly acquired AFTER this one in the same thread
+    MutexInfoList       children;
+    // list of locks directly acquired BEFORE this one in the same thread
+    MutexInfoList       parents;
+    // list of call stacks when a new link is established to this lock form its parent
+    CallStackList       stacks;
+    // call stack when this lock was acquired last
+    int                 stackDepth;
+    intptr_t            stackTrace[STACK_TRACE_DEPTH];
+} MutexInfo;
+
+static void growingListInit(GrowingList* list) {
+    list->alloc = 0;
+    list->count = 0;
+    list->data = NULL;
+}
+
+static void growingListAdd(GrowingList* pList, size_t objSize) {
+    if (pList->count == pList->alloc) {
+        size_t oldsize = pList->alloc * objSize;
+        pList->alloc += PAGESIZE / objSize;
+        size_t size = pList->alloc * objSize;
+        pList->data = debug_realloc(pList->data, size, oldsize);
+    }
+    pList->count++;
+}
+
+static void initMutexInfo(MutexInfo* object, pthread_mutex_t* mutex) {
+    object->owner = 0;
+    object->prev = 0;
+    object->next = 0;
+    object->lockCount = 0;
+    object->historyMark = 0;
+    object->mutex = mutex;
+    growingListInit(&object->children);
+    growingListInit(&object->parents);
+    growingListInit(&object->stacks);
+    object->stackDepth = 0;
+}
+
+typedef struct ThreadInfo {
+    pid_t       pid;
+    MutexInfo*  mrl;
+} ThreadInfo;
+
+static void initThreadInfo(ThreadInfo* object, pid_t pid) {
+    object->pid = pid;
+    object->mrl = NULL;
+}
+
+/****************************************************************************/
+
+static MutexInfo* get_mutex_info(pthread_mutex_t *mutex);
+static void mutex_lock_checked(MutexInfo* mrl, MutexInfo* object);
+static void mutex_unlock_checked(MutexInfo* object);
+
+/****************************************************************************/
+
+extern int pthread_mutex_lock_impl(pthread_mutex_t *mutex);
+extern int pthread_mutex_unlock_impl(pthread_mutex_t *mutex);
+
+static int pthread_mutex_lock_unchecked(pthread_mutex_t *mutex) {
+    return pthread_mutex_lock_impl(mutex);
+}
+
+static int pthread_mutex_unlock_unchecked(pthread_mutex_t *mutex) {
+    return pthread_mutex_unlock_impl(mutex);
+}
+
+/****************************************************************************/
+
+static void dup_backtrace(CallStack* stack, int count, intptr_t const* addrs) {
+    stack->depth = count;
+    stack->addrs = DbgAllocLocked(count * sizeof(intptr_t));
+    memcpy(stack->addrs, addrs, count * sizeof(intptr_t));
+}
+
+/****************************************************************************/
+
+static int historyListHas(
+        const MutexInfoList* list, MutexInfo const * obj) {
+    int i;
+    for (i=0; i<list->count; i++) {
+        if (list->list[i] == obj) {
+            return i;
+        }
+    }
+    return -1;
+}
+
+static void historyListAdd(MutexInfoList* pList, MutexInfo* obj) {
+    growingListAdd(pList, sizeof(MutexInfoListEntry));
+    pList->list[pList->count - 1] = obj;
+}
+
+static int historyListRemove(MutexInfoList* pList, MutexInfo* obj) {
+    int i;
+    for (i = pList->count-1; i >= 0; i--) {
+        if (pList->list[i] == obj) {
+            break;
+        }
+    }
+    if (i < 0) {
+        // not found!
+        return 0;
+    }
+
+    if (i != pList->count-1) {
+        // copy the last entry to the new free slot
+        pList->list[i] = pList->list[pList->count-1];
+    }
+    pList->count--;
+    memset(&pList->list[pList->count], 0, sizeof(MutexInfoListEntry));
+    return 1;
+}
+
+static void linkParentToChild(MutexInfo* parent, MutexInfo* child) {
+    historyListAdd(&parent->children, child);
+    historyListAdd(&child->parents, parent);
+}
+
+static void unlinkParentFromChild(MutexInfo* parent, MutexInfo* child) {
+    historyListRemove(&parent->children, child);
+    historyListRemove(&child->parents, parent);
+}
+
+/****************************************************************************/
+
+static void callstackListAdd(CallStackList* pList,
+        int count, intptr_t const* addrs) {
+    growingListAdd(pList, sizeof(CallStackListEntry));
+    dup_backtrace(&pList->stack[pList->count - 1], count, addrs);
+}
+
+/****************************************************************************/
+
+/*
+ * Recursively traverse the object hierarchy starting at "obj".  We mark
+ * ourselves on entry and clear the mark on exit.  If we ever encounter
+ * a marked object, we have a cycle.
+ *
+ * Returns "true" if all is well, "false" if we found a cycle.
+ */
+
+static int traverseTree(MutexInfo* obj, MutexInfo const* objParent)
+{
+    /*
+     * Have we been here before?
+     */
+    if (obj->historyMark) {
+        int stackDepth;
+        intptr_t addrs[STACK_TRACE_DEPTH];
+
+        /* Turn off prediction temporarily in this thread while logging */
+        sPthreadDebugDisabledThread = gettid();
+
+        if (sMapInfo == NULL) {
+            // note: we're protected by sDbgLock
+            sMapInfo = init_mapinfo(getpid());
+        }
+
+        LOGW("%s\n", kStartBanner);
+        LOGW("pid: %d, tid: %d >>> %s <<<", getpid(), gettid(), __progname);
+        LOGW("Illegal lock attempt:\n");
+        LOGW("--- pthread_mutex_t at %p\n", obj->mutex);
+        stackDepth = get_backtrace(addrs, STACK_TRACE_DEPTH);
+        log_backtrace(addrs, stackDepth);
+
+        LOGW("+++ Currently held locks in this thread (in reverse order):");
+        MutexInfo* cur = obj;
+        pid_t ourtid = gettid();
+        int i;
+        for (i=0 ; i<cur->parents.count ; i++) {
+            MutexInfo* parent = cur->parents.list[i];
+            if (parent->owner == ourtid) {
+                LOGW("--- pthread_mutex_t at %p\n", parent->mutex);
+                if (sPthreadDebugLevel >= CAPTURE_CALLSTACK) {
+                    log_backtrace(parent->stackTrace, parent->stackDepth);
+                }
+                cur = parent;
+                break;
+            }
+        }
+
+        LOGW("+++ Earlier, the following lock order (from last to first) was established\n");
+        return 0;
+    }
+
+    obj->historyMark = 1;
+
+    MutexInfoList* pList = &obj->children;
+    int result = 1;
+    int i;
+    for (i = pList->count-1; i >= 0; i--) {
+        MutexInfo* child = pList->list[i];
+        if (!traverseTree(child,  obj)) {
+            LOGW("--- pthread_mutex_t at %p\n", obj->mutex);
+            if (sPthreadDebugLevel >= CAPTURE_CALLSTACK) {
+                int index = historyListHas(&obj->parents, objParent);
+                if ((size_t)index < (size_t)obj->stacks.count) {
+                    log_backtrace(
+                            obj->stacks.stack[index].addrs,
+                            obj->stacks.stack[index].depth);
+                } else {
+                    log_backtrace(
+                            obj->stackTrace,
+                            obj->stackDepth);
+                }
+            }
+            result = 0;
+            break;
+        }
+    }
+
+    obj->historyMark = 0;
+    return result;
+}
+
+/****************************************************************************/
+
+static void mutex_lock_checked(MutexInfo* mrl, MutexInfo* object)
+{
+    pid_t tid = gettid();
+    if (object->owner == tid) {
+        object->lockCount++;
+        return;
+    }
+
+    object->owner = tid;
+    object->lockCount = 0;
+
+    if (sPthreadDebugLevel >= CAPTURE_CALLSTACK) {
+        // always record the call stack when acquiring a lock.
+        // it's not efficient, but is useful during diagnostics
+        object->stackDepth = get_backtrace(object->stackTrace, STACK_TRACE_DEPTH);
+    }
+
+    // no other locks held in this thread -- no deadlock possible!
+    if (mrl == NULL)
+        return;
+
+    // check if the lock we're trying to acquire is a direct descendant of
+    // the most recently locked mutex in this thread, in which case we're
+    // in a good situation -- no deadlock possible
+    if (historyListHas(&mrl->children, object) >= 0)
+        return;
+
+    pthread_mutex_lock_unchecked(&sDbgLock);
+
+    linkParentToChild(mrl, object);
+    if (!traverseTree(object, mrl)) {
+        deinit_mapinfo(sMapInfo);
+        sMapInfo = NULL;
+        LOGW("%s\n", kEndBanner);
+        unlinkParentFromChild(mrl, object);
+        // reenable pthread debugging for this thread
+        sPthreadDebugDisabledThread = -1;
+    } else {
+        // record the call stack for this link
+        // NOTE: the call stack is added at the same index
+        // as mrl in object->parents[]
+        // ie: object->parents.count == object->stacks.count, which is
+        // also the index.
+        if (sPthreadDebugLevel >= CAPTURE_CALLSTACK) {
+            callstackListAdd(&object->stacks,
+                    object->stackDepth, object->stackTrace);
+        }
+    }
+
+    pthread_mutex_unlock_unchecked(&sDbgLock);
+}
+
+static void mutex_unlock_checked(MutexInfo* object)
+{
+    pid_t tid = gettid();
+    if (object->owner == tid) {
+        if (object->lockCount == 0) {
+            object->owner = 0;
+        } else {
+            object->lockCount--;
+        }
+    }
+}
+
+
+// =============================================================================
+// Hash Table functions
+// =============================================================================
+
+/****************************************************************************/
+
+#define HASHTABLE_SIZE      256
+
+typedef struct HashEntry HashEntry;
+struct HashEntry {
+    size_t slot;
+    HashEntry* prev;
+    HashEntry* next;
+    void* data;
+};
+
+typedef struct HashTable HashTable;
+struct HashTable {
+    HashEntry* slots[HASHTABLE_SIZE];
+};
+
+static HashTable sMutexMap;
+static HashTable sThreadMap;
+
+/****************************************************************************/
+
+static uint32_t get_hashcode(void const * key, size_t keySize)
+{
+    uint32_t h = keySize;
+    char const* data = (char const*)key;
+    size_t i;
+    for (i = 0; i < keySize; i++) {
+        h = h * 31 + *data;
+        data++;
+    }
+    return (uint32_t)h;
+}
+
+static size_t get_index(uint32_t h)
+{
+    // We apply this secondary hashing discovered by Doug Lea to defend
+    // against bad hashes.
+    h += ~(h << 9);
+    h ^= (((unsigned int) h) >> 14);
+    h += (h << 4);
+    h ^= (((unsigned int) h) >> 10);
+    return (size_t)h & (HASHTABLE_SIZE - 1);
+}
+
+/****************************************************************************/
+
+static void hashmap_init(HashTable* table) {
+    memset(table, 0, sizeof(HashTable));
+}
+
+static void hashmap_removeEntry(HashTable* table, HashEntry* entry)
+{
+    HashEntry* prev = entry->prev;
+    HashEntry* next = entry->next;
+    if (prev != NULL) entry->prev->next = next;
+    if (next != NULL) entry->next->prev = prev;
+    if (prev == NULL) {
+        // we are the head of the list. set the head to be next
+        table->slots[entry->slot] = entry->next;
+    }
+}
+
+static HashEntry* hashmap_lookup(HashTable* table,
+        void const* key, size_t ksize,
+        int (*equals)(void const* data, void const* key))
+{
+    const uint32_t hash = get_hashcode(key, ksize);
+    const size_t slot = get_index(hash);
+
+    HashEntry* entry = table->slots[slot];
+    while (entry) {
+        if (equals(entry->data, key)) {
+            break;
+        }
+        entry = entry->next;
+    }
+
+    if (entry == NULL) {
+        // create a new entry
+        entry = (HashEntry*)DbgAllocLocked(sizeof(HashEntry));
+        entry->data = NULL;
+        entry->slot = slot;
+        entry->prev = NULL;
+        entry->next = table->slots[slot];
+        if (entry->next != NULL) {
+            entry->next->prev = entry;
+        }
+        table->slots[slot] = entry;
+    }
+    return entry;
+}
+
+/****************************************************************************/
+
+static int MutexInfo_equals(void const* data, void const* key) {
+    return ((MutexInfo const *)data)->mutex == *(pthread_mutex_t **)key;
+}
+
+static MutexInfo* get_mutex_info(pthread_mutex_t *mutex)
+{
+    pthread_mutex_lock_unchecked(&sDbgLock);
+
+    HashEntry* entry = hashmap_lookup(&sMutexMap,
+            &mutex, sizeof(mutex),
+            &MutexInfo_equals);
+    if (entry->data == NULL) {
+        entry->data = (MutexInfo*)DbgAllocLocked(sizeof(MutexInfo));
+        initMutexInfo(entry->data, mutex);
+    }
+
+    pthread_mutex_unlock_unchecked(&sDbgLock);
+
+    return (MutexInfo *)entry->data;
+}
+
+/****************************************************************************/
+
+static int ThreadInfo_equals(void const* data, void const* key) {
+    return ((ThreadInfo const *)data)->pid == *(pid_t *)key;
+}
+
+static ThreadInfo* get_thread_info(pid_t pid)
+{
+    pthread_mutex_lock_unchecked(&sDbgLock);
+
+    HashEntry* entry = hashmap_lookup(&sThreadMap,
+            &pid, sizeof(pid),
+            &ThreadInfo_equals);
+    if (entry->data == NULL) {
+        entry->data = (ThreadInfo*)DbgAllocLocked(sizeof(ThreadInfo));
+        initThreadInfo(entry->data, pid);
+    }
+
+    pthread_mutex_unlock_unchecked(&sDbgLock);
+
+    return (ThreadInfo *)entry->data;
+}
+
+static void push_most_recently_locked(MutexInfo* mrl) {
+    ThreadInfo* tinfo = get_thread_info(gettid());
+    mrl->next = NULL;
+    mrl->prev = tinfo->mrl;
+    tinfo->mrl = mrl;
+}
+
+static void remove_most_recently_locked(MutexInfo* mrl) {
+    ThreadInfo* tinfo = get_thread_info(gettid());
+    if (mrl->next) {
+        (mrl->next)->prev = mrl->prev;
+    }
+    if (mrl->prev) {
+        (mrl->prev)->next = mrl->next;
+    }
+    if (tinfo->mrl == mrl) {
+        tinfo->mrl = mrl->next;
+    }
+}
+
+static MutexInfo* get_most_recently_locked() {
+    ThreadInfo* tinfo = get_thread_info(gettid());
+    return tinfo->mrl;
+}
+
+/****************************************************************************/
+
+/* pthread_debug_init() is called from libc_init_dynamic() just
+ * after system properties have been initialized
+ */
+
+__LIBC_HIDDEN__
+void pthread_debug_init(void) {
+    char env[PROP_VALUE_MAX];
+    if (__system_property_get("debug.libc.pthread", env)) {
+        int level = atoi(env);
+        if (level) {
+            LOGI("pthread deadlock detection level %d enabled for pid %d (%s)",
+                    level, getpid(), __progname);
+            hashmap_init(&sMutexMap);
+            sPthreadDebugLevel = level;
+        }
+    }
+}
+
+/*
+ * See if we were allowed to grab the lock at this time.  We do it
+ * *after* acquiring the lock, rather than before, so that we can
+ * freely update the MutexInfo struct.  This seems counter-intuitive,
+ * but our goal is deadlock *prediction* not deadlock *prevention*.
+ * (If we actually deadlock, the situation is easy to diagnose from
+ * a thread dump, so there's no point making a special effort to do
+ * the checks before the lock is held.)
+ */
+
+__LIBC_HIDDEN__
+void pthread_debug_mutex_lock_check(pthread_mutex_t *mutex)
+{
+    if (sPthreadDebugLevel == 0) return;
+    // prediction disabled for this thread
+    if (sPthreadDebugDisabledThread == gettid())
+        return;
+    MutexInfo* object = get_mutex_info(mutex);
+    MutexInfo* mrl = get_most_recently_locked();
+    mutex_lock_checked(mrl, object);
+    push_most_recently_locked(object);
+}
+
+/*
+ * pthread_debug_mutex_unlock_check() must be called with the mutex
+ * still held (ie: before calling the real unlock)
+ */
+
+__LIBC_HIDDEN__
+void pthread_debug_mutex_unlock_check(pthread_mutex_t *mutex)
+{
+    if (sPthreadDebugLevel == 0) return;
+    // prediction disabled for this thread
+    if (sPthreadDebugDisabledThread == gettid())
+        return;
+    MutexInfo* object = get_mutex_info(mutex);
+    remove_most_recently_locked(object);
+    mutex_unlock_checked(object);
+}
diff --git a/libc/bionic/semaphore.c b/libc/bionic/semaphore.c
index 96819ae..9bc8412 100644
--- a/libc/bionic/semaphore.c
+++ b/libc/bionic/semaphore.c
@@ -174,7 +174,7 @@
 
         new = SEMCOUNT_DECREMENT(old);
     }
-    while (__atomic_cmpxchg((int)(old|shared),
+    while (__bionic_cmpxchg((int)(old|shared),
                             (int)(new|shared),
                             (volatile int *)pvalue) != 0);
     return ret;
@@ -198,7 +198,7 @@
 
         new = SEMCOUNT_DECREMENT(old);
     }
-    while (__atomic_cmpxchg((int)(old|shared),
+    while (__bionic_cmpxchg((int)(old|shared),
                             (int)(new|shared),
                             (volatile int *)pvalue) != 0);
 
@@ -235,7 +235,7 @@
         else
             new = SEMCOUNT_INCREMENT(old);
     }
-    while ( __atomic_cmpxchg((int)(old|shared),
+    while ( __bionic_cmpxchg((int)(old|shared),
                              (int)(new|shared),
                              (volatile int*)pvalue) != 0);
 
diff --git a/libc/bionic/stubs.c b/libc/bionic/stubs.c
index 5f63427..cc4c04e 100644
--- a/libc/bionic/stubs.c
+++ b/libc/bionic/stubs.c
@@ -250,30 +250,58 @@
 static unsigned
 app_id_from_name( const char*  name )
 {
-    unsigned long  id;
+    unsigned long  userid;
+    unsigned long  appid;
     char*          end;
 
-    if (memcmp(name, "app_", 4) != 0 || !isdigit(name[4]))
+    if (name[0] != 'u' || !isdigit(name[1]))
         goto FAIL;
 
-    id = strtoul(name+4, &end, 10);
-    if (*end != '\0')
+    userid = strtoul(name+1, &end, 10);
+    if (end[0] != '_' || end[1] == 0 || !isdigit(end[2]))
         goto FAIL;
 
-    id += AID_APP;
-
-    /* check for overflow and that the value can be
-     * stored in our 32-bit uid_t/gid_t */
-    if (id < AID_APP || (unsigned)id != id)
+    if (end[1] == 'a')
+        appid = strtoul(end+2, &end, 10) + AID_APP;
+    else if (end[1] == 'i')
+        appid = strtoul(end+2, &end, 10) + AID_ISOLATED_START;
+    else
         goto FAIL;
 
-    return (unsigned)id;
+    if (end[0] != 0)
+        goto FAIL;
+
+    /* check that user id won't overflow */
+    if (userid > 1000)
+        goto FAIL;
+
+    /* check that app id is within range */
+    if (appid < AID_APP || appid >= AID_USER)
+        goto FAIL;
+
+    return (unsigned)(appid + userid*AID_USER);
 
 FAIL:
     errno = ENOENT;
     return 0;
 }
 
+static void
+print_app_uid_name(uid_t  uid, char* buffer, int bufferlen)
+{
+    uid_t appid;
+    uid_t userid;
+
+    appid = uid % AID_USER;
+    userid = uid / AID_USER;
+
+    if (appid < AID_ISOLATED_START) {
+        snprintf(buffer, bufferlen, "u%u_a%u", userid, appid - AID_APP);
+    } else {
+        snprintf(buffer, bufferlen, "u%u_i%u", userid, appid - AID_ISOLATED_START);
+    }
+}
+
 /* translate a uid into the corresponding app_<uid>
  * passwd structure (sets errno to ENOENT on failure)
  */
@@ -287,8 +315,7 @@
         return NULL;
     }
 
-    snprintf( state->app_name_buffer, sizeof state->app_name_buffer,
-              "app_%u", uid - AID_APP );
+    print_app_uid_name(uid, state->app_name_buffer, sizeof state->app_name_buffer);
 
     pw->pw_name  = state->app_name_buffer;
     pw->pw_dir   = "/data";
@@ -306,14 +333,15 @@
 app_id_to_group(gid_t  gid, stubs_state_t*  state)
 {
     struct group*  gr = &state->group;
+    int appid;
+    int userid;
 
     if (gid < AID_APP) {
         errno = ENOENT;
         return NULL;
     }
 
-    snprintf(state->group_name_buffer, sizeof state->group_name_buffer,
-             "app_%u", gid - AID_APP);
+    print_app_uid_name(gid, state->group_name_buffer, sizeof state->group_name_buffer);
 
     gr->gr_name   = state->group_name_buffer;
     gr->gr_gid    = gid;
diff --git a/libc/include/pthread.h b/libc/include/pthread.h
index 9d05769..2015ac0 100644
--- a/libc/include/pthread.h
+++ b/libc/include/pthread.h
@@ -42,9 +42,13 @@
     int volatile value;
 } pthread_mutex_t;
 
-#define  PTHREAD_MUTEX_INITIALIZER             {0}
-#define  PTHREAD_RECURSIVE_MUTEX_INITIALIZER   {0x4000}
-#define  PTHREAD_ERRORCHECK_MUTEX_INITIALIZER  {0x8000}
+#define  __PTHREAD_MUTEX_INIT_VALUE            0
+#define  __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE  0x4000
+#define  __PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE 0x8000
+
+#define  PTHREAD_MUTEX_INITIALIZER             {__PTHREAD_MUTEX_INIT_VALUE}
+#define  PTHREAD_RECURSIVE_MUTEX_INITIALIZER   {__PTHREAD_RECURSIVE_MUTEX_INIT_VALUE}
+#define  PTHREAD_ERRORCHECK_MUTEX_INITIALIZER  {__PTHREAD_ERRORCHECK_MUTEX_INIT_VALUE}
 
 enum {
     PTHREAD_MUTEX_NORMAL = 0,
diff --git a/libc/include/resolv.h b/libc/include/resolv.h
index bb21c23..7c34012 100644
--- a/libc/include/resolv.h
+++ b/libc/include/resolv.h
@@ -50,21 +50,6 @@
 extern int   b64_ntop(u_char const *, size_t, char *, size_t);
 extern int   b64_pton(char const *, u_char *, size_t);
 
-/* Set name of default interface */
-extern void _resolv_set_default_iface(const char* ifname);
-
-/* set name servers for an interface */
-extern void _resolv_set_nameservers_for_iface(const char* ifname, char** servers, int numservers);
-
-/* tell resolver of the address of an interface */
-extern void _resolv_set_addr_of_iface(const char* ifname, struct in_addr* addr);
-
-/* flush the cache associated with the default interface */
-extern void _resolv_flush_cache_for_default_iface();
-
-/* flush the cache associated with a certain interface */
-extern void _resolv_flush_cache_for_iface(const char* ifname);
-
 __END_DECLS
 
 #endif /* _RESOLV_H_ */
diff --git a/libc/include/stdio.h b/libc/include/stdio.h
index 4006882..8d3d5d7 100644
--- a/libc/include/stdio.h
+++ b/libc/include/stdio.h
@@ -452,8 +452,10 @@
  * fdprintf is a better name, and some programs that use fdprintf use a
  * #define fdprintf dprintf for compatibility
  */
+__BEGIN_DECLS
 int fdprintf(int, const char*, ...);
 int vfdprintf(int, const char*, __va_list);
+__END_DECLS
 #endif /* _GNU_SOURCE */
 
 #endif /* _STDIO_H_ */
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index 5dc8a87..e5caadd 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -67,6 +67,8 @@
 extern unsigned long long strtoull(const char *, char **, int);
 extern double strtod(const char *nptr, char **endptr);
 
+extern int posix_memalign(void **memptr, size_t alignment, size_t size);
+
 static __inline__ float strtof(const char *nptr, char **endptr)
 {
     return (float)strtod(nptr, endptr);
diff --git a/libc/include/sys/atomics.h b/libc/include/sys/atomics.h
index d3fa145..3ada8de 100644
--- a/libc/include/sys/atomics.h
+++ b/libc/include/sys/atomics.h
@@ -33,10 +33,48 @@
 
 __BEGIN_DECLS
 
-extern int __atomic_cmpxchg(int old, int _new, volatile int *ptr);
-extern int __atomic_swap(int _new, volatile int *ptr);
-extern int __atomic_dec(volatile int *ptr);
-extern int __atomic_inc(volatile int *ptr);
+/* Note: atomic operations that were exported by the C library didn't
+ *       provide any memory barriers, which created potential issues on
+ *       multi-core devices. We now define them as inlined calls to
+ *       GCC sync builtins, which always provide a full barrier.
+ *
+ *       NOTE: The C library still exports atomic functions by the same
+ *              name to ensure ABI stability for existing NDK machine code.
+ *
+ *       If you are an NDK developer, we encourage you to rebuild your
+ *       unmodified sources against this header as soon as possible.
+ */
+#define __ATOMIC_INLINE__ static __inline__ __attribute__((always_inline))
+
+__ATOMIC_INLINE__ int
+__atomic_cmpxchg(int old, int _new, volatile int *ptr)
+{
+    /* We must return 0 on success */
+    return __sync_val_compare_and_swap(ptr, old, _new) != old;
+}
+
+__ATOMIC_INLINE__ int
+__atomic_swap(int _new, volatile int *ptr)
+{
+    int prev;
+    do {
+        prev = *ptr;
+    } while (__sync_val_compare_and_swap(ptr, prev, _new) != prev);
+    return prev;
+}
+
+__ATOMIC_INLINE__ int
+__atomic_dec(volatile int *ptr)
+{
+  return __sync_fetch_and_sub (ptr, 1);
+}
+
+__ATOMIC_INLINE__ int
+__atomic_inc(volatile int *ptr)
+{
+  return __sync_fetch_and_add (ptr, 1);
+}
+
 
 int __futex_wait(volatile void *ftx, int val, const struct timespec *timeout);
 int __futex_wake(volatile void *ftx, int count);
diff --git a/libc/include/sys/exec_elf.h b/libc/include/sys/exec_elf.h
index 03bbdac..eecbd64 100644
--- a/libc/include/sys/exec_elf.h
+++ b/libc/include/sys/exec_elf.h
@@ -130,4 +130,6 @@
 #define STT_LOPROC	13		/* reserved range for processor */
 #define STT_HIPROC	15		/*  specific symbol types */
 
+#define PT_GNU_RELRO    0x6474e552      /* Read-only post relocation */
+
 #endif /* _SYS_EXEC_ELF_H_ */
diff --git a/libc/include/sys/linux-syscalls.h b/libc/include/sys/linux-syscalls.h
index 0cb3100..9f23054 100644
--- a/libc/include/sys/linux-syscalls.h
+++ b/libc/include/sys/linux-syscalls.h
@@ -212,6 +212,7 @@
 #define __NR_waitid                       (__NR_SYSCALL_BASE + 284)
 #define __NR_kill                         (__NR_SYSCALL_BASE + 37)
 #define __NR_tkill                        (__NR_SYSCALL_BASE + 238)
+#define __NR_tgkill                       (__NR_SYSCALL_BASE + 270)
 #define __NR_set_thread_area              (__NR_SYSCALL_BASE + 243)
 #define __NR_openat                       (__NR_SYSCALL_BASE + 295)
 #define __NR_madvise                      (__NR_SYSCALL_BASE + 219)
diff --git a/libc/include/sys/linux-unistd.h b/libc/include/sys/linux-unistd.h
deleted file mode 100644
index d945d87..0000000
--- a/libc/include/sys/linux-unistd.h
+++ /dev/null
@@ -1,230 +0,0 @@
-/* auto-generated by gensyscalls.py, do not touch */
-#ifndef _BIONIC_LINUX_UNISTD_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void             _exit (int);
-void             _exit_thread (int);
-pid_t            __fork (void);
-pid_t            _waitpid (pid_t, int*, int, struct rusage*);
-int              __waitid (int, pid_t, struct siginfo_t*, int,void*);
-pid_t            __sys_clone (int, void*, int*, void*, int*);
-int              execve (const char*, char* const*, char* const*);
-int              __setuid (uid_t);
-uid_t            getuid (void);
-gid_t            getgid (void);
-uid_t            geteuid (void);
-gid_t            getegid (void);
-uid_t            getresuid (void);
-gid_t            getresgid (void);
-pid_t            gettid (void);
-ssize_t          readahead (int, off64_t, size_t);
-int              getgroups (int, gid_t *);
-pid_t            getpgid (pid_t);
-pid_t            getppid (void);
-pid_t            setsid (void);
-int              setgid (gid_t);
-int              seteuid (uid_t);
-int              __setreuid (uid_t, uid_t);
-int              __setresuid (uid_t, uid_t, uid_t);
-int              setresgid (gid_t, gid_t, gid_t);
-void*            __brk (void*);
-int              kill (pid_t, int);
-int              tkill (pid_t tid, int sig);
-int              __ptrace (int request, int pid, void* addr, void* data);
-int              __set_thread_area (void*  user_desc);
-int              __getpriority (int, int);
-int              setpriority (int, int, int);
-int              setrlimit (int resource, const struct rlimit *rlp);
-int              getrlimit (int resource, struct rlimit *rlp);
-int              getrusage (int who, struct rusage*  r_usage);
-int              setgroups (int, const gid_t *);
-pid_t            getpgrp (void);
-int              setpgid (pid_t, pid_t);
-pid_t            vfork (void);
-int              setregid (gid_t, gid_t);
-int              chroot (const char *);
-int              prctl (int option, unsigned int arg2, unsigned int arg3, unsigned int arg4, unsigned int arg5);
-int              capget (cap_user_header_t header, cap_user_data_t data);
-int              capset (cap_user_header_t header, const cap_user_data_t data);
-int              sigaltstack (const stack_t*, stack_t*);
-int              acct (const char*  filepath);
-ssize_t          read (int, void*, size_t);
-ssize_t          write (int, const void*, size_t);
-ssize_t          pread64 (int, void *, size_t, off64_t);
-ssize_t          pwrite64 (int, void *, size_t, off64_t);
-int              __open (const char*, int, mode_t);
-int              __openat (int, const char*, int, mode_t);
-int              close (int);
-int              creat (const char*, mode_t);
-off_t            lseek (int, off_t, int);
-int              __llseek (int, unsigned long, unsigned long, loff_t*, int);
-pid_t            getpid (void);
-void *           mmap (void *, size_t, int, int, int, long);
-void *           __mmap2 (void*, size_t, int, int, int, long);
-int              munmap (void *, size_t);
-void *           mremap (void *, size_t, size_t, unsigned long);
-int              msync (const void *, size_t, int);
-int              mprotect (const void *, size_t, int);
-int              madvise (const void *, size_t, int);
-int              mlock (const void *addr, size_t len);
-int              munlock (const void *addr, size_t len);
-int              mincore (void*  start, size_t  length, unsigned char*  vec);
-int              __ioctl (int, int, void *);
-int              readv (int, const struct iovec *, int);
-int              writev (int, const struct iovec *, int);
-int              __fcntl (int, int, void*);
-int              flock (int, int);
-int              fchmod (int, mode_t);
-int              dup (int);
-int              pipe (int *);
-int              pipe2 (int *, int);
-int              dup2 (int, int);
-int              select (int, struct fd_set *, struct fd_set *, struct fd_set *, struct timeval *);
-int              ftruncate (int, off_t);
-int              ftruncate64 (int, off64_t);
-int              getdents (unsigned int, struct dirent *, unsigned int);
-int              fsync (int);
-int              fdatasync (int);
-int              fchown (int, uid_t, gid_t);
-void             sync (void);
-int              __fcntl64 (int, int, void *);
-int              __fstatfs64 (int, size_t, struct statfs *);
-ssize_t          sendfile (int out_fd, int in_fd, off_t *offset, size_t count);
-int              fstatat (int dirfd, const char *path, struct stat *buf, int flags);
-int              mkdirat (int dirfd, const char *pathname, mode_t mode);
-int              fchownat (int dirfd, const char *path, uid_t owner, gid_t group, int flags);
-int              fchmodat (int dirfd, const char *path, mode_t mode, int flags);
-int              renameat (int olddirfd, const char *oldpath, int newdirfd, const char *newpath);
-int              fsetxattr (int, const char *, const void *, size_t, int);
-ssize_t          fgetxattr (int, const char *, void *, size_t);
-ssize_t          flistxattr (int, char *, size_t);
-int              fremovexattr (int, const char *);
-int              link (const char*, const char*);
-int              unlink (const char*);
-int              unlinkat (int, const char *, int);
-int              chdir (const char*);
-int              mknod (const char*, mode_t, dev_t);
-int              chmod (const char*,mode_t);
-int              chown (const char *, uid_t, gid_t);
-int              lchown (const char*, uid_t, gid_t);
-int              mount (const char*, const char*, const char*, unsigned long, const void*);
-int              umount (const char*);
-int              umount2 (const char*, int);
-int              fstat (int, struct stat*);
-int              stat (const char *, struct stat *);
-int              lstat (const char *, struct stat *);
-int              mkdir (const char *, mode_t);
-int              readlink (const char *, char *, size_t);
-int              rmdir (const char *);
-int              rename (const char *, const char *);
-int              __getcwd (char * buf, size_t size);
-int              access (const char *, int);
-int              symlink (const char *, const char *);
-int              fchdir (int);
-int              truncate (const char*, off_t);
-int              setxattr (const char *, const char *, const void *, size_t, int);
-int              lsetxattr (const char *, const char *, const void *, size_t, int);
-ssize_t          getxattr (const char *, const char *, void *, size_t);
-ssize_t          lgetxattr (const char *, const char *, void *, size_t);
-ssize_t          listxattr (const char *, char *, size_t);
-ssize_t          llistxattr (const char *, char *, size_t);
-int              removexattr (const char *, const char *);
-int              lremovexattr (const char *, const char *);
-int              __statfs64 (const char *, size_t, struct statfs *);
-int              pause (void);
-int              gettimeofday (struct timeval*, struct timezone*);
-int              settimeofday (const struct timeval*, const struct timezone*);
-clock_t          times (struct tms *);
-int              nanosleep (const struct timespec *, struct timespec *);
-int              clock_gettime (clockid_t clk_id, struct timespec *tp);
-int              clock_settime (clockid_t clk_id, const struct timespec *tp);
-int              clock_getres (clockid_t clk_id, struct timespec *res);
-int              clock_nanosleep (const struct timespec *req, struct timespec *rem);
-int              getitimer (int, const struct itimerval *);
-int              setitimer (int, const struct itimerval *, struct itimerval *);
-int              __timer_create (clockid_t clockid, struct sigevent *evp, timer_t *timerid);
-int              __timer_settime (timer_t, int, const struct itimerspec*, struct itimerspec*);
-int              __timer_gettime (timer_t, struct itimerspec*);
-int              __timer_getoverrun (timer_t);
-int              __timer_delete (timer_t);
-int              utimes (const char*, const struct timeval tvp[2]);
-int              utimensat (int, const char *, const struct timespec times[2], int);
-int              sigaction (int, const struct sigaction *, struct sigaction *);
-int              sigprocmask (int, const sigset_t *, sigset_t *);
-int              __sigsuspend (int unused1, int unused2, unsigned mask);
-int              __rt_sigaction (int sig, const struct sigaction *act, struct sigaction *oact, size_t sigsetsize);
-int              __rt_sigprocmask (int  how, const sigset_t *set, sigset_t *oset, size_t sigsetsize);
-int              __rt_sigtimedwait (const sigset_t *set, struct siginfo_t  *info, struct timespec_t  *timeout, size_t  sigset_size);
-int              sigpending (sigset_t *);
-int              socket (int, int, int);
-int              socketpair (int, int, int, int*);
-int              bind (int, struct sockaddr *, int);
-int              connect (int, struct sockaddr *, socklen_t);
-int              listen (int, int);
-int              accept (int, struct sockaddr *, socklen_t *);
-int              getsockname (int, struct sockaddr *, socklen_t *);
-int              getpeername (int, struct sockaddr *, socklen_t *);
-int              sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
-int              recvfrom (int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *);
-int              shutdown (int, int);
-int              setsockopt (int, int, int, const void *, socklen_t);
-int              getsockopt (int, int, int, void *, socklen_t *);
-int              sendmsg (int, const struct msghdr *, unsigned int);
-int              recvmsg (int, struct msghdr *, unsigned int);
-int              socket (int, int, int);
-int              bind (int, struct sockaddr *, int);
-int              connect (int, struct sockaddr *, socklen_t);
-int              listen (int, int);
-int              accept (int, struct sockaddr *, socklen_t *);
-int              getsockname (int, struct sockaddr *, socklen_t *);
-int              getpeername (int, struct sockaddr *, socklen_t *);
-int              socketpair (int, int, int, int*);
-int              sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
-int              recvfrom (int, void *, size_t, unsigned int, struct sockaddr *, socklen_t *);
-int              shutdown (int, int);
-int              setsockopt (int, int, int, const void *, socklen_t);
-int              getsockopt (int, int, int, void *, socklen_t *);
-int              sendmsg (int, const struct msghdr *, unsigned int);
-int              recvmsg (int, struct msghdr *, unsigned int);
-int              sched_setscheduler (pid_t pid, int policy, const struct sched_param *param);
-int              sched_getscheduler (pid_t pid);
-int              sched_yield (void);
-int              sched_setparam (pid_t pid, const struct sched_param *param);
-int              sched_getparam (pid_t pid, struct sched_param *param);
-int              sched_get_priority_max (int policy);
-int              sched_get_priority_min (int policy);
-int              sched_rr_get_interval (pid_t pid, struct timespec *interval);
-int              sched_setaffinity (pid_t pid, size_t setsize, const cpu_set_t* set);
-int              __sched_getaffinity (pid_t pid, size_t setsize, cpu_set_t* set);
-int              __getcpu (unsigned *cpu, unsigned *node, void *unused);
-int              ioprio_set (int which, int who, int ioprio);
-int              ioprio_get (int which, int who);
-int              uname (struct utsname *);
-pid_t            __wait4 (pid_t pid, int *status, int options, struct rusage *rusage);
-mode_t           umask (mode_t);
-int              __reboot (int, int, int, void *);
-int              __syslog (int, char *, int);
-int              init_module (void *, unsigned long, const char *);
-int              delete_module (const char*, unsigned int);
-int              klogctl (int, char *, int);
-int              sysinfo (struct sysinfo *);
-int              personality (unsigned long);
-int              futex (void *, int, int, void *, void *, int);
-int              epoll_create (int size);
-int              epoll_ctl (int epfd, int op, int fd, struct epoll_event *event);
-int              epoll_wait (int epfd, struct epoll_event *events, int max, int timeout);
-int              inotify_init (void);
-int              inotify_add_watch (int, const char *, unsigned int);
-int              inotify_rm_watch (int, unsigned int);
-int              poll (struct pollfd *, unsigned int, long);
-int              eventfd (unsigned int, int);
-int              __set_tls (void*);
-int              cacheflush (long start, long end, long flags);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _BIONIC_LINUX_UNISTD_H_ */
diff --git a/libc/include/sys/personality.h b/libc/include/sys/personality.h
index 2199fa7..7772550 100644
--- a/libc/include/sys/personality.h
+++ b/libc/include/sys/personality.h
@@ -29,56 +29,10 @@
 #ifndef _SYS_PERSONALITY_H_
 #define _SYS_PERSONALITY_H_
 
+#include <linux/personality.h>
+
 __BEGIN_DECLS
 
-/* constants taken from linux-3.0.4/include/linux/personality.h */
-
-enum {
-        UNAME26 =               0x0020000,
-        ADDR_NO_RANDOMIZE =     0x0040000,
-        FDPIC_FUNCPTRS =        0x0080000,
-        MMAP_PAGE_ZERO =        0x0100000,
-        ADDR_COMPAT_LAYOUT =    0x0200000,
-        READ_IMPLIES_EXEC =     0x0400000,
-        ADDR_LIMIT_32BIT =      0x0800000,
-        SHORT_INODE =           0x1000000,
-        WHOLE_SECONDS =         0x2000000,
-        STICKY_TIMEOUTS =       0x4000000,
-        ADDR_LIMIT_3GB =        0x8000000,
-};
-
-#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC  | \
-                            ADDR_NO_RANDOMIZE  | \
-                            ADDR_COMPAT_LAYOUT | \
-                            MMAP_PAGE_ZERO)
-
-enum {
-        PER_LINUX =             0x0000,
-        PER_LINUX_32BIT =       0x0000 | ADDR_LIMIT_32BIT,
-        PER_LINUX_FDPIC =       0x0000 | FDPIC_FUNCPTRS,
-        PER_SVR4 =              0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
-        PER_SVR3 =              0x0002 | STICKY_TIMEOUTS | SHORT_INODE,
-        PER_SCOSVR3 =           0x0003 | STICKY_TIMEOUTS |
-                                         WHOLE_SECONDS | SHORT_INODE,
-        PER_OSR5 =              0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS,
-        PER_WYSEV386 =          0x0004 | STICKY_TIMEOUTS | SHORT_INODE,
-        PER_ISCR4 =             0x0005 | STICKY_TIMEOUTS,
-        PER_BSD =               0x0006,
-        PER_SUNOS =             0x0006 | STICKY_TIMEOUTS,
-        PER_XENIX =             0x0007 | STICKY_TIMEOUTS | SHORT_INODE,
-        PER_LINUX32 =           0x0008,
-        PER_LINUX32_3GB =       0x0008 | ADDR_LIMIT_3GB,
-        PER_IRIX32 =            0x0009 | STICKY_TIMEOUTS,
-        PER_IRIXN32 =           0x000a | STICKY_TIMEOUTS,
-        PER_IRIX64 =            0x000b | STICKY_TIMEOUTS,
-        PER_RISCOS =            0x000c,
-        PER_SOLARIS =           0x000d | STICKY_TIMEOUTS,
-        PER_UW7 =               0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
-        PER_OSF4 =              0x000f,
-        PER_HPUX =              0x0010,
-        PER_MASK =              0x00ff,
-};
-
 extern int personality (unsigned long persona);
 
 __END_DECLS
diff --git a/libc/include/time.h b/libc/include/time.h
index 4ad4f7b..8867b32 100644
--- a/libc/include/time.h
+++ b/libc/include/time.h
@@ -79,24 +79,6 @@
 extern char*       strptime(const char *buf, const char *fmt, struct tm *tm);
 extern size_t      strftime(char *s, size_t max, const char *format, const struct tm *tm);
 
-/* ANDROID-BEGIN */
-struct strftime_locale {
-    const char *  mon[12];
-    const char *  month[12];
-    const char *  standalone_month[12];
-    const char *  wday[7];
-    const char *  weekday[7];
-    const char *  X_fmt;
-    const char *  x_fmt;
-    const char *  c_fmt;
-    const char *  am;
-    const char *  pm;
-    const char *  date_fmt;
-};
-
-extern size_t      strftime_tz(char *s, size_t max, const char *format, const struct tm *tm, const struct strftime_locale*  lc);
-/* ANDROID-END */
-
 extern char *ctime(const time_t *timep);
 extern char *ctime_r(const time_t *timep, char *buf);
 
diff --git a/libc/kernel/README.TXT b/libc/kernel/README.TXT
index 76dfa4d..9ff97d6 100644
--- a/libc/kernel/README.TXT
+++ b/libc/kernel/README.TXT
@@ -56,7 +56,7 @@
 
   * tools/update_all.py
     automatically update all clean headers from the content of 
-    'bionic/kernel/original'. this is the script you're likely going to 
+    'external/kernel-headers/original'. this is the script you're likely going to
     run whenever you update the original headers.
 
 NOTE:
diff --git a/libc/kernel/arch-arm/asm/a.out.h b/libc/kernel/arch-arm/asm/a.out.h
index e8f17dc..73977ec 100644
--- a/libc/kernel/arch-arm/asm/a.out.h
+++ b/libc/kernel/arch-arm/asm/a.out.h
@@ -7,36 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARM_A_OUT_H__
 #define __ARM_A_OUT_H__
-
 #include <linux/personality.h>
 #include <asm/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct exec
 {
  __u32 a_info;
  __u32 a_text;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 a_data;
  __u32 a_bss;
  __u32 a_syms;
  __u32 a_entry;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 a_trsize;
  __u32 a_drsize;
 };
-
 #define N_TXTADDR(a) (0x00008000)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_TRSIZE(a) ((a).a_trsize)
 #define N_DRSIZE(a) ((a).a_drsize)
 #define N_SYMSIZE(a) ((a).a_syms)
-
 #define M_ARM 103
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef LIBRARY_START_TEXT
 #define LIBRARY_START_TEXT (0x00c00000)
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/arch/board-perseus2.h b/libc/kernel/arch-arm/asm/arch/board-perseus2.h
index c6c5413..bc0ab23 100644
--- a/libc/kernel/arch-arm/asm/arch/board-perseus2.h
+++ b/libc/kernel/arch-arm/asm/arch/board-perseus2.h
@@ -7,21 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_OMAP_PERSEUS2_H
 #define __ASM_ARCH_OMAP_PERSEUS2_H
-
 #include <asm/arch/fpga.h>
-
 #ifndef OMAP_SDRAM_DEVICE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_SDRAM_DEVICE D256M_1X16_4B
 #endif
-
 #define MAXIRQNUM IH_BOARD_BASE
 #define MAXFIQNUM MAXIRQNUM
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAXSWINUM MAXIRQNUM
-
 #define NR_IRQS (MAXIRQNUM + 1)
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/arch/board.h b/libc/kernel/arch-arm/asm/arch/board.h
index a7a4c66..78fa4b0 100644
--- a/libc/kernel/arch-arm/asm/arch/board.h
+++ b/libc/kernel/arch-arm/asm/arch/board.h
@@ -7,157 +7,159 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _OMAP_BOARD_H
 #define _OMAP_BOARD_H
-
 #include <linux/types.h>
-
 #include <asm/arch/gpio-switch.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_TAG_CLOCK 0x4f01
 #define OMAP_TAG_MMC 0x4f02
 #define OMAP_TAG_SERIAL_CONSOLE 0x4f03
 #define OMAP_TAG_USB 0x4f04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_TAG_LCD 0x4f05
 #define OMAP_TAG_GPIO_SWITCH 0x4f06
 #define OMAP_TAG_UART 0x4f07
 #define OMAP_TAG_FBMEM 0x4f08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_TAG_STI_CONSOLE 0x4f09
 #define OMAP_TAG_CAMERA_SENSOR 0x4f0a
 #define OMAP_TAG_BT 0x4f0b
-
 #define OMAP_TAG_BOOT_REASON 0x4f80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_TAG_FLASH_PART 0x4f81
 #define OMAP_TAG_VERSION_STR 0x4f82
-
 struct omap_clock_config {
-
  u8 system_clock_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct omap_mmc_conf {
  unsigned enabled:1;
-
  unsigned nomux:1;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned cover:1;
-
  unsigned wire4:1;
  s16 power_pin;
  s16 switch_pin;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  s16 wp_pin;
 };
-
 struct omap_mmc_config {
  struct omap_mmc_conf mmc[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct omap_serial_console_config {
  u8 console_uart;
  u32 console_speed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct omap_sti_console_config {
  unsigned enable:1;
  u8 channel;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct omap_camera_sensor_config {
  u16 reset_gpio;
  int (*power_on)(void * data);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*power_off)(void * data);
 };
-
 struct omap_usb_config {
-
  unsigned register_host:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned register_dev:1;
  u8 otg;
-
  u8 hmc_mode;
-
  u8 rwc;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 pins[3];
 };
-
 struct omap_lcd_config {
  char panel_name[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char ctrl_name[16];
  s16 nreset_gpio;
  u8 data_lines;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct device;
 struct fb_info;
 struct omap_backlight_config {
  int default_intensity;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*set_power)(struct device *dev, int state);
  int (*check_fb)(struct fb_info *fb);
 };
-
 struct omap_fbmem_config {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 start;
  u32 size;
 };
-
 struct omap_pwm_led_platform_data {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char *name;
  int intensity_timer;
  int blink_timer;
  void (*set_power)(struct omap_pwm_led_platform_data *self, int on_off);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct omap_gpio_switch_config {
  char name[12];
  u16 gpio;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int flags:4;
  int type:4;
  int key_code:24;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omap_uart_config {
-
  unsigned int enabled_uarts;
 };
-
 struct omap_flash_part_config {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char part_table[0];
 };
-
 struct omap_boot_reason_config {
  char reason_str[12];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct omap_version_config {
  char component[12];
  char version[12];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct omap_board_config_entry {
  u16 tag;
  u16 len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 data[0];
 };
-
 struct omap_board_config_kernel {
  u16 tag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const void *data;
 };
-
 struct omap_bluetooth_config {
  u8 chip_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 bt_uart;
  u8 bd_addr[6];
  u8 bt_sysclk;
  int bt_wakeup_gpio;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int host_wakeup_gpio;
  int reset_gpio;
 };
-
 #define omap_get_config(tag, type)   ((const type *) __omap_get_config((tag), sizeof(type), 0))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define omap_get_nr_config(tag, type, nr)   ((const type *) __omap_get_config((tag), sizeof(type), (nr)))
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/arch/cpu.h b/libc/kernel/arch-arm/asm/arch/cpu.h
index fa7a408..fb95048 100644
--- a/libc/kernel/arch-arm/asm/arch/cpu.h
+++ b/libc/kernel/arch-arm/asm/arch/cpu.h
@@ -7,51 +7,60 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_OMAP_CPU_H
 #define __ASM_ARCH_OMAP_CPU_H
-
 #define omap2_cpu_rev() ((system_rev >> 8) & 0x0f)
-
 #undef MULTI_OMAP1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef MULTI_OMAP2
 #undef OMAP_NAME
-
 #define GET_OMAP_CLASS (system_rev & 0xff)
-
 #define IS_OMAP_CLASS(class, id)  static inline int is_omap ##class (void)  {   return (GET_OMAP_CLASS == (id)) ? 1 : 0;  }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GET_OMAP_SUBCLASS ((system_rev >> 20) & 0x0fff)
-
 #define IS_OMAP_SUBCLASS(subclass, id)  static inline int is_omap ##subclass (void)  {   return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0;  }
-
 #define cpu_is_omap7xx() 0
 #define cpu_is_omap15xx() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_is_omap16xx() 0
 #define cpu_is_omap24xx() 0
 #define cpu_is_omap242x() 0
 #define cpu_is_omap243x() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef MULTI_OMAP1
 #else
 #endif
 #define GET_OMAP_TYPE ((system_rev >> 16) & 0xffff)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IS_OMAP_TYPE(type, id)  static inline int is_omap ##type (void)  {   return (GET_OMAP_TYPE == (id)) ? 1 : 0;  }
 #define cpu_is_omap310() 0
 #define cpu_is_omap730() 0
 #define cpu_is_omap1510() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_is_omap1610() 0
 #define cpu_is_omap5912() 0
 #define cpu_is_omap1611() 0
 #define cpu_is_omap1621() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_is_omap1710() 0
 #define cpu_is_omap2420() 0
 #define cpu_is_omap2422() 0
 #define cpu_is_omap2423() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_is_omap2430() 0
 #ifdef MULTI_OMAP1
 #else
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_class_is_omap1() (cpu_is_omap730() || cpu_is_omap15xx() ||   cpu_is_omap16xx())
 #define cpu_class_is_omap2() cpu_is_omap24xx()
 #endif
diff --git a/libc/kernel/arch-arm/asm/arch/dma.h b/libc/kernel/arch-arm/asm/arch/dma.h
index 5e5be76..cdfe92b 100644
--- a/libc/kernel/arch-arm/asm/arch/dma.h
+++ b/libc/kernel/arch-arm/asm/arch/dma.h
@@ -7,312 +7,362 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_DMA_H
 #define __ASM_ARCH_DMA_H
-
 #define OMAP_DMA_BASE (0xfffed800)
 #define OMAP_DMA_GCR (OMAP_DMA_BASE + 0x400)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_GSCR (OMAP_DMA_BASE + 0x404)
 #define OMAP_DMA_GRST (OMAP_DMA_BASE + 0x408)
 #define OMAP_DMA_HW_ID (OMAP_DMA_BASE + 0x442)
 #define OMAP_DMA_PCH2_ID (OMAP_DMA_BASE + 0x444)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_PCH0_ID (OMAP_DMA_BASE + 0x446)
 #define OMAP_DMA_PCH1_ID (OMAP_DMA_BASE + 0x448)
 #define OMAP_DMA_PCHG_ID (OMAP_DMA_BASE + 0x44a)
 #define OMAP_DMA_PCHD_ID (OMAP_DMA_BASE + 0x44c)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_CAPS_0_U (OMAP_DMA_BASE + 0x44e)
 #define OMAP_DMA_CAPS_0_L (OMAP_DMA_BASE + 0x450)
 #define OMAP_DMA_CAPS_1_U (OMAP_DMA_BASE + 0x452)
 #define OMAP_DMA_CAPS_1_L (OMAP_DMA_BASE + 0x454)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_CAPS_2 (OMAP_DMA_BASE + 0x456)
 #define OMAP_DMA_CAPS_3 (OMAP_DMA_BASE + 0x458)
 #define OMAP_DMA_CAPS_4 (OMAP_DMA_BASE + 0x45a)
 #define OMAP_DMA_PCH2_SR (OMAP_DMA_BASE + 0x460)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_PCH0_SR (OMAP_DMA_BASE + 0x480)
 #define OMAP_DMA_PCH1_SR (OMAP_DMA_BASE + 0x482)
 #define OMAP_DMA_PCHD_SR (OMAP_DMA_BASE + 0x4c0)
-
 #define OMAP24XX_DMA_BASE (L4_24XX_BASE + 0x56000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA4_REVISION (OMAP24XX_DMA_BASE + 0x00)
 #define OMAP_DMA4_GCR_REG (OMAP24XX_DMA_BASE + 0x78)
 #define OMAP_DMA4_IRQSTATUS_L0 (OMAP24XX_DMA_BASE + 0x08)
 #define OMAP_DMA4_IRQSTATUS_L1 (OMAP24XX_DMA_BASE + 0x0c)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA4_IRQSTATUS_L2 (OMAP24XX_DMA_BASE + 0x10)
 #define OMAP_DMA4_IRQSTATUS_L3 (OMAP24XX_DMA_BASE + 0x14)
 #define OMAP_DMA4_IRQENABLE_L0 (OMAP24XX_DMA_BASE + 0x18)
 #define OMAP_DMA4_IRQENABLE_L1 (OMAP24XX_DMA_BASE + 0x1c)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA4_IRQENABLE_L2 (OMAP24XX_DMA_BASE + 0x20)
 #define OMAP_DMA4_IRQENABLE_L3 (OMAP24XX_DMA_BASE + 0x24)
 #define OMAP_DMA4_SYSSTATUS (OMAP24XX_DMA_BASE + 0x28)
 #define OMAP_DMA4_CAPS_0 (OMAP24XX_DMA_BASE + 0x64)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA4_CAPS_2 (OMAP24XX_DMA_BASE + 0x6c)
 #define OMAP_DMA4_CAPS_3 (OMAP24XX_DMA_BASE + 0x70)
 #define OMAP_DMA4_CAPS_4 (OMAP24XX_DMA_BASE + 0x74)
-
 #define OMAP_LOGICAL_DMA_CH_COUNT 32  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_CCR_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x80)
 #define OMAP_DMA_CLNK_CTRL_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x84)
 #define OMAP_DMA_CICR_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x88)
 #define OMAP_DMA_CSR_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x8c)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_CSDP_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x90)
 #define OMAP_DMA_CEN_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x94)
 #define OMAP_DMA_CFN_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x98)
 #define OMAP_DMA_CSEI_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xa4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_CSFI_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xa8)
 #define OMAP_DMA_CDEI_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xac)
 #define OMAP_DMA_CDFI_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xb0)
 #define OMAP_DMA_CSAC_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xb4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_CDAC_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xb8)
-
 #define OMAP1_DMA_CSSA_L_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x08)
 #define OMAP1_DMA_CSSA_U_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x0a)
 #define OMAP1_DMA_CDSA_L_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x0c)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1_DMA_CDSA_U_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x0e)
 #define OMAP1_DMA_COLOR_L_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x20)
 #define OMAP1_DMA_CCR2_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x24)
 #define OMAP1_DMA_COLOR_U_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x22)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1_DMA_LCH_CTRL_REG(n) __REG16(OMAP_DMA_BASE + 0x40 * (n) + 0x2a)
-
 #define OMAP2_DMA_CSSA_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0x9c)
 #define OMAP2_DMA_CDSA_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xa0)
 #define OMAP2_DMA_CCEN_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xbc)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP2_DMA_CCFN_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xc0)
 #define OMAP2_DMA_COLOR_REG(n) __REG32(OMAP24XX_DMA_BASE + 0x60 * (n) + 0xc4)
-
 #define OMAP_DMA_NO_DEVICE 0
 #define OMAP_DMA_MCSI1_TX 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_MCSI1_RX 2
 #define OMAP_DMA_I2C_RX 3
 #define OMAP_DMA_I2C_TX 4
 #define OMAP_DMA_EXT_NDMA_REQ 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_EXT_NDMA_REQ2 6
 #define OMAP_DMA_UWIRE_TX 7
 #define OMAP_DMA_MCBSP1_TX 8
 #define OMAP_DMA_MCBSP1_RX 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_MCBSP3_TX 10
 #define OMAP_DMA_MCBSP3_RX 11
 #define OMAP_DMA_UART1_TX 12
 #define OMAP_DMA_UART1_RX 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_UART2_TX 14
 #define OMAP_DMA_UART2_RX 15
 #define OMAP_DMA_MCBSP2_TX 16
 #define OMAP_DMA_MCBSP2_RX 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_UART3_TX 18
 #define OMAP_DMA_UART3_RX 19
 #define OMAP_DMA_CAMERA_IF_RX 20
 #define OMAP_DMA_MMC_TX 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_MMC_RX 22
 #define OMAP_DMA_NAND 23
 #define OMAP_DMA_IRQ_LCD_LINE 24
 #define OMAP_DMA_MEMORY_STICK 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_USB_W2FC_RX0 26
 #define OMAP_DMA_USB_W2FC_RX1 27
 #define OMAP_DMA_USB_W2FC_RX2 28
 #define OMAP_DMA_USB_W2FC_TX0 29
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_USB_W2FC_TX1 30
 #define OMAP_DMA_USB_W2FC_TX2 31
-
 #define OMAP_DMA_CRYPTO_DES_IN 32
 #define OMAP_DMA_SPI_TX 33
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_SPI_RX 34
 #define OMAP_DMA_CRYPTO_HASH 35
 #define OMAP_DMA_CCP_ATTN 36
 #define OMAP_DMA_CCP_FIFO_NOT_EMPTY 37
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_CMT_APE_TX_CHAN_0 38
 #define OMAP_DMA_CMT_APE_RV_CHAN_0 39
 #define OMAP_DMA_CMT_APE_TX_CHAN_1 40
 #define OMAP_DMA_CMT_APE_RV_CHAN_1 41
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_CMT_APE_TX_CHAN_2 42
 #define OMAP_DMA_CMT_APE_RV_CHAN_2 43
 #define OMAP_DMA_CMT_APE_TX_CHAN_3 44
 #define OMAP_DMA_CMT_APE_RV_CHAN_3 45
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_CMT_APE_TX_CHAN_4 46
 #define OMAP_DMA_CMT_APE_RV_CHAN_4 47
 #define OMAP_DMA_CMT_APE_TX_CHAN_5 48
 #define OMAP_DMA_CMT_APE_RV_CHAN_5 49
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_CMT_APE_TX_CHAN_6 50
 #define OMAP_DMA_CMT_APE_RV_CHAN_6 51
 #define OMAP_DMA_CMT_APE_TX_CHAN_7 52
 #define OMAP_DMA_CMT_APE_RV_CHAN_7 53
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_MMC2_TX 54
 #define OMAP_DMA_MMC2_RX 55
 #define OMAP_DMA_CRYPTO_DES_OUT 56
-
 #define OMAP24XX_DMA_NO_DEVICE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_XTI_DMA 1  
 #define OMAP24XX_DMA_EXT_DMAREQ0 2  
 #define OMAP24XX_DMA_EXT_DMAREQ1 3  
 #define OMAP24XX_DMA_GPMC 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_GFX 5  
 #define OMAP24XX_DMA_DSS 6  
 #define OMAP24XX_DMA_VLYNQ_TX 7  
 #define OMAP24XX_DMA_CWT 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_AES_TX 9  
 #define OMAP24XX_DMA_AES_RX 10  
 #define OMAP24XX_DMA_DES_TX 11  
 #define OMAP24XX_DMA_DES_RX 12  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_SHA1MD5_RX 13  
 #define OMAP24XX_DMA_EXT_DMAREQ2 14  
 #define OMAP24XX_DMA_EXT_DMAREQ3 15  
 #define OMAP24XX_DMA_EXT_DMAREQ4 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_EAC_AC_RD 17  
 #define OMAP24XX_DMA_EAC_AC_WR 18  
 #define OMAP24XX_DMA_EAC_MD_UL_RD 19  
 #define OMAP24XX_DMA_EAC_MD_UL_WR 20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_EAC_MD_DL_RD 21  
 #define OMAP24XX_DMA_EAC_MD_DL_WR 22  
 #define OMAP24XX_DMA_EAC_BT_UL_RD 23  
 #define OMAP24XX_DMA_EAC_BT_UL_WR 24  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_EAC_BT_DL_RD 25  
 #define OMAP24XX_DMA_EAC_BT_DL_WR 26  
 #define OMAP24XX_DMA_I2C1_TX 27  
 #define OMAP24XX_DMA_I2C1_RX 28  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_I2C2_TX 29  
 #define OMAP24XX_DMA_I2C2_RX 30  
 #define OMAP24XX_DMA_MCBSP1_TX 31  
 #define OMAP24XX_DMA_MCBSP1_RX 32  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_MCBSP2_TX 33  
 #define OMAP24XX_DMA_MCBSP2_RX 34  
 #define OMAP24XX_DMA_SPI1_TX0 35  
 #define OMAP24XX_DMA_SPI1_RX0 36  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_SPI1_TX1 37  
 #define OMAP24XX_DMA_SPI1_RX1 38  
 #define OMAP24XX_DMA_SPI1_TX2 39  
 #define OMAP24XX_DMA_SPI1_RX2 40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_SPI1_TX3 41  
 #define OMAP24XX_DMA_SPI1_RX3 42  
 #define OMAP24XX_DMA_SPI2_TX0 43  
 #define OMAP24XX_DMA_SPI2_RX0 44  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_SPI2_TX1 45  
 #define OMAP24XX_DMA_SPI2_RX1 46  
-
 #define OMAP24XX_DMA_UART1_TX 49  
 #define OMAP24XX_DMA_UART1_RX 50  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_UART2_TX 51  
 #define OMAP24XX_DMA_UART2_RX 52  
 #define OMAP24XX_DMA_UART3_TX 53  
 #define OMAP24XX_DMA_UART3_RX 54  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_USB_W2FC_TX0 55  
 #define OMAP24XX_DMA_USB_W2FC_RX0 56  
 #define OMAP24XX_DMA_USB_W2FC_TX1 57  
 #define OMAP24XX_DMA_USB_W2FC_RX1 58  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_USB_W2FC_TX2 59  
 #define OMAP24XX_DMA_USB_W2FC_RX2 60  
 #define OMAP24XX_DMA_MMC1_TX 61  
 #define OMAP24XX_DMA_MMC1_RX 62  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_DMA_MS 63  
 #define OMAP24XX_DMA_EXT_DMAREQ5 64  
-
 #define OMAP1510_DMA_LCD_BASE (0xfffedb00)
 #define OMAP1510_DMA_LCD_CTRL (OMAP1510_DMA_LCD_BASE + 0x00)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_DMA_LCD_TOP_F1_L (OMAP1510_DMA_LCD_BASE + 0x02)
 #define OMAP1510_DMA_LCD_TOP_F1_U (OMAP1510_DMA_LCD_BASE + 0x04)
 #define OMAP1510_DMA_LCD_BOT_F1_L (OMAP1510_DMA_LCD_BASE + 0x06)
 #define OMAP1510_DMA_LCD_BOT_F1_U (OMAP1510_DMA_LCD_BASE + 0x08)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1610_DMA_LCD_BASE (0xfffee300)
 #define OMAP1610_DMA_LCD_CSDP (OMAP1610_DMA_LCD_BASE + 0xc0)
 #define OMAP1610_DMA_LCD_CCR (OMAP1610_DMA_LCD_BASE + 0xc2)
 #define OMAP1610_DMA_LCD_CTRL (OMAP1610_DMA_LCD_BASE + 0xc4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1610_DMA_LCD_TOP_B1_L (OMAP1610_DMA_LCD_BASE + 0xc8)
 #define OMAP1610_DMA_LCD_TOP_B1_U (OMAP1610_DMA_LCD_BASE + 0xca)
 #define OMAP1610_DMA_LCD_BOT_B1_L (OMAP1610_DMA_LCD_BASE + 0xcc)
 #define OMAP1610_DMA_LCD_BOT_B1_U (OMAP1610_DMA_LCD_BASE + 0xce)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1610_DMA_LCD_TOP_B2_L (OMAP1610_DMA_LCD_BASE + 0xd0)
 #define OMAP1610_DMA_LCD_TOP_B2_U (OMAP1610_DMA_LCD_BASE + 0xd2)
 #define OMAP1610_DMA_LCD_BOT_B2_L (OMAP1610_DMA_LCD_BASE + 0xd4)
 #define OMAP1610_DMA_LCD_BOT_B2_U (OMAP1610_DMA_LCD_BASE + 0xd6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1610_DMA_LCD_SRC_EI_B1 (OMAP1610_DMA_LCD_BASE + 0xd8)
 #define OMAP1610_DMA_LCD_SRC_FI_B1_L (OMAP1610_DMA_LCD_BASE + 0xda)
 #define OMAP1610_DMA_LCD_SRC_EN_B1 (OMAP1610_DMA_LCD_BASE + 0xe0)
 #define OMAP1610_DMA_LCD_SRC_FN_B1 (OMAP1610_DMA_LCD_BASE + 0xe4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1610_DMA_LCD_LCH_CTRL (OMAP1610_DMA_LCD_BASE + 0xea)
 #define OMAP1610_DMA_LCD_SRC_FI_B1_U (OMAP1610_DMA_LCD_BASE + 0xf4)
-
 #define OMAP1_DMA_TOUT_IRQ (1 << 0)
 #define OMAP_DMA_DROP_IRQ (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_HALF_IRQ (1 << 2)
 #define OMAP_DMA_FRAME_IRQ (1 << 3)
 #define OMAP_DMA_LAST_IRQ (1 << 4)
 #define OMAP_DMA_BLOCK_IRQ (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1_DMA_SYNC_IRQ (1 << 6)
 #define OMAP2_DMA_PKT_IRQ (1 << 7)
 #define OMAP2_DMA_TRANS_ERR_IRQ (1 << 8)
 #define OMAP2_DMA_SECURE_ERR_IRQ (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP2_DMA_SUPERVISOR_ERR_IRQ (1 << 10)
 #define OMAP2_DMA_MISALIGNED_ERR_IRQ (1 << 11)
-
 #define OMAP_DMA_DATA_TYPE_S8 0x00
 #define OMAP_DMA_DATA_TYPE_S16 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_DATA_TYPE_S32 0x02
-
 #define OMAP_DMA_SYNC_ELEMENT 0x00
 #define OMAP_DMA_SYNC_FRAME 0x01
 #define OMAP_DMA_SYNC_BLOCK 0x02
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_PORT_EMIFF 0x00
 #define OMAP_DMA_PORT_EMIFS 0x01
 #define OMAP_DMA_PORT_OCP_T1 0x02
 #define OMAP_DMA_PORT_TIPB 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_PORT_OCP_T2 0x04
 #define OMAP_DMA_PORT_MPUI 0x05
-
 #define OMAP_DMA_AMODE_CONSTANT 0x00
 #define OMAP_DMA_AMODE_POST_INC 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_DMA_AMODE_SINGLE_IDX 0x02
 #define OMAP_DMA_AMODE_DOUBLE_IDX 0x03
-
 enum {
  OMAP_LCD_DMA_B1_TOP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  OMAP_LCD_DMA_B1_BOTTOM,
  OMAP_LCD_DMA_B2_TOP,
  OMAP_LCD_DMA_B2_BOTTOM
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum omap_dma_burst_mode {
  OMAP_DMA_DATA_BURST_DIS = 0,
  OMAP_DMA_DATA_BURST_4,
  OMAP_DMA_DATA_BURST_8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  OMAP_DMA_DATA_BURST_16,
 };
-
 enum omap_dma_color_mode {
  OMAP_DMA_COLOR_DIS = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  OMAP_DMA_CONSTANT_FILL,
  OMAP_DMA_TRANSPARENT_COPY
 };
-
 enum omap_dma_write_mode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  OMAP_DMA_WRITE_NON_POSTED = 0,
  OMAP_DMA_WRITE_POSTED,
  OMAP_DMA_WRITE_LAST_NON_POSTED
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omap_dma_channel_params {
  int data_type;
  int elem_count;
  int frame_count;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int src_port;
  int src_amode;
  unsigned long src_start;
  int src_ei;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int src_fi;
-
  int dst_port;
  int dst_amode;
  unsigned long dst_start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int dst_ei;
  int dst_fi;
-
  int trigger;
  int sync_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int src_or_dst_synch;
-
  int ie;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/arch/fpga.h b/libc/kernel/arch-arm/asm/arch/fpga.h
index a1b210d..64055a4 100644
--- a/libc/kernel/arch-arm/asm/arch/fpga.h
+++ b/libc/kernel/arch-arm/asm/arch/fpga.h
@@ -7,154 +7,162 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_OMAP_FPGA_H
 #define __ASM_ARCH_OMAP_FPGA_H
-
 #define omap1510_fpga_init_irq() (0)
-
 #define fpga_read(reg) __raw_readb(reg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define fpga_write(val, reg) __raw_writeb(val, reg)
-
 #define H2P2_DBG_FPGA_BASE 0xE8000000  
 #define H2P2_DBG_FPGA_SIZE SZ_4K  
 #define H2P2_DBG_FPGA_START 0x04000000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define H2P2_DBG_FPGA_ETHR_START (H2P2_DBG_FPGA_START + 0x300)
 #define H2P2_DBG_FPGA_FPGA_REV (H2P2_DBG_FPGA_BASE + 0x10)  
 #define H2P2_DBG_FPGA_BOARD_REV (H2P2_DBG_FPGA_BASE + 0x12)  
 #define H2P2_DBG_FPGA_GPIO (H2P2_DBG_FPGA_BASE + 0x14)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define H2P2_DBG_FPGA_LEDS (H2P2_DBG_FPGA_BASE + 0x16)  
 #define H2P2_DBG_FPGA_MISC_INPUTS (H2P2_DBG_FPGA_BASE + 0x18)  
 #define H2P2_DBG_FPGA_LAN_STATUS (H2P2_DBG_FPGA_BASE + 0x1A)  
 #define H2P2_DBG_FPGA_LAN_RESET (H2P2_DBG_FPGA_BASE + 0x1C)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct h2p2_dbg_fpga {
-
  u16 smc91x[8];
-
  u16 fpga_rev;
  u16 board_rev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u16 gpio_outputs;
  u16 leds;
-
  u16 misc_inputs;
  u16 lan_status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u16 lan_reset;
  u16 reserved0;
-
  u16 ps2_data;
  u16 ps2_ctrl;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define H2P2_DBG_FPGA_LED_GREEN (1 << 15)
 #define H2P2_DBG_FPGA_LED_AMBER (1 << 14)
 #define H2P2_DBG_FPGA_LED_RED (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define H2P2_DBG_FPGA_LED_BLUE (1 << 12)
-
 #define H2P2_DBG_FPGA_LOAD_METER (1 << 0) 
 #define H2P2_DBG_FPGA_LOAD_METER_SIZE 11
 #define H2P2_DBG_FPGA_LOAD_METER_MASK ((1 << H2P2_DBG_FPGA_LOAD_METER_SIZE) - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define H2P2_DBG_FPGA_P2_LED_TIMER (1 << 0)
 #define H2P2_DBG_FPGA_P2_LED_IDLE (1 << 1)
-
 #define OMAP1510_FPGA_BASE 0xE8000000  
 #define OMAP1510_FPGA_SIZE SZ_4K
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_FPGA_START 0x08000000  
-
 #define OMAP1510_FPGA_REV_LOW (OMAP1510_FPGA_BASE + 0x0)
 #define OMAP1510_FPGA_REV_HIGH (OMAP1510_FPGA_BASE + 0x1)
-
 #define OMAP1510_FPGA_LCD_PANEL_CONTROL (OMAP1510_FPGA_BASE + 0x2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_FPGA_LED_DIGIT (OMAP1510_FPGA_BASE + 0x3)
 #define INNOVATOR_FPGA_HID_SPI (OMAP1510_FPGA_BASE + 0x4)
 #define OMAP1510_FPGA_POWER (OMAP1510_FPGA_BASE + 0x5)
-
 #define OMAP1510_FPGA_ISR_LO (OMAP1510_FPGA_BASE + 0x6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_FPGA_ISR_HI (OMAP1510_FPGA_BASE + 0x7)
-
 #define OMAP1510_FPGA_IMR_LO (OMAP1510_FPGA_BASE + 0x8)
 #define OMAP1510_FPGA_IMR_HI (OMAP1510_FPGA_BASE + 0x9)
-
 #define OMAP1510_FPGA_HOST_RESET (OMAP1510_FPGA_BASE + 0xa)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_FPGA_RST (OMAP1510_FPGA_BASE + 0xb)
-
 #define OMAP1510_FPGA_AUDIO (OMAP1510_FPGA_BASE + 0xc)
 #define OMAP1510_FPGA_DIP (OMAP1510_FPGA_BASE + 0xe)
 #define OMAP1510_FPGA_FPGA_IO (OMAP1510_FPGA_BASE + 0xf)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_FPGA_UART1 (OMAP1510_FPGA_BASE + 0x14)
 #define OMAP1510_FPGA_UART2 (OMAP1510_FPGA_BASE + 0x15)
 #define OMAP1510_FPGA_OMAP1510_STATUS (OMAP1510_FPGA_BASE + 0x16)
 #define OMAP1510_FPGA_BOARD_REV (OMAP1510_FPGA_BASE + 0x18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510P1_PPT_DATA (OMAP1510_FPGA_BASE + 0x100)
 #define OMAP1510P1_PPT_STATUS (OMAP1510_FPGA_BASE + 0x101)
 #define OMAP1510P1_PPT_CONTROL (OMAP1510_FPGA_BASE + 0x102)
-
 #define OMAP1510_FPGA_TOUCHSCREEN (OMAP1510_FPGA_BASE + 0x204)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INNOVATOR_FPGA_INFO (OMAP1510_FPGA_BASE + 0x205)
 #define INNOVATOR_FPGA_LCD_BRIGHT_LO (OMAP1510_FPGA_BASE + 0x206)
 #define INNOVATOR_FPGA_LCD_BRIGHT_HI (OMAP1510_FPGA_BASE + 0x207)
 #define INNOVATOR_FPGA_LED_GRN_LO (OMAP1510_FPGA_BASE + 0x208)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INNOVATOR_FPGA_LED_GRN_HI (OMAP1510_FPGA_BASE + 0x209)
 #define INNOVATOR_FPGA_LED_RED_LO (OMAP1510_FPGA_BASE + 0x20a)
 #define INNOVATOR_FPGA_LED_RED_HI (OMAP1510_FPGA_BASE + 0x20b)
 #define INNOVATOR_FPGA_CAM_USB_CONTROL (OMAP1510_FPGA_BASE + 0x20c)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INNOVATOR_FPGA_EXP_CONTROL (OMAP1510_FPGA_BASE + 0x20d)
 #define INNOVATOR_FPGA_ISR2 (OMAP1510_FPGA_BASE + 0x20e)
 #define INNOVATOR_FPGA_IMR2 (OMAP1510_FPGA_BASE + 0x210)
-
 #define OMAP1510_FPGA_ETHR_START (OMAP1510_FPGA_START + 0x300)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_FPGA_RESET_VALUE 0x42
-
 #define OMAP1510_FPGA_PCR_IF_PD0 (1 << 7)
 #define OMAP1510_FPGA_PCR_COM2_EN (1 << 6)
 #define OMAP1510_FPGA_PCR_COM1_EN (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_FPGA_PCR_EXP_PD0 (1 << 4)
 #define OMAP1510_FPGA_PCR_EXP_PD1 (1 << 3)
 #define OMAP1510_FPGA_PCR_48MHZ_CLK (1 << 2)
 #define OMAP1510_FPGA_PCR_4MHZ_CLK (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_FPGA_PCR_RSRVD_BIT0 (1 << 0)
-
 #define OMAP1510_FPGA_HID_SCLK (1<<0)  
 #define OMAP1510_FPGA_HID_MOSI (1<<1)  
 #define OMAP1510_FPGA_HID_nSS (1<<2)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_FPGA_HID_nHSUS (1<<3)  
 #define OMAP1510_FPGA_HID_MISO (1<<4)  
 #define OMAP1510_FPGA_HID_ATN (1<<5)  
 #define OMAP1510_FPGA_HID_rsrvd (1<<6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_FPGA_HID_RESETn (1<<7)  
-
 #define OMAP1510_INT_FPGA (IH_GPIO_BASE + 13)
-
 #define OMAP1510_IH_FPGA_BASE IH_BOARD_BASE
 #define OMAP1510_INT_FPGA_ATN (OMAP1510_IH_FPGA_BASE + 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_INT_FPGA_ACK (OMAP1510_IH_FPGA_BASE + 1)
 #define OMAP1510_INT_FPGA2 (OMAP1510_IH_FPGA_BASE + 2)
 #define OMAP1510_INT_FPGA3 (OMAP1510_IH_FPGA_BASE + 3)
 #define OMAP1510_INT_FPGA4 (OMAP1510_IH_FPGA_BASE + 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_INT_FPGA5 (OMAP1510_IH_FPGA_BASE + 5)
 #define OMAP1510_INT_FPGA6 (OMAP1510_IH_FPGA_BASE + 6)
 #define OMAP1510_INT_FPGA7 (OMAP1510_IH_FPGA_BASE + 7)
 #define OMAP1510_INT_FPGA8 (OMAP1510_IH_FPGA_BASE + 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_INT_FPGA9 (OMAP1510_IH_FPGA_BASE + 9)
 #define OMAP1510_INT_FPGA10 (OMAP1510_IH_FPGA_BASE + 10)
 #define OMAP1510_INT_FPGA11 (OMAP1510_IH_FPGA_BASE + 11)
 #define OMAP1510_INT_FPGA12 (OMAP1510_IH_FPGA_BASE + 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_INT_ETHER (OMAP1510_IH_FPGA_BASE + 13)
 #define OMAP1510_INT_FPGAUART1 (OMAP1510_IH_FPGA_BASE + 14)
 #define OMAP1510_INT_FPGAUART2 (OMAP1510_IH_FPGA_BASE + 15)
 #define OMAP1510_INT_FPGA_TS (OMAP1510_IH_FPGA_BASE + 16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_INT_FPGA17 (OMAP1510_IH_FPGA_BASE + 17)
 #define OMAP1510_INT_FPGA_CAM (OMAP1510_IH_FPGA_BASE + 18)
 #define OMAP1510_INT_FPGA_RTC_A (OMAP1510_IH_FPGA_BASE + 19)
 #define OMAP1510_INT_FPGA_RTC_B (OMAP1510_IH_FPGA_BASE + 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1510_INT_FPGA_CD (OMAP1510_IH_FPGA_BASE + 21)
 #define OMAP1510_INT_FPGA22 (OMAP1510_IH_FPGA_BASE + 22)
 #define OMAP1510_INT_FPGA23 (OMAP1510_IH_FPGA_BASE + 23)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/arch/gpio-switch.h b/libc/kernel/arch-arm/asm/arch/gpio-switch.h
index 20ea3f2..d18ae52 100644
--- a/libc/kernel/arch-arm/asm/arch/gpio-switch.h
+++ b/libc/kernel/arch-arm/asm/arch/gpio-switch.h
@@ -7,31 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_OMAP_GPIO_SWITCH_H
 #define __ASM_ARCH_OMAP_GPIO_SWITCH_H
-
 #include <linux/types.h>
-
 #define OMAP_GPIO_SWITCH_TYPE_COVER 0x0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_GPIO_SWITCH_TYPE_CONNECTION 0x0001
 #define OMAP_GPIO_SWITCH_TYPE_ACTIVITY 0x0002
 #define OMAP_GPIO_SWITCH_FLAG_INVERTED 0x0001
 #define OMAP_GPIO_SWITCH_FLAG_OUTPUT 0x0002
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omap_gpio_switch {
  const char *name;
  s16 gpio;
  unsigned flags:4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned type:4;
-
  u16 debounce_rising;
-
  u16 debounce_falling;
-
  void (* notify)(void *data, int state);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *notify_data;
 };
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/arch/gpio.h b/libc/kernel/arch-arm/asm/arch/gpio.h
index 332246d..c995a71 100644
--- a/libc/kernel/arch-arm/asm/arch/gpio.h
+++ b/libc/kernel/arch-arm/asm/arch/gpio.h
@@ -7,43 +7,49 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_OMAP_GPIO_H
 #define __ASM_ARCH_OMAP_GPIO_H
-
 #include <asm/hardware.h>
 #include <asm/arch/irqs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/io.h>
-
 #define OMAP_MPUIO_BASE (void __iomem *)0xfffb5000
-
 #define OMAP_MPUIO_INPUT_LATCH 0x00
 #define OMAP_MPUIO_OUTPUT 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_MPUIO_IO_CNTL 0x08
 #define OMAP_MPUIO_KBR_LATCH 0x10
 #define OMAP_MPUIO_KBC 0x14
 #define OMAP_MPUIO_GPIO_EVENT_MODE 0x18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_MPUIO_GPIO_INT_EDGE 0x1c
 #define OMAP_MPUIO_KBD_INT 0x20
 #define OMAP_MPUIO_GPIO_INT 0x24
 #define OMAP_MPUIO_KBD_MASKIT 0x28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_MPUIO_GPIO_MASKIT 0x2c
 #define OMAP_MPUIO_GPIO_DEBOUNCING 0x30
 #define OMAP_MPUIO_LATCH 0x34
-
 #define OMAP_MPUIO(nr) (OMAP_MAX_GPIO_LINES + (nr))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_GPIO_IS_MPUIO(nr) ((nr) >= OMAP_MAX_GPIO_LINES)
-
 #define OMAP_GPIO_IRQ(nr) (OMAP_GPIO_IS_MPUIO(nr) ?   IH_MPUIO_BASE + ((nr) & 0x0f) :   IH_GPIO_BASE + (nr))
-
 struct omap_machine_gpio_bank {
  int start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int end;
-
  void (*set_gpio_direction)(int gpio, int is_input);
  void (*set_gpio_dataout)(int gpio, int enable);
  int (*get_gpio_datain)(int gpio);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/arch/hardware.h b/libc/kernel/arch-arm/asm/arch/hardware.h
index e515ee8..d13fb6a 100644
--- a/libc/kernel/arch-arm/asm/arch/hardware.h
+++ b/libc/kernel/arch-arm/asm/arch/hardware.h
@@ -7,151 +7,169 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_OMAP_HARDWARE_H
 #define __ASM_ARCH_OMAP_HARDWARE_H
-
 #include <asm/sizes.h>
 #ifndef __ASSEMBLER__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/types.h>
 #include <asm/arch/cpu.h>
 #endif
 #include <asm/arch/io.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/arch/serial.h>
-
 #define OMAP_MPU_TIMER1_BASE (0xfffec500)
 #define OMAP_MPU_TIMER2_BASE (0xfffec600)
 #define OMAP_MPU_TIMER3_BASE (0xfffec700)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPU_TIMER_FREE (1 << 6)
 #define MPU_TIMER_CLOCK_ENABLE (1 << 5)
 #define MPU_TIMER_AR (1 << 1)
 #define MPU_TIMER_ST (1 << 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLKGEN_REG_BASE (0xfffece00)
 #define ARM_CKCTL (CLKGEN_REG_BASE + 0x0)
 #define ARM_IDLECT1 (CLKGEN_REG_BASE + 0x4)
 #define ARM_IDLECT2 (CLKGEN_REG_BASE + 0x8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARM_EWUPCT (CLKGEN_REG_BASE + 0xC)
 #define ARM_RSTCT1 (CLKGEN_REG_BASE + 0x10)
 #define ARM_RSTCT2 (CLKGEN_REG_BASE + 0x14)
 #define ARM_SYSST (CLKGEN_REG_BASE + 0x18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARM_IDLECT3 (CLKGEN_REG_BASE + 0x24)
-
 #define CK_RATEF 1
 #define CK_IDLEF 2
 #define CK_ENABLEF 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CK_SELECTF 8
 #define SETARM_IDLE_SHIFT
-
 #define DPLL_CTL (0xfffecf00)
-
 #define DSP_CONFIG_REG_BASE (0xe1008000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_CKCTL (DSP_CONFIG_REG_BASE + 0x0)
 #define DSP_IDLECT1 (DSP_CONFIG_REG_BASE + 0x4)
 #define DSP_IDLECT2 (DSP_CONFIG_REG_BASE + 0x8)
 #define DSP_RSTCT2 (DSP_CONFIG_REG_BASE + 0x14)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ULPD_REG_BASE (0xfffe0800)
 #define ULPD_IT_STATUS (ULPD_REG_BASE + 0x14)
 #define ULPD_SETUP_ANALOG_CELL_3 (ULPD_REG_BASE + 0x24)
 #define ULPD_CLOCK_CTRL (ULPD_REG_BASE + 0x30)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DIS_USB_PVCI_CLK (1 << 5)  
 #define USB_MCLK_EN (1 << 4)  
 #define ULPD_SOFT_REQ (ULPD_REG_BASE + 0x34)
 #define SOFT_UDC_REQ (1 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOFT_USB_CLK_REQ (1 << 3)
 #define SOFT_DPLL_REQ (1 << 0)
 #define ULPD_DPLL_CTRL (ULPD_REG_BASE + 0x3c)
 #define ULPD_STATUS_REQ (ULPD_REG_BASE + 0x40)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ULPD_APLL_CTRL (ULPD_REG_BASE + 0x4c)
 #define ULPD_POWER_CTRL (ULPD_REG_BASE + 0x50)
 #define ULPD_SOFT_DISABLE_REQ_REG (ULPD_REG_BASE + 0x68)
 #define DIS_MMC2_DPLL_REQ (1 << 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DIS_MMC1_DPLL_REQ (1 << 10)
 #define DIS_UART3_DPLL_REQ (1 << 9)
 #define DIS_UART2_DPLL_REQ (1 << 8)
 #define DIS_UART1_DPLL_REQ (1 << 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DIS_USB_HOST_DPLL_REQ (1 << 6)
 #define ULPD_SDW_CLK_DIV_CTRL_SEL (ULPD_REG_BASE + 0x74)
 #define ULPD_CAM_CLK_CTRL (ULPD_REG_BASE + 0x7c)
-
 #define OMAP_MPU_WATCHDOG_BASE (0xfffec800)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_WDT_TIMER (OMAP_MPU_WATCHDOG_BASE + 0x0)
 #define OMAP_WDT_LOAD_TIM (OMAP_MPU_WATCHDOG_BASE + 0x4)
 #define OMAP_WDT_READ_TIM (OMAP_MPU_WATCHDOG_BASE + 0x4)
 #define OMAP_WDT_TIMER_MODE (OMAP_MPU_WATCHDOG_BASE + 0x8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MOD_CONF_CTRL_0 0xfffe1080
 #define MOD_CONF_CTRL_1 0xfffe1110
-
 #define FUNC_MUX_CTRL_0 0xfffe1000
 #define FUNC_MUX_CTRL_1 0xfffe1004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUNC_MUX_CTRL_2 0xfffe1008
 #define COMP_MODE_CTRL_0 0xfffe100c
 #define FUNC_MUX_CTRL_3 0xfffe1010
 #define FUNC_MUX_CTRL_4 0xfffe1014
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUNC_MUX_CTRL_5 0xfffe1018
 #define FUNC_MUX_CTRL_6 0xfffe101C
 #define FUNC_MUX_CTRL_7 0xfffe1020
 #define FUNC_MUX_CTRL_8 0xfffe1024
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUNC_MUX_CTRL_9 0xfffe1028
 #define FUNC_MUX_CTRL_A 0xfffe102C
 #define FUNC_MUX_CTRL_B 0xfffe1030
 #define FUNC_MUX_CTRL_C 0xfffe1034
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUNC_MUX_CTRL_D 0xfffe1038
 #define PULL_DWN_CTRL_0 0xfffe1040
 #define PULL_DWN_CTRL_1 0xfffe1044
 #define PULL_DWN_CTRL_2 0xfffe1048
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PULL_DWN_CTRL_3 0xfffe104c
 #define PULL_DWN_CTRL_4 0xfffe10ac
-
 #define FUNC_MUX_CTRL_E 0xfffe1090
 #define FUNC_MUX_CTRL_F 0xfffe1094
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUNC_MUX_CTRL_10 0xfffe1098
 #define FUNC_MUX_CTRL_11 0xfffe109c
 #define FUNC_MUX_CTRL_12 0xfffe10a0
 #define PU_PD_SEL_0 0xfffe10b4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PU_PD_SEL_1 0xfffe10b8
 #define PU_PD_SEL_2 0xfffe10bc
 #define PU_PD_SEL_3 0xfffe10c0
 #define PU_PD_SEL_4 0xfffe10c4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_TIMER32K_BASE 0xFFFBC400
-
 #define TIPB_PUBLIC_CNTL_BASE 0xfffed300
 #define MPU_PUBLIC_TIPB_CNTL (TIPB_PUBLIC_CNTL_BASE + 0x8)
 #define TIPB_PRIVATE_CNTL_BASE 0xfffeca00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPU_PRIVATE_TIPB_CNTL (TIPB_PRIVATE_CNTL_BASE + 0x8)
-
 #define MPUI_BASE (0xfffec900)
 #define MPUI_CTRL (MPUI_BASE + 0x0)
 #define MPUI_DEBUG_ADDR (MPUI_BASE + 0x4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPUI_DEBUG_DATA (MPUI_BASE + 0x8)
 #define MPUI_DEBUG_FLAG (MPUI_BASE + 0xc)
 #define MPUI_STATUS_REG (MPUI_BASE + 0x10)
 #define MPUI_DSP_STATUS (MPUI_BASE + 0x14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPUI_DSP_BOOT_CONFIG (MPUI_BASE + 0x18)
 #define MPUI_DSP_API_CONFIG (MPUI_BASE + 0x1c)
-
 #define OMAP_LPG1_BASE 0xfffbd000
 #define OMAP_LPG2_BASE 0xfffbd800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_LPG1_LCR (OMAP_LPG1_BASE + 0x00)
 #define OMAP_LPG1_PMR (OMAP_LPG1_BASE + 0x04)
 #define OMAP_LPG2_LCR (OMAP_LPG2_BASE + 0x00)
 #define OMAP_LPG2_PMR (OMAP_LPG2_BASE + 0x04)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_PWL_BASE 0xfffb5800
 #define OMAP_PWL_ENABLE (OMAP_PWL_BASE + 0x00)
 #define OMAP_PWL_CLK_ENABLE (OMAP_PWL_BASE + 0x04)
-
 #include "omap730.h"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include "omap1510.h"
 #include "omap24xx.h"
 #include "omap16xx.h"
-
 #ifndef __ASSEMBLER__
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/arch/io.h b/libc/kernel/arch-arm/asm/arch/io.h
index 12ac3d4..475345a 100644
--- a/libc/kernel/arch-arm/asm/arch/io.h
+++ b/libc/kernel/arch-arm/asm/arch/io.h
@@ -7,48 +7,48 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_ARCH_IO_H
 #define __ASM_ARM_ARCH_IO_H
-
 #include <asm/hardware.h>
-
 #define IO_SPACE_LIMIT 0xffffffff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __io(a) ((void __iomem *)(PCIO_BASE + (a)))
 #define __mem_pci(a) (a)
-
 #define PCIO_BASE 0
-
 #ifndef __ASSEMBLER__
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define omap_readb(a) (*(volatile unsigned char *)IO_ADDRESS(a))
 #define omap_readw(a) (*(volatile unsigned short *)IO_ADDRESS(a))
 #define omap_readl(a) (*(volatile unsigned int *)IO_ADDRESS(a))
-
 #define omap_writeb(v,a) (*(volatile unsigned char *)IO_ADDRESS(a) = (v))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define omap_writew(v,a) (*(volatile unsigned short *)IO_ADDRESS(a) = (v))
 #define omap_writel(v,a) (*(volatile unsigned int *)IO_ADDRESS(a) = (v))
-
 typedef struct { volatile u16 offset[256]; } __regbase16;
 #define __REGV16(vaddr) ((__regbase16 *)((vaddr)&~0xff))   ->offset[((vaddr)&0xff)>>1]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __REG16(paddr) __REGV16(io_p2v(paddr))
-
 typedef struct { volatile u8 offset[4096]; } __regbase8;
 #define __REGV8(vaddr) ((__regbase8 *)((vaddr)&~4095))   ->offset[((vaddr)&4095)>>0]
 #define __REG8(paddr) __REGV8(io_p2v(paddr))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct { volatile u32 offset[4096]; } __regbase32;
 #define __REGV32(vaddr) ((__regbase32 *)((vaddr)&~4095))   ->offset[((vaddr)&4095)>>2]
 #define __REG32(paddr) __REGV32(io_p2v(paddr))
-
 #else
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __REG8(paddr) io_p2v(paddr)
 #define __REG16(paddr) io_p2v(paddr)
 #define __REG32(paddr) io_p2v(paddr)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/arch/irqs.h b/libc/kernel/arch-arm/asm/arch/irqs.h
index 3e94487..71306a5 100644
--- a/libc/kernel/arch-arm/asm/arch/irqs.h
+++ b/libc/kernel/arch-arm/asm/arch/irqs.h
@@ -7,236 +7,279 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_OMAP15XX_IRQS_H
 #define __ASM_ARCH_OMAP15XX_IRQS_H
-
 #define INT_CAMERA 1
 #define INT_FIQ 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_RTDX 6
 #define INT_DSP_MMU_ABORT 7
 #define INT_HOST 8
 #define INT_ABORT 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_DSP_MAILBOX1 10
 #define INT_DSP_MAILBOX2 11
 #define INT_BRIDGE_PRIV 13
 #define INT_GPIO_BANK1 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_UART3 15
 #define INT_TIMER3 16
 #define INT_DMA_CH0_6 19
 #define INT_DMA_CH1_7 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_DMA_CH2_8 21
 #define INT_DMA_CH3 22
 #define INT_DMA_CH4 23
 #define INT_DMA_CH5 24
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_DMA_LCD 25
 #define INT_TIMER1 26
 #define INT_WD_TIMER 27
 #define INT_BRIDGE_PUB 28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_TIMER2 30
 #define INT_LCD_CTRL 31
-
 #define INT_1510_IH2_IRQ 0
 #define INT_1510_RES2 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1510_SPI_TX 4
 #define INT_1510_SPI_RX 5
 #define INT_1510_RES12 12
 #define INT_1510_LB_MMU 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1510_RES18 18
 #define INT_1510_LOCAL_BUS 29
-
 #define INT_1610_IH2_IRQ 0
 #define INT_1610_IH2_FIQ 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1610_McBSP2_TX 4
 #define INT_1610_McBSP2_RX 5
 #define INT_1610_LCD_LINE 12
 #define INT_1610_GPTIMER1 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1610_GPTIMER2 18
 #define INT_1610_SSR_FIFO_0 29
-
 #define INT_730_IH2_FIQ 0
 #define INT_730_IH2_IRQ 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_USB_NON_ISO 2
 #define INT_730_USB_ISO 3
 #define INT_730_ICR 4
 #define INT_730_EAC 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_GPIO_BANK1 6
 #define INT_730_GPIO_BANK2 7
 #define INT_730_GPIO_BANK3 8
 #define INT_730_McBSP2TX 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_McBSP2RX 11
 #define INT_730_McBSP2RX_OVF 12
 #define INT_730_LCD_LINE 14
 #define INT_730_GSM_PROTECT 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_TIMER3 16
 #define INT_730_GPIO_BANK5 17
 #define INT_730_GPIO_BANK6 18
 #define INT_730_SPGIO_WR 29
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IH2_BASE 32
-
 #define INT_KEYBOARD (1 + IH2_BASE)
 #define INT_uWireTX (2 + IH2_BASE)
 #define INT_uWireRX (3 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_I2C (4 + IH2_BASE)
 #define INT_MPUIO (5 + IH2_BASE)
 #define INT_USB_HHC_1 (6 + IH2_BASE)
 #define INT_McBSP3TX (10 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_McBSP3RX (11 + IH2_BASE)
 #define INT_McBSP1TX (12 + IH2_BASE)
 #define INT_McBSP1RX (13 + IH2_BASE)
 #define INT_UART2 (14 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_UART1 (15 + IH2_BASE)
 #define INT_BT_MCSI1TX (16 + IH2_BASE)
 #define INT_BT_MCSI1RX (17 + IH2_BASE)
 #define INT_USB_W2FC (20 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1WIRE (21 + IH2_BASE)
 #define INT_OS_TIMER (22 + IH2_BASE)
 #define INT_MMC (23 + IH2_BASE)
 #define INT_GAUGE_32K (24 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_RTC_TIMER (25 + IH2_BASE)
 #define INT_RTC_ALARM (26 + IH2_BASE)
 #define INT_MEM_STICK (27 + IH2_BASE)
 #define INT_DSP_MMU (28 + IH2_BASE)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1510_COM_SPI_RO (31 + IH2_BASE)
-
 #define INT_1610_FAC (0 + IH2_BASE)
 #define INT_1610_USB_HHC_2 (7 + IH2_BASE)
 #define INT_1610_USB_OTG (8 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1610_SoSSI (9 + IH2_BASE)
 #define INT_1610_SoSSI_MATCH (19 + IH2_BASE)
 #define INT_1610_McBSP2RX_OF (31 + IH2_BASE)
 #define INT_1610_STI (32 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1610_STI_WAKEUP (33 + IH2_BASE)
 #define INT_1610_GPTIMER3 (34 + IH2_BASE)
 #define INT_1610_GPTIMER4 (35 + IH2_BASE)
 #define INT_1610_GPTIMER5 (36 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1610_GPTIMER6 (37 + IH2_BASE)
 #define INT_1610_GPTIMER7 (38 + IH2_BASE)
 #define INT_1610_GPTIMER8 (39 + IH2_BASE)
 #define INT_1610_GPIO_BANK2 (40 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1610_GPIO_BANK3 (41 + IH2_BASE)
 #define INT_1610_MMC2 (42 + IH2_BASE)
 #define INT_1610_CF (43 + IH2_BASE)
 #define INT_1610_WAKE_UP_REQ (46 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1610_GPIO_BANK4 (48 + IH2_BASE)
 #define INT_1610_SPI (49 + IH2_BASE)
 #define INT_1610_DMA_CH6 (53 + IH2_BASE)
 #define INT_1610_DMA_CH7 (54 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1610_DMA_CH8 (55 + IH2_BASE)
 #define INT_1610_DMA_CH9 (56 + IH2_BASE)
 #define INT_1610_DMA_CH10 (57 + IH2_BASE)
 #define INT_1610_DMA_CH11 (58 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1610_DMA_CH12 (59 + IH2_BASE)
 #define INT_1610_DMA_CH13 (60 + IH2_BASE)
 #define INT_1610_DMA_CH14 (61 + IH2_BASE)
 #define INT_1610_DMA_CH15 (62 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_1610_NAND (63 + IH2_BASE)
-
 #define INT_730_HW_ERRORS (0 + IH2_BASE)
 #define INT_730_NFIQ_PWR_FAIL (1 + IH2_BASE)
 #define INT_730_CFCD (2 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_CFIREQ (3 + IH2_BASE)
 #define INT_730_I2C (4 + IH2_BASE)
 #define INT_730_PCC (5 + IH2_BASE)
 #define INT_730_MPU_EXT_NIRQ (6 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_SPI_100K_1 (7 + IH2_BASE)
 #define INT_730_SYREN_SPI (8 + IH2_BASE)
 #define INT_730_VLYNQ (9 + IH2_BASE)
 #define INT_730_GPIO_BANK4 (10 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_McBSP1TX (11 + IH2_BASE)
 #define INT_730_McBSP1RX (12 + IH2_BASE)
 #define INT_730_McBSP1RX_OF (13 + IH2_BASE)
 #define INT_730_UART_MODEM_IRDA_2 (14 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_UART_MODEM_1 (15 + IH2_BASE)
 #define INT_730_MCSI (16 + IH2_BASE)
 #define INT_730_uWireTX (17 + IH2_BASE)
 #define INT_730_uWireRX (18 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_SMC_CD (19 + IH2_BASE)
 #define INT_730_SMC_IREQ (20 + IH2_BASE)
 #define INT_730_HDQ_1WIRE (21 + IH2_BASE)
 #define INT_730_TIMER32K (22 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_MMC_SDIO (23 + IH2_BASE)
 #define INT_730_UPLD (24 + IH2_BASE)
 #define INT_730_USB_HHC_1 (27 + IH2_BASE)
 #define INT_730_USB_HHC_2 (28 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_USB_GENI (29 + IH2_BASE)
 #define INT_730_USB_OTG (30 + IH2_BASE)
 #define INT_730_CAMERA_IF (31 + IH2_BASE)
 #define INT_730_RNG (32 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_DUAL_MODE_TIMER (33 + IH2_BASE)
 #define INT_730_DBB_RF_EN (34 + IH2_BASE)
 #define INT_730_MPUIO_KEYPAD (35 + IH2_BASE)
 #define INT_730_SHA1_MD5 (36 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_SPI_100K_2 (37 + IH2_BASE)
 #define INT_730_RNG_IDLE (38 + IH2_BASE)
 #define INT_730_MPUIO (39 + IH2_BASE)
 #define INT_730_LLPC_LCD_CTRL_CAN_BE_OFF (40 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_LLPC_OE_FALLING (41 + IH2_BASE)
 #define INT_730_LLPC_OE_RISING (42 + IH2_BASE)
 #define INT_730_LLPC_VSYNC (43 + IH2_BASE)
 #define INT_730_WAKE_UP_REQ (46 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_DMA_CH6 (53 + IH2_BASE)
 #define INT_730_DMA_CH7 (54 + IH2_BASE)
 #define INT_730_DMA_CH8 (55 + IH2_BASE)
 #define INT_730_DMA_CH9 (56 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_DMA_CH10 (57 + IH2_BASE)
 #define INT_730_DMA_CH11 (58 + IH2_BASE)
 #define INT_730_DMA_CH12 (59 + IH2_BASE)
 #define INT_730_DMA_CH13 (60 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_730_DMA_CH14 (61 + IH2_BASE)
 #define INT_730_DMA_CH15 (62 + IH2_BASE)
 #define INT_730_NAND (63 + IH2_BASE)
-
 #define INT_24XX_SYS_NIRQ 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_24XX_SDMA_IRQ0 12
 #define INT_24XX_SDMA_IRQ1 13
 #define INT_24XX_SDMA_IRQ2 14
 #define INT_24XX_SDMA_IRQ3 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_24XX_CAM_IRQ 24
 #define INT_24XX_DSS_IRQ 25
 #define INT_24XX_GPIO_BANK1 29
 #define INT_24XX_GPIO_BANK2 30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_24XX_GPIO_BANK3 31
 #define INT_24XX_GPIO_BANK4 32
 #define INT_24XX_GPTIMER1 37
 #define INT_24XX_GPTIMER2 38
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_24XX_GPTIMER3 39
 #define INT_24XX_GPTIMER4 40
 #define INT_24XX_GPTIMER5 41
 #define INT_24XX_GPTIMER6 42
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_24XX_GPTIMER7 43
 #define INT_24XX_GPTIMER8 44
 #define INT_24XX_GPTIMER9 45
 #define INT_24XX_GPTIMER10 46
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_24XX_GPTIMER11 47
 #define INT_24XX_GPTIMER12 48
 #define INT_24XX_MCBSP1_IRQ_TX 59
 #define INT_24XX_MCBSP1_IRQ_RX 60
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_24XX_MCBSP2_IRQ_TX 62
 #define INT_24XX_MCBSP2_IRQ_RX 63
 #define INT_24XX_UART1_IRQ 72
 #define INT_24XX_UART2_IRQ 73
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INT_24XX_UART3_IRQ 74
 #define INT_24XX_MMC_IRQ 83
-
 #define OMAP_MAX_GPIO_LINES 192
 #define IH_GPIO_BASE (128 + IH2_BASE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IH_MPUIO_BASE (OMAP_MAX_GPIO_LINES + IH_GPIO_BASE)
 #define IH_BOARD_BASE (16 + IH_MPUIO_BASE)
-
 #define OMAP_IRQ_BIT(irq) (1 << ((irq) % 32))
-
 #ifndef __ASSEMBLY__
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #include <asm/hardware.h>
-
 #ifndef NR_IRQS
 #define NR_IRQS IH_BOARD_BASE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/arch/mcbsp.h b/libc/kernel/arch-arm/asm/arch/mcbsp.h
index cae5e3b..2090ef2 100644
--- a/libc/kernel/arch-arm/asm/arch/mcbsp.h
+++ b/libc/kernel/arch-arm/asm/arch/mcbsp.h
@@ -7,179 +7,195 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_OMAP_MCBSP_H
 #define __ASM_ARCH_OMAP_MCBSP_H
-
 #include <asm/hardware.h>
-
 #define OMAP730_MCBSP1_BASE 0xfffb1000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP730_MCBSP2_BASE 0xfffb1800
-
 #define OMAP1510_MCBSP1_BASE 0xe1011800
 #define OMAP1510_MCBSP2_BASE 0xfffb1000
 #define OMAP1510_MCBSP3_BASE 0xe1017000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP1610_MCBSP1_BASE 0xe1011800
 #define OMAP1610_MCBSP2_BASE 0xfffb1000
 #define OMAP1610_MCBSP3_BASE 0xe1017000
-
 #define OMAP24XX_MCBSP1_BASE 0x48074000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_MCBSP2_BASE 0x48076000
-
 #define OMAP_MCBSP_READ(base, reg) __raw_readw((base) + OMAP_MCBSP_REG_##reg)
 #define OMAP_MCBSP_WRITE(base, reg, val) __raw_writew((val), (base) + OMAP_MCBSP_REG_##reg)
-
 #define RRST 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RRDY 0x0002
 #define RFULL 0x0004
 #define RSYNC_ERR 0x0008
 #define RINTM(value) ((value)<<4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABIS 0x0040
 #define DXENA 0x0080
 #define CLKSTP(value) ((value)<<11)  
 #define RJUST(value) ((value)<<13)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DLB 0x8000
-
 #define XRST 0x0001
 #define XRDY 0x0002
 #define XEMPTY 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XSYNC_ERR 0x0008
 #define XINTM(value) ((value)<<4)  
 #define GRST 0x0040
 #define FRST 0x0080
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOFT 0x0100
 #define FREE 0x0200
-
 #define CLKRP 0x0001
 #define CLKXP 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FSRP 0x0004
 #define FSXP 0x0008
 #define DR_STAT 0x0010
 #define DX_STAT 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLKS_STAT 0x0040
 #define SCLKME 0x0080
 #define CLKRM 0x0100
 #define CLKXM 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FSRM 0x0400
 #define FSXM 0x0800
 #define RIOEN 0x1000
 #define XIOEN 0x2000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDLE_EN 0x4000
-
 #define RWDLEN1(value) ((value)<<5)  
 #define RFRLEN1(value) ((value)<<8)  
-
 #define XWDLEN1(value) ((value)<<5)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XFRLEN1(value) ((value)<<8)  
-
 #define RDATDLY(value) (value)  
 #define RFIG 0x0004
 #define RCOMPAND(value) ((value)<<3)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RWDLEN2(value) ((value)<<5)  
 #define RFRLEN2(value) ((value)<<8)  
 #define RPHASE 0x8000
-
 #define XDATDLY(value) (value)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XFIG 0x0004
 #define XCOMPAND(value) ((value)<<3)  
 #define XWDLEN2(value) ((value)<<5)  
 #define XFRLEN2(value) ((value)<<8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XPHASE 0x8000
-
 #define CLKGDV(value) (value)  
 #define FWID(value) ((value)<<8)  
-
 #define FPER(value) (value)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FSGM 0x1000
 #define CLKSM 0x2000
 #define CLKSP 0x4000
 #define GSYNC 0x8000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RMCM 0x0001
 #define RCBLK(value) ((value)<<2)  
 #define RPABLK(value) ((value)<<5)  
 #define RPBBLK(value) ((value)<<7)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XMCM(value) (value)  
 #define XCBLK(value) ((value)<<2)  
 #define XPABLK(value) ((value)<<5)  
 #define XPBBLK(value) ((value)<<7)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct omap_mcbsp_reg_cfg {
  u16 spcr2;
  u16 spcr1;
  u16 rcr2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u16 rcr1;
  u16 xcr2;
  u16 xcr1;
  u16 srgr2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u16 srgr1;
  u16 mcr2;
  u16 mcr1;
  u16 pcr0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u16 rcerc;
  u16 rcerd;
  u16 xcerc;
  u16 xcerd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u16 rcere;
  u16 rcerf;
  u16 xcere;
  u16 xcerf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u16 rcerg;
  u16 rcerh;
  u16 xcerg;
  u16 xcerh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 typedef enum {
  OMAP_MCBSP1 = 0,
  OMAP_MCBSP2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  OMAP_MCBSP3,
 } omap_mcbsp_id;
-
 typedef int __bitwise omap_mcbsp_io_type_t;
 #define OMAP_MCBSP_IRQ_IO ((__force omap_mcbsp_io_type_t) 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_MCBSP_POLL_IO ((__force omap_mcbsp_io_type_t) 2)
-
 typedef enum {
  OMAP_MCBSP_WORD_8 = 0,
  OMAP_MCBSP_WORD_12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  OMAP_MCBSP_WORD_16,
  OMAP_MCBSP_WORD_20,
  OMAP_MCBSP_WORD_24,
  OMAP_MCBSP_WORD_32,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } omap_mcbsp_word_length;
-
 typedef enum {
  OMAP_MCBSP_CLK_RISING = 0,
  OMAP_MCBSP_CLK_FALLING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } omap_mcbsp_clk_polarity;
-
 typedef enum {
  OMAP_MCBSP_FS_ACTIVE_HIGH = 0,
  OMAP_MCBSP_FS_ACTIVE_LOW,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } omap_mcbsp_fs_polarity;
-
 typedef enum {
  OMAP_MCBSP_CLK_STP_MODE_NO_DELAY = 0,
  OMAP_MCBSP_CLK_STP_MODE_DELAY,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } omap_mcbsp_clk_stp_mode;
-
 typedef enum {
  OMAP_MCBSP_SPI_MASTER = 0,
  OMAP_MCBSP_SPI_SLAVE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } omap_mcbsp_spi_mode;
-
 struct omap_mcbsp_spi_cfg {
  omap_mcbsp_spi_mode spi_mode;
  omap_mcbsp_clk_polarity rx_clock_polarity;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  omap_mcbsp_clk_polarity tx_clock_polarity;
  omap_mcbsp_fs_polarity fsx_polarity;
  u8 clk_div;
  omap_mcbsp_clk_stp_mode clk_stp_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  omap_mcbsp_word_length word_length;
 };
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/arch/memory.h b/libc/kernel/arch-arm/asm/arch/memory.h
index 8b064b8..2367e39 100644
--- a/libc/kernel/arch-arm/asm/arch/memory.h
+++ b/libc/kernel/arch-arm/asm/arch/memory.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_MEMORY_H
 #define __ASM_ARCH_MEMORY_H
-
 #define __virt_to_bus(x) __virt_to_phys(x)
 #define __bus_to_virt(x) __phys_to_virt(x)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/arch-arm/asm/arch/mtd-xip.h b/libc/kernel/arch-arm/asm/arch/mtd-xip.h
index 9b60aef..2d05691 100644
--- a/libc/kernel/arch-arm/asm/arch/mtd-xip.h
+++ b/libc/kernel/arch-arm/asm/arch/mtd-xip.h
@@ -7,25 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_OMAP_MTD_XIP_H__
 #define __ARCH_OMAP_MTD_XIP_H__
-
 #include <asm/hardware.h>
 #define OMAP_MPU_TIMER_BASE (0xfffec500)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_MPU_TIMER_OFFSET 0x100
-
 typedef struct {
  u32 cntl;
  u32 load_tim;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 read_tim;
 } xip_omap_mpu_timer_regs_t;
-
 #define xip_omap_mpu_timer_base(n)  ((volatile xip_omap_mpu_timer_regs_t*)IO_ADDRESS(OMAP_MPU_TIMER_BASE +   (n)*OMAP_MPU_TIMER_OFFSET))
-
 #define xip_irqpending()   (omap_readl(OMAP_IH1_ITR) & ~omap_readl(OMAP_IH1_MIR))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define xip_currtime() (~xip_omap_mpu_timer_read(0))
 #define xip_elapsed_since(x) (signed)((~xip_omap_mpu_timer_read(0) - (x)) / 6)
 #define xip_cpu_idle() asm volatile ("mcr p15, 0, %0, c7, c0, 4" :: "r" (1))
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/arch/mux.h b/libc/kernel/arch-arm/asm/arch/mux.h
index 72da54e..502b2c7 100644
--- a/libc/kernel/arch-arm/asm/arch/mux.h
+++ b/libc/kernel/arch-arm/asm/arch/mux.h
@@ -7,385 +7,402 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_MUX_H
 #define __ASM_ARCH_MUX_H
-
 #define PU_PD_SEL_NA 0  
 #define PULL_DWN_CTRL_NA 0  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MUX_REG(reg, mode_offset, mode) .mux_reg = FUNC_MUX_CTRL_##reg,   .mask_offset = mode_offset,   .mask = mode,
-
 #define PULL_REG(reg, bit, status) .pull_reg = PULL_DWN_CTRL_##reg,   .pull_bit = bit,   .pull_val = status,
-
 #define PU_PD_REG(reg, status) .pu_pd_reg = PU_PD_SEL_##reg,   .pu_pd_val = status,
-
 #define MUX_REG_730(reg, mode_offset, mode)   .mux_reg = OMAP730_IO_CONF_##reg,   .mask_offset = mode_offset,   .mask = mode,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PULL_REG_730(reg, bit, status) .pull_reg = OMAP730_IO_CONF_##reg,   .pull_bit = bit,   .pull_val = status,
-
 #define MUX_CFG(desc, mux_reg, mode_offset, mode,   pull_reg, pull_bit, pull_status,   pu_pd_reg, pu_pd_status, debug_status)  {   .name = desc,   .debug = debug_status,   MUX_REG(mux_reg, mode_offset, mode)   PULL_REG(pull_reg, pull_bit, !pull_status)   PU_PD_REG(pu_pd_reg, pu_pd_status)  },
-
 #define MUX_CFG_730(desc, mux_reg, mode_offset, mode,   pull_bit, pull_status, debug_status) {   .name = desc,   .debug = debug_status,   MUX_REG_730(mux_reg, mode_offset, mode)   PULL_REG_730(mux_reg, pull_bit, pull_status)   PU_PD_REG(NA, 0)  },
-
 #define MUX_CFG_24XX(desc, reg_offset, mode,   pull_en, pull_mode, dbg)  {   .name = desc,   .debug = dbg,   .mux_reg = reg_offset,   .mask = mode,   .pull_val = pull_en,   .pu_pd_val = pull_mode,  },
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PULL_DISABLED 0
 #define PULL_ENABLED 1
-
 #define PULL_DOWN 0
 #define PULL_UP 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct pin_config {
  char *name;
  unsigned char busy;
  unsigned char debug;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char *mux_reg_name;
  const unsigned int mux_reg;
  const unsigned char mask_offset;
  const unsigned char mask;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char *pull_name;
  const unsigned int pull_reg;
  const unsigned char pull_val;
  const unsigned char pull_bit;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char *pu_pd_name;
  const unsigned int pu_pd_reg;
  const unsigned char pu_pd_val;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum omap730_index {
-
  E2_730_KBR0,
  J7_730_KBR1,
  E1_730_KBR2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  F3_730_KBR3,
  D2_730_KBR4,
  AA20_730_KBR5,
  V17_730_KBR6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  C2_730_KBC0,
  D3_730_KBC1,
  E4_730_KBC2,
  F4_730_KBC3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  E3_730_KBC4,
-
  AA17_730_USB_DM,
  W16_730_USB_PU_EN,
  W17_730_USB_VBUSI,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V19_730_GPIO_15,
  M19_730_GPIO_77,
  C21_730_GPIO_121_122,
  K19_730_GPIO_126,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  K15_730_GPIO_127,
-
  P15_730_GPIO_16_17,
-
  M15_730_GPIO_83,
  N20_730_GPIO_82,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  N18_730_GPIO_81,
  N19_730_GPIO_80,
  L15_730_GPIO_76,
-
  UART1_CTS_RTS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  OMAP_730_GPIOS_42_43,
  UART1_TX_RX,
  OMAP_730_GPIOS_40_41,
  UART1_USB_RX_TX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  UART1_USB_RTS,
  UART1_USB_CTS
 };
-
 enum omap1xxx_index {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  UART1_TX = 0,
  UART1_RTS,
-
  UART2_TX,
  UART2_RX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  UART2_CTS,
  UART2_RTS,
-
  UART3_TX,
  UART3_RX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  UART3_CTS,
  UART3_RTS,
  UART3_CLKREQ,
  UART3_BCLK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Y15_1610_UART3_RTS,
-
  PWT,
  PWL,
-
  R18_USB_VBUS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  R18_1510_USB_GPIO0,
  W4_USB_PUEN,
  W4_USB_CLKO,
  W4_USB_HIGHZ,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  W4_GPIO58,
-
  USB1_SUSP,
  USB1_SEO,
  W13_1610_USB1_SE0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  USB1_TXEN,
  USB1_TXD,
  USB1_VP,
  USB1_VM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  USB1_RCV,
  USB1_SPEED,
  R13_1610_USB1_SPEED,
  R13_1710_USB1_SE0,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  USB2_SUSP,
  USB2_VP,
  USB2_TXEN,
  USB2_VM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  USB2_RCV,
  USB2_SEO,
  USB2_TXD,
-
  R18_1510_GPIO0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  R19_1510_GPIO1,
  M14_1510_GPIO2,
-
  P18_1610_GPIO3,
  Y15_1610_GPIO17,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  R18_1710_GPIO0,
  V2_1710_GPIO10,
  N21_1710_GPIO14,
  W15_1710_GPIO40,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MPUIO2,
  N15_1610_MPUIO2,
  MPUIO4,
  MPUIO5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  T20_1610_MPUIO5,
  W11_1610_MPUIO6,
  V10_1610_MPUIO7,
  W11_1610_MPUIO9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V10_1610_MPUIO10,
  W10_1610_MPUIO11,
  E20_1610_MPUIO13,
  U20_1610_MPUIO14,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  E19_1610_MPUIO15,
-
  MCBSP2_CLKR,
  MCBSP2_CLKX,
  MCBSP2_DR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MCBSP2_DX,
  MCBSP2_FSR,
  MCBSP2_FSX,
-
  MCBSP3_CLKX,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BALLOUT_V8_ARMIO3,
  N20_HDQ,
-
  W8_1610_MMC2_DAT0,
  V8_1610_MMC2_DAT1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  W15_1610_MMC2_DAT2,
  R10_1610_MMC2_DAT3,
  Y10_1610_MMC2_CLK,
  Y8_1610_MMC2_CMD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V9_1610_MMC2_CMDDIR,
  V5_1610_MMC2_DATDIR0,
  W19_1610_MMC2_DATDIR1,
  R18_1610_MMC2_CLKIN,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  M19_1610_ETM_PSTAT0,
  L15_1610_ETM_PSTAT1,
  L18_1610_ETM_PSTAT2,
  L19_1610_ETM_D0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  J19_1610_ETM_D6,
  J18_1610_ETM_D7,
-
  P20_1610_GPIO4,
  V9_1610_GPIO7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  W8_1610_GPIO9,
  N20_1610_GPIO11,
  N19_1610_GPIO13,
  P10_1610_GPIO22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V5_1610_GPIO24,
  AA20_1610_GPIO_41,
  W19_1610_GPIO48,
  M7_1610_GPIO62,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V14_16XX_GPIO37,
  R9_16XX_GPIO18,
  L14_16XX_GPIO49,
-
  V19_1610_UWIRE_SCLK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  U18_1610_UWIRE_SDI,
  W21_1610_UWIRE_SDO,
  N14_1610_UWIRE_CS0,
  P15_1610_UWIRE_CS3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  N15_1610_UWIRE_CS1,
-
  U19_1610_SPIF_SCK,
  U18_1610_SPIF_DIN,
  P20_1610_SPIF_DIN,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  W21_1610_SPIF_DOUT,
  R18_1610_SPIF_DOUT,
  N14_1610_SPIF_CS0,
  N15_1610_SPIF_CS1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  T19_1610_SPIF_CS2,
  P15_1610_SPIF_CS3,
-
  L3_1610_FLASH_CS2B_OE,
  M8_1610_FLASH_CS2B_WE,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MMC_CMD,
  MMC_DAT1,
  MMC_DAT2,
  MMC_DAT0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MMC_CLK,
  MMC_DAT3,
-
  M15_1710_MMC_CLKI,
  P19_1710_MMC_CMDDIR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  P20_1710_MMC_DATDIR0,
-
  W9_USB0_TXEN,
  AA9_USB0_VP,
  Y5_USB0_RCV,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  R9_USB0_VM,
  V6_USB0_TXD,
  W5_USB0_SE0,
  V9_USB0_SPEED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V9_USB0_SUSP,
-
  W9_USB2_TXEN,
  AA9_USB2_VP,
  Y5_USB2_RCV,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  R9_USB2_VM,
  V6_USB2_TXD,
  W5_USB2_SE0,
-
  R13_1610_UART1_TX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V14_16XX_UART1_RX,
  R14_1610_UART1_CTS,
  AA15_1610_UART1_RTS,
  R9_16XX_UART2_RX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  L14_16XX_UART3_RX,
-
  I2C_SCL,
  I2C_SDA,
-
  F18_1610_KBC0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  D20_1610_KBC1,
  D19_1610_KBC2,
  E18_1610_KBC3,
  C21_1610_KBC4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  G18_1610_KBR0,
  F19_1610_KBR1,
  H14_1610_KBR2,
  E20_1610_KBR3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  E19_1610_KBR4,
  N19_1610_KBR5,
-
  T20_1610_LOW_PWR,
-
  V5_1710_MCLK_ON,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V5_1710_MCLK_OFF,
  R10_1610_MCLK_ON,
  R10_1610_MCLK_OFF,
-
  P11_1610_CF_CD2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  R11_1610_CF_IOIS16,
  V10_1610_CF_IREQ,
  W10_1610_CF_RESET,
  W11_1610_CF_CD1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum omap24xx_index {
-
  M19_24XX_I2C1_SCL,
  L15_24XX_I2C1_SDA,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  J15_24XX_I2C2_SCL,
  H19_24XX_I2C2_SDA,
-
  W19_24XX_SYS_NIRQ,
-
  W14_24XX_SYS_CLKOUT,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  L3_GPMC_WAIT0,
  N7_GPMC_WAIT1,
  M1_GPMC_WAIT2,
  P1_GPMC_WAIT3,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Y15_24XX_MCBSP2_CLKX,
  R14_24XX_MCBSP2_FSX,
  W15_24XX_MCBSP2_DR,
  V15_24XX_MCBSP2_DX,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  M21_242X_GPIO11,
  AA10_242X_GPIO13,
  AA6_242X_GPIO14,
  AA4_242X_GPIO15,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Y11_242X_GPIO16,
  AA12_242X_GPIO17,
  AA8_242X_GPIO58,
  Y20_24XX_GPIO60,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  W4__24XX_GPIO74,
  M15_24XX_GPIO92,
  V14_24XX_GPIO117,
-
  V4_242X_GPIO49,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  W2_242X_GPIO50,
  U4_242X_GPIO51,
  V3_242X_GPIO52,
  V2_242X_GPIO53,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V6_242X_GPIO53,
  T4_242X_GPIO54,
  Y4_242X_GPIO54,
  T3_242X_GPIO55,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  U2_242X_GPIO56,
-
  AA10_242X_DMAREQ0,
  AA6_242X_DMAREQ1,
  E4_242X_DMAREQ2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  G4_242X_DMAREQ3,
  D3_242X_DMAREQ4,
  E3_242X_DMAREQ5,
-
  P20_24XX_TSC_IRQ,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  K15_24XX_UART3_TX,
  K14_24XX_UART3_RX,
-
  G19_24XX_MMC_CLKO,
  H18_24XX_MMC_CMD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  F20_24XX_MMC_DAT0,
  H14_24XX_MMC_DAT1,
  E19_24XX_MMC_DAT2,
  D19_24XX_MMC_DAT3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  F19_24XX_MMC_DAT_DIR0,
  E20_24XX_MMC_DAT_DIR1,
  F18_24XX_MMC_DAT_DIR2,
  E18_24XX_MMC_DAT_DIR3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  G18_24XX_MMC_CMD_DIR,
  H15_24XX_MMC_CLKI,
-
  T19_24XX_KBR0,
  R19_24XX_KBR1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V18_24XX_KBR2,
  M21_24XX_KBR3,
  E5__24XX_KBR4,
  M18_24XX_KBR5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  R20_24XX_KBC0,
  M14_24XX_KBC1,
  H19_24XX_KBC2,
  V17_24XX_KBC3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  P21_24XX_KBC4,
  L14_24XX_KBC5,
  N19_24XX_KBC6,
-
  B3__24XX_KBR5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  AA4_24XX_KBC2,
  B13_24XX_KBC6,
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/arch/omap24xx.h b/libc/kernel/arch-arm/asm/arch/omap24xx.h
index 37def2f..adc60eb 100644
--- a/libc/kernel/arch-arm/asm/arch/omap24xx.h
+++ b/libc/kernel/arch-arm/asm/arch/omap24xx.h
@@ -7,24 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_OMAP24XX_H
 #define __ASM_ARCH_OMAP24XX_H
-
 #define L4_24XX_BASE 0x48000000
 #define L3_24XX_BASE 0x68000000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_IC_BASE (L4_24XX_BASE + 0xfe000)
 #define VA_IC_BASE IO_ADDRESS(OMAP24XX_IC_BASE)
 #define OMAP24XX_IVA_INTC_BASE 0x40000000
 #define IRQ_SIR_IRQ 0x0040
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP24XX_32KSYNCT_BASE (L4_24XX_BASE + 0x4000)
 #define OMAP24XX_PRCM_BASE (L4_24XX_BASE + 0x8000)
 #define OMAP24XX_SDRC_BASE (L3_24XX_BASE + 0x9000)
-
 #define OMAP242X_CONTROL_STATUS (L4_24XX_BASE + 0x2f8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/arch-arm/asm/arch/serial.h b/libc/kernel/arch-arm/asm/arch/serial.h
index 6ab8613..e11c53a 100644
--- a/libc/kernel/arch-arm/asm/arch/serial.h
+++ b/libc/kernel/arch-arm/asm/arch/serial.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_SERIAL_H
 #define __ASM_ARCH_SERIAL_H
-
 #define OMAP_MAX_NR_PORTS 3
 #define OMAP1510_BASE_BAUD (12000000/16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP16XX_BASE_BAUD (48000000/16)
-
 #define is_omap_port(p) ({int __ret = 0;   if (p == IO_ADDRESS(OMAP_UART1_BASE) ||   p == IO_ADDRESS(OMAP_UART2_BASE) ||   p == IO_ADDRESS(OMAP_UART3_BASE))   __ret = 1;   __ret;   })
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/arch/timex.h b/libc/kernel/arch-arm/asm/arch/timex.h
index 2c9234c..a0d62aa 100644
--- a/libc/kernel/arch-arm/asm/arch/timex.h
+++ b/libc/kernel/arch-arm/asm/arch/timex.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARCH_OMAP_TIMEX_H
 #define __ASM_ARCH_OMAP_TIMEX_H
-
 #define CLOCK_TICK_RATE (HZ * 100000UL)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/arch/vmalloc.h b/libc/kernel/arch-arm/asm/arch/vmalloc.h
index f2b5b44..6af6f56 100644
--- a/libc/kernel/arch-arm/asm/arch/vmalloc.h
+++ b/libc/kernel/arch-arm/asm/arch/vmalloc.h
@@ -7,7 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #define VMALLOC_END (PAGE_OFFSET + 0x10000000)
-
diff --git a/libc/kernel/arch-arm/asm/atomic.h b/libc/kernel/arch-arm/asm/atomic.h
index 6f1921a..d983009 100644
--- a/libc/kernel/arch-arm/asm/atomic.h
+++ b/libc/kernel/arch-arm/asm/atomic.h
@@ -7,15 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_ATOMIC_H
 #define __ASM_ARM_ATOMIC_H
-
 #include <linux/compiler.h>
-
 typedef struct { volatile int counter; } atomic_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATOMIC_INIT(i) { (i) }
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/auxvec.h b/libc/kernel/arch-arm/asm/auxvec.h
index c7e839c..560ba37 100644
--- a/libc/kernel/arch-arm/asm/auxvec.h
+++ b/libc/kernel/arch-arm/asm/auxvec.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASMARM_AUXVEC_H
 #define __ASMARM_AUXVEC_H
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/bitops.h b/libc/kernel/arch-arm/asm/bitops.h
index ff76a68..5e6067b 100644
--- a/libc/kernel/arch-arm/asm/bitops.h
+++ b/libc/kernel/arch-arm/asm/bitops.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_BITOPS_H
 #define __ASM_ARM_BITOPS_H
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/byteorder.h b/libc/kernel/arch-arm/asm/byteorder.h
index b869695..a5cf4ab 100644
--- a/libc/kernel/arch-arm/asm/byteorder.h
+++ b/libc/kernel/arch-arm/asm/byteorder.h
@@ -7,45 +7,48 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_BYTEORDER_H
 #define __ASM_ARM_BYTEORDER_H
-
 #include <linux/compiler.h>
 #include <asm/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 static inline __attribute_const__ __u32 ___arch__swab32(__u32 x)
 {
  __u32 t;
-
 #ifndef __thumb__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  if (!__builtin_constant_p(x)) {
-
  __asm__ ("eor\t%0, %1, %1, ror #16" : "=r" (t) : "r" (x));
  } else
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  t = x ^ ((x << 16) | (x >> 16));
-
  x = (x << 24) | (x >> 8);
  t &= ~0x00FF0000;
  x ^= (t >> 8);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  return x;
 }
-
 #define __arch__swab32(x) ___arch__swab32(x)
-
 #ifndef __STRICT_ANSI__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __BYTEORDER_HAS_U64__
 #define __SWAB_64_THRU_32__
 #endif
-
 #ifdef __ARMEB__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/byteorder/big_endian.h>
 #else
 #include <linux/byteorder/little_endian.h>
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/arch-arm/asm/cache.h b/libc/kernel/arch-arm/asm/cache.h
index be26423..ea94fdd 100644
--- a/libc/kernel/arch-arm/asm/cache.h
+++ b/libc/kernel/arch-arm/asm/cache.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASMARM_CACHE_H
 #define __ASMARM_CACHE_H
-
 #define L1_CACHE_SHIFT 5
 #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/cacheflush.h b/libc/kernel/arch-arm/asm/cacheflush.h
index 3ffa87a..9914f33 100644
--- a/libc/kernel/arch-arm/asm/cacheflush.h
+++ b/libc/kernel/arch-arm/asm/cacheflush.h
@@ -7,101 +7,95 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_CACHEFLUSH_H
 #define _ASMARM_CACHEFLUSH_H
-
 #include <linux/sched.h>
 #include <linux/mm.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/glue.h>
 #include <asm/shmparam.h>
-
 #define CACHE_COLOUR(vaddr) ((vaddr & (SHMLBA - 1)) >> PAGE_SHIFT)
-
 #undef _CACHE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef MULTI_CACHE
-
 #if !defined(_CACHE) && !defined(MULTI_CACHE)
 #error Unknown cache maintainence model
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PG_dcache_dirty PG_arch_1
-
 struct cpu_cache_fns {
  void (*flush_kern_all)(void);
  void (*flush_user_all)(void);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*flush_user_range)(unsigned long, unsigned long, unsigned int);
-
  void (*coherent_kern_range)(unsigned long, unsigned long);
  void (*coherent_user_range)(unsigned long, unsigned long);
  void (*flush_kern_dcache_page)(void *);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*dma_inv_range)(unsigned long, unsigned long);
  void (*dma_clean_range)(unsigned long, unsigned long);
  void (*dma_flush_range)(unsigned long, unsigned long);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef MULTI_CACHE
-
 #define __cpuc_flush_kern_all cpu_cache.flush_kern_all
 #define __cpuc_flush_user_all cpu_cache.flush_user_all
 #define __cpuc_flush_user_range cpu_cache.flush_user_range
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpuc_coherent_kern_range cpu_cache.coherent_kern_range
 #define __cpuc_coherent_user_range cpu_cache.coherent_user_range
 #define __cpuc_flush_dcache_page cpu_cache.flush_kern_dcache_page
-
 #define dmac_inv_range cpu_cache.dma_inv_range
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define dmac_clean_range cpu_cache.dma_clean_range
 #define dmac_flush_range cpu_cache.dma_flush_range
-
 #else
-
 #define __cpuc_flush_kern_all __glue(_CACHE,_flush_kern_cache_all)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpuc_flush_user_all __glue(_CACHE,_flush_user_cache_all)
 #define __cpuc_flush_user_range __glue(_CACHE,_flush_user_cache_range)
 #define __cpuc_coherent_kern_range __glue(_CACHE,_coherent_kern_range)
 #define __cpuc_coherent_user_range __glue(_CACHE,_coherent_user_range)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpuc_flush_dcache_page __glue(_CACHE,_flush_kern_dcache_page)
-
 #define dmac_inv_range __glue(_CACHE,_dma_inv_range)
 #define dmac_clean_range __glue(_CACHE,_dma_clean_range)
 #define dmac_flush_range __glue(_CACHE,_dma_flush_range)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define flush_cache_vmap(start, end) flush_cache_all()
 #define flush_cache_vunmap(start, end) flush_cache_all()
-
 #define copy_to_user_page(vma, page, vaddr, dst, src, len)   do {   memcpy(dst, src, len);   flush_ptrace_access(vma, page, vaddr, dst, len, 1);  } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define copy_from_user_page(vma, page, vaddr, dst, src, len)   do {   memcpy(dst, src, len);   } while (0)
-
 #define flush_cache_all() __cpuc_flush_kern_all()
 #define flush_cache_user_range(vma,start,end)   __cpuc_coherent_user_range((start) & PAGE_MASK, PAGE_ALIGN(end))
 #define flush_icache_range(s,e) __cpuc_coherent_kern_range(s,e)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define clean_dcache_area(start,size) cpu_dcache_clean_area(start, size)
-
 #define flush_dcache_mmap_lock(mapping)   write_lock_irq(&(mapping)->tree_lock)
 #define flush_dcache_mmap_unlock(mapping)   write_unlock_irq(&(mapping)->tree_lock)
-
 #define flush_icache_user_range(vma,page,addr,len)   flush_dcache_page(page)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define flush_icache_page(vma,page) do { } while (0)
-
 #define __cacheid_present(val) (val != read_cpuid(CPUID_ID))
 #define __cacheid_vivt(val) ((val & (15 << 25)) != (14 << 25))
 #define __cacheid_vipt(val) ((val & (15 << 25)) == (14 << 25))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cacheid_vipt_nonaliasing(val) ((val & (15 << 25 | 1 << 23)) == (14 << 25))
 #define __cacheid_vipt_aliasing(val) ((val & (15 << 25 | 1 << 23)) == (14 << 25 | 1 << 23))
-
 #define cache_is_vivt()   ({   unsigned int __val = read_cpuid(CPUID_CACHETYPE);   (!__cacheid_present(__val)) || __cacheid_vivt(__val);   })
-
 #define cache_is_vipt()   ({   unsigned int __val = read_cpuid(CPUID_CACHETYPE);   __cacheid_present(__val) && __cacheid_vipt(__val);   })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cache_is_vipt_nonaliasing()   ({   unsigned int __val = read_cpuid(CPUID_CACHETYPE);   __cacheid_present(__val) &&   __cacheid_vipt_nonaliasing(__val);   })
-
 #define cache_is_vipt_aliasing()   ({   unsigned int __val = read_cpuid(CPUID_CACHETYPE);   __cacheid_present(__val) &&   __cacheid_vipt_aliasing(__val);   })
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/cputime.h b/libc/kernel/arch-arm/asm/cputime.h
index 4a4097f..8705422 100644
--- a/libc/kernel/arch-arm/asm/cputime.h
+++ b/libc/kernel/arch-arm/asm/cputime.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARM_CPUTIME_H
 #define __ARM_CPUTIME_H
-
 #include <asm-generic/cputime.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/delay.h b/libc/kernel/arch-arm/asm/delay.h
index 631fd9b..77b4293 100644
--- a/libc/kernel/arch-arm/asm/delay.h
+++ b/libc/kernel/arch-arm/asm/delay.h
@@ -7,16 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_DELAY_H
 #define __ASM_ARM_DELAY_H
-
 #include <asm/param.h>  
-
 #define MAX_UDELAY_MS 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define udelay(n)   (__builtin_constant_p(n) ?   ((n) > (MAX_UDELAY_MS * 1000) ? __bad_udelay() :   __const_udelay((n) * ((2199023U*HZ)>>11))) :   __udelay(n))
-
 #endif
-
diff --git a/libc/kernel/arch-arm/asm/div64.h b/libc/kernel/arch-arm/asm/div64.h
index c03a0e4..6ba008a 100644
--- a/libc/kernel/arch-arm/asm/div64.h
+++ b/libc/kernel/arch-arm/asm/div64.h
@@ -7,21 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_DIV64
 #define __ASM_ARM_DIV64
-
 #include <asm/system.h>
-
 #ifdef __ARMEB__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __xh "r0"
 #define __xl "r1"
 #else
 #define __xl "r0"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __xh "r1"
 #endif
-
 #define do_div(n,base)  ({   register unsigned int __base asm("r4") = base;   register unsigned long long __n asm("r0") = n;   register unsigned long long __res asm("r2");   register unsigned int __rem asm(__xh);   asm( __asmeq("%0", __xh)   __asmeq("%1", "r2")   __asmeq("%2", "r0")   __asmeq("%3", "r4")   "bl	__do_div64"   : "=r" (__rem), "=r" (__res)   : "r" (__n), "r" (__base)   : "ip", "lr", "cc");   n = __res;   __rem;  })
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/dma-mapping.h b/libc/kernel/arch-arm/asm/dma-mapping.h
index 7e65009..de221ad 100644
--- a/libc/kernel/arch-arm/asm/dma-mapping.h
+++ b/libc/kernel/arch-arm/asm/dma-mapping.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef ASMARM_DMA_MAPPING_H
 #define ASMARM_DMA_MAPPING_H
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/dma.h b/libc/kernel/arch-arm/asm/dma.h
index 7eeeb78..f23c8fe 100644
--- a/libc/kernel/arch-arm/asm/dma.h
+++ b/libc/kernel/arch-arm/asm/dma.h
@@ -7,39 +7,40 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_DMA_H
 #define __ASM_ARM_DMA_H
-
 typedef unsigned int dmach_t;
-
 #include <linux/spinlock.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/system.h>
 #include <asm/scatterlist.h>
 #include <asm/arch/dma.h>
-
 #ifndef MAX_DMA_ADDRESS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_DMA_ADDRESS 0xffffffff
 #endif
-
 typedef unsigned int dmamode_t;
-
 #define DMA_MODE_MASK 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_MODE_READ 0
 #define DMA_MODE_WRITE 1
 #define DMA_MODE_CASCADE 2
 #define DMA_AUTOINIT 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define clear_dma_ff(channel)
-
 #define set_dma_addr(channel, addr)   __set_dma_addr(channel, bus_to_virt(addr))
-
 #ifndef NO_DMA
 #define NO_DMA 255
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define isa_dma_bridge_buggy (0)
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/domain.h b/libc/kernel/arch-arm/asm/domain.h
index 973109e..84adccb 100644
--- a/libc/kernel/arch-arm/asm/domain.h
+++ b/libc/kernel/arch-arm/asm/domain.h
@@ -7,26 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_PROC_DOMAIN_H
 #define __ASM_PROC_DOMAIN_H
-
 #define DOMAIN_KERNEL 0
 #define DOMAIN_TABLE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DOMAIN_USER 1
 #define DOMAIN_IO 2
-
 #define DOMAIN_NOACCESS 0
 #define DOMAIN_CLIENT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DOMAIN_MANAGER 3
-
 #define domain_val(dom,type) ((type) << (2*(dom)))
-
 #ifndef __ASSEMBLY__
-
 #define set_domain(x) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define modify_domain(dom,type) do { } while (0)
-
 #endif
 #endif
diff --git a/libc/kernel/arch-arm/asm/dyntick.h b/libc/kernel/arch-arm/asm/dyntick.h
index 1f323f2..d2db94d 100644
--- a/libc/kernel/arch-arm/asm/dyntick.h
+++ b/libc/kernel/arch-arm/asm/dyntick.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_DYNTICK_H
 #define _ASMARM_DYNTICK_H
-
 #include <asm/mach/time.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/elf.h b/libc/kernel/arch-arm/asm/elf.h
index e9d095e..d23a01a 100644
--- a/libc/kernel/arch-arm/asm/elf.h
+++ b/libc/kernel/arch-arm/asm/elf.h
@@ -7,57 +7,58 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASMARM_ELF_H
 #define __ASMARM_ELF_H
-
 #include <asm/ptrace.h>
 #include <asm/user.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __KERNEL
 #include <asm/procinfo.h>
 #endif
-
 typedef unsigned long elf_greg_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned long elf_freg_t[3];
-
 #define EM_ARM 40
 #define EF_ARM_APCS26 0x08
 #define EF_ARM_SOFT_FLOAT 0x200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EF_ARM_EABI_MASK 0xFF000000
-
 #define R_ARM_NONE 0
 #define R_ARM_PC24 1
 #define R_ARM_ABS32 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_ARM_CALL 28
 #define R_ARM_JUMP24 29
-
 #define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
 typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct user_fp elf_fpregset_t;
-
 #define elf_check_arch(x) ( ((x)->e_machine == EM_ARM) && (ELF_PROC_OK((x))) )
-
 #define ELF_CLASS ELFCLASS32
 #ifdef __ARMEB__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF_DATA ELFDATA2MSB
 #else
 #define ELF_DATA ELFDATA2LSB
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF_ARCH EM_ARM
-
 #define USE_ELF_CORE_DUMP
 #define ELF_EXEC_PAGESIZE 4096
-
 #define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF_PLAT_INIT(_r, load_addr) (_r)->ARM_r0 = 0
-
 #define ELF_HWCAP (elf_hwcap)
-
 #define ELF_PLATFORM_SIZE 8
-
 #define ELF_PLATFORM (elf_platform)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/errno.h b/libc/kernel/arch-arm/asm/errno.h
index 6be7048..f784646 100644
--- a/libc/kernel/arch-arm/asm/errno.h
+++ b/libc/kernel/arch-arm/asm/errno.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ARM_ERRNO_H
 #define _ARM_ERRNO_H
-
 #include <asm-generic/errno.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/fcntl.h b/libc/kernel/arch-arm/asm/fcntl.h
index 42351ea..348782e 100644
--- a/libc/kernel/arch-arm/asm/fcntl.h
+++ b/libc/kernel/arch-arm/asm/fcntl.h
@@ -7,16 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ARM_FCNTL_H
 #define _ARM_FCNTL_H
-
 #define O_DIRECTORY 040000  
 #define O_NOFOLLOW 0100000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define O_DIRECT 0200000  
 #define O_LARGEFILE 0400000
-
 #include <asm-generic/fcntl.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/fpstate.h b/libc/kernel/arch-arm/asm/fpstate.h
index b362b14..4558f80 100644
--- a/libc/kernel/arch-arm/asm/fpstate.h
+++ b/libc/kernel/arch-arm/asm/fpstate.h
@@ -7,62 +7,63 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_FPSTATE_H
 #define __ASM_ARM_FPSTATE_H
-
 #ifndef __ASSEMBLY__
-
 struct vfp_hard_struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 fpregs[16];
 #if __LINUX_ARM_ARCH__ < 6
  __u32 fpmx_state;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 fpexc;
  __u32 fpscr;
-
  __u32 fpinst;
  __u32 fpinst2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 union vfp_state {
  struct vfp_hard_struct hard;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FP_HARD_SIZE 35
-
 struct fp_hard_struct {
  unsigned int save[FP_HARD_SIZE];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FP_SOFT_SIZE 35
-
 struct fp_soft_struct {
  unsigned int save[FP_SOFT_SIZE];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IWMMXT_SIZE 0x98
-
 struct iwmmxt_struct {
  unsigned int save[IWMMXT_SIZE / sizeof(unsigned int)];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union fp_state {
  struct fp_hard_struct hard;
  struct fp_soft_struct soft;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FP_SIZE (sizeof(union fp_state) / sizeof(int))
-
 struct crunch_state {
  unsigned int mvdx[16][2];
  unsigned int mvax[4][3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int dspsc[2];
 };
-
 #define CRUNCH_SIZE sizeof(struct crunch_state)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/glue.h b/libc/kernel/arch-arm/asm/glue.h
index 1327b59..878419c 100644
--- a/libc/kernel/arch-arm/asm/glue.h
+++ b/libc/kernel/arch-arm/asm/glue.h
@@ -7,5 +7,12 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
diff --git a/libc/kernel/arch-arm/asm/hardirq.h b/libc/kernel/arch-arm/asm/hardirq.h
index 54207e3..db06a9a 100644
--- a/libc/kernel/arch-arm/asm/hardirq.h
+++ b/libc/kernel/arch-arm/asm/hardirq.h
@@ -7,32 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_HARDIRQ_H
 #define __ASM_HARDIRQ_H
-
 #include <linux/cache.h>
 #include <linux/threads.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/irq.h>
-
 typedef struct {
  unsigned int __softirq_pending;
  unsigned int local_timer_irqs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } ____cacheline_aligned irq_cpustat_t;
-
 #include <linux/irq_cpustat.h>  
-
 #if NR_IRQS > 256
 #define HARDIRQ_BITS 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #define HARDIRQ_BITS 8
 #endif
-
 #if 1 << HARDIRQ_BITS < NR_IRQS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error HARDIRQ_BITS is too low!
 #endif
-
 #define __ARCH_IRQ_EXIT_IRQS_DISABLED 1
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/hardware.h b/libc/kernel/arch-arm/asm/hardware.h
index 0b381d1..0920fae 100644
--- a/libc/kernel/arch-arm/asm/hardware.h
+++ b/libc/kernel/arch-arm/asm/hardware.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_HARDWARE_H
 #define __ASM_HARDWARE_H
-
 #include <asm/arch/hardware.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/hw_irq.h b/libc/kernel/arch-arm/asm/hw_irq.h
index a34b390..9daee5d 100644
--- a/libc/kernel/arch-arm/asm/hw_irq.h
+++ b/libc/kernel/arch-arm/asm/hw_irq.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ARCH_ARM_HW_IRQ_H
 #define _ARCH_ARM_HW_IRQ_H
-
 #include <asm/mach/irq.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/ide.h b/libc/kernel/arch-arm/asm/ide.h
index f52d5ca..eb3f5c7 100644
--- a/libc/kernel/arch-arm/asm/ide.h
+++ b/libc/kernel/arch-arm/asm/ide.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASMARM_IDE_H
 #define __ASMARM_IDE_H
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/io.h b/libc/kernel/arch-arm/asm/io.h
index 6794022..fabe7ea 100644
--- a/libc/kernel/arch-arm/asm/io.h
+++ b/libc/kernel/arch-arm/asm/io.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_IO_H
 #define __ASM_ARM_IO_H
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/ioctl.h b/libc/kernel/arch-arm/asm/ioctl.h
index 6e446b6..7b7bd37 100644
--- a/libc/kernel/arch-arm/asm/ioctl.h
+++ b/libc/kernel/arch-arm/asm/ioctl.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/ioctl.h>
diff --git a/libc/kernel/arch-arm/asm/ioctls.h b/libc/kernel/arch-arm/asm/ioctls.h
index 9df82bc..64d81bf 100644
--- a/libc/kernel/arch-arm/asm/ioctls.h
+++ b/libc/kernel/arch-arm/asm/ioctls.h
@@ -7,82 +7,99 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_IOCTLS_H
 #define __ASM_ARM_IOCTLS_H
-
 #include <asm/ioctl.h>
-
 #define TCGETS 0x5401
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSETS 0x5402
 #define TCSETSW 0x5403
 #define TCSETSF 0x5404
 #define TCGETA 0x5405
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSETA 0x5406
 #define TCSETAW 0x5407
 #define TCSETAF 0x5408
 #define TCSBRK 0x5409
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCXONC 0x540A
 #define TCFLSH 0x540B
 #define TIOCEXCL 0x540C
 #define TIOCNXCL 0x540D
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSCTTY 0x540E
 #define TIOCGPGRP 0x540F
 #define TIOCSPGRP 0x5410
 #define TIOCOUTQ 0x5411
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSTI 0x5412
 #define TIOCGWINSZ 0x5413
 #define TIOCSWINSZ 0x5414
 #define TIOCMGET 0x5415
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCMBIS 0x5416
 #define TIOCMBIC 0x5417
 #define TIOCMSET 0x5418
 #define TIOCGSOFTCAR 0x5419
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSSOFTCAR 0x541A
 #define FIONREAD 0x541B
 #define TIOCINQ FIONREAD
 #define TIOCLINUX 0x541C
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCCONS 0x541D
 #define TIOCGSERIAL 0x541E
 #define TIOCSSERIAL 0x541F
 #define TIOCPKT 0x5420
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIONBIO 0x5421
 #define TIOCNOTTY 0x5422
 #define TIOCSETD 0x5423
 #define TIOCGETD 0x5424
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSBRKP 0x5425  
 #define TIOCSBRK 0x5427  
 #define TIOCCBRK 0x5428  
 #define TIOCGSID 0x5429  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGPTN _IOR('T',0x30, unsigned int)  
 #define TIOCSPTLCK _IOW('T',0x31, int)  
-
 #define FIONCLEX 0x5450  
 #define FIOCLEX 0x5451
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIOASYNC 0x5452
 #define TIOCSERCONFIG 0x5453
 #define TIOCSERGWILD 0x5454
 #define TIOCSERSWILD 0x5455
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGLCKTRMIOS 0x5456
 #define TIOCSLCKTRMIOS 0x5457
 #define TIOCSERGSTRUCT 0x5458  
 #define TIOCSERGETLSR 0x5459  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSERGETMULTI 0x545A  
 #define TIOCSERSETMULTI 0x545B  
-
 #define TIOCMIWAIT 0x545C  
 #define TIOCGICOUNT 0x545D  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIOQSIZE 0x545E
-
 #define TIOCPKT_DATA 0
 #define TIOCPKT_FLUSHREAD 1
 #define TIOCPKT_FLUSHWRITE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCPKT_STOP 4
 #define TIOCPKT_START 8
 #define TIOCPKT_NOSTOP 16
 #define TIOCPKT_DOSTOP 32
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSER_TEMT 0x01  
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/ipcbuf.h b/libc/kernel/arch-arm/asm/ipcbuf.h
index 0e47507..e4babd6 100644
--- a/libc/kernel/arch-arm/asm/ipcbuf.h
+++ b/libc/kernel/arch-arm/asm/ipcbuf.h
@@ -7,24 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASMARM_IPCBUF_H
 #define __ASMARM_IPCBUF_H
-
 struct ipc64_perm
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_key_t key;
  __kernel_uid32_t uid;
  __kernel_gid32_t gid;
  __kernel_uid32_t cuid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_gid32_t cgid;
  __kernel_mode_t mode;
  unsigned short __pad1;
  unsigned short seq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short __pad2;
  unsigned long __unused1;
  unsigned long __unused2;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/irq.h b/libc/kernel/arch-arm/asm/irq.h
index 2085a21..1522a58 100644
--- a/libc/kernel/arch-arm/asm/irq.h
+++ b/libc/kernel/arch-arm/asm/irq.h
@@ -7,39 +7,43 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_IRQ_H
 #define __ASM_ARM_IRQ_H
-
 #include <asm/arch/irqs.h>
-
 #ifndef irq_canonicalize
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define irq_canonicalize(i) (i)
 #endif
-
 #ifndef NR_IRQS
 #define NR_IRQS 128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef NO_IRQ
 #define NO_IRQ ((unsigned int)(-1))
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct irqaction;
-
 #define __IRQT_FALEDGE IRQ_TYPE_EDGE_FALLING
 #define __IRQT_RISEDGE IRQ_TYPE_EDGE_RISING
 #define __IRQT_LOWLVL IRQ_TYPE_LEVEL_LOW
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __IRQT_HIGHLVL IRQ_TYPE_LEVEL_HIGH
-
 #define IRQT_NOEDGE (0)
 #define IRQT_RISING (__IRQT_RISEDGE)
 #define IRQT_FALLING (__IRQT_FALEDGE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQT_BOTHEDGE (__IRQT_RISEDGE|__IRQT_FALEDGE)
 #define IRQT_LOW (__IRQT_LOWLVL)
 #define IRQT_HIGH (__IRQT_HIGHLVL)
 #define IRQT_PROBE IRQ_TYPE_PROBE
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/arch-arm/asm/linkage.h b/libc/kernel/arch-arm/asm/linkage.h
index 1fb628e..c1a5b68 100644
--- a/libc/kernel/arch-arm/asm/linkage.h
+++ b/libc/kernel/arch-arm/asm/linkage.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_LINKAGE_H
 #define __ASM_LINKAGE_H
-
 #define __ALIGN .align 0
 #define __ALIGN_STR ".align 0"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/local.h b/libc/kernel/arch-arm/asm/local.h
index 10d6a60..72673e3 100644
--- a/libc/kernel/arch-arm/asm/local.h
+++ b/libc/kernel/arch-arm/asm/local.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/local.h>
diff --git a/libc/kernel/arch-arm/asm/locks.h b/libc/kernel/arch-arm/asm/locks.h
index f48485c..ab40828 100644
--- a/libc/kernel/arch-arm/asm/locks.h
+++ b/libc/kernel/arch-arm/asm/locks.h
@@ -7,49 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_PROC_LOCKS_H
 #define __ASM_PROC_LOCKS_H
-
 #if __LINUX_ARM_ARCH__ >= 6
-
 #define __down_op(ptr,fail)   ({   __asm__ __volatile__(   "@ down_op\n"  "1:	ldrex	lr, [%0]\n"  "	sub	lr, lr, %1\n"  "	strex	ip, lr, [%0]\n"  "	teq	ip, #0\n"  "	bne	1b\n"  "	teq	lr, #0\n"  "	movmi	ip, %0\n"  "	blmi	" #fail   :   : "r" (ptr), "I" (1)   : "ip", "lr", "cc");   smp_mb();   })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __down_op_ret(ptr,fail)   ({   unsigned int ret;   __asm__ __volatile__(   "@ down_op_ret\n"  "1:	ldrex	lr, [%1]\n"  "	sub	lr, lr, %2\n"  "	strex	ip, lr, [%1]\n"  "	teq	ip, #0\n"  "	bne	1b\n"  "	teq	lr, #0\n"  "	movmi	ip, %1\n"  "	movpl	ip, #0\n"  "	blmi	" #fail "\n"  "	mov	%0, ip"   : "=&r" (ret)   : "r" (ptr), "I" (1)   : "ip", "lr", "cc");   smp_mb();   ret;   })
-
 #define __up_op(ptr,wake)   ({   smp_mb();   __asm__ __volatile__(   "@ up_op\n"  "1:	ldrex	lr, [%0]\n"  "	add	lr, lr, %1\n"  "	strex	ip, lr, [%0]\n"  "	teq	ip, #0\n"  "	bne	1b\n"  "	cmp	lr, #0\n"  "	movle	ip, %0\n"  "	blle	" #wake   :   : "r" (ptr), "I" (1)   : "ip", "lr", "cc");   })
-
 #define RW_LOCK_BIAS 0x01000000
 #define RW_LOCK_BIAS_STR "0x01000000"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __down_op_write(ptr,fail)   ({   __asm__ __volatile__(   "@ down_op_write\n"  "1:	ldrex	lr, [%0]\n"  "	sub	lr, lr, %1\n"  "	strex	ip, lr, [%0]\n"  "	teq	ip, #0\n"  "	bne	1b\n"  "	teq	lr, #0\n"  "	movne	ip, %0\n"  "	blne	" #fail   :   : "r" (ptr), "I" (RW_LOCK_BIAS)   : "ip", "lr", "cc");   smp_mb();   })
-
 #define __up_op_write(ptr,wake)   ({   smp_mb();   __asm__ __volatile__(   "@ up_op_write\n"  "1:	ldrex	lr, [%0]\n"  "	adds	lr, lr, %1\n"  "	strex	ip, lr, [%0]\n"  "	teq	ip, #0\n"  "	bne	1b\n"  "	movcs	ip, %0\n"  "	blcs	" #wake   :   : "r" (ptr), "I" (RW_LOCK_BIAS)   : "ip", "lr", "cc");   })
-
 #define __down_op_read(ptr,fail)   __down_op(ptr, fail)
-
 #define __up_op_read(ptr,wake)   ({   smp_mb();   __asm__ __volatile__(   "@ up_op_read\n"  "1:	ldrex	lr, [%0]\n"  "	add	lr, lr, %1\n"  "	strex	ip, lr, [%0]\n"  "	teq	ip, #0\n"  "	bne	1b\n"  "	teq	lr, #0\n"  "	moveq	ip, %0\n"  "	bleq	" #wake   :   : "r" (ptr), "I" (1)   : "ip", "lr", "cc");   })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
-
 #define __down_op(ptr,fail)   ({   __asm__ __volatile__(   "@ down_op\n"  "	mrs	ip, cpsr\n"  "	orr	lr, ip, #128\n"  "	msr	cpsr_c, lr\n"  "	ldr	lr, [%0]\n"  "	subs	lr, lr, %1\n"  "	str	lr, [%0]\n"  "	msr	cpsr_c, ip\n"  "	movmi	ip, %0\n"  "	blmi	" #fail   :   : "r" (ptr), "I" (1)   : "ip", "lr", "cc");   smp_mb();   })
-
 #define __down_op_ret(ptr,fail)   ({   unsigned int ret;   __asm__ __volatile__(   "@ down_op_ret\n"  "	mrs	ip, cpsr\n"  "	orr	lr, ip, #128\n"  "	msr	cpsr_c, lr\n"  "	ldr	lr, [%1]\n"  "	subs	lr, lr, %2\n"  "	str	lr, [%1]\n"  "	msr	cpsr_c, ip\n"  "	movmi	ip, %1\n"  "	movpl	ip, #0\n"  "	blmi	" #fail "\n"  "	mov	%0, ip"   : "=&r" (ret)   : "r" (ptr), "I" (1)   : "ip", "lr", "cc");   smp_mb();   ret;   })
-
 #define __up_op(ptr,wake)   ({   smp_mb();   __asm__ __volatile__(   "@ up_op\n"  "	mrs	ip, cpsr\n"  "	orr	lr, ip, #128\n"  "	msr	cpsr_c, lr\n"  "	ldr	lr, [%0]\n"  "	adds	lr, lr, %1\n"  "	str	lr, [%0]\n"  "	msr	cpsr_c, ip\n"  "	movle	ip, %0\n"  "	blle	" #wake   :   : "r" (ptr), "I" (1)   : "ip", "lr", "cc");   })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RW_LOCK_BIAS 0x01000000
 #define RW_LOCK_BIAS_STR "0x01000000"
-
 #define __down_op_write(ptr,fail)   ({   __asm__ __volatile__(   "@ down_op_write\n"  "	mrs	ip, cpsr\n"  "	orr	lr, ip, #128\n"  "	msr	cpsr_c, lr\n"  "	ldr	lr, [%0]\n"  "	subs	lr, lr, %1\n"  "	str	lr, [%0]\n"  "	msr	cpsr_c, ip\n"  "	movne	ip, %0\n"  "	blne	" #fail   :   : "r" (ptr), "I" (RW_LOCK_BIAS)   : "ip", "lr", "cc");   smp_mb();   })
-
 #define __up_op_write(ptr,wake)   ({   __asm__ __volatile__(   "@ up_op_write\n"  "	mrs	ip, cpsr\n"  "	orr	lr, ip, #128\n"  "	msr	cpsr_c, lr\n"  "	ldr	lr, [%0]\n"  "	adds	lr, lr, %1\n"  "	str	lr, [%0]\n"  "	msr	cpsr_c, ip\n"  "	movcs	ip, %0\n"  "	blcs	" #wake   :   : "r" (ptr), "I" (RW_LOCK_BIAS)   : "ip", "lr", "cc");   smp_mb();   })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __down_op_read(ptr,fail)   __down_op(ptr, fail)
-
 #define __up_op_read(ptr,wake)   ({   smp_mb();   __asm__ __volatile__(   "@ up_op_read\n"  "	mrs	ip, cpsr\n"  "	orr	lr, ip, #128\n"  "	msr	cpsr_c, lr\n"  "	ldr	lr, [%0]\n"  "	adds	lr, lr, %1\n"  "	str	lr, [%0]\n"  "	msr	cpsr_c, ip\n"  "	moveq	ip, %0\n"  "	bleq	" #wake   :   : "r" (ptr), "I" (1)   : "ip", "lr", "cc");   })
-
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/mc146818rtc.h b/libc/kernel/arch-arm/asm/mc146818rtc.h
index 5a86724..a389401 100644
--- a/libc/kernel/arch-arm/asm/mc146818rtc.h
+++ b/libc/kernel/arch-arm/asm/mc146818rtc.h
@@ -7,20 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_MC146818RTC_H
 #define _ASM_MC146818RTC_H
-
 #include <asm/arch/irqs.h>
 #include <asm/io.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef RTC_PORT
 #define RTC_PORT(x) (0x70 + (x))
 #define RTC_ALWAYS_BCD 1  
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMOS_READ(addr) ({  outb_p((addr),RTC_PORT(0));  inb_p(RTC_PORT(1));  })
 #define CMOS_WRITE(val, addr) ({  outb_p((addr),RTC_PORT(0));  outb_p((val),RTC_PORT(1));  })
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/memory.h b/libc/kernel/arch-arm/asm/memory.h
index c1137a7..2c7a16c 100644
--- a/libc/kernel/arch-arm/asm/memory.h
+++ b/libc/kernel/arch-arm/asm/memory.h
@@ -7,89 +7,97 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_MEMORY_H
 #define __ASM_ARM_MEMORY_H
-
 #ifndef __ASSEMBLY__
 #define UL(x) (x##UL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #define UL(x) (x)
 #endif
-
 #include <linux/compiler.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/arch/memory.h>
 #include <asm/sizes.h>
-
 #ifndef TASK_SIZE
 #define TASK_SIZE (CONFIG_DRAM_SIZE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef TASK_UNMAPPED_BASE
 #define TASK_UNMAPPED_BASE UL(0x00000000)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef PHYS_OFFSET
 #define PHYS_OFFSET (CONFIG_DRAM_BASE)
 #endif
-
 #ifndef END_MEM
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define END_MEM (CONFIG_DRAM_BASE + CONFIG_DRAM_SIZE)
 #endif
-
 #ifndef PAGE_OFFSET
 #define PAGE_OFFSET (PHYS_OFFSET)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define MODULE_END (END_MEM)
 #define MODULE_START (PHYS_OFFSET)
-
 #ifndef CONSISTENT_DMA_SIZE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CONSISTENT_DMA_SIZE SZ_2M
 #endif
-
 #ifndef __virt_to_phys
 #define __virt_to_phys(x) ((x) - PAGE_OFFSET + PHYS_OFFSET)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __phys_to_virt(x) ((x) - PHYS_OFFSET + PAGE_OFFSET)
 #endif
-
 #define __phys_to_pfn(paddr) ((paddr) >> PAGE_SHIFT)
 #define __pfn_to_phys(pfn) ((pfn) << PAGE_SHIFT)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
-
 #ifndef ISA_DMA_THRESHOLD
 #define ISA_DMA_THRESHOLD (0xffffffffULL)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef arch_adjust_zones
 #define arch_adjust_zones(node,size,holes) do { } while (0)
 #endif
-
 #define PHYS_PFN_OFFSET (PHYS_OFFSET >> PAGE_SHIFT)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __pa(x) __virt_to_phys((unsigned long)(x))
 #define __va(x) ((void *)__phys_to_virt((unsigned long)(x)))
 #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
 #define ARCH_PFN_OFFSET PHYS_PFN_OFFSET
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pfn_valid(pfn) ((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr))
 #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
 #define virt_addr_valid(kaddr) ((unsigned long)(kaddr) >= PAGE_OFFSET && (unsigned long)(kaddr) < (unsigned long)high_memory)
 #define PHYS_TO_NID(addr) (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)
 #ifndef __arch_page_to_dma
 #define page_to_dma(dev, page) ((dma_addr_t)__virt_to_bus((unsigned long)page_address(page)))
 #define dma_to_virt(dev, addr) ((void *)__bus_to_virt(addr))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define virt_to_dma(dev, addr) ((dma_addr_t)__virt_to_bus((unsigned long)(addr)))
 #else
 #define page_to_dma(dev, page) (__arch_page_to_dma(dev, page))
 #define dma_to_virt(dev, addr) (__arch_dma_to_virt(dev, addr))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define virt_to_dma(dev, addr) (__arch_virt_to_dma(dev, addr))
 #endif
 #ifndef arch_is_coherent
 #define arch_is_coherent() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
 #include <asm-generic/memory_model.h>
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/mman.h b/libc/kernel/arch-arm/asm/mman.h
index 8f71d1b..c391fe4 100644
--- a/libc/kernel/arch-arm/asm/mman.h
+++ b/libc/kernel/arch-arm/asm/mman.h
@@ -7,22 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARM_MMAN_H__
 #define __ARM_MMAN_H__
-
 #include <asm-generic/mman.h>
-
 #define MAP_GROWSDOWN 0x0100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAP_DENYWRITE 0x0800  
 #define MAP_EXECUTABLE 0x1000  
 #define MAP_LOCKED 0x2000  
 #define MAP_NORESERVE 0x4000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAP_POPULATE 0x8000  
 #define MAP_NONBLOCK 0x10000  
-
 #define MCL_CURRENT 1  
 #define MCL_FUTURE 2  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/module.h b/libc/kernel/arch-arm/asm/module.h
index 68b806a..046efa8 100644
--- a/libc/kernel/arch-arm/asm/module.h
+++ b/libc/kernel/arch-arm/asm/module.h
@@ -7,20 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_ARM_MODULE_H
 #define _ASM_ARM_MODULE_H
-
 struct mod_arch_specific
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int foo;
 };
-
 #define Elf_Shdr Elf32_Shdr
 #define Elf_Sym Elf32_Sym
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Elf_Ehdr Elf32_Ehdr
-
 #define MODULE_ARCH_VERMAGIC "ARMv" __stringify(__LINUX_ARM_ARCH__) " "
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/msgbuf.h b/libc/kernel/arch-arm/asm/msgbuf.h
index 84d614c..d687e30 100644
--- a/libc/kernel/arch-arm/asm/msgbuf.h
+++ b/libc/kernel/arch-arm/asm/msgbuf.h
@@ -7,26 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_MSGBUF_H
 #define _ASMARM_MSGBUF_H
-
 struct msqid64_ds {
  struct ipc64_perm msg_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t msg_stime;
  unsigned long __unused1;
  __kernel_time_t msg_rtime;
  unsigned long __unused2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t msg_ctime;
  unsigned long __unused3;
  unsigned long msg_cbytes;
  unsigned long msg_qnum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long msg_qbytes;
  __kernel_pid_t msg_lspid;
  __kernel_pid_t msg_lrpid;
  unsigned long __unused4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __unused5;
 };
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/mtd-xip.h b/libc/kernel/arch-arm/asm/mtd-xip.h
index 6c53f6f..d6ce13f 100644
--- a/libc/kernel/arch-arm/asm/mtd-xip.h
+++ b/libc/kernel/arch-arm/asm/mtd-xip.h
@@ -7,14 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARM_MTD_XIP_H__
 #define __ARM_MTD_XIP_H__
-
 #include <asm/hardware.h>
 #include <asm/arch/mtd-xip.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define xip_iprefetch() do { asm volatile (".rep 8; nop; .endr"); } while (0)
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/page.h b/libc/kernel/arch-arm/asm/page.h
index f980343..3c45724 100644
--- a/libc/kernel/arch-arm/asm/page.h
+++ b/libc/kernel/arch-arm/asm/page.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_PAGE_H
 #define _ASMARM_PAGE_H
-
 #define PAGE_SHIFT 12
 #define PAGE_SIZE (1UL << PAGE_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_MASK (~(PAGE_SIZE-1))
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/param.h b/libc/kernel/arch-arm/asm/param.h
index 6814fe3..148cc47 100644
--- a/libc/kernel/arch-arm/asm/param.h
+++ b/libc/kernel/arch-arm/asm/param.h
@@ -7,19 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_PARAM_H
 #define __ASM_PARAM_H
-
 #define HZ 100
-
 #define EXEC_PAGESIZE 4096
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef NOGROUP
 #define NOGROUP (-1)
 #endif
-
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/percpu.h b/libc/kernel/arch-arm/asm/percpu.h
index 2500345..90d6cd5 100644
--- a/libc/kernel/arch-arm/asm/percpu.h
+++ b/libc/kernel/arch-arm/asm/percpu.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARM_PERCPU
 #define __ARM_PERCPU
-
 #include <asm-generic/percpu.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/pgalloc.h b/libc/kernel/arch-arm/asm/pgalloc.h
index 5d45e65..c432aa6 100644
--- a/libc/kernel/arch-arm/asm/pgalloc.h
+++ b/libc/kernel/arch-arm/asm/pgalloc.h
@@ -7,17 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_PGALLOC_H
 #define _ASMARM_PGALLOC_H
-
 #include <asm/domain.h>
 #include <asm/pgtable-hwdef.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/processor.h>
 #include <asm/cacheflush.h>
 #include <asm/tlbflush.h>
-
 #define check_pgt_cache() do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/pgtable-hwdef.h b/libc/kernel/arch-arm/asm/pgtable-hwdef.h
index 47e8675..7678ba3 100644
--- a/libc/kernel/arch-arm/asm/pgtable-hwdef.h
+++ b/libc/kernel/arch-arm/asm/pgtable-hwdef.h
@@ -7,64 +7,77 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_PGTABLE_HWDEF_H
 #define _ASMARM_PGTABLE_HWDEF_H
-
 #define PMD_TYPE_MASK (3 << 0)
 #define PMD_TYPE_FAULT (0 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PMD_TYPE_TABLE (1 << 0)
 #define PMD_TYPE_SECT (2 << 0)
 #define PMD_BIT4 (1 << 4)
 #define PMD_DOMAIN(x) ((x) << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PMD_PROTECTION (1 << 9)  
-
 #define PMD_SECT_BUFFERABLE (1 << 2)
 #define PMD_SECT_CACHEABLE (1 << 3)
 #define PMD_SECT_XN (1 << 4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PMD_SECT_AP_WRITE (1 << 10)
 #define PMD_SECT_AP_READ (1 << 11)
 #define PMD_SECT_TEX(x) ((x) << 12)  
 #define PMD_SECT_APX (1 << 15)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PMD_SECT_S (1 << 16)  
 #define PMD_SECT_nG (1 << 17)  
 #define PMD_SECT_SUPER (1 << 18)  
-
 #define PMD_SECT_UNCACHED (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PMD_SECT_BUFFERED (PMD_SECT_BUFFERABLE)
 #define PMD_SECT_WT (PMD_SECT_CACHEABLE)
 #define PMD_SECT_WB (PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
 #define PMD_SECT_MINICACHE (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PMD_SECT_WBWA (PMD_SECT_TEX(1) | PMD_SECT_CACHEABLE | PMD_SECT_BUFFERABLE)
 #define PMD_SECT_NONSHARED_DEV (PMD_SECT_TEX(2))
-
 #define PTE_TYPE_MASK (3 << 0)
 #define PTE_TYPE_FAULT (0 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTE_TYPE_LARGE (1 << 0)
 #define PTE_TYPE_SMALL (2 << 0)
 #define PTE_TYPE_EXT (3 << 0)  
 #define PTE_BUFFERABLE (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTE_CACHEABLE (1 << 3)
-
 #define PTE_EXT_XN (1 << 0)  
 #define PTE_EXT_AP_MASK (3 << 4)
 #define PTE_EXT_AP0 (1 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTE_EXT_AP1 (2 << 4)
 #define PTE_EXT_AP_UNO_SRO (0 << 4)
 #define PTE_EXT_AP_UNO_SRW (PTE_EXT_AP0)
 #define PTE_EXT_AP_URO_SRW (PTE_EXT_AP1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTE_EXT_AP_URW_SRW (PTE_EXT_AP1|PTE_EXT_AP0)
 #define PTE_EXT_TEX(x) ((x) << 6)  
 #define PTE_EXT_APX (1 << 9)  
 #define PTE_EXT_COHERENT (1 << 9)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTE_EXT_SHARED (1 << 10)  
 #define PTE_EXT_NG (1 << 11)  
-
 #define PTE_SMALL_AP_MASK (0xff << 4)
 #define PTE_SMALL_AP_UNO_SRO (0x00 << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTE_SMALL_AP_UNO_SRW (0x55 << 4)
 #define PTE_SMALL_AP_URO_SRW (0xaa << 4)
 #define PTE_SMALL_AP_URW_SRW (0xff << 4)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/pgtable.h b/libc/kernel/arch-arm/asm/pgtable.h
index cbac611..2d6d274 100644
--- a/libc/kernel/arch-arm/asm/pgtable.h
+++ b/libc/kernel/arch-arm/asm/pgtable.h
@@ -7,14 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_PGTABLE_H
 #define _ASMARM_PGTABLE_H
-
 #include <asm-generic/4level-fixup.h>
 #include <asm/proc-fns.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include "pgtable-nommu.h"
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/poll.h b/libc/kernel/arch-arm/asm/poll.h
index c5b80a5..4c0f364 100644
--- a/libc/kernel/arch-arm/asm/poll.h
+++ b/libc/kernel/arch-arm/asm/poll.h
@@ -7,30 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASMARM_POLL_H
 #define __ASMARM_POLL_H
-
 #define POLLIN 0x0001
 #define POLLPRI 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POLLOUT 0x0004
 #define POLLERR 0x0008
 #define POLLHUP 0x0010
 #define POLLNVAL 0x0020
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POLLRDNORM 0x0040
 #define POLLRDBAND 0x0080
 #define POLLWRNORM 0x0100
 #define POLLWRBAND 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POLLMSG 0x0400
 #define POLLREMOVE 0x1000
 #define POLLRDHUP 0x2000
-
 struct pollfd {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int fd;
  short events;
  short revents;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/posix_types.h b/libc/kernel/arch-arm/asm/posix_types.h
index bc85217..a09903d 100644
--- a/libc/kernel/arch-arm/asm/posix_types.h
+++ b/libc/kernel/arch-arm/asm/posix_types.h
@@ -7,64 +7,72 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_ARM_POSIX_TYPES_H
 #define __ARCH_ARM_POSIX_TYPES_H
-
 typedef unsigned long __kernel_ino_t;
 typedef unsigned short __kernel_mode_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_nlink_t;
 typedef long __kernel_off_t;
 typedef int __kernel_pid_t;
 typedef unsigned short __kernel_ipc_pid_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_uid_t;
 typedef unsigned short __kernel_gid_t;
 typedef unsigned int __kernel_size_t;
 typedef int __kernel_ssize_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int __kernel_ptrdiff_t;
 typedef long __kernel_time_t;
 typedef long __kernel_suseconds_t;
 typedef long __kernel_clock_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int __kernel_timer_t;
 typedef int __kernel_clockid_t;
 typedef int __kernel_daddr_t;
 typedef char * __kernel_caddr_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_uid16_t;
 typedef unsigned short __kernel_gid16_t;
 typedef unsigned int __kernel_uid32_t;
 typedef unsigned int __kernel_gid32_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_old_uid_t;
 typedef unsigned short __kernel_old_gid_t;
 typedef unsigned short __kernel_old_dev_t;
-
 #ifdef __GNUC__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef long long __kernel_loff_t;
 #endif
-
 typedef struct {
 #ifdef __USE_ALL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int val[2];
 #else
  int __val[2];
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __kernel_fsid_t;
-
 #if !defined(__GLIBC__) || __GLIBC__ < 2
-
 #undef __FD_SET
 #define __FD_SET(fd, fdsetp)   (((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] |= (1<<((fd) & 31)))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef __FD_CLR
 #define __FD_CLR(fd, fdsetp)   (((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] &= ~(1<<((fd) & 31)))
-
 #undef __FD_ISSET
 #define __FD_ISSET(fd, fdsetp)   ((((fd_set *)(fdsetp))->fds_bits[(fd) >> 5] & (1<<((fd) & 31))) != 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef __FD_ZERO
 #define __FD_ZERO(fdsetp)   (memset (fdsetp, 0, sizeof (*(fd_set *)(fdsetp))))
-
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/proc-fns.h b/libc/kernel/arch-arm/asm/proc-fns.h
index 4a560d0..5948c26 100644
--- a/libc/kernel/arch-arm/asm/proc-fns.h
+++ b/libc/kernel/arch-arm/asm/proc-fns.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_PROCFNS_H
 #define __ASM_PROCFNS_H
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/processor.h b/libc/kernel/arch-arm/asm/processor.h
index f93cbc1..c7fe7e9 100644
--- a/libc/kernel/arch-arm/asm/processor.h
+++ b/libc/kernel/arch-arm/asm/processor.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_PROCESSOR_H
 #define __ASM_ARM_PROCESSOR_H
-
 #define current_text_addr() ({ __label__ _l; _l: &&_l;})
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/procinfo.h b/libc/kernel/arch-arm/asm/procinfo.h
index d774e0b..7a665e7 100644
--- a/libc/kernel/arch-arm/asm/procinfo.h
+++ b/libc/kernel/arch-arm/asm/procinfo.h
@@ -7,45 +7,54 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_PROCINFO_H
 #define __ASM_PROCINFO_H
-
 #ifndef __ASSEMBLY__
-
 struct cpu_tlb_fns;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cpu_user_fns;
 struct cpu_cache_fns;
 struct processor;
-
 struct proc_info_list {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int cpu_val;
  unsigned int cpu_mask;
  unsigned long __cpu_mm_mmu_flags;
  unsigned long __cpu_io_mmu_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __cpu_flush;
  const char *arch_name;
  const char *elf_name;
  unsigned int elf_hwcap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char *cpu_name;
  struct processor *proc;
  struct cpu_tlb_fns *tlb;
  struct cpu_user_fns *user;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct cpu_cache_fns *cache;
 };
-
 #endif
-
 #define HWCAP_SWP 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HWCAP_HALF 2
 #define HWCAP_THUMB 4
 #define HWCAP_26BIT 8  
 #define HWCAP_FAST_MULT 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HWCAP_FPA 32
 #define HWCAP_VFP 64
 #define HWCAP_EDSP 128
 #define HWCAP_JAVA 256
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HWCAP_IWMMXT 512
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/ptrace.h b/libc/kernel/arch-arm/asm/ptrace.h
index a04eec3..661ba97 100644
--- a/libc/kernel/arch-arm/asm/ptrace.h
+++ b/libc/kernel/arch-arm/asm/ptrace.h
@@ -7,92 +7,98 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_PTRACE_H
 #define __ASM_ARM_PTRACE_H
-
 #define PTRACE_GETREGS 12
 #define PTRACE_SETREGS 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_GETFPREGS 14
 #define PTRACE_SETFPREGS 15
-
 #define PTRACE_GETWMMXREGS 18
 #define PTRACE_SETWMMXREGS 19
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_OLDSETOPTIONS 21
-
 #define PTRACE_GET_THREAD_AREA 22
-
 #define PTRACE_SET_SYSCALL 23
-
 #define PTRACE_GETCRUNCHREGS 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_SETCRUNCHREGS 26
-
 #define PTRACE_GETVFPREGS 27
 #define PTRACE_SETVFPREGS 28
-
 #define USR26_MODE 0x00000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIQ26_MODE 0x00000001
 #define IRQ26_MODE 0x00000002
 #define SVC26_MODE 0x00000003
 #define USR_MODE 0x00000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIQ_MODE 0x00000011
 #define IRQ_MODE 0x00000012
 #define SVC_MODE 0x00000013
 #define ABT_MODE 0x00000017
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UND_MODE 0x0000001b
 #define SYSTEM_MODE 0x0000001f
 #define MODE32_BIT 0x00000010
 #define MODE_MASK 0x0000001f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSR_T_BIT 0x00000020
 #define PSR_F_BIT 0x00000040
 #define PSR_I_BIT 0x00000080
 #define PSR_J_BIT 0x01000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSR_Q_BIT 0x08000000
 #define PSR_V_BIT 0x10000000
 #define PSR_C_BIT 0x20000000
 #define PSR_Z_BIT 0x40000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSR_N_BIT 0x80000000
 #define PCMASK 0
-
 #define PSR_f 0xff000000  
 #define PSR_s 0x00ff0000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSR_x 0x0000ff00  
 #define PSR_c 0x000000ff  
-
 #ifndef __ASSEMBLY__
-
 struct pt_regs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long uregs[18];
 };
-
 #define ARM_cpsr uregs[16]
 #define ARM_pc uregs[15]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARM_lr uregs[14]
 #define ARM_sp uregs[13]
 #define ARM_ip uregs[12]
 #define ARM_fp uregs[11]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARM_r10 uregs[10]
 #define ARM_r9 uregs[9]
 #define ARM_r8 uregs[8]
 #define ARM_r7 uregs[7]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARM_r6 uregs[6]
 #define ARM_r5 uregs[5]
 #define ARM_r4 uregs[4]
 #define ARM_r3 uregs[3]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARM_r2 uregs[2]
 #define ARM_r1 uregs[1]
 #define ARM_r0 uregs[0]
 #define ARM_ORIG_r0 uregs[17]
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pc_pointer(v)   ((v) & ~PCMASK)
-
 #define instruction_pointer(regs)   (pc_pointer((regs)->ARM_pc))
-
 #define profile_pc(regs) instruction_pointer(regs)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/arch-arm/asm/resource.h b/libc/kernel/arch-arm/asm/resource.h
index 7546dd4..182afc9 100644
--- a/libc/kernel/arch-arm/asm/resource.h
+++ b/libc/kernel/arch-arm/asm/resource.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ARM_RESOURCE_H
 #define _ARM_RESOURCE_H
-
 #include <asm-generic/resource.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/scatterlist.h b/libc/kernel/arch-arm/asm/scatterlist.h
index a2c06ca..3cc5c2a 100644
--- a/libc/kernel/arch-arm/asm/scatterlist.h
+++ b/libc/kernel/arch-arm/asm/scatterlist.h
@@ -7,22 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_SCATTERLIST_H
 #define _ASMARM_SCATTERLIST_H
-
 #include <asm/memory.h>
 #include <asm/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct scatterlist {
  struct page *page;
  unsigned int offset;
  dma_addr_t dma_address;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int length;
 };
-
 #define sg_dma_address(sg) ((sg)->dma_address)
 #define sg_dma_len(sg) ((sg)->length)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/semaphore.h b/libc/kernel/arch-arm/asm/semaphore.h
index 7c5618a..6e01eff 100644
--- a/libc/kernel/arch-arm/asm/semaphore.h
+++ b/libc/kernel/arch-arm/asm/semaphore.h
@@ -7,30 +7,34 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_SEMAPHORE_H
 #define __ASM_ARM_SEMAPHORE_H
-
 #include <linux/linkage.h>
 #include <linux/spinlock.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/wait.h>
 #include <linux/rwsem.h>
-
 #include <asm/atomic.h>
 #include <asm/locks.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct semaphore {
  atomic_t count;
  int sleepers;
  wait_queue_head_t wait;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define __SEMAPHORE_INIT(name, cnt)  {   .count = ATOMIC_INIT(cnt),   .wait = __WAIT_QUEUE_HEAD_INITIALIZER((name).wait),  }
-
 #define __DECLARE_SEMAPHORE_GENERIC(name,count)   struct semaphore name = __SEMAPHORE_INIT(name,count)
-
 #define DECLARE_MUTEX(name) __DECLARE_SEMAPHORE_GENERIC(name,1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DECLARE_MUTEX_LOCKED(name) __DECLARE_SEMAPHORE_GENERIC(name,0)
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/sembuf.h b/libc/kernel/arch-arm/asm/sembuf.h
index a2f5dd0..c072dda 100644
--- a/libc/kernel/arch-arm/asm/sembuf.h
+++ b/libc/kernel/arch-arm/asm/sembuf.h
@@ -7,20 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_SEMBUF_H
 #define _ASMARM_SEMBUF_H
-
 struct semid64_ds {
  struct ipc64_perm sem_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t sem_otime;
  unsigned long __unused1;
  __kernel_time_t sem_ctime;
  unsigned long __unused2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long sem_nsems;
  unsigned long __unused3;
  unsigned long __unused4;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/shmbuf.h b/libc/kernel/arch-arm/asm/shmbuf.h
index 1d4d78c..54b1f04 100644
--- a/libc/kernel/arch-arm/asm/shmbuf.h
+++ b/libc/kernel/arch-arm/asm/shmbuf.h
@@ -7,37 +7,48 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_SHMBUF_H
 #define _ASMARM_SHMBUF_H
-
 struct shmid64_ds {
  struct ipc64_perm shm_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t shm_segsz;
  __kernel_time_t shm_atime;
  unsigned long __unused1;
  __kernel_time_t shm_dtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __unused2;
  __kernel_time_t shm_ctime;
  unsigned long __unused3;
  __kernel_pid_t shm_cpid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_pid_t shm_lpid;
  unsigned long shm_nattch;
  unsigned long __unused4;
  unsigned long __unused5;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct shminfo64 {
  unsigned long shmmax;
  unsigned long shmmin;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long shmmni;
  unsigned long shmseg;
  unsigned long shmall;
  unsigned long __unused1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __unused2;
  unsigned long __unused3;
  unsigned long __unused4;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/shmparam.h b/libc/kernel/arch-arm/asm/shmparam.h
index ea53a8d..4061915 100644
--- a/libc/kernel/arch-arm/asm/shmparam.h
+++ b/libc/kernel/arch-arm/asm/shmparam.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_SHMPARAM_H
 #define _ASMARM_SHMPARAM_H
-
 #define SHMLBA (4 * PAGE_SIZE)  
-
 #define __ARCH_FORCE_SHMLBA
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/sigcontext.h b/libc/kernel/arch-arm/asm/sigcontext.h
index 3c4fcf3..bda2339 100644
--- a/libc/kernel/arch-arm/asm/sigcontext.h
+++ b/libc/kernel/arch-arm/asm/sigcontext.h
@@ -7,33 +7,44 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_SIGCONTEXT_H
 #define _ASMARM_SIGCONTEXT_H
-
 struct sigcontext {
  unsigned long trap_no;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long error_code;
  unsigned long oldmask;
  unsigned long arm_r0;
  unsigned long arm_r1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long arm_r2;
  unsigned long arm_r3;
  unsigned long arm_r4;
  unsigned long arm_r5;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long arm_r6;
  unsigned long arm_r7;
  unsigned long arm_r8;
  unsigned long arm_r9;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long arm_r10;
  unsigned long arm_fp;
  unsigned long arm_ip;
  unsigned long arm_sp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long arm_lr;
  unsigned long arm_pc;
  unsigned long arm_cpsr;
  unsigned long fault_address;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/siginfo.h b/libc/kernel/arch-arm/asm/siginfo.h
index 225685e..cf94065 100644
--- a/libc/kernel/arch-arm/asm/siginfo.h
+++ b/libc/kernel/arch-arm/asm/siginfo.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_SIGINFO_H
 #define _ASMARM_SIGINFO_H
-
 #include <asm-generic/siginfo.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/signal.h b/libc/kernel/arch-arm/asm/signal.h
index 212d9f1..94713b9 100644
--- a/libc/kernel/arch-arm/asm/signal.h
+++ b/libc/kernel/arch-arm/asm/signal.h
@@ -7,97 +7,107 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_SIGNAL_H
 #define _ASMARM_SIGNAL_H
-
 #include <linux/types.h>
-
 struct siginfo;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NSIG 32
 typedef unsigned long sigset_t;
-
 #define SIGHUP 1
 #define SIGINT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGQUIT 3
 #define SIGILL 4
 #define SIGTRAP 5
 #define SIGABRT 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGIOT 6
 #define SIGBUS 7
 #define SIGFPE 8
 #define SIGKILL 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGUSR1 10
 #define SIGSEGV 11
 #define SIGUSR2 12
 #define SIGPIPE 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGALRM 14
 #define SIGTERM 15
 #define SIGSTKFLT 16
 #define SIGCHLD 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGCONT 18
 #define SIGSTOP 19
 #define SIGTSTP 20
 #define SIGTTIN 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGTTOU 22
 #define SIGURG 23
 #define SIGXCPU 24
 #define SIGXFSZ 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGVTALRM 26
 #define SIGPROF 27
 #define SIGWINCH 28
 #define SIGIO 29
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGPOLL SIGIO
-
 #define SIGPWR 30
 #define SIGSYS 31
 #define SIGUNUSED 31
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGRTMIN 32
 #define SIGRTMAX _NSIG
-
 #define SIGSWI 32
-
 #define SA_NOCLDSTOP 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SA_NOCLDWAIT 0x00000002
 #define SA_SIGINFO 0x00000004
 #define SA_THIRTYTWO 0x02000000
 #define SA_RESTORER 0x04000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SA_ONSTACK 0x08000000
 #define SA_RESTART 0x10000000
 #define SA_NODEFER 0x40000000
 #define SA_RESETHAND 0x80000000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SA_NOMASK SA_NODEFER
 #define SA_ONESHOT SA_RESETHAND
-
 #define SS_ONSTACK 1
 #define SS_DISABLE 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MINSIGSTKSZ 2048
 #define SIGSTKSZ 8192
-
 #include <asm-generic/signal.h>
-
 struct sigaction {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  __sighandler_t _sa_handler;
  void (*_sa_sigaction)(int, struct siginfo *, void *);
  } _u;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sigset_t sa_mask;
  unsigned long sa_flags;
  void (*sa_restorer)(void);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define sa_handler _u._sa_handler
 #define sa_sigaction _u._sa_sigaction
-
 typedef struct sigaltstack {
  void __user *ss_sp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ss_flags;
  size_t ss_size;
 } stack_t;
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/sizes.h b/libc/kernel/arch-arm/asm/sizes.h
index 90c1c71..7867709 100644
--- a/libc/kernel/arch-arm/asm/sizes.h
+++ b/libc/kernel/arch-arm/asm/sizes.h
@@ -7,33 +7,40 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __sizes_h
 #define __sizes_h 1
-
 #define SZ_1K 0x00000400
 #define SZ_4K 0x00001000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SZ_8K 0x00002000
 #define SZ_16K 0x00004000
 #define SZ_64K 0x00010000
 #define SZ_128K 0x00020000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SZ_256K 0x00040000
 #define SZ_512K 0x00080000
-
 #define SZ_1M 0x00100000
 #define SZ_2M 0x00200000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SZ_4M 0x00400000
 #define SZ_8M 0x00800000
 #define SZ_16M 0x01000000
 #define SZ_32M 0x02000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SZ_64M 0x04000000
 #define SZ_128M 0x08000000
 #define SZ_256M 0x10000000
 #define SZ_512M 0x20000000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SZ_1G 0x40000000
 #define SZ_2G 0x80000000
-
 #endif
-
diff --git a/libc/kernel/arch-arm/asm/smp.h b/libc/kernel/arch-arm/asm/smp.h
index e6c1e41..88cd1b7 100644
--- a/libc/kernel/arch-arm/asm/smp.h
+++ b/libc/kernel/arch-arm/asm/smp.h
@@ -7,28 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_SMP_H
 #define __ASM_ARM_SMP_H
-
 #include <linux/threads.h>
 #include <linux/cpumask.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/thread_info.h>
-
 #include <asm/arch/smp.h>
-
 #error "<asm-arm/smp.h> included in non-SMP build"
-
 #define raw_smp_processor_id() (current_thread_info()->cpu)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PROC_CHANGE_PENALTY 15
-
 struct seq_file;
-
 struct secondary_data {
  unsigned long pgdir;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *stack;
 };
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/socket.h b/libc/kernel/arch-arm/asm/socket.h
index 1f0050a..a8c5000 100644
--- a/libc/kernel/arch-arm/asm/socket.h
+++ b/libc/kernel/arch-arm/asm/socket.h
@@ -7,55 +7,60 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_SOCKET_H
 #define _ASMARM_SOCKET_H
-
 #include <asm/sockios.h>
-
 #define SOL_SOCKET 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_DEBUG 1
 #define SO_REUSEADDR 2
 #define SO_TYPE 3
 #define SO_ERROR 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_DONTROUTE 5
 #define SO_BROADCAST 6
 #define SO_SNDBUF 7
 #define SO_RCVBUF 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_SNDBUFFORCE 32
 #define SO_RCVBUFFORCE 33
 #define SO_KEEPALIVE 9
 #define SO_OOBINLINE 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_NO_CHECK 11
 #define SO_PRIORITY 12
 #define SO_LINGER 13
 #define SO_BSDCOMPAT 14
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_PASSCRED 16
 #define SO_PEERCRED 17
 #define SO_RCVLOWAT 18
 #define SO_SNDLOWAT 19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_RCVTIMEO 20
 #define SO_SNDTIMEO 21
-
 #define SO_SECURITY_AUTHENTICATION 22
 #define SO_SECURITY_ENCRYPTION_TRANSPORT 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_SECURITY_ENCRYPTION_NETWORK 24
-
 #define SO_BINDTODEVICE 25
-
 #define SO_ATTACH_FILTER 26
 #define SO_DETACH_FILTER 27
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_PEERNAME 28
 #define SO_TIMESTAMP 29
 #define SCM_TIMESTAMP SO_TIMESTAMP
-
 #define SO_ACCEPTCONN 30
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_PEERSEC 31
 #define SO_PASSSEC 34
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/sockios.h b/libc/kernel/arch-arm/asm/sockios.h
index cab86b8..909463f 100644
--- a/libc/kernel/arch-arm/asm/sockios.h
+++ b/libc/kernel/arch-arm/asm/sockios.h
@@ -7,16 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_ARM_SOCKIOS_H
 #define __ARCH_ARM_SOCKIOS_H
-
 #define FIOSETOWN 0x8901
 #define SIOCSPGRP 0x8902
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIOGETOWN 0x8903
 #define SIOCGPGRP 0x8904
 #define SIOCATMARK 0x8905
 #define SIOCGSTAMP 0x8906  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/spinlock.h b/libc/kernel/arch-arm/asm/spinlock.h
index 3ae2173..a7b2858 100644
--- a/libc/kernel/arch-arm/asm/spinlock.h
+++ b/libc/kernel/arch-arm/asm/spinlock.h
@@ -7,21 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_SPINLOCK_H
 #define __ASM_SPINLOCK_H
-
 #if __LINUX_ARM_ARCH__ < 6
 #error SMP not supported on pre-ARMv6 CPUs
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define __raw_spin_is_locked(x) ((x)->lock != 0)
 #define __raw_spin_unlock_wait(lock)   do { while (__raw_spin_is_locked(lock)) cpu_relax(); } while (0)
-
 #define __raw_spin_lock_flags(lock, flags) __raw_spin_lock(lock)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rwlock_is_locked(x) (*((volatile unsigned int *)(x)) != 0)
 #define __raw_write_can_lock(x) ((x)->lock == 0x80000000)
 #define __raw_read_can_lock(x) ((x)->lock < 0x80000000)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/spinlock_types.h b/libc/kernel/arch-arm/asm/spinlock_types.h
index ee77f20..fbf33e0 100644
--- a/libc/kernel/arch-arm/asm/spinlock_types.h
+++ b/libc/kernel/arch-arm/asm/spinlock_types.h
@@ -7,25 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_SPINLOCK_TYPES_H
 #define __ASM_SPINLOCK_TYPES_H
-
 #ifndef __LINUX_SPINLOCK_TYPES_H
 #error "please don't include this file directly"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 typedef struct {
  volatile unsigned int lock;
 } raw_spinlock_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __RAW_SPIN_LOCK_UNLOCKED { 0 }
-
 typedef struct {
  volatile unsigned int lock;
 } raw_rwlock_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __RAW_RW_LOCK_UNLOCKED { 0 }
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/stat.h b/libc/kernel/arch-arm/asm/stat.h
index 49b85f9..0a6d036 100644
--- a/libc/kernel/arch-arm/asm/stat.h
+++ b/libc/kernel/arch-arm/asm/stat.h
@@ -7,87 +7,98 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_STAT_H
 #define _ASMARM_STAT_H
-
 struct __old_kernel_stat {
  unsigned short st_dev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short st_ino;
  unsigned short st_mode;
  unsigned short st_nlink;
  unsigned short st_uid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short st_gid;
  unsigned short st_rdev;
  unsigned long st_size;
  unsigned long st_atime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_mtime;
  unsigned long st_ctime;
 };
-
 #define STAT_HAVE_NSEC 
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct stat {
 #ifdef __ARMEB__
  unsigned short st_dev;
  unsigned short __pad1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
  unsigned long st_dev;
 #endif
  unsigned long st_ino;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short st_mode;
  unsigned short st_nlink;
  unsigned short st_uid;
  unsigned short st_gid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __ARMEB__
  unsigned short st_rdev;
  unsigned short __pad2;
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_rdev;
 #endif
  unsigned long st_size;
  unsigned long st_blksize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_blocks;
  unsigned long st_atime;
  unsigned long st_atime_nsec;
  unsigned long st_mtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_mtime_nsec;
  unsigned long st_ctime;
  unsigned long st_ctime_nsec;
  unsigned long __unused4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __unused5;
 };
-
 struct stat64 {
  unsigned long long st_dev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char __pad0[4];
-
 #define STAT64_HAS_BROKEN_ST_INO 1
  unsigned long __st_ino;
  unsigned int st_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int st_nlink;
-
  unsigned long st_uid;
  unsigned long st_gid;
-
  unsigned long long st_rdev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char __pad3[4];
-
  long long st_size;
  unsigned long st_blksize;
  unsigned long long st_blocks;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_atime;
  unsigned long st_atime_nsec;
-
  unsigned long st_mtime;
  unsigned long st_mtime_nsec;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_ctime;
  unsigned long st_ctime_nsec;
-
  unsigned long long st_ino;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/statfs.h b/libc/kernel/arch-arm/asm/statfs.h
index 7963eab..431fbcc 100644
--- a/libc/kernel/arch-arm/asm/statfs.h
+++ b/libc/kernel/arch-arm/asm/statfs.h
@@ -7,37 +7,48 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_STATFS_H
 #define _ASMARM_STATFS_H
-
 struct statfs {
  __u32 f_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 f_bsize;
  __u32 f_blocks;
  __u32 f_bfree;
  __u32 f_bavail;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 f_files;
  __u32 f_ffree;
  __kernel_fsid_t f_fsid;
  __u32 f_namelen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 f_frsize;
  __u32 f_spare[5];
 };
-
 struct statfs64 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 f_type;
  __u32 f_bsize;
  __u64 f_blocks;
  __u64 f_bfree;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 f_bavail;
  __u64 f_files;
  __u64 f_ffree;
  __kernel_fsid_t f_fsid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 f_namelen;
  __u32 f_frsize;
  __u32 f_spare[5];
 } __attribute__ ((packed,aligned(4)));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/suspend.h b/libc/kernel/arch-arm/asm/suspend.h
index 156c171..5dda2c0 100644
--- a/libc/kernel/arch-arm/asm/suspend.h
+++ b/libc/kernel/arch-arm/asm/suspend.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_SUSPEND_H
 #define _ASMARM_SUSPEND_H
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/system.h b/libc/kernel/arch-arm/asm/system.h
index 8e85039..5bcd4d5 100644
--- a/libc/kernel/arch-arm/asm/system.h
+++ b/libc/kernel/arch-arm/asm/system.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_SYSTEM_H
 #define __ASM_ARM_SYSTEM_H
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/termbits.h b/libc/kernel/arch-arm/asm/termbits.h
index 640bd27..4aa14d9 100644
--- a/libc/kernel/arch-arm/asm/termbits.h
+++ b/libc/kernel/arch-arm/asm/termbits.h
@@ -7,168 +7,202 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_TERMBITS_H
 #define __ASM_ARM_TERMBITS_H
-
 typedef unsigned char cc_t;
 typedef unsigned int speed_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned int tcflag_t;
-
 #define NCCS 19
 struct termios {
  tcflag_t c_iflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  tcflag_t c_oflag;
  tcflag_t c_cflag;
  tcflag_t c_lflag;
  cc_t c_line;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cc_t c_cc[NCCS];
 };
-
 #define VINTR 0
 #define VQUIT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VERASE 2
 #define VKILL 3
 #define VEOF 4
 #define VTIME 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMIN 6
 #define VSWTC 7
 #define VSTART 8
 #define VSTOP 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VSUSP 10
 #define VEOL 11
 #define VREPRINT 12
 #define VDISCARD 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VWERASE 14
 #define VLNEXT 15
 #define VEOL2 16
-
 #define IGNBRK 0000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BRKINT 0000002
 #define IGNPAR 0000004
 #define PARMRK 0000010
 #define INPCK 0000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ISTRIP 0000040
 #define INLCR 0000100
 #define IGNCR 0000200
 #define ICRNL 0000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IUCLC 0001000
 #define IXON 0002000
 #define IXANY 0004000
 #define IXOFF 0010000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IMAXBEL 0020000
 #define IUTF8 0040000
-
 #define OPOST 0000001
 #define OLCUC 0000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONLCR 0000004
 #define OCRNL 0000010
 #define ONOCR 0000020
 #define ONLRET 0000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OFILL 0000100
 #define OFDEL 0000200
 #define NLDLY 0000400
 #define NL0 0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL1 0000400
 #define CRDLY 0003000
 #define CR0 0000000
 #define CR1 0001000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CR2 0002000
 #define CR3 0003000
 #define TABDLY 0014000
 #define TAB0 0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TAB1 0004000
 #define TAB2 0010000
 #define TAB3 0014000
 #define XTABS 0014000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BSDLY 0020000
 #define BS0 0000000
 #define BS1 0020000
 #define VTDLY 0040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VT0 0000000
 #define VT1 0040000
 #define FFDLY 0100000
 #define FF0 0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF1 0100000
-
 #define CBAUD 0010017
 #define B0 0000000  
 #define B50 0000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B75 0000002
 #define B110 0000003
 #define B134 0000004
 #define B150 0000005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B200 0000006
 #define B300 0000007
 #define B600 0000010
 #define B1200 0000011
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B1800 0000012
 #define B2400 0000013
 #define B4800 0000014
 #define B9600 0000015
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B19200 0000016
 #define B38400 0000017
 #define EXTA B19200
 #define EXTB B38400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CSIZE 0000060
 #define CS5 0000000
 #define CS6 0000020
 #define CS7 0000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CS8 0000060
 #define CSTOPB 0000100
 #define CREAD 0000200
 #define PARENB 0000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PARODD 0001000
 #define HUPCL 0002000
 #define CLOCAL 0004000
 #define CBAUDEX 0010000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B57600 0010001
 #define B115200 0010002
 #define B230400 0010003
 #define B460800 0010004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B500000 0010005
 #define B576000 0010006
 #define B921600 0010007
 #define B1000000 0010010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B1152000 0010011
 #define B1500000 0010012
 #define B2000000 0010013
 #define B2500000 0010014
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B3000000 0010015
 #define B3500000 0010016
 #define B4000000 0010017
 #define CIBAUD 002003600000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMSPAR 010000000000  
 #define CRTSCTS 020000000000  
-
 #define ISIG 0000001
 #define ICANON 0000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XCASE 0000004
 #define ECHO 0000010
 #define ECHOE 0000020
 #define ECHOK 0000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECHONL 0000100
 #define NOFLSH 0000200
 #define TOSTOP 0000400
 #define ECHOCTL 0001000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECHOPRT 0002000
 #define ECHOKE 0004000
 #define FLUSHO 0010000
 #define PENDIN 0040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IEXTEN 0100000
-
 #define TCOOFF 0
 #define TCOON 1
 #define TCIOFF 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCION 3
-
 #define TCIFLUSH 0
 #define TCOFLUSH 1
 #define TCIOFLUSH 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSANOW 0
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/termios.h b/libc/kernel/arch-arm/asm/termios.h
index ba43ac2..4b80774 100644
--- a/libc/kernel/arch-arm/asm/termios.h
+++ b/libc/kernel/arch-arm/asm/termios.h
@@ -7,61 +7,74 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_TERMIOS_H
 #define __ASM_ARM_TERMIOS_H
-
 #include <asm/termbits.h>
 #include <asm/ioctls.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct winsize {
  unsigned short ws_row;
  unsigned short ws_col;
  unsigned short ws_xpixel;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ws_ypixel;
 };
-
 #define NCC 8
 struct termio {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short c_iflag;
  unsigned short c_oflag;
  unsigned short c_cflag;
  unsigned short c_lflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char c_line;
  unsigned char c_cc[NCC];
 };
-
 #define TIOCM_LE 0x001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_DTR 0x002
 #define TIOCM_RTS 0x004
 #define TIOCM_ST 0x008
 #define TIOCM_SR 0x010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_CTS 0x020
 #define TIOCM_CAR 0x040
 #define TIOCM_RNG 0x080
 #define TIOCM_DSR 0x100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_CD TIOCM_CAR
 #define TIOCM_RI TIOCM_RNG
 #define TIOCM_OUT1 0x2000
 #define TIOCM_OUT2 0x4000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_LOOP 0x8000
-
 #define N_TTY 0
 #define N_SLIP 1
 #define N_MOUSE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_PPP 3
 #define N_STRIP 4
 #define N_AX25 5
 #define N_X25 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_6PACK 7
 #define N_MASC 8  
 #define N_R3964 9  
 #define N_PROFIBUS_FDL 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_IRDA 11  
 #define N_SMSBLOCK 12  
 #define N_HDLC 13  
 #define N_SYNC_PPP 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_HCI 15  
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/thread_info.h b/libc/kernel/arch-arm/asm/thread_info.h
index a30d2dc..0956e6a 100644
--- a/libc/kernel/arch-arm/asm/thread_info.h
+++ b/libc/kernel/arch-arm/asm/thread_info.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_THREAD_INFO_H
 #define __ASM_ARM_THREAD_INFO_H
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/timex.h b/libc/kernel/arch-arm/asm/timex.h
index 110c471..2b0ff6e 100644
--- a/libc/kernel/arch-arm/asm/timex.h
+++ b/libc/kernel/arch-arm/asm/timex.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_TIMEX_H
 #define _ASMARM_TIMEX_H
-
 #include <asm/arch/timex.h>
-
 typedef unsigned long cycles_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-arm/asm/tlbflush.h b/libc/kernel/arch-arm/asm/tlbflush.h
index 70a23dc..eb5468c 100644
--- a/libc/kernel/arch-arm/asm/tlbflush.h
+++ b/libc/kernel/arch-arm/asm/tlbflush.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_TLBFLUSH_H
 #define _ASMARM_TLBFLUSH_H
-
 #define tlb_flush(tlb) ((void) tlb)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/topology.h b/libc/kernel/arch-arm/asm/topology.h
index 9eccfd4..da2c4f8 100644
--- a/libc/kernel/arch-arm/asm/topology.h
+++ b/libc/kernel/arch-arm/asm/topology.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_ARM_TOPOLOGY_H
 #define _ASM_ARM_TOPOLOGY_H
-
 #include <asm-generic/topology.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/types.h b/libc/kernel/arch-arm/asm/types.h
index 80cea8d..af1ea0c 100644
--- a/libc/kernel/arch-arm/asm/types.h
+++ b/libc/kernel/arch-arm/asm/types.h
@@ -7,30 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_TYPES_H
 #define __ASM_ARM_TYPES_H
-
 #ifndef __ASSEMBLY__
-
 typedef unsigned short umode_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __signed__ char __s8;
 typedef unsigned char __u8;
-
 typedef __signed__ short __s16;
 typedef unsigned short __u16;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __signed__ int __s32;
 typedef unsigned int __u32;
-
 #ifdef __GNUC__
 typedef __signed__ long long __s64;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned long long __u64;
 #endif
-
 #endif
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-arm/asm/uaccess.h b/libc/kernel/arch-arm/asm/uaccess.h
index 21fc3f2..6ab21d8 100644
--- a/libc/kernel/arch-arm/asm/uaccess.h
+++ b/libc/kernel/arch-arm/asm/uaccess.h
@@ -7,71 +7,84 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASMARM_UACCESS_H
 #define _ASMARM_UACCESS_H
-
 #include <linux/sched.h>
 #include <asm/errno.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/memory.h>
 #include <asm/domain.h>
 #include <asm/system.h>
-
 #define VERIFY_READ 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VERIFY_WRITE 1
-
 struct exception_table_entry
 {
  unsigned long insn, fixup;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define KERNEL_DS 0x00000000
 #define get_ds() (KERNEL_DS)
-
 #define USER_DS KERNEL_DS
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define segment_eq(a,b) (1)
 #define __addr_ok(addr) (1)
 #define __range_ok(addr,size) (0)
 #define get_fs() (KERNEL_DS)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define get_user(x,p) __get_user(x,p)
 #define put_user(x,p) __put_user(x,p)
 #define access_ok(type,addr,size) (__range_ok(addr,size) == 0)
 #define __get_user(x,ptr)  ({   long __gu_err = 0;   __get_user_err((x),(ptr),__gu_err);   __gu_err;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __get_user_error(x,ptr,err)  ({   __get_user_err((x),(ptr),err);   (void) 0;  })
 #define __get_user_err(x,ptr,err)  do {   unsigned long __gu_addr = (unsigned long)(ptr);   unsigned long __gu_val;   __chk_user_ptr(ptr);   switch (sizeof(*(ptr))) {   case 1: __get_user_asm_byte(__gu_val,__gu_addr,err); break;   case 2: __get_user_asm_half(__gu_val,__gu_addr,err); break;   case 4: __get_user_asm_word(__gu_val,__gu_addr,err); break;   default: (__gu_val) = __get_user_bad();   }   (x) = (__typeof__(*(ptr)))__gu_val;  } while (0)
 #define __get_user_asm_byte(x,addr,err)   __asm__ __volatile__(   "1:	ldrbt	%1,[%2],#0\n"   "2:\n"   "	.section .fixup,\"ax\"\n"   "	.align	2\n"   "3:	mov	%0, %3\n"   "	mov	%1, #0\n"   "	b	2b\n"   "	.previous\n"   "	.section __ex_table,\"a\"\n"   "	.align	3\n"   "	.long	1b, 3b\n"   "	.previous"   : "+r" (err), "=&r" (x)   : "r" (addr), "i" (-EFAULT)   : "cc")
 #ifndef __ARMEB__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __get_user_asm_half(x,__gu_addr,err)  ({   unsigned long __b1, __b2;   __get_user_asm_byte(__b1, __gu_addr, err);   __get_user_asm_byte(__b2, __gu_addr + 1, err);   (x) = __b1 | (__b2 << 8);  })
 #else
 #define __get_user_asm_half(x,__gu_addr,err)  ({   unsigned long __b1, __b2;   __get_user_asm_byte(__b1, __gu_addr, err);   __get_user_asm_byte(__b2, __gu_addr + 1, err);   (x) = (__b1 << 8) | __b2;  })
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __get_user_asm_word(x,addr,err)   __asm__ __volatile__(   "1:	ldrt	%1,[%2],#0\n"   "2:\n"   "	.section .fixup,\"ax\"\n"   "	.align	2\n"   "3:	mov	%0, %3\n"   "	mov	%1, #0\n"   "	b	2b\n"   "	.previous\n"   "	.section __ex_table,\"a\"\n"   "	.align	3\n"   "	.long	1b, 3b\n"   "	.previous"   : "+r" (err), "=&r" (x)   : "r" (addr), "i" (-EFAULT)   : "cc")
 #define __put_user(x,ptr)  ({   long __pu_err = 0;   __put_user_err((x),(ptr),__pu_err);   __pu_err;  })
 #define __put_user_error(x,ptr,err)  ({   __put_user_err((x),(ptr),err);   (void) 0;  })
 #define __put_user_err(x,ptr,err)  do {   unsigned long __pu_addr = (unsigned long)(ptr);   __typeof__(*(ptr)) __pu_val = (x);   __chk_user_ptr(ptr);   switch (sizeof(*(ptr))) {   case 1: __put_user_asm_byte(__pu_val,__pu_addr,err); break;   case 2: __put_user_asm_half(__pu_val,__pu_addr,err); break;   case 4: __put_user_asm_word(__pu_val,__pu_addr,err); break;   case 8: __put_user_asm_dword(__pu_val,__pu_addr,err); break;   default: __put_user_bad();   }  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __put_user_asm_byte(x,__pu_addr,err)   __asm__ __volatile__(   "1:	strbt	%1,[%2],#0\n"   "2:\n"   "	.section .fixup,\"ax\"\n"   "	.align	2\n"   "3:	mov	%0, %3\n"   "	b	2b\n"   "	.previous\n"   "	.section __ex_table,\"a\"\n"   "	.align	3\n"   "	.long	1b, 3b\n"   "	.previous"   : "+r" (err)   : "r" (x), "r" (__pu_addr), "i" (-EFAULT)   : "cc")
 #ifndef __ARMEB__
 #define __put_user_asm_half(x,__pu_addr,err)  ({   unsigned long __temp = (unsigned long)(x);   __put_user_asm_byte(__temp, __pu_addr, err);   __put_user_asm_byte(__temp >> 8, __pu_addr + 1, err);  })
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __put_user_asm_half(x,__pu_addr,err)  ({   unsigned long __temp = (unsigned long)(x);   __put_user_asm_byte(__temp >> 8, __pu_addr, err);   __put_user_asm_byte(__temp, __pu_addr + 1, err);  })
 #endif
 #define __put_user_asm_word(x,__pu_addr,err)   __asm__ __volatile__(   "1:	strt	%1,[%2],#0\n"   "2:\n"   "	.section .fixup,\"ax\"\n"   "	.align	2\n"   "3:	mov	%0, %3\n"   "	b	2b\n"   "	.previous\n"   "	.section __ex_table,\"a\"\n"   "	.align	3\n"   "	.long	1b, 3b\n"   "	.previous"   : "+r" (err)   : "r" (x), "r" (__pu_addr), "i" (-EFAULT)   : "cc")
 #ifndef __ARMEB__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __reg_oper0 "%R2"
 #define __reg_oper1 "%Q2"
 #else
 #define __reg_oper0 "%Q2"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __reg_oper1 "%R2"
 #endif
 #define __put_user_asm_dword(x,__pu_addr,err)   __asm__ __volatile__(   "1:	strt	" __reg_oper1 ", [%1], #4\n"   "2:	strt	" __reg_oper0 ", [%1], #0\n"   "3:\n"   "	.section .fixup,\"ax\"\n"   "	.align	2\n"   "4:	mov	%0, %3\n"   "	b	3b\n"   "	.previous\n"   "	.section __ex_table,\"a\"\n"   "	.align	3\n"   "	.long	1b, 4b\n"   "	.long	2b, 4b\n"   "	.previous"   : "+r" (err), "+r" (__pu_addr)   : "r" (x), "i" (-EFAULT)   : "cc")
 #define __copy_from_user(to,from,n) (memcpy(to, (void __force *)from, n), 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __copy_to_user(to,from,n) (memcpy((void __force *)to, from, n), 0)
 #define __clear_user(addr,n) (memset((void __force *)addr, 0, n), 0)
-
 #define __copy_to_user_inatomic __copy_to_user
 #define __copy_from_user_inatomic __copy_from_user
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define strlen_user(s) strnlen_user(s, ~0UL >> 1)
 #endif
diff --git a/libc/kernel/arch-arm/asm/unaligned.h b/libc/kernel/arch-arm/asm/unaligned.h
index 8b9b096..2e6612a 100644
--- a/libc/kernel/arch-arm/asm/unaligned.h
+++ b/libc/kernel/arch-arm/asm/unaligned.h
@@ -7,32 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_UNALIGNED_H
 #define __ASM_ARM_UNALIGNED_H
-
 #include <asm/types.h>
-
 #define __get_unaligned_2_le(__p)   (__p[0] | __p[1] << 8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __get_unaligned_2_be(__p)   (__p[0] << 8 | __p[1])
-
 #define __get_unaligned_4_le(__p)   (__p[0] | __p[1] << 8 | __p[2] << 16 | __p[3] << 24)
-
 #define __get_unaligned_4_be(__p)   (__p[0] << 24 | __p[1] << 16 | __p[2] << 8 | __p[3])
-
 #define __get_unaligned_le(ptr)   ({   __typeof__(*(ptr)) __v;   __u8 *__p = (__u8 *)(ptr);   switch (sizeof(*(ptr))) {   case 1: __v = *(ptr); break;   case 2: __v = __get_unaligned_2_le(__p); break;   case 4: __v = __get_unaligned_4_le(__p); break;   case 8: {   unsigned int __v1, __v2;   __v2 = __get_unaligned_4_le((__p+4));   __v1 = __get_unaligned_4_le(__p);   __v = ((unsigned long long)__v2 << 32 | __v1);   }   break;   default: __v = __bug_unaligned_x(__p); break;   }   __v;   })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __get_unaligned_be(ptr)   ({   __typeof__(*(ptr)) __v;   __u8 *__p = (__u8 *)(ptr);   switch (sizeof(*(ptr))) {   case 1: __v = *(ptr); break;   case 2: __v = __get_unaligned_2_be(__p); break;   case 4: __v = __get_unaligned_4_be(__p); break;   case 8: {   unsigned int __v1, __v2;   __v2 = __get_unaligned_4_be(__p);   __v1 = __get_unaligned_4_be((__p+4));   __v = ((unsigned long long)__v2 << 32 | __v1);   }   break;   default: __v = __bug_unaligned_x(__p); break;   }   __v;   })
-
 #define __put_unaligned_le(val,ptr)   ({   switch (sizeof(*(ptr))) {   case 1:   *(ptr) = (val);   break;   case 2: __put_unaligned_2_le((val),(__u8 *)(ptr));   break;   case 4: __put_unaligned_4_le((val),(__u8 *)(ptr));   break;   case 8: __put_unaligned_8_le((val),(__u8 *)(ptr));   break;   default: __bug_unaligned_x(ptr);   break;   }   (void) 0;   })
 #define __put_unaligned_be(val,ptr)   ({   switch (sizeof(*(ptr))) {   case 1:   *(ptr) = (val);   break;   case 2: __put_unaligned_2_be((val),(__u8 *)(ptr));   break;   case 4: __put_unaligned_4_be((val),(__u8 *)(ptr));   break;   case 8: __put_unaligned_8_be((val),(__u8 *)(ptr));   break;   default: __bug_unaligned_x(ptr);   break;   }   (void) 0;   })
 #ifndef __ARMEB__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define get_unaligned __get_unaligned_le
 #define put_unaligned __put_unaligned_le
 #else
 #define get_unaligned __get_unaligned_be
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define put_unaligned __put_unaligned_be
 #endif
 #endif
diff --git a/libc/kernel/arch-arm/asm/unistd.h b/libc/kernel/arch-arm/asm/unistd.h
index 9a30ddc..e5b89f2 100644
--- a/libc/kernel/arch-arm/asm/unistd.h
+++ b/libc/kernel/arch-arm/asm/unistd.h
@@ -7,353 +7,409 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_ARM_UNISTD_H
 #define __ASM_ARM_UNISTD_H
-
 #define __NR_OABI_SYSCALL_BASE 0x900000
-
 #if defined(__thumb__) || defined(__ARM_EABI__)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_SYSCALL_BASE 0
 #else
 #define __NR_SYSCALL_BASE __NR_OABI_SYSCALL_BASE
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_restart_syscall (__NR_SYSCALL_BASE+ 0)
 #define __NR_exit (__NR_SYSCALL_BASE+ 1)
 #define __NR_fork (__NR_SYSCALL_BASE+ 2)
 #define __NR_read (__NR_SYSCALL_BASE+ 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_write (__NR_SYSCALL_BASE+ 4)
 #define __NR_open (__NR_SYSCALL_BASE+ 5)
 #define __NR_close (__NR_SYSCALL_BASE+ 6)
-
 #define __NR_creat (__NR_SYSCALL_BASE+ 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_link (__NR_SYSCALL_BASE+ 9)
 #define __NR_unlink (__NR_SYSCALL_BASE+ 10)
 #define __NR_execve (__NR_SYSCALL_BASE+ 11)
 #define __NR_chdir (__NR_SYSCALL_BASE+ 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_time (__NR_SYSCALL_BASE+ 13)
 #define __NR_mknod (__NR_SYSCALL_BASE+ 14)
 #define __NR_chmod (__NR_SYSCALL_BASE+ 15)
 #define __NR_lchown (__NR_SYSCALL_BASE+ 16)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lseek (__NR_SYSCALL_BASE+ 19)
 #define __NR_getpid (__NR_SYSCALL_BASE+ 20)
 #define __NR_mount (__NR_SYSCALL_BASE+ 21)
 #define __NR_umount (__NR_SYSCALL_BASE+ 22)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setuid (__NR_SYSCALL_BASE+ 23)
 #define __NR_getuid (__NR_SYSCALL_BASE+ 24)
 #define __NR_stime (__NR_SYSCALL_BASE+ 25)
 #define __NR_ptrace (__NR_SYSCALL_BASE+ 26)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_alarm (__NR_SYSCALL_BASE+ 27)
-
 #define __NR_pause (__NR_SYSCALL_BASE+ 29)
 #define __NR_utime (__NR_SYSCALL_BASE+ 30)
-
 #define __NR_access (__NR_SYSCALL_BASE+ 33)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_nice (__NR_SYSCALL_BASE+ 34)
-
 #define __NR_sync (__NR_SYSCALL_BASE+ 36)
 #define __NR_kill (__NR_SYSCALL_BASE+ 37)
 #define __NR_rename (__NR_SYSCALL_BASE+ 38)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mkdir (__NR_SYSCALL_BASE+ 39)
 #define __NR_rmdir (__NR_SYSCALL_BASE+ 40)
 #define __NR_dup (__NR_SYSCALL_BASE+ 41)
 #define __NR_pipe (__NR_SYSCALL_BASE+ 42)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_times (__NR_SYSCALL_BASE+ 43)
-
 #define __NR_brk (__NR_SYSCALL_BASE+ 45)
 #define __NR_setgid (__NR_SYSCALL_BASE+ 46)
 #define __NR_getgid (__NR_SYSCALL_BASE+ 47)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_geteuid (__NR_SYSCALL_BASE+ 49)
 #define __NR_getegid (__NR_SYSCALL_BASE+ 50)
 #define __NR_acct (__NR_SYSCALL_BASE+ 51)
 #define __NR_umount2 (__NR_SYSCALL_BASE+ 52)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ioctl (__NR_SYSCALL_BASE+ 54)
 #define __NR_fcntl (__NR_SYSCALL_BASE+ 55)
-
 #define __NR_setpgid (__NR_SYSCALL_BASE+ 57)
-
 #define __NR_umask (__NR_SYSCALL_BASE+ 60)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_chroot (__NR_SYSCALL_BASE+ 61)
 #define __NR_ustat (__NR_SYSCALL_BASE+ 62)
 #define __NR_dup2 (__NR_SYSCALL_BASE+ 63)
 #define __NR_getppid (__NR_SYSCALL_BASE+ 64)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getpgrp (__NR_SYSCALL_BASE+ 65)
 #define __NR_setsid (__NR_SYSCALL_BASE+ 66)
 #define __NR_sigaction (__NR_SYSCALL_BASE+ 67)
-
 #define __NR_setreuid (__NR_SYSCALL_BASE+ 70)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setregid (__NR_SYSCALL_BASE+ 71)
 #define __NR_sigsuspend (__NR_SYSCALL_BASE+ 72)
 #define __NR_sigpending (__NR_SYSCALL_BASE+ 73)
 #define __NR_sethostname (__NR_SYSCALL_BASE+ 74)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setrlimit (__NR_SYSCALL_BASE+ 75)
 #define __NR_getrlimit (__NR_SYSCALL_BASE+ 76)  
 #define __NR_getrusage (__NR_SYSCALL_BASE+ 77)
 #define __NR_gettimeofday (__NR_SYSCALL_BASE+ 78)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_settimeofday (__NR_SYSCALL_BASE+ 79)
 #define __NR_getgroups (__NR_SYSCALL_BASE+ 80)
 #define __NR_setgroups (__NR_SYSCALL_BASE+ 81)
 #define __NR_select (__NR_SYSCALL_BASE+ 82)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_symlink (__NR_SYSCALL_BASE+ 83)
-
 #define __NR_readlink (__NR_SYSCALL_BASE+ 85)
 #define __NR_uselib (__NR_SYSCALL_BASE+ 86)
 #define __NR_swapon (__NR_SYSCALL_BASE+ 87)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_reboot (__NR_SYSCALL_BASE+ 88)
 #define __NR_readdir (__NR_SYSCALL_BASE+ 89)
 #define __NR_mmap (__NR_SYSCALL_BASE+ 90)
 #define __NR_munmap (__NR_SYSCALL_BASE+ 91)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_truncate (__NR_SYSCALL_BASE+ 92)
 #define __NR_ftruncate (__NR_SYSCALL_BASE+ 93)
 #define __NR_fchmod (__NR_SYSCALL_BASE+ 94)
 #define __NR_fchown (__NR_SYSCALL_BASE+ 95)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getpriority (__NR_SYSCALL_BASE+ 96)
 #define __NR_setpriority (__NR_SYSCALL_BASE+ 97)
-
 #define __NR_statfs (__NR_SYSCALL_BASE+ 99)
 #define __NR_fstatfs (__NR_SYSCALL_BASE+100)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_socketcall (__NR_SYSCALL_BASE+102)
 #define __NR_syslog (__NR_SYSCALL_BASE+103)
 #define __NR_setitimer (__NR_SYSCALL_BASE+104)
 #define __NR_getitimer (__NR_SYSCALL_BASE+105)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_stat (__NR_SYSCALL_BASE+106)
 #define __NR_lstat (__NR_SYSCALL_BASE+107)
 #define __NR_fstat (__NR_SYSCALL_BASE+108)
-
 #define __NR_vhangup (__NR_SYSCALL_BASE+111)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_syscall (__NR_SYSCALL_BASE+113)  
 #define __NR_wait4 (__NR_SYSCALL_BASE+114)
 #define __NR_swapoff (__NR_SYSCALL_BASE+115)
 #define __NR_sysinfo (__NR_SYSCALL_BASE+116)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ipc (__NR_SYSCALL_BASE+117)
 #define __NR_fsync (__NR_SYSCALL_BASE+118)
 #define __NR_sigreturn (__NR_SYSCALL_BASE+119)
 #define __NR_clone (__NR_SYSCALL_BASE+120)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setdomainname (__NR_SYSCALL_BASE+121)
 #define __NR_uname (__NR_SYSCALL_BASE+122)
-
 #define __NR_adjtimex (__NR_SYSCALL_BASE+124)
 #define __NR_mprotect (__NR_SYSCALL_BASE+125)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sigprocmask (__NR_SYSCALL_BASE+126)
-
 #define __NR_init_module (__NR_SYSCALL_BASE+128)
 #define __NR_delete_module (__NR_SYSCALL_BASE+129)
-
 #define __NR_quotactl (__NR_SYSCALL_BASE+131)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getpgid (__NR_SYSCALL_BASE+132)
 #define __NR_fchdir (__NR_SYSCALL_BASE+133)
 #define __NR_bdflush (__NR_SYSCALL_BASE+134)
 #define __NR_sysfs (__NR_SYSCALL_BASE+135)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_personality (__NR_SYSCALL_BASE+136)
-
 #define __NR_setfsuid (__NR_SYSCALL_BASE+138)
 #define __NR_setfsgid (__NR_SYSCALL_BASE+139)
 #define __NR__llseek (__NR_SYSCALL_BASE+140)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getdents (__NR_SYSCALL_BASE+141)
 #define __NR__newselect (__NR_SYSCALL_BASE+142)
 #define __NR_flock (__NR_SYSCALL_BASE+143)
 #define __NR_msync (__NR_SYSCALL_BASE+144)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_readv (__NR_SYSCALL_BASE+145)
 #define __NR_writev (__NR_SYSCALL_BASE+146)
 #define __NR_getsid (__NR_SYSCALL_BASE+147)
 #define __NR_fdatasync (__NR_SYSCALL_BASE+148)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR__sysctl (__NR_SYSCALL_BASE+149)
 #define __NR_mlock (__NR_SYSCALL_BASE+150)
 #define __NR_munlock (__NR_SYSCALL_BASE+151)
 #define __NR_mlockall (__NR_SYSCALL_BASE+152)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_munlockall (__NR_SYSCALL_BASE+153)
 #define __NR_sched_setparam (__NR_SYSCALL_BASE+154)
 #define __NR_sched_getparam (__NR_SYSCALL_BASE+155)
 #define __NR_sched_setscheduler (__NR_SYSCALL_BASE+156)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_getscheduler (__NR_SYSCALL_BASE+157)
 #define __NR_sched_yield (__NR_SYSCALL_BASE+158)
 #define __NR_sched_get_priority_max (__NR_SYSCALL_BASE+159)
 #define __NR_sched_get_priority_min (__NR_SYSCALL_BASE+160)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_rr_get_interval (__NR_SYSCALL_BASE+161)
 #define __NR_nanosleep (__NR_SYSCALL_BASE+162)
 #define __NR_mremap (__NR_SYSCALL_BASE+163)
 #define __NR_setresuid (__NR_SYSCALL_BASE+164)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getresuid (__NR_SYSCALL_BASE+165)
-
 #define __NR_poll (__NR_SYSCALL_BASE+168)
 #define __NR_nfsservctl (__NR_SYSCALL_BASE+169)
 #define __NR_setresgid (__NR_SYSCALL_BASE+170)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getresgid (__NR_SYSCALL_BASE+171)
 #define __NR_prctl (__NR_SYSCALL_BASE+172)
 #define __NR_rt_sigreturn (__NR_SYSCALL_BASE+173)
 #define __NR_rt_sigaction (__NR_SYSCALL_BASE+174)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigprocmask (__NR_SYSCALL_BASE+175)
 #define __NR_rt_sigpending (__NR_SYSCALL_BASE+176)
 #define __NR_rt_sigtimedwait (__NR_SYSCALL_BASE+177)
 #define __NR_rt_sigqueueinfo (__NR_SYSCALL_BASE+178)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigsuspend (__NR_SYSCALL_BASE+179)
 #define __NR_pread64 (__NR_SYSCALL_BASE+180)
 #define __NR_pwrite64 (__NR_SYSCALL_BASE+181)
 #define __NR_chown (__NR_SYSCALL_BASE+182)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getcwd (__NR_SYSCALL_BASE+183)
 #define __NR_capget (__NR_SYSCALL_BASE+184)
 #define __NR_capset (__NR_SYSCALL_BASE+185)
 #define __NR_sigaltstack (__NR_SYSCALL_BASE+186)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sendfile (__NR_SYSCALL_BASE+187)
-
 #define __NR_vfork (__NR_SYSCALL_BASE+190)
 #define __NR_ugetrlimit (__NR_SYSCALL_BASE+191)  
 #define __NR_mmap2 (__NR_SYSCALL_BASE+192)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_truncate64 (__NR_SYSCALL_BASE+193)
 #define __NR_ftruncate64 (__NR_SYSCALL_BASE+194)
 #define __NR_stat64 (__NR_SYSCALL_BASE+195)
 #define __NR_lstat64 (__NR_SYSCALL_BASE+196)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fstat64 (__NR_SYSCALL_BASE+197)
 #define __NR_lchown32 (__NR_SYSCALL_BASE+198)
 #define __NR_getuid32 (__NR_SYSCALL_BASE+199)
 #define __NR_getgid32 (__NR_SYSCALL_BASE+200)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_geteuid32 (__NR_SYSCALL_BASE+201)
 #define __NR_getegid32 (__NR_SYSCALL_BASE+202)
 #define __NR_setreuid32 (__NR_SYSCALL_BASE+203)
 #define __NR_setregid32 (__NR_SYSCALL_BASE+204)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getgroups32 (__NR_SYSCALL_BASE+205)
 #define __NR_setgroups32 (__NR_SYSCALL_BASE+206)
 #define __NR_fchown32 (__NR_SYSCALL_BASE+207)
 #define __NR_setresuid32 (__NR_SYSCALL_BASE+208)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getresuid32 (__NR_SYSCALL_BASE+209)
 #define __NR_setresgid32 (__NR_SYSCALL_BASE+210)
 #define __NR_getresgid32 (__NR_SYSCALL_BASE+211)
 #define __NR_chown32 (__NR_SYSCALL_BASE+212)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setuid32 (__NR_SYSCALL_BASE+213)
 #define __NR_setgid32 (__NR_SYSCALL_BASE+214)
 #define __NR_setfsuid32 (__NR_SYSCALL_BASE+215)
 #define __NR_setfsgid32 (__NR_SYSCALL_BASE+216)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getdents64 (__NR_SYSCALL_BASE+217)
 #define __NR_pivot_root (__NR_SYSCALL_BASE+218)
 #define __NR_mincore (__NR_SYSCALL_BASE+219)
 #define __NR_madvise (__NR_SYSCALL_BASE+220)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fcntl64 (__NR_SYSCALL_BASE+221)
-
 #define __NR_gettid (__NR_SYSCALL_BASE+224)
 #define __NR_readahead (__NR_SYSCALL_BASE+225)
 #define __NR_setxattr (__NR_SYSCALL_BASE+226)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lsetxattr (__NR_SYSCALL_BASE+227)
 #define __NR_fsetxattr (__NR_SYSCALL_BASE+228)
 #define __NR_getxattr (__NR_SYSCALL_BASE+229)
 #define __NR_lgetxattr (__NR_SYSCALL_BASE+230)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fgetxattr (__NR_SYSCALL_BASE+231)
 #define __NR_listxattr (__NR_SYSCALL_BASE+232)
 #define __NR_llistxattr (__NR_SYSCALL_BASE+233)
 #define __NR_flistxattr (__NR_SYSCALL_BASE+234)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_removexattr (__NR_SYSCALL_BASE+235)
 #define __NR_lremovexattr (__NR_SYSCALL_BASE+236)
 #define __NR_fremovexattr (__NR_SYSCALL_BASE+237)
 #define __NR_tkill (__NR_SYSCALL_BASE+238)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sendfile64 (__NR_SYSCALL_BASE+239)
 #define __NR_futex (__NR_SYSCALL_BASE+240)
 #define __NR_sched_setaffinity (__NR_SYSCALL_BASE+241)
 #define __NR_sched_getaffinity (__NR_SYSCALL_BASE+242)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_io_setup (__NR_SYSCALL_BASE+243)
 #define __NR_io_destroy (__NR_SYSCALL_BASE+244)
 #define __NR_io_getevents (__NR_SYSCALL_BASE+245)
 #define __NR_io_submit (__NR_SYSCALL_BASE+246)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_io_cancel (__NR_SYSCALL_BASE+247)
 #define __NR_exit_group (__NR_SYSCALL_BASE+248)
 #define __NR_lookup_dcookie (__NR_SYSCALL_BASE+249)
 #define __NR_epoll_create (__NR_SYSCALL_BASE+250)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_epoll_ctl (__NR_SYSCALL_BASE+251)
 #define __NR_epoll_wait (__NR_SYSCALL_BASE+252)
 #define __NR_remap_file_pages (__NR_SYSCALL_BASE+253)
-
 #define __NR_set_tid_address (__NR_SYSCALL_BASE+256)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timer_create (__NR_SYSCALL_BASE+257)
 #define __NR_timer_settime (__NR_SYSCALL_BASE+258)
 #define __NR_timer_gettime (__NR_SYSCALL_BASE+259)
 #define __NR_timer_getoverrun (__NR_SYSCALL_BASE+260)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_timer_delete (__NR_SYSCALL_BASE+261)
 #define __NR_clock_settime (__NR_SYSCALL_BASE+262)
 #define __NR_clock_gettime (__NR_SYSCALL_BASE+263)
 #define __NR_clock_getres (__NR_SYSCALL_BASE+264)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_clock_nanosleep (__NR_SYSCALL_BASE+265)
 #define __NR_statfs64 (__NR_SYSCALL_BASE+266)
 #define __NR_fstatfs64 (__NR_SYSCALL_BASE+267)
 #define __NR_tgkill (__NR_SYSCALL_BASE+268)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_utimes (__NR_SYSCALL_BASE+269)
 #define __NR_arm_fadvise64_64 (__NR_SYSCALL_BASE+270)
 #define __NR_pciconfig_iobase (__NR_SYSCALL_BASE+271)
 #define __NR_pciconfig_read (__NR_SYSCALL_BASE+272)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pciconfig_write (__NR_SYSCALL_BASE+273)
 #define __NR_mq_open (__NR_SYSCALL_BASE+274)
 #define __NR_mq_unlink (__NR_SYSCALL_BASE+275)
 #define __NR_mq_timedsend (__NR_SYSCALL_BASE+276)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mq_timedreceive (__NR_SYSCALL_BASE+277)
 #define __NR_mq_notify (__NR_SYSCALL_BASE+278)
 #define __NR_mq_getsetattr (__NR_SYSCALL_BASE+279)
 #define __NR_waitid (__NR_SYSCALL_BASE+280)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_socket (__NR_SYSCALL_BASE+281)
 #define __NR_bind (__NR_SYSCALL_BASE+282)
 #define __NR_connect (__NR_SYSCALL_BASE+283)
 #define __NR_listen (__NR_SYSCALL_BASE+284)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_accept (__NR_SYSCALL_BASE+285)
 #define __NR_getsockname (__NR_SYSCALL_BASE+286)
 #define __NR_getpeername (__NR_SYSCALL_BASE+287)
 #define __NR_socketpair (__NR_SYSCALL_BASE+288)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_send (__NR_SYSCALL_BASE+289)
 #define __NR_sendto (__NR_SYSCALL_BASE+290)
 #define __NR_recv (__NR_SYSCALL_BASE+291)
 #define __NR_recvfrom (__NR_SYSCALL_BASE+292)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_shutdown (__NR_SYSCALL_BASE+293)
 #define __NR_setsockopt (__NR_SYSCALL_BASE+294)
 #define __NR_getsockopt (__NR_SYSCALL_BASE+295)
 #define __NR_sendmsg (__NR_SYSCALL_BASE+296)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_recvmsg (__NR_SYSCALL_BASE+297)
 #define __NR_semop (__NR_SYSCALL_BASE+298)
 #define __NR_semget (__NR_SYSCALL_BASE+299)
 #define __NR_semctl (__NR_SYSCALL_BASE+300)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_msgsnd (__NR_SYSCALL_BASE+301)
 #define __NR_msgrcv (__NR_SYSCALL_BASE+302)
 #define __NR_msgget (__NR_SYSCALL_BASE+303)
 #define __NR_msgctl (__NR_SYSCALL_BASE+304)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_shmat (__NR_SYSCALL_BASE+305)
 #define __NR_shmdt (__NR_SYSCALL_BASE+306)
 #define __NR_shmget (__NR_SYSCALL_BASE+307)
 #define __NR_shmctl (__NR_SYSCALL_BASE+308)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_add_key (__NR_SYSCALL_BASE+309)
 #define __NR_request_key (__NR_SYSCALL_BASE+310)
 #define __NR_keyctl (__NR_SYSCALL_BASE+311)
 #define __NR_semtimedop (__NR_SYSCALL_BASE+312)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_vserver (__NR_SYSCALL_BASE+313)
 #define __NR_ioprio_set (__NR_SYSCALL_BASE+314)
 #define __NR_ioprio_get (__NR_SYSCALL_BASE+315)
 #define __NR_inotify_init (__NR_SYSCALL_BASE+316)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_inotify_add_watch (__NR_SYSCALL_BASE+317)
 #define __NR_inotify_rm_watch (__NR_SYSCALL_BASE+318)
 #define __NR_mbind (__NR_SYSCALL_BASE+319)
 #define __NR_get_mempolicy (__NR_SYSCALL_BASE+320)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_set_mempolicy (__NR_SYSCALL_BASE+321)
-
 #define __ARM_NR_BASE (__NR_SYSCALL_BASE+0x0f0000)
 #define __ARM_NR_breakpoint (__ARM_NR_BASE+1)
 #define __ARM_NR_cacheflush (__ARM_NR_BASE+2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARM_NR_usr26 (__ARM_NR_BASE+3)
 #define __ARM_NR_usr32 (__ARM_NR_BASE+4)
 #define __ARM_NR_set_tls (__ARM_NR_BASE+5)
-
 #if defined(__ARM_EABI__) && !defined(__KERNEL__)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef __NR_time
 #undef __NR_umount
 #undef __NR_stime
 #undef __NR_alarm
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef __NR_utime
 #undef __NR_getrlimit
 #undef __NR_select
 #undef __NR_readdir
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef __NR_mmap
 #undef __NR_socketcall
 #undef __NR_syscall
 #undef __NR_ipc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/user.h b/libc/kernel/arch-arm/asm/user.h
index d0baecd..76c4074 100644
--- a/libc/kernel/arch-arm/asm/user.h
+++ b/libc/kernel/arch-arm/asm/user.h
@@ -7,66 +7,74 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ARM_USER_H
 #define _ARM_USER_H
-
 #include <asm/page.h>
 #include <asm/ptrace.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct user_fp {
  struct fp_reg {
  unsigned int sign1:1;
  unsigned int unused:15;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int sign2:1;
  unsigned int exponent:14;
  unsigned int j:1;
  unsigned int mantissa1:31;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int mantissa0:32;
  } fpregs[8];
  unsigned int fpsr:32;
  unsigned int fpcr:32;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char ftype[8];
  unsigned int init_flag;
 };
-
 struct user{
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct pt_regs regs;
-
  int u_fpvalid;
-
  unsigned long int u_tsize;
  unsigned long int u_dsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long int u_ssize;
  unsigned long start_code;
  unsigned long start_stack;
  long int signal;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int reserved;
  struct pt_regs * u_ar0;
-
  unsigned long magic;
  char u_comm[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int u_debugreg[8];
  struct user_fp u_fp;
  struct user_fp_struct * u_fp0;
-
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #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)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct user_vfp {
  unsigned long long fpregs[32];
  unsigned long fpscr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct user_vfp_exc {
  unsigned long fpexc;
  unsigned long fpinst;
  unsigned long fpinst2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/arch-arm/asm/vga.h b/libc/kernel/arch-arm/asm/vga.h
index 7875dbf..c938da9 100644
--- a/libc/kernel/arch-arm/asm/vga.h
+++ b/libc/kernel/arch-arm/asm/vga.h
@@ -7,17 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef ASMARM_VGA_H
 #define ASMARM_VGA_H
-
 #include <asm/hardware.h>
 #include <asm/io.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VGA_MAP_MEM(x,s) (PCIMEM_BASE + (x))
-
 #define vga_readb(x) (*((volatile unsigned char *)x))
 #define vga_writeb(x,y) (*((volatile unsigned char *)y) = (x))
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/a.out.h b/libc/kernel/arch-x86/asm/a.out.h
index 6aecff7..fa287b5 100644
--- a/libc/kernel/arch-x86/asm/a.out.h
+++ b/libc/kernel/arch-x86/asm/a.out.h
@@ -7,25 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_A_OUT_H
 #define _ASM_X86_A_OUT_H
-
 struct exec
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int a_info;
  unsigned a_text;
  unsigned a_data;
  unsigned a_bss;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned a_syms;
  unsigned a_entry;
  unsigned a_trsize;
  unsigned a_drsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define N_TRSIZE(a) ((a).a_trsize)
 #define N_DRSIZE(a) ((a).a_drsize)
 #define N_SYMSIZE(a) ((a).a_syms)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/acpi.h b/libc/kernel/arch-x86/asm/acpi.h
index 0115ce9..255f7dc 100644
--- a/libc/kernel/arch-x86/asm/acpi.h
+++ b/libc/kernel/arch-x86/asm/acpi.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_ACPI_H
 #define _ASM_X86_ACPI_H
-
 #include "acpi_64.h"
-
 #include <asm/processor.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/acpi_32.h b/libc/kernel/arch-x86/asm/acpi_32.h
index fe0043c..af60c63 100644
--- a/libc/kernel/arch-x86/asm/acpi_32.h
+++ b/libc/kernel/arch-x86/asm/acpi_32.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_ACPI_H
 #define _ASM_ACPI_H
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/alternative.h b/libc/kernel/arch-x86/asm/alternative.h
index 17c1dc5..52b937b 100644
--- a/libc/kernel/arch-x86/asm/alternative.h
+++ b/libc/kernel/arch-x86/asm/alternative.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "alternative_64.h"
diff --git a/libc/kernel/arch-x86/asm/alternative_32.h b/libc/kernel/arch-x86/asm/alternative_32.h
index ef13111..5aa2088 100644
--- a/libc/kernel/arch-x86/asm/alternative_32.h
+++ b/libc/kernel/arch-x86/asm/alternative_32.h
@@ -7,32 +7,40 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_ALTERNATIVE_H
 #define _I386_ALTERNATIVE_H
-
 #include <asm/types.h>
 #include <linux/stddef.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
-
 struct alt_instr {
  u8 *instr;
  u8 *replacement;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 cpuid;
  u8 instrlen;
  u8 replacementlen;
  u8 pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct module;
 #define alternative(oldinstr, newinstr, feature)   asm volatile ("661:\n\t" oldinstr "\n662:\n"   ".section .altinstructions,\"a\"\n"   "  .align 4\n"   "  .long 661b\n"     "  .long 663f\n"     "  .byte %c0\n"     "  .byte 662b-661b\n"     "  .byte 664f-663f\n"     ".previous\n"   ".section .altinstr_replacement,\"ax\"\n"   "663:\n\t" newinstr "\n664:\n"    ".previous" :: "i" (feature) : "memory")
 #define alternative_input(oldinstr, newinstr, feature, input...)   asm volatile ("661:\n\t" oldinstr "\n662:\n"   ".section .altinstructions,\"a\"\n"   "  .align 4\n"   "  .long 661b\n"     "  .long 663f\n"     "  .byte %c0\n"     "  .byte 662b-661b\n"     "  .byte 664f-663f\n"     ".previous\n"   ".section .altinstr_replacement,\"ax\"\n"   "663:\n\t" newinstr "\n664:\n"    ".previous" :: "i" (feature), ##input)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define alternative_io(oldinstr, newinstr, feature, output, input...)   asm volatile ("661:\n\t" oldinstr "\n662:\n"   ".section .altinstructions,\"a\"\n"   "  .align 4\n"   "  .long 661b\n"     "  .long 663f\n"     "  .byte %c[feat]\n"     "  .byte 662b-661b\n"     "  .byte 664f-663f\n"     ".previous\n"   ".section .altinstr_replacement,\"ax\"\n"   "663:\n\t" newinstr "\n664:\n"     ".previous" : output : [feat] "i" (feature), ##input)
 #define ASM_OUTPUT2(a, b) a, b
 #define LOCK_PREFIX ""
-
+struct paravirt_patch_site;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __parainstructions NULL
 #define __parainstructions_end NULL
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/apic.h b/libc/kernel/arch-x86/asm/apic.h
index 5cb7181..d628eb3 100644
--- a/libc/kernel/arch-x86/asm/apic.h
+++ b/libc/kernel/arch-x86/asm/apic.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "apic_64.h"
diff --git a/libc/kernel/arch-x86/asm/apic_32.h b/libc/kernel/arch-x86/asm/apic_32.h
index 02c9d9b..ccb390b 100644
--- a/libc/kernel/arch-x86/asm/apic_32.h
+++ b/libc/kernel/arch-x86/asm/apic_32.h
@@ -7,25 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_APIC_H
 #define __ASM_APIC_H
-
 #include <linux/pm.h>
 #include <linux/delay.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/fixmap.h>
 #include <asm/apicdef.h>
 #include <asm/processor.h>
 #include <asm/system.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Dprintk(x...)
-
 #define APIC_QUIET 0
 #define APIC_VERBOSE 1
 #define APIC_DEBUG 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define apic_printk(v, s, a...) do {   if ((v) <= apic_verbosity)   printk(s, ##a);   } while (0)
-
 #define local_apic_timer_c2_ok 1
 #endif
diff --git a/libc/kernel/arch-x86/asm/apicdef.h b/libc/kernel/arch-x86/asm/apicdef.h
index bd19f5a..8890eb3 100644
--- a/libc/kernel/arch-x86/asm/apicdef.h
+++ b/libc/kernel/arch-x86/asm/apicdef.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "apicdef_64.h"
diff --git a/libc/kernel/arch-x86/asm/apicdef_32.h b/libc/kernel/arch-x86/asm/apicdef_32.h
index a4a5edb..1f1bb2f 100644
--- a/libc/kernel/arch-x86/asm/apicdef_32.h
+++ b/libc/kernel/arch-x86/asm/apicdef_32.h
@@ -7,366 +7,398 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_APICDEF_H
 #define __ASM_APICDEF_H
-
 #define APIC_DEFAULT_PHYS_BASE 0xfee00000
-
 #define APIC_ID 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_LVR 0x30
 #define APIC_LVR_MASK 0xFF00FF
 #define GET_APIC_VERSION(x) ((x)&0xFF)
 #define GET_APIC_MAXLVT(x) (((x)>>16)&0xFF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_INTEGRATED(x) ((x)&0xF0)
 #define APIC_XAPIC(x) ((x) >= 0x14)
 #define APIC_TASKPRI 0x80
 #define APIC_TPRI_MASK 0xFF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_ARBPRI 0x90
 #define APIC_ARBPRI_MASK 0xFF
 #define APIC_PROCPRI 0xA0
 #define APIC_EOI 0xB0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_EIO_ACK 0x0  
 #define APIC_RRR 0xC0
 #define APIC_LDR 0xD0
 #define APIC_LDR_MASK (0xFF<<24)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GET_APIC_LOGICAL_ID(x) (((x)>>24)&0xFF)
 #define SET_APIC_LOGICAL_ID(x) (((x)<<24))
 #define APIC_ALL_CPUS 0xFF
 #define APIC_DFR 0xE0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_DFR_CLUSTER 0x0FFFFFFFul
 #define APIC_DFR_FLAT 0xFFFFFFFFul
 #define APIC_SPIV 0xF0
 #define APIC_SPIV_FOCUS_DISABLED (1<<9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_SPIV_APIC_ENABLED (1<<8)
 #define APIC_ISR 0x100
 #define APIC_ISR_NR 0x8  
 #define APIC_TMR 0x180
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_IRR 0x200
 #define APIC_ESR 0x280
 #define APIC_ESR_SEND_CS 0x00001
 #define APIC_ESR_RECV_CS 0x00002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_ESR_SEND_ACC 0x00004
 #define APIC_ESR_RECV_ACC 0x00008
 #define APIC_ESR_SENDILL 0x00020
 #define APIC_ESR_RECVILL 0x00040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_ESR_ILLREGA 0x00080
 #define APIC_ICR 0x300
 #define APIC_DEST_SELF 0x40000
 #define APIC_DEST_ALLINC 0x80000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_DEST_ALLBUT 0xC0000
 #define APIC_ICR_RR_MASK 0x30000
 #define APIC_ICR_RR_INVALID 0x00000
 #define APIC_ICR_RR_INPROG 0x10000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_ICR_RR_VALID 0x20000
 #define APIC_INT_LEVELTRIG 0x08000
 #define APIC_INT_ASSERT 0x04000
 #define APIC_ICR_BUSY 0x01000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_DEST_LOGICAL 0x00800
 #define APIC_DM_FIXED 0x00000
 #define APIC_DM_LOWEST 0x00100
 #define APIC_DM_SMI 0x00200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_DM_REMRD 0x00300
 #define APIC_DM_NMI 0x00400
 #define APIC_DM_INIT 0x00500
 #define APIC_DM_STARTUP 0x00600
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_DM_EXTINT 0x00700
 #define APIC_VECTOR_MASK 0x000FF
 #define APIC_ICR2 0x310
 #define GET_APIC_DEST_FIELD(x) (((x)>>24)&0xFF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SET_APIC_DEST_FIELD(x) ((x)<<24)
 #define APIC_LVTT 0x320
 #define APIC_LVTTHMR 0x330
 #define APIC_LVTPC 0x340
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_LVT0 0x350
 #define APIC_LVT_TIMER_BASE_MASK (0x3<<18)
 #define GET_APIC_TIMER_BASE(x) (((x)>>18)&0x3)
 #define SET_APIC_TIMER_BASE(x) (((x)<<18))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_TIMER_BASE_CLKIN 0x0
 #define APIC_TIMER_BASE_TMBASE 0x1
 #define APIC_TIMER_BASE_DIV 0x2
 #define APIC_LVT_TIMER_PERIODIC (1<<17)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_LVT_MASKED (1<<16)
 #define APIC_LVT_LEVEL_TRIGGER (1<<15)
 #define APIC_LVT_REMOTE_IRR (1<<14)
 #define APIC_INPUT_POLARITY (1<<13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_SEND_PENDING (1<<12)
 #define APIC_MODE_MASK 0x700
 #define GET_APIC_DELIVERY_MODE(x) (((x)>>8)&0x7)
 #define SET_APIC_DELIVERY_MODE(x,y) (((x)&~0x700)|((y)<<8))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_MODE_FIXED 0x0
 #define APIC_MODE_NMI 0x4
 #define APIC_MODE_EXTINT 0x7
 #define APIC_LVT1 0x360
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_LVTERR 0x370
 #define APIC_TMICT 0x380
 #define APIC_TMCCT 0x390
 #define APIC_TDCR 0x3E0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_TDR_DIV_TMBASE (1<<2)
 #define APIC_TDR_DIV_1 0xB
 #define APIC_TDR_DIV_2 0x0
 #define APIC_TDR_DIV_4 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_TDR_DIV_8 0x2
 #define APIC_TDR_DIV_16 0x3
 #define APIC_TDR_DIV_32 0x8
 #define APIC_TDR_DIV_64 0x9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APIC_TDR_DIV_128 0xA
-
 #define APIC_BASE (fix_to_virt(FIX_APIC_BASE))
-
 #define MAX_IO_APICS 64
-
 #define u32 unsigned int
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct local_apic {
-
   struct { u32 __reserved[4]; } __reserved_01;
-
   struct { u32 __reserved[4]; } __reserved_02;
-
   struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_1 : 24,
  phys_apic_id : 4,
  __reserved_2 : 4;
  u32 __reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } id;
-
   const
  struct {
  u32 version : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __reserved_1 : 8,
  max_lvt : 8,
  __reserved_2 : 8;
  u32 __reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } version;
-
   struct { u32 __reserved[4]; } __reserved_03;
-
   struct { u32 __reserved[4]; } __reserved_04;
-
   struct { u32 __reserved[4]; } __reserved_05;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct { u32 __reserved[4]; } __reserved_06;
-
   struct {
  u32 priority : 8,
  __reserved_1 : 24;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_2[3];
  } tpr;
-
   const
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 priority : 8,
  __reserved_1 : 24;
  u32 __reserved_2[3];
  } apr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   const
  struct {
  u32 priority : 8,
  __reserved_1 : 24;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_2[3];
  } ppr;
-
   struct {
  u32 eoi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved[3];
  } eoi;
-
   struct { u32 __reserved[4]; } __reserved_07;
-
   struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_1 : 24,
  logical_dest : 8;
  u32 __reserved_2[3];
  } ldr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
  u32 __reserved_1 : 28,
  model : 4;
  u32 __reserved_2[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } dfr;
-
   struct {
  u32 spurious_vector : 8,
  apic_enabled : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  focus_cpu : 1,
  __reserved_2 : 22;
  u32 __reserved_3[3];
  } svr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
   u32 bitfield;
  u32 __reserved[3];
  } isr [8];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
   u32 bitfield;
  u32 __reserved[3];
  } tmr [8];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
   u32 bitfield;
  u32 __reserved[3];
  } irr [8];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   union {
  struct {
  u32 send_cs_error : 1,
  receive_cs_error : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  send_accept_error : 1,
  receive_accept_error : 1,
  __reserved_1 : 1,
  send_illegal_vector : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  receive_illegal_vector : 1,
  illegal_register_address : 1,
  __reserved_2 : 24;
  u32 __reserved_3[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } error_bits;
  struct {
  u32 errors;
  u32 __reserved_3[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } all_errors;
  } esr;
-
   struct { u32 __reserved[4]; } __reserved_08;
-
   struct { u32 __reserved[4]; } __reserved_09;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct { u32 __reserved[4]; } __reserved_10;
-
   struct { u32 __reserved[4]; } __reserved_11;
-
   struct { u32 __reserved[4]; } __reserved_12;
-
   struct { u32 __reserved[4]; } __reserved_13;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct { u32 __reserved[4]; } __reserved_14;
-
   struct {
  u32 vector : 8,
  delivery_mode : 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  destination_mode : 1,
  delivery_status : 1,
  __reserved_1 : 1,
  level : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  trigger : 1,
  __reserved_2 : 2,
  shorthand : 2,
  __reserved_3 : 12;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_4[3];
  } icr1;
-
   struct {
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_1 : 24,
  phys_dest : 4,
  __reserved_2 : 4;
  u32 __reserved_3 : 24,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  logical_dest : 8;
  } dest;
  u32 __reserved_4[3];
  } icr2;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
  u32 vector : 8,
  __reserved_1 : 4,
  delivery_status : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __reserved_2 : 3,
  mask : 1,
  timer_mode : 1,
  __reserved_3 : 14;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_4[3];
  } lvt_timer;
-
   struct {
  u32 vector : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  delivery_mode : 3,
  __reserved_1 : 1,
  delivery_status : 1,
  __reserved_2 : 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  mask : 1,
  __reserved_3 : 15;
  u32 __reserved_4[3];
  } lvt_thermal;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
  u32 vector : 8,
  delivery_mode : 3,
  __reserved_1 : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  delivery_status : 1,
  __reserved_2 : 3,
  mask : 1,
  __reserved_3 : 15;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_4[3];
  } lvt_pc;
-
   struct {
  u32 vector : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  delivery_mode : 3,
  __reserved_1 : 1,
  delivery_status : 1,
  polarity : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  remote_irr : 1,
  trigger : 1,
  mask : 1,
  __reserved_2 : 15;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_3[3];
  } lvt_lint0;
-
   struct {
  u32 vector : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  delivery_mode : 3,
  __reserved_1 : 1,
  delivery_status : 1,
  polarity : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  remote_irr : 1,
  trigger : 1,
  mask : 1,
  __reserved_2 : 15;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_3[3];
  } lvt_lint1;
-
   struct {
  u32 vector : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __reserved_1 : 4,
  delivery_status : 1,
  __reserved_2 : 3,
  mask : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __reserved_3 : 15;
  u32 __reserved_4[3];
  } lvt_error;
-
   struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 initial_count;
  u32 __reserved_2[3];
  } timer_icr;
-
   const
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  u32 curr_count;
  u32 __reserved_2[3];
  } timer_ccr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct { u32 __reserved[4]; } __reserved_16;
-
   struct { u32 __reserved[4]; } __reserved_17;
-
   struct { u32 __reserved[4]; } __reserved_18;
-
   struct { u32 __reserved[4]; } __reserved_19;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   struct {
  u32 divisor : 4,
  __reserved_1 : 28;
  u32 __reserved_2[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } timer_dcr;
-
   struct { u32 __reserved[4]; } __reserved_20;
-
 } __attribute__ ((packed));
-
 #undef u32
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/atomic.h b/libc/kernel/arch-x86/asm/atomic.h
index 00289cf..0c0037c 100644
--- a/libc/kernel/arch-x86/asm/atomic.h
+++ b/libc/kernel/arch-x86/asm/atomic.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "atomic_64.h"
diff --git a/libc/kernel/arch-x86/asm/atomic_32.h b/libc/kernel/arch-x86/asm/atomic_32.h
index 677aac8..355b620 100644
--- a/libc/kernel/arch-x86/asm/atomic_32.h
+++ b/libc/kernel/arch-x86/asm/atomic_32.h
@@ -7,33 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_I386_ATOMIC__
 #define __ARCH_I386_ATOMIC__
-
 #include <linux/compiler.h>
 #include <asm/processor.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/cmpxchg.h>
-
 typedef struct { int counter; } atomic_t;
-
 #define ATOMIC_INIT(i) { (i) }
-
 #define atomic_read(v) ((v)->counter)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define atomic_set(v,i) (((v)->counter) = (i))
-
 #define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new)))
 #define atomic_xchg(v, new) (xchg(&((v)->counter), (new)))
 #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define atomic_inc_return(v) (atomic_add_return(1,v))
 #define atomic_dec_return(v) (atomic_sub_return(1,v))
 #define atomic_clear_mask(mask, addr)  __asm__ __volatile__(LOCK_PREFIX "andl %0,%1"  : : "r" (~(mask)),"m" (*addr) : "memory")
 #define atomic_set_mask(mask, addr)  __asm__ __volatile__(LOCK_PREFIX "orl %0,%1"  : : "r" (mask),"m" (*(addr)) : "memory")
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define smp_mb__before_atomic_dec() barrier()
 #define smp_mb__after_atomic_dec() barrier()
 #define smp_mb__before_atomic_inc() barrier()
 #define smp_mb__after_atomic_inc() barrier()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm-generic/atomic.h>
 #endif
diff --git a/libc/kernel/arch-x86/asm/auxvec.h b/libc/kernel/arch-x86/asm/auxvec.h
index f065eb1..4fd3bc9 100644
--- a/libc/kernel/arch-x86/asm/auxvec.h
+++ b/libc/kernel/arch-x86/asm/auxvec.h
@@ -7,14 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_AUXVEC_H
 #define _ASM_X86_AUXVEC_H
-
 #ifdef __i386__
 #define AT_SYSINFO 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define AT_SYSINFO_EHDR 33
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/bitops.h b/libc/kernel/arch-x86/asm/bitops.h
index 3b58565..657534d 100644
--- a/libc/kernel/arch-x86/asm/bitops.h
+++ b/libc/kernel/arch-x86/asm/bitops.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "bitops_64.h"
diff --git a/libc/kernel/arch-x86/asm/bitops_32.h b/libc/kernel/arch-x86/asm/bitops_32.h
index fa77fe2..b17b5f9 100644
--- a/libc/kernel/arch-x86/asm/bitops_32.h
+++ b/libc/kernel/arch-x86/asm/bitops_32.h
@@ -7,24 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_BITOPS_H
 #define _I386_BITOPS_H
-
 #ifndef _LINUX_BITOPS_H
 #error only <linux/bitops.h> can be included directly
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #include <linux/compiler.h>
 #include <asm/alternative.h>
-
 #define ADDR (*(volatile long *) addr)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define smp_mb__before_clear_bit() barrier()
 #define smp_mb__after_clear_bit() barrier()
 #define test_bit(nr,addr)  (__builtin_constant_p(nr) ?   constant_test_bit((nr),(addr)) :   variable_test_bit((nr),(addr)))
 #undef ADDR
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm-generic/bitops/fls64.h>
 #endif
diff --git a/libc/kernel/arch-x86/asm/bug.h b/libc/kernel/arch-x86/asm/bug.h
index 9247022..4b3edf4 100644
--- a/libc/kernel/arch-x86/asm/bug.h
+++ b/libc/kernel/arch-x86/asm/bug.h
@@ -7,10 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_BUG_H
 #define _ASM_X86_BUG_H
-
 #include <asm-generic/bug.h>
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/byteorder.h b/libc/kernel/arch-x86/asm/byteorder.h
index a839798..98fc6b1 100644
--- a/libc/kernel/arch-x86/asm/byteorder.h
+++ b/libc/kernel/arch-x86/asm/byteorder.h
@@ -7,64 +7,68 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_BYTEORDER_H
 #define _ASM_X86_BYTEORDER_H
-
 #include <asm/types.h>
 #include <linux/compiler.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __GNUC__
-
 #ifdef __i386__
-
 static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __asm__("xchgb %b0,%h0\n\t"
  "rorl $16,%0\n\t"
  "xchgb %b0,%h0"
  :"=q" (x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  : "0" (x));
  return x;
 }
-
 static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  union {
  struct { __u32 a,b; } s;
  __u64 u;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } v;
  v.u = val;
  v.s.a = ___arch__swab32(v.s.a);
  v.s.b = ___arch__swab32(v.s.b);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __asm__("xchgl %0,%1" : "=r" (v.s.a), "=r" (v.s.b) : "0" (v.s.a), "1" (v.s.b));
  return v.u;
 }
-
 #else
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 static __inline__ __attribute_const__ __u64 ___arch__swab64(__u64 x)
 {
  __asm__("bswapq %0" : "=r" (x) : "0" (x));
  return x;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 }
-
 static __inline__ __attribute_const__ __u32 ___arch__swab32(__u32 x)
 {
  __asm__("bswapl %0" : "=r" (x) : "0" (x));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  return x;
 }
-
 #endif
-
 #define __arch__swab64(x) ___arch__swab64(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __arch__swab32(x) ___arch__swab32(x)
-
 #define __BYTEORDER_HAS_U64__
-
 #endif
-
 #include <linux/byteorder/little_endian.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/cache.h b/libc/kernel/arch-x86/asm/cache.h
index 2766a71..9c607e9 100644
--- a/libc/kernel/arch-x86/asm/cache.h
+++ b/libc/kernel/arch-x86/asm/cache.h
@@ -7,14 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ARCH_X86_CACHE_H
 #define _ARCH_X86_CACHE_H
-
 #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT)
 #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __read_mostly __attribute__((__section__(".data.read_mostly")))
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/cacheflush.h b/libc/kernel/arch-x86/asm/cacheflush.h
index 028277b..92a6458 100644
--- a/libc/kernel/arch-x86/asm/cacheflush.h
+++ b/libc/kernel/arch-x86/asm/cacheflush.h
@@ -7,28 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_CACHEFLUSH_H
 #define _ASM_X86_CACHEFLUSH_H
-
 #include <linux/mm.h>
-
 #define flush_cache_all() do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define flush_cache_mm(mm) do { } while (0)
 #define flush_cache_dup_mm(mm) do { } while (0)
 #define flush_cache_range(vma, start, end) do { } while (0)
 #define flush_cache_page(vma, vmaddr, pfn) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define flush_dcache_page(page) do { } while (0)
 #define flush_dcache_mmap_lock(mapping) do { } while (0)
 #define flush_dcache_mmap_unlock(mapping) do { } while (0)
 #define flush_icache_range(start, end) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define flush_icache_page(vma,pg) do { } while (0)
 #define flush_icache_user_range(vma,pg,adr,len) do { } while (0)
 #define flush_cache_vmap(start, end) do { } while (0)
 #define flush_cache_vunmap(start, end) do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define copy_to_user_page(vma, page, vaddr, dst, src, len)   memcpy(dst, src, len)
 #define copy_from_user_page(vma, page, vaddr, dst, src, len)   memcpy(dst, src, len)
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/cmpxchg.h b/libc/kernel/arch-x86/asm/cmpxchg.h
index de059a2..0379a49 100644
--- a/libc/kernel/arch-x86/asm/cmpxchg.h
+++ b/libc/kernel/arch-x86/asm/cmpxchg.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "cmpxchg_64.h"
diff --git a/libc/kernel/arch-x86/asm/cmpxchg_32.h b/libc/kernel/arch-x86/asm/cmpxchg_32.h
index 3632f4c..0da9b38 100644
--- a/libc/kernel/arch-x86/asm/cmpxchg_32.h
+++ b/libc/kernel/arch-x86/asm/cmpxchg_32.h
@@ -7,25 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_CMPXCHG_H
 #define __ASM_CMPXCHG_H
-
 #include <linux/bitops.h>  
-
 #define xchg(ptr,v) ((__typeof__(*(ptr)))__xchg((unsigned long)(v),(ptr),sizeof(*(ptr))))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct __xchg_dummy { unsigned long a[100]; };
 #define __xg(x) ((struct __xchg_dummy *)(x))
-
 #define ll_low(x) *(((unsigned int*)&(x))+0)
 #define ll_high(x) *(((unsigned int*)&(x))+1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define set_64bit(ptr,value)  (__builtin_constant_p(value) ?   __set_64bit_constant(ptr, value) :   __set_64bit_var(ptr, value) )
 #define _set_64bit(ptr,value)  (__builtin_constant_p(value) ?   __set_64bit(ptr, (unsigned int)(value), (unsigned int)((value)>>32ULL) ) :   __set_64bit(ptr, ll_low(value), ll_high(value)) )
-
 #define cmpxchg(ptr,o,n)  ({   __typeof__(*(ptr)) __ret;   if (likely(boot_cpu_data.x86 > 3))   __ret = __cmpxchg((ptr), (unsigned long)(o),   (unsigned long)(n), sizeof(*(ptr)));   else   __ret = cmpxchg_386((ptr), (unsigned long)(o),   (unsigned long)(n), sizeof(*(ptr)));   __ret;  })
 #define cmpxchg_local(ptr,o,n)  ({   __typeof__(*(ptr)) __ret;   if (likely(boot_cpu_data.x86 > 3))   __ret = __cmpxchg_local((ptr), (unsigned long)(o),   (unsigned long)(n), sizeof(*(ptr)));   else   __ret = cmpxchg_386((ptr), (unsigned long)(o),   (unsigned long)(n), sizeof(*(ptr)));   __ret;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cmpxchg64(ptr,o,n)  ((__typeof__(*(ptr)))__cmpxchg64((ptr),(unsigned long long)(o),  (unsigned long long)(n)))
 #define cmpxchg64_local(ptr,o,n)  ((__typeof__(*(ptr)))__cmpxchg64_local((ptr),(unsigned long long)(o),  (unsigned long long)(n)))
 #endif
diff --git a/libc/kernel/arch-x86/asm/cpufeature.h b/libc/kernel/arch-x86/asm/cpufeature.h
index 47af457..23637d1 100644
--- a/libc/kernel/arch-x86/asm/cpufeature.h
+++ b/libc/kernel/arch-x86/asm/cpufeature.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "cpufeature_64.h"
diff --git a/libc/kernel/arch-x86/asm/cpufeature_32.h b/libc/kernel/arch-x86/asm/cpufeature_32.h
index a8ebc40..d3caa6f 100644
--- a/libc/kernel/arch-x86/asm/cpufeature_32.h
+++ b/libc/kernel/arch-x86/asm/cpufeature_32.h
@@ -7,145 +7,165 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I386_CPUFEATURE_H
 #define __ASM_I386_CPUFEATURE_H
-
 #ifndef __ASSEMBLY__
 #include <linux/bitops.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #include <asm/required-features.h>
-
 #define NCAPINTS 8  
-
 #define X86_FEATURE_FPU (0*32+ 0)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_VME (0*32+ 1)  
 #define X86_FEATURE_DE (0*32+ 2)  
 #define X86_FEATURE_PSE (0*32+ 3)  
 #define X86_FEATURE_TSC (0*32+ 4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_MSR (0*32+ 5)  
 #define X86_FEATURE_PAE (0*32+ 6)  
 #define X86_FEATURE_MCE (0*32+ 7)  
 #define X86_FEATURE_CX8 (0*32+ 8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_APIC (0*32+ 9)  
 #define X86_FEATURE_SEP (0*32+11)  
 #define X86_FEATURE_MTRR (0*32+12)  
 #define X86_FEATURE_PGE (0*32+13)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_MCA (0*32+14)  
 #define X86_FEATURE_CMOV (0*32+15)  
 #define X86_FEATURE_PAT (0*32+16)  
 #define X86_FEATURE_PSE36 (0*32+17)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_PN (0*32+18)  
 #define X86_FEATURE_CLFLSH (0*32+19)  
 #define X86_FEATURE_DS (0*32+21)  
 #define X86_FEATURE_ACPI (0*32+22)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_MMX (0*32+23)  
 #define X86_FEATURE_FXSR (0*32+24)  
-
 #define X86_FEATURE_XMM (0*32+25)  
 #define X86_FEATURE_XMM2 (0*32+26)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_SELFSNOOP (0*32+27)  
 #define X86_FEATURE_HT (0*32+28)  
 #define X86_FEATURE_ACC (0*32+29)  
 #define X86_FEATURE_IA64 (0*32+30)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_SYSCALL (1*32+11)  
 #define X86_FEATURE_MP (1*32+19)  
 #define X86_FEATURE_NX (1*32+20)  
 #define X86_FEATURE_MMXEXT (1*32+22)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_RDTSCP (1*32+27)  
 #define X86_FEATURE_LM (1*32+29)  
 #define X86_FEATURE_3DNOWEXT (1*32+30)  
 #define X86_FEATURE_3DNOW (1*32+31)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_RECOVERY (2*32+ 0)  
 #define X86_FEATURE_LONGRUN (2*32+ 1)  
 #define X86_FEATURE_LRTI (2*32+ 3)  
-
 #define X86_FEATURE_CXMMX (3*32+ 0)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_K6_MTRR (3*32+ 1)  
 #define X86_FEATURE_CYRIX_ARR (3*32+ 2)  
 #define X86_FEATURE_CENTAUR_MCR (3*32+ 3)  
-
 #define X86_FEATURE_K8 (3*32+ 4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_K7 (3*32+ 5)  
 #define X86_FEATURE_P3 (3*32+ 6)  
 #define X86_FEATURE_P4 (3*32+ 7)  
 #define X86_FEATURE_CONSTANT_TSC (3*32+ 8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_UP (3*32+ 9)  
 #define X86_FEATURE_FXSAVE_LEAK (3*32+10)  
 #define X86_FEATURE_ARCH_PERFMON (3*32+11)  
 #define X86_FEATURE_PEBS (3*32+12)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_BTS (3*32+13)  
-
 #define X86_FEATURE_SYNC_RDTSC (3*32+15)  
 #define X86_FEATURE_REP_GOOD (3*32+16)  
-
 #define X86_FEATURE_XMM3 (4*32+ 0)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_MWAIT (4*32+ 3)  
 #define X86_FEATURE_DSCPL (4*32+ 4)  
 #define X86_FEATURE_EST (4*32+ 7)  
 #define X86_FEATURE_TM2 (4*32+ 8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_CID (4*32+10)  
 #define X86_FEATURE_CX16 (4*32+13)  
 #define X86_FEATURE_XTPR (4*32+14)  
 #define X86_FEATURE_DCA (4*32+18)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_XSTORE (5*32+ 2)  
 #define X86_FEATURE_XSTORE_EN (5*32+ 3)  
 #define X86_FEATURE_XCRYPT (5*32+ 6)  
 #define X86_FEATURE_XCRYPT_EN (5*32+ 7)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_ACE2 (5*32+ 8)  
 #define X86_FEATURE_ACE2_EN (5*32+ 9)  
 #define X86_FEATURE_PHE (5*32+ 10)  
 #define X86_FEATURE_PHE_EN (5*32+ 11)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_PMM (5*32+ 12)  
 #define X86_FEATURE_PMM_EN (5*32+ 13)  
-
 #define X86_FEATURE_LAHF_LM (6*32+ 0)  
 #define X86_FEATURE_CMP_LEGACY (6*32+ 1)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_FEATURE_IDA (7*32+ 0)  
-
 #define cpu_has(c, bit)   (__builtin_constant_p(bit) &&   ( (((bit)>>5)==0 && (1UL<<((bit)&31) & REQUIRED_MASK0)) ||   (((bit)>>5)==1 && (1UL<<((bit)&31) & REQUIRED_MASK1)) ||   (((bit)>>5)==2 && (1UL<<((bit)&31) & REQUIRED_MASK2)) ||   (((bit)>>5)==3 && (1UL<<((bit)&31) & REQUIRED_MASK3)) ||   (((bit)>>5)==4 && (1UL<<((bit)&31) & REQUIRED_MASK4)) ||   (((bit)>>5)==5 && (1UL<<((bit)&31) & REQUIRED_MASK5)) ||   (((bit)>>5)==6 && (1UL<<((bit)&31) & REQUIRED_MASK6)) ||   (((bit)>>5)==7 && (1UL<<((bit)&31) & REQUIRED_MASK7)) )   ? 1 :   test_bit(bit, (c)->x86_capability))
 #define boot_cpu_has(bit) cpu_has(&boot_cpu_data, bit)
-
 #define cpu_has_fpu boot_cpu_has(X86_FEATURE_FPU)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_vme boot_cpu_has(X86_FEATURE_VME)
 #define cpu_has_de boot_cpu_has(X86_FEATURE_DE)
 #define cpu_has_pse boot_cpu_has(X86_FEATURE_PSE)
 #define cpu_has_tsc boot_cpu_has(X86_FEATURE_TSC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_pae boot_cpu_has(X86_FEATURE_PAE)
 #define cpu_has_pge boot_cpu_has(X86_FEATURE_PGE)
 #define cpu_has_apic boot_cpu_has(X86_FEATURE_APIC)
 #define cpu_has_sep boot_cpu_has(X86_FEATURE_SEP)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_mtrr boot_cpu_has(X86_FEATURE_MTRR)
 #define cpu_has_mmx boot_cpu_has(X86_FEATURE_MMX)
 #define cpu_has_fxsr boot_cpu_has(X86_FEATURE_FXSR)
 #define cpu_has_xmm boot_cpu_has(X86_FEATURE_XMM)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_xmm2 boot_cpu_has(X86_FEATURE_XMM2)
 #define cpu_has_xmm3 boot_cpu_has(X86_FEATURE_XMM3)
 #define cpu_has_ht boot_cpu_has(X86_FEATURE_HT)
 #define cpu_has_mp boot_cpu_has(X86_FEATURE_MP)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_nx boot_cpu_has(X86_FEATURE_NX)
 #define cpu_has_k6_mtrr boot_cpu_has(X86_FEATURE_K6_MTRR)
 #define cpu_has_cyrix_arr boot_cpu_has(X86_FEATURE_CYRIX_ARR)
 #define cpu_has_centaur_mcr boot_cpu_has(X86_FEATURE_CENTAUR_MCR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_xstore boot_cpu_has(X86_FEATURE_XSTORE)
 #define cpu_has_xstore_enabled boot_cpu_has(X86_FEATURE_XSTORE_EN)
 #define cpu_has_xcrypt boot_cpu_has(X86_FEATURE_XCRYPT)
 #define cpu_has_xcrypt_enabled boot_cpu_has(X86_FEATURE_XCRYPT_EN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_ace2 boot_cpu_has(X86_FEATURE_ACE2)
 #define cpu_has_ace2_enabled boot_cpu_has(X86_FEATURE_ACE2_EN)
 #define cpu_has_phe boot_cpu_has(X86_FEATURE_PHE)
 #define cpu_has_phe_enabled boot_cpu_has(X86_FEATURE_PHE_EN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_pmm boot_cpu_has(X86_FEATURE_PMM)
 #define cpu_has_pmm_enabled boot_cpu_has(X86_FEATURE_PMM_EN)
 #define cpu_has_ds boot_cpu_has(X86_FEATURE_DS)
 #define cpu_has_pebs boot_cpu_has(X86_FEATURE_PEBS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_has_clflush boot_cpu_has(X86_FEATURE_CLFLSH)
 #define cpu_has_bts boot_cpu_has(X86_FEATURE_BTS)
-
 #endif
-
diff --git a/libc/kernel/arch-x86/asm/cputime.h b/libc/kernel/arch-x86/asm/cputime.h
index 0e79e0b..5035a63 100644
--- a/libc/kernel/arch-x86/asm/cputime.h
+++ b/libc/kernel/arch-x86/asm/cputime.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/cputime.h>
diff --git a/libc/kernel/arch-x86/asm/current.h b/libc/kernel/arch-x86/asm/current.h
index b53c6fe..c6b8b05 100644
--- a/libc/kernel/arch-x86/asm/current.h
+++ b/libc/kernel/arch-x86/asm/current.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "current_64.h"
diff --git a/libc/kernel/arch-x86/asm/current_32.h b/libc/kernel/arch-x86/asm/current_32.h
index f74b371..0882f79 100644
--- a/libc/kernel/arch-x86/asm/current_32.h
+++ b/libc/kernel/arch-x86/asm/current_32.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_CURRENT_H
 #define _I386_CURRENT_H
-
 #include <linux/compiler.h>
 #include <asm/percpu.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct task_struct;
-
 #define current get_current()
 #endif
diff --git a/libc/kernel/arch-x86/asm/delay.h b/libc/kernel/arch-x86/asm/delay.h
index 7cb5f74..455455a 100644
--- a/libc/kernel/arch-x86/asm/delay.h
+++ b/libc/kernel/arch-x86/asm/delay.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_DELAY_H
 #define _ASM_X86_DELAY_H
-
 #define udelay(n) (__builtin_constant_p(n) ?   ((n) > 20000 ? __bad_udelay() : __const_udelay((n) * 0x10c7ul)) :   __udelay(n))
-
 #define ndelay(n) (__builtin_constant_p(n) ?   ((n) > 20000 ? __bad_ndelay() : __const_udelay((n) * 5ul)) :   __ndelay(n))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/desc.h b/libc/kernel/arch-x86/asm/desc.h
index e9d448b..4566993 100644
--- a/libc/kernel/arch-x86/asm/desc.h
+++ b/libc/kernel/arch-x86/asm/desc.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "desc_64.h"
diff --git a/libc/kernel/arch-x86/asm/desc_32.h b/libc/kernel/arch-x86/asm/desc_32.h
index f53191c..bb98242 100644
--- a/libc/kernel/arch-x86/asm/desc_32.h
+++ b/libc/kernel/arch-x86/asm/desc_32.h
@@ -7,59 +7,70 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_DESC_H
 #define __ARCH_DESC_H
-
 #include <asm/ldt.h>
 #include <asm/segment.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
-
 #include <linux/preempt.h>
 #include <linux/smp.h>
 #include <linux/percpu.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/mmu.h>
-
 struct Xgt_desc_struct {
  unsigned short size;
  unsigned long address __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short pad;
 } __attribute__ ((packed));
-
 struct gdt_page
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct desc_struct gdt[GDT_ENTRIES];
 } __attribute__((aligned(PAGE_SIZE)));
-
 #define DESCTYPE_LDT 0x82  
 #define DESCTYPE_TSS 0x89  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DESCTYPE_TASK 0x85  
 #define DESCTYPE_INT 0x8e  
 #define DESCTYPE_TRAP 0x8f  
 #define DESCTYPE_DPL3 0x60  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DESCTYPE_S 0x10  
 #define load_TR_desc() native_load_tr_desc()
 #define load_gdt(dtr) native_load_gdt(dtr)
 #define load_idt(dtr) native_load_idt(dtr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define load_tr(tr) __asm__ __volatile("ltr %0"::"m" (tr))
 #define load_ldt(ldt) __asm__ __volatile("lldt %0"::"m" (ldt))
 #define store_gdt(dtr) native_store_gdt(dtr)
 #define store_idt(dtr) native_store_idt(dtr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define store_tr(tr) (tr = native_store_tr())
 #define store_ldt(ldt) __asm__ ("sldt %0":"=m" (ldt))
 #define load_TLS(t, cpu) native_load_tls(t, cpu)
 #define set_ldt native_set_ldt
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define write_ldt_entry(dt, entry, a, b) write_dt_entry(dt, entry, a, b)
 #define write_gdt_entry(dt, entry, a, b) write_dt_entry(dt, entry, a, b)
 #define write_idt_entry(dt, entry, a, b) write_dt_entry(dt, entry, a, b)
 #define set_tss_desc(cpu,addr) __set_tss_desc(cpu, GDT_ENTRY_TSS, addr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LDT_entry_a(info)   ((((info)->base_addr & 0x0000ffff) << 16) | ((info)->limit & 0x0ffff))
 #define LDT_entry_b(info)   (((info)->base_addr & 0xff000000) |   (((info)->base_addr & 0x00ff0000) >> 16) |   ((info)->limit & 0xf0000) |   (((info)->read_exec_only ^ 1) << 9) |   ((info)->contents << 10) |   (((info)->seg_not_present ^ 1) << 15) |   ((info)->seg_32bit << 22) |   ((info)->limit_in_pages << 23) |   ((info)->useable << 20) |   0x7000)
 #define LDT_empty(info) (  (info)->base_addr == 0 &&   (info)->limit == 0 &&   (info)->contents == 0 &&   (info)->read_exec_only == 1 &&   (info)->seg_32bit == 0 &&   (info)->limit_in_pages == 0 &&   (info)->seg_not_present == 1 &&   (info)->useable == 0 )
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GET_DESC_BASE(idx, gdt, base, lo_w, lo_b, hi_b)   movb idx*8+4(gdt), lo_b;   movb idx*8+7(gdt), hi_b;   shll $16, base;   movw idx*8+2(gdt), lo_w;
 #endif
 #endif
diff --git a/libc/kernel/arch-x86/asm/desc_defs.h b/libc/kernel/arch-x86/asm/desc_defs.h
index bf6de4a..32b46e1 100644
--- a/libc/kernel/arch-x86/asm/desc_defs.h
+++ b/libc/kernel/arch-x86/asm/desc_defs.h
@@ -7,64 +7,70 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_DESC_DEFS_H
 #define __ARCH_DESC_DEFS_H
-
 #ifndef __ASSEMBLY__
-
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct desc_struct {
  u16 limit0;
  u16 base0;
  unsigned base1 : 8, type : 4, s : 1, dpl : 2, p : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned limit : 4, avl : 1, l : 1, d : 1, g : 1, base2 : 8;
 } __attribute__((packed));
-
 struct n_desc_struct {
  unsigned int a,b;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  GATE_INTERRUPT = 0xE,
  GATE_TRAP = 0xF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  GATE_CALL = 0xC,
 };
-
 struct gate_struct {
  u16 offset_low;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u16 segment;
  unsigned ist : 3, zero0 : 5, type : 5, dpl : 2, p : 1;
  u16 offset_middle;
  u32 offset_high;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 zero1;
 } __attribute__((packed));
-
 #define PTR_LOW(x) ((unsigned long)(x) & 0xFFFF)
 #define PTR_MIDDLE(x) (((unsigned long)(x) >> 16) & 0xFFFF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTR_HIGH(x) ((unsigned long)(x) >> 32)
-
 enum {
  DESC_TSS = 0x9,
  DESC_LDT = 0x2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ldttss_desc {
  u16 limit0;
  u16 base0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned base1 : 8, type : 5, dpl : 2, p : 1;
  unsigned limit1 : 4, zero0 : 3, g : 1, base2 : 8;
  u32 base3;
  u32 zero1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 struct desc_ptr {
  unsigned short size;
  unsigned long address;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed)) ;
-
 #endif
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/div64.h b/libc/kernel/arch-x86/asm/div64.h
index 3fef43e..8641ffa 100644
--- a/libc/kernel/arch-x86/asm/div64.h
+++ b/libc/kernel/arch-x86/asm/div64.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_DIV64_H
 #define _ASM_X86_DIV64_H
-
 #include <asm-generic/div64.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/dma-mapping.h b/libc/kernel/arch-x86/asm/dma-mapping.h
index 3da1da6..5e4666c 100644
--- a/libc/kernel/arch-x86/asm/dma-mapping.h
+++ b/libc/kernel/arch-x86/asm/dma-mapping.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "dma-mapping_64.h"
diff --git a/libc/kernel/arch-x86/asm/dma-mapping_32.h b/libc/kernel/arch-x86/asm/dma-mapping_32.h
index 974a60b..6b41adf 100644
--- a/libc/kernel/arch-x86/asm/dma-mapping_32.h
+++ b/libc/kernel/arch-x86/asm/dma-mapping_32.h
@@ -7,22 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_I386_DMA_MAPPING_H
 #define _ASM_I386_DMA_MAPPING_H
-
 #include <linux/mm.h>
 #include <linux/scatterlist.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/cache.h>
 #include <asm/io.h>
 #include <asm/bug.h>
-
 #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
-
 #define dma_is_consistent(d, h) (1)
 #define ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/dma.h b/libc/kernel/arch-x86/asm/dma.h
index ae51e02..33baa8e 100644
--- a/libc/kernel/arch-x86/asm/dma.h
+++ b/libc/kernel/arch-x86/asm/dma.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "dma_64.h"
diff --git a/libc/kernel/arch-x86/asm/dma_32.h b/libc/kernel/arch-x86/asm/dma_32.h
index 9c24f5e..8b77878 100644
--- a/libc/kernel/arch-x86/asm/dma_32.h
+++ b/libc/kernel/arch-x86/asm/dma_32.h
@@ -7,84 +7,92 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_DMA_H
 #define _ASM_DMA_H
-
 #include <linux/spinlock.h>  
 #include <asm/io.h>  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/delay.h>
-
 #ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER
 #define dma_outb outb_p
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define dma_outb outb
 #endif
-
 #define dma_inb inb
-
 #define MAX_DMA_CHANNELS 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_DMA_ADDRESS (PAGE_OFFSET+0x1000000)
-
 #define IO_DMA1_BASE 0x00  
 #define IO_DMA2_BASE 0xC0  
-
 #define DMA1_CMD_REG 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA1_STAT_REG 0x08  
 #define DMA1_REQ_REG 0x09  
 #define DMA1_MASK_REG 0x0A  
 #define DMA1_MODE_REG 0x0B  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA1_CLEAR_FF_REG 0x0C  
 #define DMA1_TEMP_REG 0x0D  
 #define DMA1_RESET_REG 0x0D  
 #define DMA1_CLR_MASK_REG 0x0E  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA1_MASK_ALL_REG 0x0F  
-
 #define DMA2_CMD_REG 0xD0  
 #define DMA2_STAT_REG 0xD0  
 #define DMA2_REQ_REG 0xD2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA2_MASK_REG 0xD4  
 #define DMA2_MODE_REG 0xD6  
 #define DMA2_CLEAR_FF_REG 0xD8  
 #define DMA2_TEMP_REG 0xDA  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA2_RESET_REG 0xDA  
 #define DMA2_CLR_MASK_REG 0xDC  
 #define DMA2_MASK_ALL_REG 0xDE  
-
 #define DMA_ADDR_0 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_ADDR_1 0x02
 #define DMA_ADDR_2 0x04
 #define DMA_ADDR_3 0x06
 #define DMA_ADDR_4 0xC0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_ADDR_5 0xC4
 #define DMA_ADDR_6 0xC8
 #define DMA_ADDR_7 0xCC
-
 #define DMA_CNT_0 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_CNT_1 0x03
 #define DMA_CNT_2 0x05
 #define DMA_CNT_3 0x07
 #define DMA_CNT_4 0xC2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_CNT_5 0xC6
 #define DMA_CNT_6 0xCA
 #define DMA_CNT_7 0xCE
-
 #define DMA_PAGE_0 0x87  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_PAGE_1 0x83
 #define DMA_PAGE_2 0x81
 #define DMA_PAGE_3 0x82
 #define DMA_PAGE_5 0x8B
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_PAGE_6 0x89
 #define DMA_PAGE_7 0x8A
-
 #define DMA_MODE_READ 0x44  
 #define DMA_MODE_WRITE 0x48  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_MODE_CASCADE 0xC0  
-
 #define DMA_AUTOINIT 0x10
-
 #define isa_dma_bridge_buggy (0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/dwarf2.h b/libc/kernel/arch-x86/asm/dwarf2.h
index c937591..52c5bf7 100644
--- a/libc/kernel/arch-x86/asm/dwarf2.h
+++ b/libc/kernel/arch-x86/asm/dwarf2.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "dwarf2_64.h"
diff --git a/libc/kernel/arch-x86/asm/dwarf2_32.h b/libc/kernel/arch-x86/asm/dwarf2_32.h
index a2dc3f1..0ec1650 100644
--- a/libc/kernel/arch-x86/asm/dwarf2_32.h
+++ b/libc/kernel/arch-x86/asm/dwarf2_32.h
@@ -7,27 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _DWARF2_H
 #define _DWARF2_H
-
 #ifndef __ASSEMBLY__
 #warning "asm/dwarf2.h should be only included in pure assembly files"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define CFI_STARTPROC ignore
 #define CFI_ENDPROC ignore
 #define CFI_DEF_CFA ignore
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_DEF_CFA_REGISTER ignore
 #define CFI_DEF_CFA_OFFSET ignore
 #define CFI_ADJUST_CFA_OFFSET ignore
 #define CFI_OFFSET ignore
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_REL_OFFSET ignore
 #define CFI_REGISTER ignore
 #define CFI_RESTORE ignore
 #define CFI_REMEMBER_STATE ignore
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_RESTORE_STATE ignore
 #define CFI_UNDEFINED ignore
 #define CFI_SIGNAL_FRAME ignore
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/e820.h b/libc/kernel/arch-x86/asm/e820.h
index 8a88ff0..08d5af9 100644
--- a/libc/kernel/arch-x86/asm/e820.h
+++ b/libc/kernel/arch-x86/asm/e820.h
@@ -7,30 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_E820_H
 #define __ASM_E820_H
 #define E820MAP 0x2d0  
 #define E820MAX 128  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define E820NR 0x1e8  
-
 #define E820_RAM 1
 #define E820_RESERVED 2
 #define E820_ACPI 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define E820_NVS 4
-
 #ifndef __ASSEMBLY__
 struct e820entry {
  __u64 addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 size;
  __u32 type;
 } __attribute__((packed));
-
 struct e820map {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 nr_map;
  struct e820entry map[E820MAX];
 };
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/elf.h b/libc/kernel/arch-x86/asm/elf.h
index 6c6fbbf..ac01942 100644
--- a/libc/kernel/arch-x86/asm/elf.h
+++ b/libc/kernel/arch-x86/asm/elf.h
@@ -7,68 +7,73 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_ELF_H
 #define _ASM_X86_ELF_H
-
 #include <asm/ptrace.h>
 #include <asm/user.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/auxvec.h>
-
 typedef unsigned long elf_greg_t;
-
 #define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
 typedef elf_greg_t elf_gregset_t[ELF_NGREG];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct user_i387_struct elf_fpregset_t;
-
 #ifdef __i386__
-
 typedef struct user_fxsr_struct elf_fpxregset_t;
-
 #define R_386_NONE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_386_32 1
 #define R_386_PC32 2
 #define R_386_GOT32 3
 #define R_386_PLT32 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_386_COPY 5
 #define R_386_GLOB_DAT 6
 #define R_386_JMP_SLOT 7
 #define R_386_RELATIVE 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_386_GOTOFF 9
 #define R_386_GOTPC 10
 #define R_386_NUM 11
-
 #define ELF_CLASS ELFCLASS32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF_DATA ELFDATA2LSB
 #define ELF_ARCH EM_386
-
 #else
-
 #define R_X86_64_NONE 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_X86_64_64 1  
 #define R_X86_64_PC32 2  
 #define R_X86_64_GOT32 3  
 #define R_X86_64_PLT32 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_X86_64_COPY 5  
 #define R_X86_64_GLOB_DAT 6  
 #define R_X86_64_JUMP_SLOT 7  
 #define R_X86_64_RELATIVE 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_X86_64_GOTPCREL 9  
 #define R_X86_64_32 10  
 #define R_X86_64_32S 11  
 #define R_X86_64_16 12  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R_X86_64_PC16 13  
 #define R_X86_64_8 14  
 #define R_X86_64_PC8 15  
-
 #define R_X86_64_NUM 16
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF_CLASS ELFCLASS64
 #define ELF_DATA ELFDATA2LSB
 #define ELF_ARCH EM_X86_64
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/errno.h b/libc/kernel/arch-x86/asm/errno.h
index e8f7425..392cd94 100644
--- a/libc/kernel/arch-x86/asm/errno.h
+++ b/libc/kernel/arch-x86/asm/errno.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/errno.h>
diff --git a/libc/kernel/arch-x86/asm/fcntl.h b/libc/kernel/arch-x86/asm/fcntl.h
index 00630ad..518d3a7 100644
--- a/libc/kernel/arch-x86/asm/fcntl.h
+++ b/libc/kernel/arch-x86/asm/fcntl.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/fcntl.h>
diff --git a/libc/kernel/arch-x86/asm/fixmap.h b/libc/kernel/arch-x86/asm/fixmap.h
index 19b9cc8..363f5a3 100644
--- a/libc/kernel/arch-x86/asm/fixmap.h
+++ b/libc/kernel/arch-x86/asm/fixmap.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "fixmap_64.h"
diff --git a/libc/kernel/arch-x86/asm/fixmap_32.h b/libc/kernel/arch-x86/asm/fixmap_32.h
index 95de8a0..94a20a6 100644
--- a/libc/kernel/arch-x86/asm/fixmap_32.h
+++ b/libc/kernel/arch-x86/asm/fixmap_32.h
@@ -7,49 +7,53 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_FIXMAP_H
 #define _ASM_FIXMAP_H
-
 #define FIXADDR_USER_START __fix_to_virt(FIX_VDSO)
 #define FIXADDR_USER_END __fix_to_virt(FIX_VDSO - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
 #include <linux/kernel.h>
 #include <asm/acpi.h>
 #include <asm/apicdef.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/page.h>
-
 enum fixed_addresses {
  FIX_HOLE,
  FIX_VDSO,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FIX_DBGP_BASE,
  FIX_EARLYCON_MEM_BASE,
  __end_of_permanent_fixed_addresses,
-
 #define NR_FIX_BTMAPS 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FIX_BTMAP_END = __end_of_permanent_fixed_addresses,
  FIX_BTMAP_BEGIN = FIX_BTMAP_END + NR_FIX_BTMAPS - 1,
  FIX_WP_TEST,
  __end_of_fixed_addresses
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define set_fixmap(idx, phys)   __set_fixmap(idx, phys, PAGE_KERNEL)
-
 #define set_fixmap_nocache(idx, phys)   __set_fixmap(idx, phys, PAGE_KERNEL_NOCACHE)
-
 #define clear_fixmap(idx)   __set_fixmap(idx, 0, __pgprot(0))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIXADDR_TOP ((unsigned long)__FIXADDR_TOP)
-
 #define __FIXADDR_SIZE (__end_of_permanent_fixed_addresses << PAGE_SHIFT)
 #define __FIXADDR_BOOT_SIZE (__end_of_fixed_addresses << PAGE_SHIFT)
 #define FIXADDR_START (FIXADDR_TOP - __FIXADDR_SIZE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIXADDR_BOOT_START (FIXADDR_TOP - __FIXADDR_BOOT_SIZE)
-
 #define __fix_to_virt(x) (FIXADDR_TOP - ((x) << PAGE_SHIFT))
 #define __virt_to_fix(x) ((FIXADDR_TOP - ((x)&PAGE_MASK)) >> PAGE_SHIFT)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/genapic.h b/libc/kernel/arch-x86/asm/genapic.h
index 84e687e..9f9e505 100644
--- a/libc/kernel/arch-x86/asm/genapic.h
+++ b/libc/kernel/arch-x86/asm/genapic.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "genapic_64.h"
diff --git a/libc/kernel/arch-x86/asm/genapic_32.h b/libc/kernel/arch-x86/asm/genapic_32.h
index 07801ea..89a68b3 100644
--- a/libc/kernel/arch-x86/asm/genapic_32.h
+++ b/libc/kernel/arch-x86/asm/genapic_32.h
@@ -7,67 +7,73 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENAPIC_H
 #define _ASM_GENAPIC_H 1
-
 #include <asm/mpspec.h>
-
 struct mpc_config_translation;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mpc_config_bus;
 struct mp_config_table;
 struct mpc_config_processor;
-
 struct genapic {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *name;
  int (*probe)(void);
-
  int (*apic_id_registered)(void);
  cpumask_t (*target_cpus)(void);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int int_delivery_mode;
  int int_dest_mode;
  int ESR_DISABLE;
  int apic_destination_logical;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long (*check_apicid_used)(physid_mask_t bitmap, int apicid);
  unsigned long (*check_apicid_present)(int apicid);
  int no_balance_irq;
  int no_ioapic_check;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*init_apic_ldr)(void);
  physid_mask_t (*ioapic_phys_id_map)(physid_mask_t map);
-
  void (*setup_apic_routing)(void);
  int (*multi_timer_check)(int apic, int irq);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*apicid_to_node)(int logical_apicid);
  int (*cpu_to_logical_apicid)(int cpu);
  int (*cpu_present_to_apicid)(int mps_cpu);
  physid_mask_t (*apicid_to_cpu_present)(int phys_apicid);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*mpc_apic_id)(struct mpc_config_processor *m,
  struct mpc_config_translation *t);
  void (*setup_portio_remap)(void);
  int (*check_phys_apicid_present)(int boot_cpu_physical_apicid);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*enable_apic_mode)(void);
  u32 (*phys_pkg_id)(u32 cpuid_apic, int index_msb);
-
  void (*mpc_oem_bus_info)(struct mpc_config_bus *, char *,
  struct mpc_config_translation *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*mpc_oem_pci_bus)(struct mpc_config_bus *,
  struct mpc_config_translation *);
-
  int (*mps_oem_check)(struct mp_config_table *mpc, char *oem,
  char *productid);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*acpi_madt_oem_check)(char *oem_id, char *oem_table_id);
-
  unsigned (*get_apic_id)(unsigned long x);
  unsigned long apic_id_mask;
  unsigned int (*cpu_mask_to_apicid)(cpumask_t cpumask);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define APICFUNC(x) .x = x,
-
 #define IPIFUNC(x)
-
 #define APIC_INIT(aname, aprobe) {   .name = aname,   .probe = aprobe,   .int_delivery_mode = INT_DELIVERY_MODE,   .int_dest_mode = INT_DEST_MODE,   .no_balance_irq = NO_BALANCE_IRQ,   .ESR_DISABLE = esr_disable,   .apic_destination_logical = APIC_DEST_LOGICAL,   APICFUNC(apic_id_registered)   APICFUNC(target_cpus)   APICFUNC(check_apicid_used)   APICFUNC(check_apicid_present)   APICFUNC(init_apic_ldr)   APICFUNC(ioapic_phys_id_map)   APICFUNC(setup_apic_routing)   APICFUNC(multi_timer_check)   APICFUNC(apicid_to_node)   APICFUNC(cpu_to_logical_apicid)   APICFUNC(cpu_present_to_apicid)   APICFUNC(apicid_to_cpu_present)   APICFUNC(mpc_apic_id)   APICFUNC(setup_portio_remap)   APICFUNC(check_phys_apicid_present)   APICFUNC(mpc_oem_bus_info)   APICFUNC(mpc_oem_pci_bus)   APICFUNC(mps_oem_check)   APICFUNC(get_apic_id)   .apic_id_mask = APIC_ID_MASK,   APICFUNC(cpu_mask_to_apicid)   APICFUNC(acpi_madt_oem_check)   IPIFUNC(send_IPI_mask)   IPIFUNC(send_IPI_allbutself)   IPIFUNC(send_IPI_all)   APICFUNC(enable_apic_mode)   APICFUNC(phys_pkg_id)   }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/hardirq.h b/libc/kernel/arch-x86/asm/hardirq.h
index ee224f1..c8c4e65 100644
--- a/libc/kernel/arch-x86/asm/hardirq.h
+++ b/libc/kernel/arch-x86/asm/hardirq.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "hardirq_64.h"
diff --git a/libc/kernel/arch-x86/asm/hardirq_32.h b/libc/kernel/arch-x86/asm/hardirq_32.h
index b682f66..c1ee64f 100644
--- a/libc/kernel/arch-x86/asm/hardirq_32.h
+++ b/libc/kernel/arch-x86/asm/hardirq_32.h
@@ -7,30 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_HARDIRQ_H
 #define __ASM_HARDIRQ_H
-
 #include <linux/threads.h>
 #include <linux/irq.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  unsigned int __softirq_pending;
  unsigned long idle_timestamp;
  unsigned int __nmi_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int apic_timer_irqs;
  unsigned int irq0_irqs;
  unsigned int irq_resched_count;
  unsigned int irq_call_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int irq_tlb_count;
  unsigned int irq_thermal_count;
  unsigned int irq_spurious_count;
 } ____cacheline_aligned irq_cpustat_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_IRQ_STAT
 #define __IRQ_STAT(cpu, member) (per_cpu(irq_stat, cpu).member)
-
 #include <linux/irq_cpustat.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/highmem.h b/libc/kernel/arch-x86/asm/highmem.h
index f738851..c669819 100644
--- a/libc/kernel/arch-x86/asm/highmem.h
+++ b/libc/kernel/arch-x86/asm/highmem.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_HIGHMEM_H
 #define _ASM_HIGHMEM_H
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/hw_irq.h b/libc/kernel/arch-x86/asm/hw_irq.h
index ed937c7..eb2a64a 100644
--- a/libc/kernel/arch-x86/asm/hw_irq.h
+++ b/libc/kernel/arch-x86/asm/hw_irq.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "hw_irq_64.h"
diff --git a/libc/kernel/arch-x86/asm/hw_irq_32.h b/libc/kernel/arch-x86/asm/hw_irq_32.h
index 6f584fc..44fcd47 100644
--- a/libc/kernel/arch-x86/asm/hw_irq_32.h
+++ b/libc/kernel/arch-x86/asm/hw_irq_32.h
@@ -7,18 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_HW_IRQ_H
 #define _ASM_HW_IRQ_H
-
 #include <linux/profile.h>
 #include <asm/atomic.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/irq.h>
 #include <asm/sections.h>
-
 #define NMI_VECTOR 0x02
-
 #define IO_APIC_IRQ(x) (((x) >= 16) || ((1<<(x)) & io_apic_irqs))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/i387.h b/libc/kernel/arch-x86/asm/i387.h
index 2692557..07d579d 100644
--- a/libc/kernel/arch-x86/asm/i387.h
+++ b/libc/kernel/arch-x86/asm/i387.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "i387_64.h"
diff --git a/libc/kernel/arch-x86/asm/i387_32.h b/libc/kernel/arch-x86/asm/i387_32.h
index 8563fb9..4543da5 100644
--- a/libc/kernel/arch-x86/asm/i387_32.h
+++ b/libc/kernel/arch-x86/asm/i387_32.h
@@ -7,27 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I386_I387_H
 #define __ASM_I386_I387_H
-
 #include <linux/sched.h>
 #include <linux/init.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/kernel_stat.h>
 #include <asm/processor.h>
 #include <asm/sigcontext.h>
 #include <asm/user.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define restore_fpu(tsk)   alternative_input(   "nop ; frstor %1",   "fxrstor %1",   X86_FEATURE_FXSR,   "m" ((tsk)->thread.i387.fxsave))
-
 #define kernel_fpu_end() do { stts(); preempt_enable(); } while(0)
-
 #define safe_address (kstat_cpu(0).cpustat.user)
-
 #define __unlazy_fpu( tsk ) do {   if (task_thread_info(tsk)->status & TS_USEDFPU) {   __save_init_fpu(tsk);   stts();   } else   tsk->fpu_counter = 0;  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __clear_fpu( tsk )  do {   if (task_thread_info(tsk)->status & TS_USEDFPU) {   asm volatile("fnclex ; fwait");   task_thread_info(tsk)->status &= ~TS_USEDFPU;   stts();   }  } while (0)
 #define unlazy_fpu( tsk ) do {   preempt_disable();   __unlazy_fpu(tsk);   preempt_enable();  } while (0)
 #define clear_fpu( tsk ) do {   preempt_disable();   __clear_fpu( tsk );   preempt_enable();  } while (0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/i8253.h b/libc/kernel/arch-x86/asm/i8253.h
index 93b1d1a..576a356 100644
--- a/libc/kernel/arch-x86/asm/i8253.h
+++ b/libc/kernel/arch-x86/asm/i8253.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I8253_H__
 #define __ASM_I8253_H__
-
 #define PIT_MODE 0x43
 #define PIT_CH0 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PIT_CH2 0x42
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/i8259.h b/libc/kernel/arch-x86/asm/i8259.h
index c2366ea..dc7e786 100644
--- a/libc/kernel/arch-x86/asm/i8259.h
+++ b/libc/kernel/arch-x86/asm/i8259.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I8259_H__
 #define __ASM_I8259_H__
-
 #define __byte(x,y) (((unsigned char *) &(y))[x])
 #define cached_master_mask (__byte(0, cached_irq_mask))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cached_slave_mask (__byte(1, cached_irq_mask))
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/ia32_unistd.h b/libc/kernel/arch-x86/asm/ia32_unistd.h
index 848d228..2cb53d0 100644
--- a/libc/kernel/arch-x86/asm/ia32_unistd.h
+++ b/libc/kernel/arch-x86/asm/ia32_unistd.h
@@ -7,16 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_64_IA32_UNISTD_H_
 #define _ASM_X86_64_IA32_UNISTD_H_
-
 #define __NR_ia32_restart_syscall 0
 #define __NR_ia32_exit 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ia32_read 3
 #define __NR_ia32_write 4
 #define __NR_ia32_sigreturn 119
 #define __NR_ia32_rt_sigreturn 173
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/io.h b/libc/kernel/arch-x86/asm/io.h
index ea52e66..11f4db4 100644
--- a/libc/kernel/arch-x86/asm/io.h
+++ b/libc/kernel/arch-x86/asm/io.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "io_64.h"
diff --git a/libc/kernel/arch-x86/asm/io_32.h b/libc/kernel/arch-x86/asm/io_32.h
index f7e0025..e0615be 100644
--- a/libc/kernel/arch-x86/asm/io_32.h
+++ b/libc/kernel/arch-x86/asm/io_32.h
@@ -7,21 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_IO_H
 #define _ASM_IO_H
-
 #include <linux/string.h>
 #include <linux/compiler.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IO_SPACE_LIMIT 0xffff
-
 #define XQUAD_PORTIO_BASE 0xfe400000
 #define XQUAD_PORTIO_QUAD 0x40000  
-
 #ifdef REALLY_SLOW_IO
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define __BUILDIO(bwl,bw,type)  static inline void out##bwl(unsigned type value, int port) {   out##bwl##_local(value, port);  }  static inline unsigned type in##bwl(int port) {   return in##bwl##_local(port);  }
 #define BUILDIO(bwl,bw,type)  static inline void out##bwl##_local(unsigned type value, int port) {   __asm__ __volatile__("out" #bwl " %" #bw "0, %w1" : : "a"(value), "Nd"(port));  }  static inline unsigned type in##bwl##_local(int port) {   unsigned type value;   __asm__ __volatile__("in" #bwl " %w1, %" #bw "0" : "=a"(value) : "Nd"(port));   return value;  }  static inline void out##bwl##_local_p(unsigned type value, int port) {   out##bwl##_local(value, port);   slow_down_io();  }  static inline unsigned type in##bwl##_local_p(int port) {   unsigned type value = in##bwl##_local(port);   slow_down_io();   return value;  }  __BUILDIO(bwl,bw,type)  static inline void out##bwl##_p(unsigned type value, int port) {   out##bwl(value, port);   slow_down_io();  }  static inline unsigned type in##bwl##_p(int port) {   unsigned type value = in##bwl(port);   slow_down_io();   return value;  }  static inline void outs##bwl(int port, const void *addr, unsigned long count) {   __asm__ __volatile__("rep; outs" #bwl : "+S"(addr), "+c"(count) : "d"(port));  }  static inline void ins##bwl(int port, void *addr, unsigned long count) {   __asm__ __volatile__("rep; ins" #bwl : "+D"(addr), "+c"(count) : "d"(port));  }
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/io_apic.h b/libc/kernel/arch-x86/asm/io_apic.h
index ed608d3..03630cf 100644
--- a/libc/kernel/arch-x86/asm/io_apic.h
+++ b/libc/kernel/arch-x86/asm/io_apic.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "io_apic_64.h"
diff --git a/libc/kernel/arch-x86/asm/io_apic_32.h b/libc/kernel/arch-x86/asm/io_apic_32.h
index cc858a3..1cd4401 100644
--- a/libc/kernel/arch-x86/asm/io_apic_32.h
+++ b/libc/kernel/arch-x86/asm/io_apic_32.h
@@ -7,90 +7,103 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_IO_APIC_H
 #define __ASM_IO_APIC_H
-
 #include <asm/types.h>
 #include <asm/mpspec.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/apicdef.h>
-
 union IO_APIC_reg_00 {
  u32 raw;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_2 : 14,
  LTS : 1,
  delivery_type : 1,
  __reserved_1 : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ID : 8;
  } __attribute__ ((packed)) bits;
 };
-
 union IO_APIC_reg_01 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 raw;
  struct {
  u32 version : 8,
  __reserved_2 : 7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PRQ : 1,
  entries : 8,
  __reserved_1 : 8;
  } __attribute__ ((packed)) bits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 union IO_APIC_reg_02 {
  u32 raw;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 __reserved_2 : 24,
  arbitration : 4,
  __reserved_1 : 4;
  } __attribute__ ((packed)) bits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 union IO_APIC_reg_03 {
  u32 raw;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 boot_DT : 1,
  __reserved_1 : 31;
  } __attribute__ ((packed)) bits;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ioapic_irq_destination_types {
  dest_Fixed = 0,
  dest_LowestPrio = 1,
  dest_SMI = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  dest__reserved_1 = 3,
  dest_NMI = 4,
  dest_INIT = 5,
  dest__reserved_2 = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  dest_ExtINT = 7
 };
-
 struct IO_APIC_route_entry {
  __u32 vector : 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  delivery_mode : 3,
  dest_mode : 1,
  delivery_status : 1,
  polarity : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  irr : 1,
  trigger : 1,
  mask : 1,
  __reserved_2 : 15;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union { struct { __u32
  __reserved_1 : 24,
  physical_dest : 4,
  __reserved_2 : 4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } physical;
-
  struct { __u32
  __reserved_1 : 24,
  logical_dest : 8;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } logical;
  } dest;
-
 } __attribute__ ((packed));
-
 #define io_apic_assign_pci_irqs 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/ioctl.h b/libc/kernel/arch-x86/asm/ioctl.h
index 6e446b6..7b7bd37 100644
--- a/libc/kernel/arch-x86/asm/ioctl.h
+++ b/libc/kernel/arch-x86/asm/ioctl.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/ioctl.h>
diff --git a/libc/kernel/arch-x86/asm/ioctls.h b/libc/kernel/arch-x86/asm/ioctls.h
index 3aedc04..9eccb2b 100644
--- a/libc/kernel/arch-x86/asm/ioctls.h
+++ b/libc/kernel/arch-x86/asm/ioctls.h
@@ -7,89 +7,107 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_IOCTLS_H
 #define _ASM_X86_IOCTLS_H
-
 #include <asm/ioctl.h>
-
 #define TCGETS 0x5401
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSETS 0x5402  
 #define TCSETSW 0x5403
 #define TCSETSF 0x5404
 #define TCGETA 0x5405
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSETA 0x5406
 #define TCSETAW 0x5407
 #define TCSETAF 0x5408
 #define TCSBRK 0x5409
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCXONC 0x540A
 #define TCFLSH 0x540B
 #define TIOCEXCL 0x540C
 #define TIOCNXCL 0x540D
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSCTTY 0x540E
 #define TIOCGPGRP 0x540F
 #define TIOCSPGRP 0x5410
 #define TIOCOUTQ 0x5411
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSTI 0x5412
 #define TIOCGWINSZ 0x5413
 #define TIOCSWINSZ 0x5414
 #define TIOCMGET 0x5415
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCMBIS 0x5416
 #define TIOCMBIC 0x5417
 #define TIOCMSET 0x5418
 #define TIOCGSOFTCAR 0x5419
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSSOFTCAR 0x541A
 #define FIONREAD 0x541B
 #define TIOCINQ FIONREAD
 #define TIOCLINUX 0x541C
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCCONS 0x541D
 #define TIOCGSERIAL 0x541E
 #define TIOCSSERIAL 0x541F
 #define TIOCPKT 0x5420
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIONBIO 0x5421
 #define TIOCNOTTY 0x5422
 #define TIOCSETD 0x5423
 #define TIOCGETD 0x5424
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSBRKP 0x5425  
-
 #define TIOCSBRK 0x5427  
 #define TIOCCBRK 0x5428  
 #define TIOCGSID 0x5429  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCGETS2 _IOR('T',0x2A, struct termios2)
 #define TCSETS2 _IOW('T',0x2B, struct termios2)
 #define TCSETSW2 _IOW('T',0x2C, struct termios2)
 #define TCSETSF2 _IOW('T',0x2D, struct termios2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGPTN _IOR('T',0x30, unsigned int)  
 #define TIOCSPTLCK _IOW('T',0x31, int)  
-
 #define FIONCLEX 0x5450
 #define FIOCLEX 0x5451
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIOASYNC 0x5452
 #define TIOCSERCONFIG 0x5453
 #define TIOCSERGWILD 0x5454
 #define TIOCSERSWILD 0x5455
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGLCKTRMIOS 0x5456
 #define TIOCSLCKTRMIOS 0x5457
 #define TIOCSERGSTRUCT 0x5458  
 #define TIOCSERGETLSR 0x5459  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCSERGETMULTI 0x545A  
 #define TIOCSERSETMULTI 0x545B  
-
 #define TIOCMIWAIT 0x545C  
 #define TIOCGICOUNT 0x545D  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCGHAYESESP 0x545E  
 #define TIOCSHAYESESP 0x545F  
 #define FIOQSIZE 0x5460
-
 #define TIOCPKT_DATA 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCPKT_FLUSHREAD 1
 #define TIOCPKT_FLUSHWRITE 2
 #define TIOCPKT_STOP 4
 #define TIOCPKT_START 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCPKT_NOSTOP 16
 #define TIOCPKT_DOSTOP 32
-
 #define TIOCSER_TEMT 0x01  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/ipcbuf.h b/libc/kernel/arch-x86/asm/ipcbuf.h
index 32342c1..83dc12f 100644
--- a/libc/kernel/arch-x86/asm/ipcbuf.h
+++ b/libc/kernel/arch-x86/asm/ipcbuf.h
@@ -7,24 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_IPCBUF_H
 #define _ASM_X86_IPCBUF_H
-
 struct ipc64_perm
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_key_t key;
  __kernel_uid32_t uid;
  __kernel_gid32_t gid;
  __kernel_uid32_t cuid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_gid32_t cgid;
  __kernel_mode_t mode;
  unsigned short __pad1;
  unsigned short seq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short __pad2;
  unsigned long __unused1;
  unsigned long __unused2;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/irq.h b/libc/kernel/arch-x86/asm/irq.h
index 07a331d..d6e0493 100644
--- a/libc/kernel/arch-x86/asm/irq.h
+++ b/libc/kernel/arch-x86/asm/irq.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "irq_64.h"
diff --git a/libc/kernel/arch-x86/asm/irq_32.h b/libc/kernel/arch-x86/asm/irq_32.h
index 3141071..1d7fab6 100644
--- a/libc/kernel/arch-x86/asm/irq_32.h
+++ b/libc/kernel/arch-x86/asm/irq_32.h
@@ -7,17 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_IRQ_H
 #define _ASM_IRQ_H
-
 #include <linux/sched.h>
-
 #include "irq_vectors.h"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/thread_info.h>
-
 #define irq_ctx_init(cpu) do { } while (0)
 #define irq_ctx_exit(cpu) do { } while (0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/irqflags.h b/libc/kernel/arch-x86/asm/irqflags.h
index 4f84662..872a942 100644
--- a/libc/kernel/arch-x86/asm/irqflags.h
+++ b/libc/kernel/arch-x86/asm/irqflags.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "irqflags_64.h"
diff --git a/libc/kernel/arch-x86/asm/irqflags_32.h b/libc/kernel/arch-x86/asm/irqflags_32.h
index 9002e44..9d77264 100644
--- a/libc/kernel/arch-x86/asm/irqflags_32.h
+++ b/libc/kernel/arch-x86/asm/irqflags_32.h
@@ -7,27 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_IRQFLAGS_H
 #define _ASM_IRQFLAGS_H
 #include <asm/processor-flags.h>
-
 #ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __ASSEMBLY__
 #else
 #define DISABLE_INTERRUPTS(clobbers) cli
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENABLE_INTERRUPTS(clobbers) sti
 #define ENABLE_INTERRUPTS_SYSEXIT sti; sysexit
 #define INTERRUPT_RETURN iret
 #define GET_CR0_INTO_EAX movl %cr0, %eax
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __ASSEMBLY__
 #define raw_local_save_flags(flags)   do { (flags) = __raw_local_save_flags(); } while (0)
 #define raw_local_irq_save(flags)   do { (flags) = __raw_local_irq_save(); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define TRACE_IRQS_ON
 #define TRACE_IRQS_OFF
 #define LOCKDEP_SYS_EXIT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/ist.h b/libc/kernel/arch-x86/asm/ist.h
index 0abab19..0349bd3 100644
--- a/libc/kernel/arch-x86/asm/ist.h
+++ b/libc/kernel/arch-x86/asm/ist.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_IST_H
 #define _ASM_IST_H
-
 #include <linux/types.h>
-
 struct ist_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 signature;
  __u32 command;
  __u32 event;
  __u32 perf_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/kmap_types.h b/libc/kernel/arch-x86/asm/kmap_types.h
index c2313ee..ba6af93 100644
--- a/libc/kernel/arch-x86/asm/kmap_types.h
+++ b/libc/kernel/arch-x86/asm/kmap_types.h
@@ -7,30 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_KMAP_TYPES_H
 #define _ASM_X86_KMAP_TYPES_H
-
 #define D(n)
-
 enum km_type {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 D(0) KM_BOUNCE_READ,
 D(1) KM_SKB_SUNRPC_DATA,
 D(2) KM_SKB_DATA_SOFTIRQ,
 D(3) KM_USER0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 D(4) KM_USER1,
 D(5) KM_BIO_SRC_IRQ,
 D(6) KM_BIO_DST_IRQ,
 D(7) KM_PTE0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 D(8) KM_PTE1,
 D(9) KM_IRQ0,
 D(10) KM_IRQ1,
 D(11) KM_SOFTIRQ0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 D(12) KM_SOFTIRQ1,
 D(13) KM_TYPE_NR
 };
-
 #undef D
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/ldt.h b/libc/kernel/arch-x86/asm/ldt.h
index 19b91ab..ff88760 100644
--- a/libc/kernel/arch-x86/asm/ldt.h
+++ b/libc/kernel/arch-x86/asm/ldt.h
@@ -7,35 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_LDT_H
 #define _ASM_X86_LDT_H
-
 #define LDT_ENTRIES 8192
-
 #define LDT_ENTRY_SIZE 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
-
 struct user_desc {
  unsigned int entry_number;
  unsigned int base_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int limit;
  unsigned int seg_32bit:1;
  unsigned int contents:2;
  unsigned int read_exec_only:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int limit_in_pages:1;
  unsigned int seg_not_present:1;
  unsigned int useable:1;
 #ifdef __x86_64__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int lm:1;
 #endif
 };
-
 #define MODIFY_LDT_CONTENTS_DATA 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MODIFY_LDT_CONTENTS_STACK 1
 #define MODIFY_LDT_CONTENTS_CODE 2
-
 #endif
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/linkage.h b/libc/kernel/arch-x86/asm/linkage.h
index f149e4d..3db2a07 100644
--- a/libc/kernel/arch-x86/asm/linkage.h
+++ b/libc/kernel/arch-x86/asm/linkage.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "linkage_64.h"
diff --git a/libc/kernel/arch-x86/asm/linkage_32.h b/libc/kernel/arch-x86/asm/linkage_32.h
index 6db10ee..e850947 100644
--- a/libc/kernel/arch-x86/asm/linkage_32.h
+++ b/libc/kernel/arch-x86/asm/linkage_32.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_LINKAGE_H
 #define __ASM_LINKAGE_H
-
 #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))
 #define FASTCALL(x) x __attribute__((regparm(3)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define fastcall __attribute__((regparm(3)))
-
 #define prevent_tail_call(ret) __asm__ ("" : "=r" (ret) : "0" (ret))
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/local.h b/libc/kernel/arch-x86/asm/local.h
index 85080b8..34d9782 100644
--- a/libc/kernel/arch-x86/asm/local.h
+++ b/libc/kernel/arch-x86/asm/local.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "local_64.h"
diff --git a/libc/kernel/arch-x86/asm/local_32.h b/libc/kernel/arch-x86/asm/local_32.h
index fcad753..9c4c2b2 100644
--- a/libc/kernel/arch-x86/asm/local_32.h
+++ b/libc/kernel/arch-x86/asm/local_32.h
@@ -7,45 +7,55 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ARCH_I386_LOCAL_H
 #define _ARCH_I386_LOCAL_H
-
 #include <linux/percpu.h>
 #include <asm/system.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/atomic.h>
-
 typedef struct
 {
  atomic_long_t a;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } local_t;
-
 #define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
-
 #define local_read(l) atomic_long_read(&(l)->a)
 #define local_set(l,i) atomic_long_set(&(l)->a, (i))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define local_inc_return(l) (local_add_return(1,l))
 #define local_dec_return(l) (local_sub_return(1,l))
 #define local_cmpxchg(l, o, n)   (cmpxchg_local(&((l)->a.counter), (o), (n)))
 #define local_xchg(l, n) (xchg(&((l)->a.counter), (n)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define local_add_unless(l, a, u)  ({   long c, old;   c = local_read(l);   for (;;) {   if (unlikely(c == (u)))   break;   old = local_cmpxchg((l), c, c + (a));   if (likely(old == c))   break;   c = old;   }   c != (u);  })
 #define local_inc_not_zero(l) local_add_unless((l), 1, 0)
 #define __local_inc(l) local_inc(l)
 #define __local_dec(l) local_dec(l)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __local_add(i,l) local_add((i),(l))
 #define __local_sub(i,l) local_sub((i),(l))
 #define cpu_local_wrap_v(l)   ({ local_t res__;   preempt_disable();   res__ = (l);   preempt_enable();   res__; })
 #define cpu_local_wrap(l)   ({ preempt_disable();   l;   preempt_enable(); })  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_local_read(l) cpu_local_wrap_v(local_read(&__get_cpu_var(l)))
 #define cpu_local_set(l, i) cpu_local_wrap(local_set(&__get_cpu_var(l), (i)))
 #define cpu_local_inc(l) cpu_local_wrap(local_inc(&__get_cpu_var(l)))
 #define cpu_local_dec(l) cpu_local_wrap(local_dec(&__get_cpu_var(l)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_local_add(i, l) cpu_local_wrap(local_add((i), &__get_cpu_var(l)))
 #define cpu_local_sub(i, l) cpu_local_wrap(local_sub((i), &__get_cpu_var(l)))
 #define __cpu_local_inc(l) cpu_local_inc(l)
 #define __cpu_local_dec(l) cpu_local_dec(l)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_local_add(i, l) cpu_local_add((i), (l))
 #define __cpu_local_sub(i, l) cpu_local_sub((i), (l))
 #endif
diff --git a/libc/kernel/arch-x86/asm/math_emu.h b/libc/kernel/arch-x86/asm/math_emu.h
index 9380d19..068006c 100644
--- a/libc/kernel/arch-x86/asm/math_emu.h
+++ b/libc/kernel/arch-x86/asm/math_emu.h
@@ -7,34 +7,45 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_MATH_EMU_H
 #define _I386_MATH_EMU_H
-
 #include <asm/sigcontext.h>
-
 struct info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___orig_eip;
  long ___ebx;
  long ___ecx;
  long ___edx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___esi;
  long ___edi;
  long ___ebp;
  long ___eax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___ds;
  long ___es;
  long ___fs;
  long ___orig_eax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___eip;
  long ___cs;
  long ___eflags;
  long ___esp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___ss;
  long ___vm86_es;
  long ___vm86_ds;
  long ___vm86_fs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ___vm86_gs;
 };
 #endif
diff --git a/libc/kernel/arch-x86/asm/mc146818rtc.h b/libc/kernel/arch-x86/asm/mc146818rtc.h
index 8497877..4c7f9cc 100644
--- a/libc/kernel/arch-x86/asm/mc146818rtc.h
+++ b/libc/kernel/arch-x86/asm/mc146818rtc.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "mc146818rtc_64.h"
diff --git a/libc/kernel/arch-x86/asm/mc146818rtc_32.h b/libc/kernel/arch-x86/asm/mc146818rtc_32.h
index 899d608..b6af33a 100644
--- a/libc/kernel/arch-x86/asm/mc146818rtc_32.h
+++ b/libc/kernel/arch-x86/asm/mc146818rtc_32.h
@@ -7,38 +7,44 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_MC146818RTC_H
 #define _ASM_MC146818RTC_H
-
 #include <asm/io.h>
 #include <asm/system.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/processor.h>
 #include <linux/mc146818rtc.h>
-
 #ifndef RTC_PORT
 #define RTC_PORT(x) (0x70 + (x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_ALWAYS_BCD 1  
 #endif
-
 #ifdef __HAVE_ARCH_CMPXCHG
-
 #include <linux/smp.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define lock_cmos_prefix(reg)   do {   unsigned long cmos_flags;   local_irq_save(cmos_flags);   lock_cmos(reg)
 #define lock_cmos_suffix(reg)   unlock_cmos();   local_irq_restore(cmos_flags);   } while (0)
 #else
 #define lock_cmos_prefix(reg) do {} while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define lock_cmos_suffix(reg) do {} while (0)
 #define lock_cmos(reg)
 #define unlock_cmos()
 #define do_i_have_lock_cmos() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define current_lock_cmos_reg() 0
 #endif
 #define CMOS_READ(addr) rtc_cmos_read(addr)
 #define CMOS_WRITE(val, addr) rtc_cmos_write(val, addr)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_IRQ 8
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/mman.h b/libc/kernel/arch-x86/asm/mman.h
index 7eda319..b0b4e1d 100644
--- a/libc/kernel/arch-x86/asm/mman.h
+++ b/libc/kernel/arch-x86/asm/mman.h
@@ -7,24 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_MMAN_H
 #define _ASM_X86_MMAN_H
-
 #include <asm-generic/mman.h>
-
 #define MAP_32BIT 0x40  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAP_GROWSDOWN 0x0100  
 #define MAP_DENYWRITE 0x0800  
 #define MAP_EXECUTABLE 0x1000  
 #define MAP_LOCKED 0x2000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAP_NORESERVE 0x4000  
 #define MAP_POPULATE 0x8000  
 #define MAP_NONBLOCK 0x10000  
-
 #define MCL_CURRENT 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MCL_FUTURE 2  
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/mmsegment.h b/libc/kernel/arch-x86/asm/mmsegment.h
index 76045c7..01bffca 100644
--- a/libc/kernel/arch-x86/asm/mmsegment.h
+++ b/libc/kernel/arch-x86/asm/mmsegment.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_MMSEGMENT_H
 #define _ASM_MMSEGMENT_H 1
-
 typedef struct {
  unsigned long seg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mm_segment_t;
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/mmu.h b/libc/kernel/arch-x86/asm/mmu.h
index 30db10a..61c3cc0 100644
--- a/libc/kernel/arch-x86/asm/mmu.h
+++ b/libc/kernel/arch-x86/asm/mmu.h
@@ -7,19 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_MMU_H
 #define _ASM_X86_MMU_H
-
 #include <linux/spinlock.h>
 #include <linux/mutex.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  void *ldt;
  int size;
  struct mutex lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *vdso;
 } mm_context_t;
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/module.h b/libc/kernel/arch-x86/asm/module.h
index ff292d4..1627050 100644
--- a/libc/kernel/arch-x86/asm/module.h
+++ b/libc/kernel/arch-x86/asm/module.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "module_64.h"
diff --git a/libc/kernel/arch-x86/asm/module_32.h b/libc/kernel/arch-x86/asm/module_32.h
index 2e26729..fd1d099 100644
--- a/libc/kernel/arch-x86/asm/module_32.h
+++ b/libc/kernel/arch-x86/asm/module_32.h
@@ -7,23 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_I386_MODULE_H
 #define _ASM_I386_MODULE_H
-
 struct mod_arch_specific
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define Elf_Shdr Elf32_Shdr
 #define Elf_Sym Elf32_Sym
 #define Elf_Ehdr Elf32_Ehdr
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error unknown processor family
-
 #define MODULE_STACKSIZE ""
-
 #define MODULE_ARCH_VERMAGIC MODULE_PROC_FAMILY MODULE_STACKSIZE
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/mpspec.h b/libc/kernel/arch-x86/asm/mpspec.h
index 2336504..f26ad2d 100644
--- a/libc/kernel/arch-x86/asm/mpspec.h
+++ b/libc/kernel/arch-x86/asm/mpspec.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "mpspec_64.h"
diff --git a/libc/kernel/arch-x86/asm/mpspec_32.h b/libc/kernel/arch-x86/asm/mpspec_32.h
index 7acbe8a..909c3c4 100644
--- a/libc/kernel/arch-x86/asm/mpspec_32.h
+++ b/libc/kernel/arch-x86/asm/mpspec_32.h
@@ -7,46 +7,49 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_MPSPEC_H
 #define __ASM_MPSPEC_H
-
 #include <linux/cpumask.h>
 #include <asm/mpspec_def.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <mach_mpspec.h>
-
 #define PHYSID_ARRAY_SIZE BITS_TO_LONGS(MAX_APICS)
-
 struct physid_mask
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long mask[PHYSID_ARRAY_SIZE];
 };
-
 typedef struct physid_mask physid_mask_t;
-
 #define physid_set(physid, map) set_bit(physid, (map).mask)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define physid_clear(physid, map) clear_bit(physid, (map).mask)
 #define physid_isset(physid, map) test_bit(physid, (map).mask)
 #define physid_test_and_set(physid, map) test_and_set_bit(physid, (map).mask)
-
 #define physids_and(dst, src1, src2) bitmap_and((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define physids_or(dst, src1, src2) bitmap_or((dst).mask, (src1).mask, (src2).mask, MAX_APICS)
 #define physids_clear(map) bitmap_zero((map).mask, MAX_APICS)
 #define physids_complement(dst, src) bitmap_complement((dst).mask,(src).mask, MAX_APICS)
 #define physids_empty(map) bitmap_empty((map).mask, MAX_APICS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define physids_equal(map1, map2) bitmap_equal((map1).mask, (map2).mask, MAX_APICS)
 #define physids_weight(map) bitmap_weight((map).mask, MAX_APICS)
 #define physids_shift_right(d, s, n) bitmap_shift_right((d).mask, (s).mask, n, MAX_APICS)
 #define physids_shift_left(d, s, n) bitmap_shift_left((d).mask, (s).mask, n, MAX_APICS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define physids_coerce(map) ((map).mask[0])
-
 #define physids_promote(physids)   ({   physid_mask_t __physid_mask = PHYSID_MASK_NONE;   __physid_mask.mask[0] = physids;   __physid_mask;   })
-
 #define physid_mask_of_physid(physid)   ({   physid_mask_t __physid_mask = PHYSID_MASK_NONE;   physid_set(physid, __physid_mask);   __physid_mask;   })
-
 #define PHYSID_MASK_ALL { {[0 ... PHYSID_ARRAY_SIZE-1] = ~0UL} }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHYSID_MASK_NONE { {[0 ... PHYSID_ARRAY_SIZE-1] = 0UL} }
-
 #endif
-
diff --git a/libc/kernel/arch-x86/asm/mpspec_def.h b/libc/kernel/arch-x86/asm/mpspec_def.h
index 1f15363..f9bb33a 100644
--- a/libc/kernel/arch-x86/asm/mpspec_def.h
+++ b/libc/kernel/arch-x86/asm/mpspec_def.h
@@ -7,165 +7,190 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_MPSPEC_DEF_H
 #define __ASM_MPSPEC_DEF_H
-
 #define SMP_MAGIC_IDENT (('_'<<24)|('P'<<16)|('M'<<8)|'_')
-
 #define MAX_MPC_ENTRY 1024
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_APICS 256
-
 struct intel_mp_floating
 {
  char mpf_signature[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long mpf_physptr;
  unsigned char mpf_length;
  unsigned char mpf_specification;
  unsigned char mpf_checksum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpf_feature1;
  unsigned char mpf_feature2;
  unsigned char mpf_feature3;
  unsigned char mpf_feature4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpf_feature5;
 };
-
 struct mp_config_table
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char mpc_signature[4];
 #define MPC_SIGNATURE "PCMP"
  unsigned short mpc_length;
  char mpc_spec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char mpc_checksum;
  char mpc_oem[8];
  char mpc_productid[12];
  unsigned long mpc_oemptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short mpc_oemsize;
  unsigned short mpc_oemcount;
  unsigned long mpc_lapic;
  unsigned long reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define MP_PROCESSOR 0
 #define MP_BUS 1
 #define MP_IOAPIC 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MP_INTSRC 3
 #define MP_LINTSRC 4
 #define MP_TRANSLATION 192  
-
 struct mpc_config_processor
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned char mpc_type;
  unsigned char mpc_apicid;
  unsigned char mpc_apicver;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_cpuflag;
 #define CPU_ENABLED 1  
 #define CPU_BOOTPROCESSOR 2  
  unsigned long mpc_cpufeature;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPU_STEPPING_MASK 0x0F
 #define CPU_MODEL_MASK 0xF0
 #define CPU_FAMILY_MASK 0xF00
  unsigned long mpc_featureflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long mpc_reserved[2];
 };
-
 struct mpc_config_bus
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_type;
  unsigned char mpc_busid;
  unsigned char mpc_bustype[6];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUSTYPE_EISA "EISA"
 #define BUSTYPE_ISA "ISA"
 #define BUSTYPE_INTERN "INTERN"  
 #define BUSTYPE_MCA "MCA"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUSTYPE_VL "VL"  
 #define BUSTYPE_PCI "PCI"
 #define BUSTYPE_PCMCIA "PCMCIA"
 #define BUSTYPE_CBUS "CBUS"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUSTYPE_CBUSII "CBUSII"
 #define BUSTYPE_FUTURE "FUTURE"
 #define BUSTYPE_MBI "MBI"
 #define BUSTYPE_MBII "MBII"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUSTYPE_MPI "MPI"
 #define BUSTYPE_MPSA "MPSA"
 #define BUSTYPE_NUBUS "NUBUS"
 #define BUSTYPE_TC "TC"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUSTYPE_VME "VME"
 #define BUSTYPE_XPRESS "XPRESS"
-
 struct mpc_config_ioapic
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_type;
  unsigned char mpc_apicid;
  unsigned char mpc_apicver;
  unsigned char mpc_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPC_APIC_USABLE 0x01
  unsigned long mpc_apicaddr;
 };
-
 struct mpc_config_intsrc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned char mpc_type;
  unsigned char mpc_irqtype;
  unsigned short mpc_irqflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_srcbus;
  unsigned char mpc_srcbusirq;
  unsigned char mpc_dstapic;
  unsigned char mpc_dstirq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum mp_irq_source_types {
  mp_INT = 0,
  mp_NMI = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  mp_SMI = 2,
  mp_ExtINT = 3
 };
-
 #define MP_IRQDIR_DEFAULT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MP_IRQDIR_HIGH 1
 #define MP_IRQDIR_LOW 3
-
 struct mpc_config_lintsrc
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_type;
  unsigned char mpc_irqtype;
  unsigned short mpc_irqflag;
  unsigned char mpc_srcbusid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_srcbusirq;
  unsigned char mpc_destapic;
 #define MP_APIC_ALL 0xFF
  unsigned char mpc_destapiclint;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct mp_config_oemtable
 {
  char oem_signature[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPC_OEM_SIGNATURE "_OEM"
  unsigned short oem_length;
  char oem_rev;
  char oem_checksum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char mpc_oem[8];
 };
-
 struct mpc_config_translation
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mpc_type;
  unsigned char trans_len;
  unsigned char trans_type;
  unsigned char trans_quad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char trans_global;
  unsigned char trans_local;
  unsigned short trans_reserved;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mp_bustype {
  MP_BUS_ISA = 1,
  MP_BUS_EISA,
  MP_BUS_PCI,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MP_BUS_MCA,
 };
 #endif
-
diff --git a/libc/kernel/arch-x86/asm/msgbuf.h b/libc/kernel/arch-x86/asm/msgbuf.h
index 8843e78..7580210 100644
--- a/libc/kernel/arch-x86/asm/msgbuf.h
+++ b/libc/kernel/arch-x86/asm/msgbuf.h
@@ -7,32 +7,43 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_MSGBUF_H
 #define _ASM_X86_MSGBUF_H
-
 struct msqid64_ds {
  struct ipc64_perm msg_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t msg_stime;
 #ifdef __i386__
  unsigned long __unused1;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t msg_rtime;
 #ifdef __i386__
  unsigned long __unused2;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t msg_ctime;
 #ifdef __i386__
  unsigned long __unused3;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long msg_cbytes;
  unsigned long msg_qnum;
  unsigned long msg_qbytes;
  __kernel_pid_t msg_lspid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_pid_t msg_lrpid;
  unsigned long __unused4;
  unsigned long __unused5;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/msr-index.h b/libc/kernel/arch-x86/asm/msr-index.h
index 8ea204e..2336f82 100644
--- a/libc/kernel/arch-x86/asm/msr-index.h
+++ b/libc/kernel/arch-x86/asm/msr-index.h
@@ -7,277 +7,310 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_MSR_INDEX_H
 #define __ASM_MSR_INDEX_H
-
 #define MSR_EFER 0xc0000080  
 #define MSR_STAR 0xc0000081  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_LSTAR 0xc0000082  
 #define MSR_CSTAR 0xc0000083  
 #define MSR_SYSCALL_MASK 0xc0000084  
 #define MSR_FS_BASE 0xc0000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_GS_BASE 0xc0000101  
 #define MSR_KERNEL_GS_BASE 0xc0000102  
-
 #define _EFER_SCE 0  
 #define _EFER_LME 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _EFER_LMA 10  
 #define _EFER_NX 11  
-
 #define EFER_SCE (1<<_EFER_SCE)
 #define EFER_LME (1<<_EFER_LME)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EFER_LMA (1<<_EFER_LMA)
 #define EFER_NX (1<<_EFER_NX)
-
 #define MSR_IA32_PERFCTR0 0x000000c1
 #define MSR_IA32_PERFCTR1 0x000000c2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_FSB_FREQ 0x000000cd
-
 #define MSR_MTRRcap 0x000000fe
 #define MSR_IA32_BBL_CR_CTL 0x00000119
-
 #define MSR_IA32_SYSENTER_CS 0x00000174
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_SYSENTER_ESP 0x00000175
 #define MSR_IA32_SYSENTER_EIP 0x00000176
-
 #define MSR_IA32_MCG_CAP 0x00000179
 #define MSR_IA32_MCG_STATUS 0x0000017a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_MCG_CTL 0x0000017b
-
 #define MSR_IA32_PEBS_ENABLE 0x000003f1
 #define MSR_IA32_DS_AREA 0x00000600
 #define MSR_IA32_PERF_CAPABILITIES 0x00000345
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_MTRRfix64K_00000 0x00000250
 #define MSR_MTRRfix16K_80000 0x00000258
 #define MSR_MTRRfix16K_A0000 0x00000259
 #define MSR_MTRRfix4K_C0000 0x00000268
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_MTRRfix4K_C8000 0x00000269
 #define MSR_MTRRfix4K_D0000 0x0000026a
 #define MSR_MTRRfix4K_D8000 0x0000026b
 #define MSR_MTRRfix4K_E0000 0x0000026c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_MTRRfix4K_E8000 0x0000026d
 #define MSR_MTRRfix4K_F0000 0x0000026e
 #define MSR_MTRRfix4K_F8000 0x0000026f
 #define MSR_MTRRdefType 0x000002ff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_DEBUGCTLMSR 0x000001d9
 #define MSR_IA32_LASTBRANCHFROMIP 0x000001db
 #define MSR_IA32_LASTBRANCHTOIP 0x000001dc
 #define MSR_IA32_LASTINTFROMIP 0x000001dd
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_LASTINTTOIP 0x000001de
-
 #define MSR_IA32_MC0_CTL 0x00000400
 #define MSR_IA32_MC0_STATUS 0x00000401
 #define MSR_IA32_MC0_ADDR 0x00000402
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_MC0_MISC 0x00000403
-
 #define MSR_P6_PERFCTR0 0x000000c1
 #define MSR_P6_PERFCTR1 0x000000c2
 #define MSR_P6_EVNTSEL0 0x00000186
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P6_EVNTSEL1 0x00000187
-
 #define MSR_AMD64_IBSFETCHCTL 0xc0011030
 #define MSR_AMD64_IBSFETCHLINAD 0xc0011031
 #define MSR_AMD64_IBSFETCHPHYSAD 0xc0011032
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_IBSOPCTL 0xc0011033
 #define MSR_AMD64_IBSOPRIP 0xc0011034
 #define MSR_AMD64_IBSOPDATA 0xc0011035
 #define MSR_AMD64_IBSOPDATA2 0xc0011036
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_AMD64_IBSOPDATA3 0xc0011037
 #define MSR_AMD64_IBSDCLINAD 0xc0011038
 #define MSR_AMD64_IBSDCPHYSAD 0xc0011039
 #define MSR_AMD64_IBSCTL 0xc001103a
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K8_TOP_MEM1 0xc001001a
 #define MSR_K8_TOP_MEM2 0xc001001d
 #define MSR_K8_SYSCFG 0xc0010010
 #define MSR_K8_HWCR 0xc0010015
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K8_ENABLE_C1E 0xc0010055
 #define K8_MTRRFIXRANGE_DRAM_ENABLE 0x00040000  
 #define K8_MTRRFIXRANGE_DRAM_MODIFY 0x00080000  
 #define K8_MTRR_RDMEM_WRMEM_MASK 0x18181818  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_EVNTSEL0 0xc0010000
 #define MSR_K7_PERFCTR0 0xc0010004
 #define MSR_K7_EVNTSEL1 0xc0010001
 #define MSR_K7_PERFCTR1 0xc0010005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_EVNTSEL2 0xc0010002
 #define MSR_K7_PERFCTR2 0xc0010006
 #define MSR_K7_EVNTSEL3 0xc0010003
 #define MSR_K7_PERFCTR3 0xc0010007
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K7_CLK_CTL 0xc001001b
 #define MSR_K7_HWCR 0xc0010015
 #define MSR_K7_FID_VID_CTL 0xc0010041
 #define MSR_K7_FID_VID_STATUS 0xc0010042
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K6_EFER 0xc0000080
 #define MSR_K6_STAR 0xc0000081
 #define MSR_K6_WHCR 0xc0000082
 #define MSR_K6_UWCCR 0xc0000085
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_K6_EPMR 0xc0000086
 #define MSR_K6_PSOR 0xc0000087
 #define MSR_K6_PFIR 0xc0000088
-
 #define MSR_IDT_FCR1 0x00000107
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_FCR2 0x00000108
 #define MSR_IDT_FCR3 0x00000109
 #define MSR_IDT_FCR4 0x0000010a
-
 #define MSR_IDT_MCR0 0x00000110
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_MCR1 0x00000111
 #define MSR_IDT_MCR2 0x00000112
 #define MSR_IDT_MCR3 0x00000113
 #define MSR_IDT_MCR4 0x00000114
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IDT_MCR5 0x00000115
 #define MSR_IDT_MCR6 0x00000116
 #define MSR_IDT_MCR7 0x00000117
 #define MSR_IDT_MCR_CTRL 0x00000120
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_VIA_FCR 0x00001107
 #define MSR_VIA_LONGHAUL 0x0000110a
 #define MSR_VIA_RNG 0x0000110b
 #define MSR_VIA_BCR2 0x00001147
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_TMTA_LONGRUN_CTRL 0x80868010
 #define MSR_TMTA_LONGRUN_FLAGS 0x80868011
 #define MSR_TMTA_LRTI_READOUT 0x80868018
 #define MSR_TMTA_LRTI_VOLT_MHZ 0x8086801a
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_P5_MC_ADDR 0x00000000
 #define MSR_IA32_P5_MC_TYPE 0x00000001
 #define MSR_IA32_TSC 0x00000010
 #define MSR_IA32_PLATFORM_ID 0x00000017
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_EBL_CR_POWERON 0x0000002a
-
 #define MSR_IA32_APICBASE 0x0000001b
 #define MSR_IA32_APICBASE_BSP (1<<8)
 #define MSR_IA32_APICBASE_ENABLE (1<<11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_APICBASE_BASE (0xfffff<<12)
-
 #define MSR_IA32_UCODE_WRITE 0x00000079
 #define MSR_IA32_UCODE_REV 0x0000008b
-
 #define MSR_IA32_PERF_STATUS 0x00000198
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_PERF_CTL 0x00000199
-
 #define MSR_IA32_MPERF 0x000000e7
 #define MSR_IA32_APERF 0x000000e8
-
 #define MSR_IA32_THERM_CONTROL 0x0000019a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_THERM_INTERRUPT 0x0000019b
 #define MSR_IA32_THERM_STATUS 0x0000019c
 #define MSR_IA32_MISC_ENABLE 0x000001a0
-
 #define MSR_P6_EVNTSEL0 0x00000186
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P6_EVNTSEL1 0x00000187
-
 #define MSR_IA32_MCG_EAX 0x00000180
 #define MSR_IA32_MCG_EBX 0x00000181
 #define MSR_IA32_MCG_ECX 0x00000182
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_MCG_EDX 0x00000183
 #define MSR_IA32_MCG_ESI 0x00000184
 #define MSR_IA32_MCG_EDI 0x00000185
 #define MSR_IA32_MCG_EBP 0x00000186
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_IA32_MCG_ESP 0x00000187
 #define MSR_IA32_MCG_EFLAGS 0x00000188
 #define MSR_IA32_MCG_EIP 0x00000189
 #define MSR_IA32_MCG_RESERVED 0x0000018a
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_BPU_PERFCTR0 0x00000300
 #define MSR_P4_BPU_PERFCTR1 0x00000301
 #define MSR_P4_BPU_PERFCTR2 0x00000302
 #define MSR_P4_BPU_PERFCTR3 0x00000303
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_MS_PERFCTR0 0x00000304
 #define MSR_P4_MS_PERFCTR1 0x00000305
 #define MSR_P4_MS_PERFCTR2 0x00000306
 #define MSR_P4_MS_PERFCTR3 0x00000307
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_FLAME_PERFCTR0 0x00000308
 #define MSR_P4_FLAME_PERFCTR1 0x00000309
 #define MSR_P4_FLAME_PERFCTR2 0x0000030a
 #define MSR_P4_FLAME_PERFCTR3 0x0000030b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_IQ_PERFCTR0 0x0000030c
 #define MSR_P4_IQ_PERFCTR1 0x0000030d
 #define MSR_P4_IQ_PERFCTR2 0x0000030e
 #define MSR_P4_IQ_PERFCTR3 0x0000030f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_IQ_PERFCTR4 0x00000310
 #define MSR_P4_IQ_PERFCTR5 0x00000311
 #define MSR_P4_BPU_CCCR0 0x00000360
 #define MSR_P4_BPU_CCCR1 0x00000361
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_BPU_CCCR2 0x00000362
 #define MSR_P4_BPU_CCCR3 0x00000363
 #define MSR_P4_MS_CCCR0 0x00000364
 #define MSR_P4_MS_CCCR1 0x00000365
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_MS_CCCR2 0x00000366
 #define MSR_P4_MS_CCCR3 0x00000367
 #define MSR_P4_FLAME_CCCR0 0x00000368
 #define MSR_P4_FLAME_CCCR1 0x00000369
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_FLAME_CCCR2 0x0000036a
 #define MSR_P4_FLAME_CCCR3 0x0000036b
 #define MSR_P4_IQ_CCCR0 0x0000036c
 #define MSR_P4_IQ_CCCR1 0x0000036d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_IQ_CCCR2 0x0000036e
 #define MSR_P4_IQ_CCCR3 0x0000036f
 #define MSR_P4_IQ_CCCR4 0x00000370
 #define MSR_P4_IQ_CCCR5 0x00000371
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_ALF_ESCR0 0x000003ca
 #define MSR_P4_ALF_ESCR1 0x000003cb
 #define MSR_P4_BPU_ESCR0 0x000003b2
 #define MSR_P4_BPU_ESCR1 0x000003b3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_BSU_ESCR0 0x000003a0
 #define MSR_P4_BSU_ESCR1 0x000003a1
 #define MSR_P4_CRU_ESCR0 0x000003b8
 #define MSR_P4_CRU_ESCR1 0x000003b9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_CRU_ESCR2 0x000003cc
 #define MSR_P4_CRU_ESCR3 0x000003cd
 #define MSR_P4_CRU_ESCR4 0x000003e0
 #define MSR_P4_CRU_ESCR5 0x000003e1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_DAC_ESCR0 0x000003a8
 #define MSR_P4_DAC_ESCR1 0x000003a9
 #define MSR_P4_FIRM_ESCR0 0x000003a4
 #define MSR_P4_FIRM_ESCR1 0x000003a5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_FLAME_ESCR0 0x000003a6
 #define MSR_P4_FLAME_ESCR1 0x000003a7
 #define MSR_P4_FSB_ESCR0 0x000003a2
 #define MSR_P4_FSB_ESCR1 0x000003a3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_IQ_ESCR0 0x000003ba
 #define MSR_P4_IQ_ESCR1 0x000003bb
 #define MSR_P4_IS_ESCR0 0x000003b4
 #define MSR_P4_IS_ESCR1 0x000003b5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_ITLB_ESCR0 0x000003b6
 #define MSR_P4_ITLB_ESCR1 0x000003b7
 #define MSR_P4_IX_ESCR0 0x000003c8
 #define MSR_P4_IX_ESCR1 0x000003c9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_MOB_ESCR0 0x000003aa
 #define MSR_P4_MOB_ESCR1 0x000003ab
 #define MSR_P4_MS_ESCR0 0x000003c0
 #define MSR_P4_MS_ESCR1 0x000003c1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_PMH_ESCR0 0x000003ac
 #define MSR_P4_PMH_ESCR1 0x000003ad
 #define MSR_P4_RAT_ESCR0 0x000003bc
 #define MSR_P4_RAT_ESCR1 0x000003bd
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_SAAT_ESCR0 0x000003ae
 #define MSR_P4_SAAT_ESCR1 0x000003af
 #define MSR_P4_SSU_ESCR0 0x000003be
 #define MSR_P4_SSU_ESCR1 0x000003bf  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_TBPU_ESCR0 0x000003c2
 #define MSR_P4_TBPU_ESCR1 0x000003c3
 #define MSR_P4_TC_ESCR0 0x000003c4
 #define MSR_P4_TC_ESCR1 0x000003c5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_P4_U2L_ESCR0 0x000003b0
 #define MSR_P4_U2L_ESCR1 0x000003b1
-
 #define MSR_CORE_PERF_FIXED_CTR0 0x00000309
 #define MSR_CORE_PERF_FIXED_CTR1 0x0000030a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_CORE_PERF_FIXED_CTR2 0x0000030b
 #define MSR_CORE_PERF_FIXED_CTR_CTRL 0x0000038d
 #define MSR_CORE_PERF_GLOBAL_STATUS 0x0000038e
 #define MSR_CORE_PERF_GLOBAL_CTRL 0x0000038f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSR_CORE_PERF_GLOBAL_OVF_CTRL 0x00000390
-
 #define MSR_GEODE_BUSCONT_CONF0 0x00001900
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/msr.h b/libc/kernel/arch-x86/asm/msr.h
index f1da917..63da0cc 100644
--- a/libc/kernel/arch-x86/asm/msr.h
+++ b/libc/kernel/arch-x86/asm/msr.h
@@ -7,48 +7,43 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_X86_MSR_H_
 #define __ASM_X86_MSR_H_
-
 #include <asm/msr-index.h>
-
 #ifndef __ASSEMBLY__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
 #endif
-
 #ifdef __i386__
-
 #else
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
 #include <linux/errno.h>
-
 #define rdmsr(msr,val1,val2)   __asm__ __volatile__("rdmsr"   : "=a" (val1), "=d" (val2)   : "c" (msr))
-
 #define rdmsrl(msr,val) do { unsigned long a__,b__;   __asm__ __volatile__("rdmsr"   : "=a" (a__), "=d" (b__)   : "c" (msr));   val = a__ | (b__<<32);  } while(0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define wrmsr(msr,val1,val2)   __asm__ __volatile__("wrmsr"   :     : "c" (msr), "a" (val1), "d" (val2))
-
 #define wrmsrl(msr,val) wrmsr(msr,(__u32)((__u64)(val)),((__u64)(val))>>32)
-
 #define rdtsc(low,high)   __asm__ __volatile__("rdtsc" : "=a" (low), "=d" (high))
-
 #define rdtscl(low)   __asm__ __volatile__ ("rdtsc" : "=a" (low) : : "edx")
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rdtscp(low,high,aux)   __asm__ __volatile__ (".byte 0x0f,0x01,0xf9" : "=a" (low), "=d" (high), "=c" (aux))
-
 #define rdtscll(val) do {   unsigned int __a,__d;   __asm__ __volatile__("rdtsc" : "=a" (__a), "=d" (__d));   (val) = ((unsigned long)__a) | (((unsigned long)__d)<<32);  } while(0)
-
 #define rdtscpll(val, aux) do {   unsigned long __a, __d;   __asm__ __volatile__ (".byte 0x0f,0x01,0xf9" : "=a" (__a), "=d" (__d), "=c" (aux));   (val) = (__d << 32) | __a;  } while (0)
-
 #define write_tsc(val1,val2) wrmsr(0x10, val1, val2)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define write_rdtscp_aux(val) wrmsr(0xc0000103, val, 0)
-
 #define rdpmc(counter,low,high)   __asm__ __volatile__("rdpmc"   : "=a" (low), "=d" (high)   : "c" (counter))
-
 #endif
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/page.h b/libc/kernel/arch-x86/asm/page.h
index e6dcf27..5ea7de5 100644
--- a/libc/kernel/arch-x86/asm/page.h
+++ b/libc/kernel/arch-x86/asm/page.h
@@ -7,10 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifdef __i386__
 #include "page_32.h"
 #else
 #include "page_64.h"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/page_32.h b/libc/kernel/arch-x86/asm/page_32.h
index 718cf95..5e864ad 100644
--- a/libc/kernel/arch-x86/asm/page_32.h
+++ b/libc/kernel/arch-x86/asm/page_32.h
@@ -7,16 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_PAGE_H
 #define _I386_PAGE_H
-
 #define PAGE_SHIFT 12
 #define PAGE_SIZE (1UL << PAGE_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_MASK (~(PAGE_SIZE-1))
-
 #define LARGE_PAGE_MASK (~(LARGE_PAGE_SIZE-1))
 #define LARGE_PAGE_SIZE (1UL << PMD_SHIFT)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/param.h b/libc/kernel/arch-x86/asm/param.h
index 3fafd55..cd77123 100644
--- a/libc/kernel/arch-x86/asm/param.h
+++ b/libc/kernel/arch-x86/asm/param.h
@@ -7,20 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_PARAM_H
 #define _ASM_X86_PARAM_H
-
 #ifndef HZ
 #define HZ 100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define EXEC_PAGESIZE 4096
-
 #ifndef NOGROUP
 #define NOGROUP (-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/paravirt.h b/libc/kernel/arch-x86/asm/paravirt.h
index ab0d08e..257e968 100644
--- a/libc/kernel/arch-x86/asm/paravirt.h
+++ b/libc/kernel/arch-x86/asm/paravirt.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_PARAVIRT_H
 #define __ASM_PARAVIRT_H
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/pda.h b/libc/kernel/arch-x86/asm/pda.h
index 6711224..a105f28 100644
--- a/libc/kernel/arch-x86/asm/pda.h
+++ b/libc/kernel/arch-x86/asm/pda.h
@@ -7,59 +7,65 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef X86_64_PDA_H
 #define X86_64_PDA_H
-
 #ifndef __ASSEMBLY__
 #include <linux/stddef.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
 #include <linux/cache.h>
 #include <asm/page.h>
-
 struct x8664_pda {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct task_struct *pcurrent;
  unsigned long data_offset;
  unsigned long kernelstack;
  unsigned long oldrsp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int irqcount;
  int cpunumber;
  char *irqstackptr;
  int nodenumber;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int __softirq_pending;
  unsigned int __nmi_count;
  short mmu_state;
  short isidle;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mm_struct *active_mm;
  unsigned apic_timer_irqs;
  unsigned irq0_irqs;
  unsigned irq_resched_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned irq_call_count;
  unsigned irq_tlb_count;
  unsigned irq_thermal_count;
  unsigned irq_threshold_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned irq_spurious_count;
 } ____cacheline_aligned_in_smp;
-
 #define cpu_pda(i) (_cpu_pda[i])
-
 #define pda_offset(field) offsetof(struct x8664_pda, field)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pda_to_op(op,field,val) do {   typedef typeof(_proxy_pda.field) T__;   if (0) { T__ tmp__; tmp__ = (val); }     switch (sizeof(_proxy_pda.field)) {   case 2:   asm(op "w %1,%%gs:%c2" :   "+m" (_proxy_pda.field) :   "ri" ((T__)val),   "i"(pda_offset(field)));   break;   case 4:   asm(op "l %1,%%gs:%c2" :   "+m" (_proxy_pda.field) :   "ri" ((T__)val),   "i" (pda_offset(field)));   break;   case 8:   asm(op "q %1,%%gs:%c2":   "+m" (_proxy_pda.field) :   "ri" ((T__)val),   "i"(pda_offset(field)));   break;   default:   __bad_pda_field();   }   } while (0)
-
 #define pda_from_op(op,field) ({   typeof(_proxy_pda.field) ret__;   switch (sizeof(_proxy_pda.field)) {   case 2:   asm(op "w %%gs:%c1,%0" :   "=r" (ret__) :   "i" (pda_offset(field)),   "m" (_proxy_pda.field));   break;   case 4:   asm(op "l %%gs:%c1,%0":   "=r" (ret__):   "i" (pda_offset(field)),   "m" (_proxy_pda.field));   break;   case 8:   asm(op "q %%gs:%c1,%0":   "=r" (ret__) :   "i" (pda_offset(field)),   "m" (_proxy_pda.field));   break;   default:   __bad_pda_field();   }   ret__; })
-
 #define read_pda(field) pda_from_op("mov",field)
 #define write_pda(field,val) pda_to_op("mov",field,val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define add_pda(field,val) pda_to_op("add",field,val)
 #define sub_pda(field,val) pda_to_op("sub",field,val)
 #define or_pda(field,val) pda_to_op("or",field,val)
-
 #define test_and_clear_bit_pda(bit,field) ({   int old__;   asm volatile("btr %2,%%gs:%c3\n\tsbbl %0,%0"   : "=r" (old__), "+m" (_proxy_pda.field)   : "dIr" (bit), "i" (pda_offset(field)) : "memory");   old__;  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define PDA_STACKOFFSET (5*8)
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/percpu.h b/libc/kernel/arch-x86/asm/percpu.h
index 7740e67..a51075b 100644
--- a/libc/kernel/arch-x86/asm/percpu.h
+++ b/libc/kernel/arch-x86/asm/percpu.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "percpu_64.h"
diff --git a/libc/kernel/arch-x86/asm/percpu_32.h b/libc/kernel/arch-x86/asm/percpu_32.h
index 21135d6..86bf3aa 100644
--- a/libc/kernel/arch-x86/asm/percpu_32.h
+++ b/libc/kernel/arch-x86/asm/percpu_32.h
@@ -7,30 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_I386_PERCPU__
 #define __ARCH_I386_PERCPU__
-
 #ifdef __ASSEMBLY__
-
 #define PER_CPU(var, reg)   movl $per_cpu__##var, reg
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PER_CPU_VAR(var) per_cpu__##var
-
 #else
-
 #include <asm-generic/percpu.h>
 #define __percpu_seg ""
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define percpu_to_op(op,var,val)   do {   typedef typeof(var) T__;   if (0) { T__ tmp__; tmp__ = (val); }   switch (sizeof(var)) {   case 1:   asm(op "b %1,"__percpu_seg"%0"   : "+m" (var)   :"ri" ((T__)val));   break;   case 2:   asm(op "w %1,"__percpu_seg"%0"   : "+m" (var)   :"ri" ((T__)val));   break;   case 4:   asm(op "l %1,"__percpu_seg"%0"   : "+m" (var)   :"ri" ((T__)val));   break;   default: __bad_percpu_size();   }   } while (0)
-
 #define percpu_from_op(op,var)   ({   typeof(var) ret__;   switch (sizeof(var)) {   case 1:   asm(op "b "__percpu_seg"%1,%0"   : "=r" (ret__)   : "m" (var));   break;   case 2:   asm(op "w "__percpu_seg"%1,%0"   : "=r" (ret__)   : "m" (var));   break;   case 4:   asm(op "l "__percpu_seg"%1,%0"   : "=r" (ret__)   : "m" (var));   break;   default: __bad_percpu_size();   }   ret__; })
-
 #define x86_read_percpu(var) percpu_from_op("mov", per_cpu__##var)
 #define x86_write_percpu(var,val) percpu_to_op("mov", per_cpu__##var, val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define x86_add_percpu(var,val) percpu_to_op("add", per_cpu__##var, val)
 #define x86_sub_percpu(var,val) percpu_to_op("sub", per_cpu__##var, val)
 #define x86_or_percpu(var,val) percpu_to_op("or", per_cpu__##var, val)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/pgalloc.h b/libc/kernel/arch-x86/asm/pgalloc.h
index d5a032b..37ce815 100644
--- a/libc/kernel/arch-x86/asm/pgalloc.h
+++ b/libc/kernel/arch-x86/asm/pgalloc.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "pgalloc_64.h"
diff --git a/libc/kernel/arch-x86/asm/pgalloc_32.h b/libc/kernel/arch-x86/asm/pgalloc_32.h
index bc0f884..022ca61 100644
--- a/libc/kernel/arch-x86/asm/pgalloc_32.h
+++ b/libc/kernel/arch-x86/asm/pgalloc_32.h
@@ -7,24 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_PGALLOC_H
 #define _I386_PGALLOC_H
-
 #include <linux/threads.h>
 #include <linux/mm.h>  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define paravirt_alloc_pt(mm, pfn) do { } while (0)
 #define paravirt_alloc_pd(pfn) do { } while (0)
 #define paravirt_alloc_pd(pfn) do { } while (0)
 #define paravirt_alloc_pd_clone(pfn, clonepfn, start, count) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define paravirt_release_pt(pfn) do { } while (0)
 #define paravirt_release_pd(pfn) do { } while (0)
-
 #define pmd_populate_kernel(mm, pmd, pte)  do {   paravirt_alloc_pt(mm, __pa(pte) >> PAGE_SHIFT);   set_pmd(pmd, __pmd(_PAGE_TABLE + __pa(pte)));  } while (0)
-
 #define pmd_populate(mm, pmd, pte)  do {   paravirt_alloc_pt(mm, page_to_pfn(pte));   set_pmd(pmd, __pmd(_PAGE_TABLE +   ((unsigned long long)page_to_pfn(pte) <<   (unsigned long long) PAGE_SHIFT)));  } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __pte_free_tlb(tlb,pte)  do {   paravirt_release_pt(page_to_pfn(pte));   tlb_remove_page((tlb),(pte));  } while (0)
 #endif
diff --git a/libc/kernel/arch-x86/asm/pgtable-2level-defs.h b/libc/kernel/arch-x86/asm/pgtable-2level-defs.h
index 9edc6c5..9a60db5 100644
--- a/libc/kernel/arch-x86/asm/pgtable-2level-defs.h
+++ b/libc/kernel/arch-x86/asm/pgtable-2level-defs.h
@@ -7,16 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_PGTABLE_2LEVEL_DEFS_H
 #define _I386_PGTABLE_2LEVEL_DEFS_H
-
 #define SHARED_KERNEL_PMD 0
-
 #define PGDIR_SHIFT 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRS_PER_PGD 1024
-
 #define PTRS_PER_PTE 1024
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/pgtable-2level.h b/libc/kernel/arch-x86/asm/pgtable-2level.h
index 7ade4ed..77cdefd 100644
--- a/libc/kernel/arch-x86/asm/pgtable-2level.h
+++ b/libc/kernel/arch-x86/asm/pgtable-2level.h
@@ -7,33 +7,44 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_PGTABLE_2LEVEL_H
 #define _I386_PGTABLE_2LEVEL_H
-
 #define pte_ERROR(e)   printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, (e).pte_low)
 #define pgd_ERROR(e)   printk("%s:%d: bad pgd %08lx.\n", __FILE__, __LINE__, pgd_val(e))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define set_pte(pteptr, pteval) native_set_pte(pteptr, pteval)
 #define set_pte_at(mm,addr,ptep,pteval) native_set_pte_at(mm, addr, ptep, pteval)
 #define set_pmd(pmdptr, pmdval) native_set_pmd(pmdptr, pmdval)
 #define set_pte_atomic(pteptr, pteval) set_pte(pteptr,pteval)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define set_pte_present(mm,addr,ptep,pteval) set_pte_at(mm,addr,ptep,pteval)
 #define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
 #define pmd_clear(xp) do { set_pmd(xp, __pmd(0)); } while (0)
 #define native_ptep_get_and_clear(xp) native_local_ptep_get_and_clear(xp)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pte_page(x) pfn_to_page(pte_pfn(x))
 #define pte_none(x) (!(x).pte_low)
 #define pte_pfn(x) (pte_val(x) >> PAGE_SHIFT)
 #define pfn_pte(pfn, prot) __pte(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pfn_pmd(pfn, prot) __pmd(((pfn) << PAGE_SHIFT) | pgprot_val(prot))
 #define PTE_FILE_MAX_BITS 29
 #define pte_to_pgoff(pte)   ((((pte).pte_low >> 1) & 0x1f ) + (((pte).pte_low >> 8) << 5 ))
 #define pgoff_to_pte(off)   ((pte_t) { (((off) & 0x1f) << 1) + (((off) >> 5) << 8) + _PAGE_FILE })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __swp_type(x) (((x).val >> 1) & 0x1f)
 #define __swp_offset(x) ((x).val >> 8)
 #define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 8) })
 #define __pte_to_swp_entry(pte) ((swp_entry_t) { (pte).pte_low })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __swp_entry_to_pte(x) ((pte_t) { (x).val })
 #endif
diff --git a/libc/kernel/arch-x86/asm/pgtable.h b/libc/kernel/arch-x86/asm/pgtable.h
index 797e473..2367e0b 100644
--- a/libc/kernel/arch-x86/asm/pgtable.h
+++ b/libc/kernel/arch-x86/asm/pgtable.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "pgtable_64.h"
diff --git a/libc/kernel/arch-x86/asm/pgtable_32.h b/libc/kernel/arch-x86/asm/pgtable_32.h
index c63ba93..4740571 100644
--- a/libc/kernel/arch-x86/asm/pgtable_32.h
+++ b/libc/kernel/arch-x86/asm/pgtable_32.h
@@ -7,169 +7,182 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_PGTABLE_H
 #define _I386_PGTABLE_H
-
 #ifndef __ASSEMBLY__
 #include <asm/processor.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/fixmap.h>
 #include <linux/threads.h>
 #include <asm/paravirt.h>
-
 #include <linux/bitops.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/slab.h>
 #include <linux/list.h>
 #include <linux/spinlock.h>
-
 struct mm_struct;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vm_area_struct;
-
 #define ZERO_PAGE(vaddr) (virt_to_page(empty_zero_page))
-
 #include <asm/pgtable-2level-defs.h>
-
 #define PGDIR_SIZE (1UL << PGDIR_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PGDIR_MASK (~(PGDIR_SIZE-1))
-
 #define USER_PTRS_PER_PGD (TASK_SIZE/PGDIR_SIZE)
 #define FIRST_USER_ADDRESS 0
-
 #define USER_PGD_PTRS (PAGE_OFFSET >> PGDIR_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KERNEL_PGD_PTRS (PTRS_PER_PGD-USER_PGD_PTRS)
-
 #define TWOLEVEL_PGDIR_SHIFT 22
 #define BOOT_USER_PGD_PTRS (__PAGE_OFFSET >> TWOLEVEL_PGDIR_SHIFT)
 #define BOOT_KERNEL_PGD_PTRS (1024-BOOT_USER_PGD_PTRS)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMALLOC_OFFSET (8*1024*1024)
 #define VMALLOC_START (((unsigned long) high_memory +   2*VMALLOC_OFFSET-1) & ~(VMALLOC_OFFSET-1))
 #define VMALLOC_END (FIXADDR_START-2*PAGE_SIZE)
-
 #define _PAGE_BIT_PRESENT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_BIT_RW 1
 #define _PAGE_BIT_USER 2
 #define _PAGE_BIT_PWT 3
 #define _PAGE_BIT_PCD 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_BIT_ACCESSED 5
 #define _PAGE_BIT_DIRTY 6
 #define _PAGE_BIT_PSE 7  
 #define _PAGE_BIT_GLOBAL 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_BIT_UNUSED1 9  
 #define _PAGE_BIT_UNUSED2 10
 #define _PAGE_BIT_UNUSED3 11
 #define _PAGE_BIT_NX 63
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_PRESENT 0x001
 #define _PAGE_RW 0x002
 #define _PAGE_USER 0x004
 #define _PAGE_PWT 0x008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_PCD 0x010
 #define _PAGE_ACCESSED 0x020
 #define _PAGE_DIRTY 0x040
 #define _PAGE_PSE 0x080  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_GLOBAL 0x100  
 #define _PAGE_UNUSED1 0x200  
 #define _PAGE_UNUSED2 0x400
 #define _PAGE_UNUSED3 0x800
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PAGE_FILE 0x040  
 #define _PAGE_PROTNONE 0x080  
 #define _PAGE_NX 0
-
 #define _PAGE_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED | _PAGE_DIRTY)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _KERNPG_TABLE (_PAGE_PRESENT | _PAGE_RW | _PAGE_ACCESSED | _PAGE_DIRTY)
 #define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
-
 #define PAGE_NONE   __pgprot(_PAGE_PROTNONE | _PAGE_ACCESSED)
 #define PAGE_SHARED   __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_SHARED_EXEC   __pgprot(_PAGE_PRESENT | _PAGE_RW | _PAGE_USER | _PAGE_ACCESSED)
 #define PAGE_COPY_NOEXEC   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
 #define PAGE_COPY_EXEC   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
 #define PAGE_COPY   PAGE_COPY_NOEXEC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_READONLY   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED | _PAGE_NX)
 #define PAGE_READONLY_EXEC   __pgprot(_PAGE_PRESENT | _PAGE_USER | _PAGE_ACCESSED)
-
 #define _PAGE_KERNEL   (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED | _PAGE_NX)
 #define _PAGE_KERNEL_EXEC   (_PAGE_PRESENT | _PAGE_RW | _PAGE_DIRTY | _PAGE_ACCESSED)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __PAGE_KERNEL_RO (__PAGE_KERNEL & ~_PAGE_RW)
 #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW)
 #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD)
 #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __PAGE_KERNEL_LARGE_EXEC (__PAGE_KERNEL_EXEC | _PAGE_PSE)
-
 #define PAGE_KERNEL __pgprot(__PAGE_KERNEL)
 #define PAGE_KERNEL_RO __pgprot(__PAGE_KERNEL_RO)
 #define PAGE_KERNEL_EXEC __pgprot(__PAGE_KERNEL_EXEC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_KERNEL_RX __pgprot(__PAGE_KERNEL_RX)
 #define PAGE_KERNEL_NOCACHE __pgprot(__PAGE_KERNEL_NOCACHE)
 #define PAGE_KERNEL_LARGE __pgprot(__PAGE_KERNEL_LARGE)
 #define PAGE_KERNEL_LARGE_EXEC __pgprot(__PAGE_KERNEL_LARGE_EXEC)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __P000 PAGE_NONE
 #define __P001 PAGE_READONLY
 #define __P010 PAGE_COPY
 #define __P011 PAGE_COPY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __P100 PAGE_READONLY_EXEC
 #define __P101 PAGE_READONLY_EXEC
 #define __P110 PAGE_COPY_EXEC
 #define __P111 PAGE_COPY_EXEC
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __S000 PAGE_NONE
 #define __S001 PAGE_READONLY
 #define __S010 PAGE_SHARED
 #define __S011 PAGE_SHARED
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __S100 PAGE_READONLY_EXEC
 #define __S101 PAGE_READONLY_EXEC
 #define __S110 PAGE_SHARED_EXEC
 #define __S111 PAGE_SHARED_EXEC
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef TEST_ACCESS_OK
-
 #define pte_present(x) ((x).pte_low & (_PAGE_PRESENT | _PAGE_PROTNONE))
-
 #define pmd_none(x) (!(unsigned long)pmd_val(x))
 #define pmd_present(x) (pmd_val(x) & _PAGE_PRESENT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pmd_bad(x) ((pmd_val(x) & (~PAGE_MASK & ~_PAGE_USER)) != _KERNPG_TABLE)
-
 #define pages_to_mb(x) ((x) >> (20-PAGE_SHIFT))
-
 #include <asm/pgtable-2level.h>
 #define pte_update(mm, addr, ptep) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pte_update_defer(mm, addr, ptep) do { } while (0)
 #define __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
 #define ptep_set_access_flags(vma, address, ptep, entry, dirty)  ({   int __changed = !pte_same(*(ptep), entry);   if (__changed && dirty) {   (ptep)->pte_low = (entry).pte_low;   pte_update_defer((vma)->vm_mm, (address), (ptep));   flush_tlb_page(vma, address);   }   __changed;  })
 #define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ptep_test_and_clear_young(vma, addr, ptep) ({   int __ret = 0;   if (pte_young(*(ptep)))   __ret = test_and_clear_bit(_PAGE_BIT_ACCESSED,   &(ptep)->pte_low);   if (__ret)   pte_update((vma)->vm_mm, addr, ptep);   __ret;  })
 #define __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
 #define ptep_clear_flush_young(vma, address, ptep)  ({   int __young;   __young = ptep_test_and_clear_young((vma), (address), (ptep));   if (__young)   flush_tlb_page(vma, address);   __young;  })
 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL
 #define __HAVE_ARCH_PTEP_SET_WRPROTECT
 #define pgprot_noncached(prot) ((boot_cpu_data.x86 > 3)   ? (__pgprot(pgprot_val(prot) | _PAGE_PCD | _PAGE_PWT)) : (prot))
 #define mk_pte(page, pgprot) pfn_pte(page_to_pfn(page), (pgprot))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pmd_large(pmd)  ((pmd_val(pmd) & (_PAGE_PSE|_PAGE_PRESENT)) == (_PAGE_PSE|_PAGE_PRESENT))
 #define pgd_index(address) (((address) >> PGDIR_SHIFT) & (PTRS_PER_PGD-1))
 #define pgd_index_k(addr) pgd_index(addr)
 #define pgd_offset(mm, address) ((mm)->pgd+pgd_index(address))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pgd_offset_k(address) pgd_offset(&init_mm, address)
 #define pmd_index(address)   (((address) >> PMD_SHIFT) & (PTRS_PER_PMD-1))
 #define pte_index(address)   (((address) >> PAGE_SHIFT) & (PTRS_PER_PTE - 1))
 #define pte_offset_kernel(dir, address)   ((pte_t *) pmd_page_vaddr(*(dir)) + pte_index(address))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT))
 #define pmd_page_vaddr(pmd)   ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
-
- #define pte_offset_map(dir, address)   ((pte_t *)page_address(pmd_page(*(dir))) + pte_index(address))
+#define pte_offset_map(dir, address)   ((pte_t *)page_address(pmd_page(*(dir))) + pte_index(address))
 #define pte_offset_map_nested(dir, address) pte_offset_map(dir, address)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pte_unmap(pte) do { } while (0)
 #define pte_unmap_nested(pte) do { } while (0)
 #define kpte_clear_flush(ptep, vaddr)  do {   pte_clear(&init_mm, vaddr, ptep);   __flush_tlb_one(vaddr);  } while (0)
 #define update_mmu_cache(vma,address,pte) do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define io_remap_pfn_range(vma, vaddr, pfn, size, prot)   remap_pfn_range(vma, vaddr, pfn, size, prot)
 #include <asm-generic/pgtable.h>
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/poll.h b/libc/kernel/arch-x86/asm/poll.h
index 5b16673..d7e8adc 100644
--- a/libc/kernel/arch-x86/asm/poll.h
+++ b/libc/kernel/arch-x86/asm/poll.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/poll.h>
diff --git a/libc/kernel/arch-x86/asm/posix_types.h b/libc/kernel/arch-x86/asm/posix_types.h
index 79bb490..21d4bf2 100644
--- a/libc/kernel/arch-x86/asm/posix_types.h
+++ b/libc/kernel/arch-x86/asm/posix_types.h
@@ -7,10 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifdef __i386__
 #include "posix_types_32.h"
 #else
 #include "posix_types_64.h"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/posix_types_32.h b/libc/kernel/arch-x86/asm/posix_types_32.h
index 97a8b69..90136d2 100644
--- a/libc/kernel/arch-x86/asm/posix_types_32.h
+++ b/libc/kernel/arch-x86/asm/posix_types_32.h
@@ -7,64 +7,72 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ARCH_I386_POSIX_TYPES_H
 #define __ARCH_I386_POSIX_TYPES_H
-
 typedef unsigned long __kernel_ino_t;
 typedef unsigned short __kernel_mode_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_nlink_t;
 typedef long __kernel_off_t;
 typedef int __kernel_pid_t;
 typedef unsigned short __kernel_ipc_pid_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_uid_t;
 typedef unsigned short __kernel_gid_t;
 typedef unsigned int __kernel_size_t;
 typedef int __kernel_ssize_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int __kernel_ptrdiff_t;
 typedef long __kernel_time_t;
 typedef long __kernel_suseconds_t;
 typedef long __kernel_clock_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int __kernel_timer_t;
 typedef int __kernel_clockid_t;
 typedef int __kernel_daddr_t;
 typedef char * __kernel_caddr_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_uid16_t;
 typedef unsigned short __kernel_gid16_t;
 typedef unsigned int __kernel_uid32_t;
 typedef unsigned int __kernel_gid32_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short __kernel_old_uid_t;
 typedef unsigned short __kernel_old_gid_t;
 typedef unsigned short __kernel_old_dev_t;
-
 #ifdef __GNUC__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef long long __kernel_loff_t;
 #endif
-
 typedef struct {
 #ifdef __USE_ALL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int val[2];
 #else
  int __val[2];
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __kernel_fsid_t;
-
 #if !defined(__GLIBC__) || __GLIBC__ < 2
-
 #undef __FD_SET
 #define __FD_SET(fd,fdsetp)   __asm__ __volatile__("btsl %1,%0":   "+m" (*(__kernel_fd_set *) (fdsetp)):"r" ((int) (fd)))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef __FD_CLR
 #define __FD_CLR(fd,fdsetp)   __asm__ __volatile__("btrl %1,%0":   "+m" (*(__kernel_fd_set *) (fdsetp)):"r" ((int) (fd)))
-
 #undef __FD_ISSET
 #define __FD_ISSET(fd,fdsetp) (__extension__ ({   unsigned char __result;   __asm__ __volatile__("btl %1,%2 ; setb %0"   :"=q" (__result) :"r" ((int) (fd)),   "m" (*(__kernel_fd_set *) (fdsetp)));   __result; }))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef __FD_ZERO
 #define __FD_ZERO(fdsetp)  do {   int __d0, __d1;   __asm__ __volatile__("cld ; rep ; stosl"   :"=m" (*(__kernel_fd_set *) (fdsetp)),   "=&c" (__d0), "=&D" (__d1)   :"a" (0), "1" (__FDSET_LONGS),   "2" ((__kernel_fd_set *) (fdsetp)) : "memory");  } while (0)
-
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/prctl.h b/libc/kernel/arch-x86/asm/prctl.h
index 8852ca7..d194cf8 100644
--- a/libc/kernel/arch-x86/asm/prctl.h
+++ b/libc/kernel/arch-x86/asm/prctl.h
@@ -7,14 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef X86_64_PRCTL_H
 #define X86_64_PRCTL_H 1
-
 #define ARCH_SET_GS 0x1001
 #define ARCH_SET_FS 0x1002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARCH_GET_FS 0x1003
 #define ARCH_GET_GS 0x1004
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/processor-flags.h b/libc/kernel/arch-x86/asm/processor-flags.h
index 79e8f7d..ab46527 100644
--- a/libc/kernel/arch-x86/asm/processor-flags.h
+++ b/libc/kernel/arch-x86/asm/processor-flags.h
@@ -7,73 +7,88 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I386_PROCESSOR_FLAGS_H
 #define __ASM_I386_PROCESSOR_FLAGS_H
-
 #define X86_EFLAGS_CF 0x00000001  
 #define X86_EFLAGS_PF 0x00000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_EFLAGS_AF 0x00000010  
 #define X86_EFLAGS_ZF 0x00000040  
 #define X86_EFLAGS_SF 0x00000080  
 #define X86_EFLAGS_TF 0x00000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_EFLAGS_IF 0x00000200  
 #define X86_EFLAGS_DF 0x00000400  
 #define X86_EFLAGS_OF 0x00000800  
 #define X86_EFLAGS_IOPL 0x00003000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_EFLAGS_NT 0x00004000  
 #define X86_EFLAGS_RF 0x00010000  
 #define X86_EFLAGS_VM 0x00020000  
 #define X86_EFLAGS_AC 0x00040000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_EFLAGS_VIF 0x00080000  
 #define X86_EFLAGS_VIP 0x00100000  
 #define X86_EFLAGS_ID 0x00200000  
-
 #define X86_CR0_PE 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR0_MP 0x00000002  
 #define X86_CR0_EM 0x00000004  
 #define X86_CR0_TS 0x00000008  
 #define X86_CR0_ET 0x00000010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR0_NE 0x00000020  
 #define X86_CR0_WP 0x00010000  
 #define X86_CR0_AM 0x00040000  
 #define X86_CR0_NW 0x20000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR0_CD 0x40000000  
 #define X86_CR0_PG 0x80000000  
-
 #define X86_CR3_PWT 0x00000008  
 #define X86_CR3_PCD 0x00000010  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR4_VME 0x00000001  
 #define X86_CR4_PVI 0x00000002  
 #define X86_CR4_TSD 0x00000004  
 #define X86_CR4_DE 0x00000008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR4_PSE 0x00000010  
 #define X86_CR4_PAE 0x00000020  
 #define X86_CR4_MCE 0x00000040  
 #define X86_CR4_PGE 0x00000080  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR4_PCE 0x00000100  
 #define X86_CR4_OSFXSR 0x00000200  
 #define X86_CR4_OSXMMEXCPT 0x00000400  
 #define X86_CR4_VMXE 0x00002000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_CR8_TPR 0x0000000F  
-
 #define CX86_PCR0 0x20
 #define CX86_GCR 0xb8
 #define CX86_CCR0 0xc0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CX86_CCR1 0xc1
 #define CX86_CCR2 0xc2
 #define CX86_CCR3 0xc3
 #define CX86_CCR4 0xe8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CX86_CCR5 0xe9
 #define CX86_CCR6 0xea
 #define CX86_CCR7 0xeb
 #define CX86_PCR1 0xf0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CX86_DIR0 0xfe
 #define CX86_DIR1 0xff
 #define CX86_ARR_BASE 0xc4
 #define CX86_RCR_BASE 0xdc
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/processor.h b/libc/kernel/arch-x86/asm/processor.h
index 7d47749..38a66b1 100644
--- a/libc/kernel/arch-x86/asm/processor.h
+++ b/libc/kernel/arch-x86/asm/processor.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "processor_64.h"
diff --git a/libc/kernel/arch-x86/asm/processor_32.h b/libc/kernel/arch-x86/asm/processor_32.h
index 539edd1..c759016 100644
--- a/libc/kernel/arch-x86/asm/processor_32.h
+++ b/libc/kernel/arch-x86/asm/processor_32.h
@@ -7,318 +7,342 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_I386_PROCESSOR_H
 #define __ASM_I386_PROCESSOR_H
-
 #include <asm/vm86.h>
 #include <asm/math_emu.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/segment.h>
 #include <asm/page.h>
 #include <asm/types.h>
 #include <asm/sigcontext.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/cpufeature.h>
 #include <asm/msr.h>
 #include <asm/system.h>
 #include <linux/cache.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/threads.h>
 #include <asm/percpu.h>
 #include <linux/cpumask.h>
 #include <linux/init.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/processor-flags.h>
-
 struct desc_struct {
  unsigned long a,b;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define desc_empty(desc)   (!((desc)->a | (desc)->b))
-
 #define desc_equal(desc1, desc2)   (((desc1)->a == (desc2)->a) && ((desc1)->b == (desc2)->b))
-
 #define current_text_addr() ({ void *pc; __asm__("movl $1f,%0\n1:":"=g" (pc)); pc; })
-
 struct cpuinfo_x86 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 x86;
  __u8 x86_vendor;
  __u8 x86_model;
  __u8 x86_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char wp_works_ok;
  char hlt_works_ok;
  char hard_math;
  char rfu;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int cpuid_level;
  unsigned long x86_capability[NCAPINTS];
  char x86_vendor_id[16];
  char x86_model_id[64];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int x86_cache_size;
  int x86_cache_alignment;
  char fdiv_bug;
  char f00f_bug;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char coma_bug;
  char pad0;
  int x86_power;
  unsigned long loops_per_jiffy;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char x86_max_cores;
  unsigned char apicid;
  unsigned short x86_clflush_size;
 } __attribute__((__aligned__(SMP_CACHE_BYTES)));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_VENDOR_INTEL 0
 #define X86_VENDOR_CYRIX 1
 #define X86_VENDOR_AMD 2
 #define X86_VENDOR_UMC 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_VENDOR_NEXGEN 4
 #define X86_VENDOR_CENTAUR 5
 #define X86_VENDOR_TRANSMETA 7
 #define X86_VENDOR_NSC 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define X86_VENDOR_NUM 9
 #define X86_VENDOR_UNKNOWN 0xff
-
 #define cpu_data(cpu) boot_cpu_data
 #define current_cpu_data boot_cpu_data
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define load_cr3(pgdir) write_cr3(__pa(pgdir))
-
 #define TASK_SIZE (PAGE_OFFSET)
-
 #define TASK_UNMAPPED_BASE (PAGE_ALIGN(TASK_SIZE / 3))
-
 #define HAVE_ARCH_PICK_MMAP_LAYOUT
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IO_BITMAP_BITS 65536
 #define IO_BITMAP_BYTES (IO_BITMAP_BITS/8)
 #define IO_BITMAP_LONGS (IO_BITMAP_BYTES/sizeof(long))
 #define IO_BITMAP_OFFSET offsetof(struct tss_struct,io_bitmap)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INVALID_IO_BITMAP_OFFSET 0x8000
 #define INVALID_IO_BITMAP_OFFSET_LAZY 0x9000
-
 struct i387_fsave_struct {
  long cwd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long swd;
  long twd;
  long fip;
  long fcs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long foo;
  long fos;
  long st_space[20];
  long status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct i387_fxsave_struct {
  unsigned short cwd;
  unsigned short swd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short twd;
  unsigned short fop;
  long fip;
  long fcs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long foo;
  long fos;
  long mxcsr;
  long mxcsr_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long st_space[32];
  long xmm_space[32];
  long padding[56];
 } __attribute__ ((aligned (16)));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct i387_soft_struct {
  long cwd;
  long swd;
  long twd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long fip;
  long fcs;
  long foo;
  long fos;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long st_space[20];
  unsigned char ftop, changed, lookahead, no_update, rm, alimit;
  struct info *info;
  unsigned long entry_eip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 union i387_union {
  struct i387_fsave_struct fsave;
  struct i387_fxsave_struct fxsave;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct i387_soft_struct soft;
 };
-
 typedef struct {
  unsigned long seg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mm_segment_t;
-
 struct thread_struct;
-
 struct i386_hw_tss {
  unsigned short back_link,__blh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long esp0;
  unsigned short ss0,__ss0h;
  unsigned long esp1;
  unsigned short ss1,__ss1h;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long esp2;
  unsigned short ss2,__ss2h;
  unsigned long __cr3;
  unsigned long eip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long eflags;
  unsigned long eax,ecx,edx,ebx;
  unsigned long esp;
  unsigned long ebp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long esi;
  unsigned long edi;
  unsigned short es, __esh;
  unsigned short cs, __csh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ss, __ssh;
  unsigned short ds, __dsh;
  unsigned short fs, __fsh;
  unsigned short gs, __gsh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ldt, __ldth;
  unsigned short trace, io_bitmap_base;
 } __attribute__((packed));
-
 struct tss_struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct i386_hw_tss x86_tss;
-
  unsigned long io_bitmap[IO_BITMAP_LONGS + 1];
-
  unsigned long io_bitmap_max;
  struct thread_struct *io_bitmap_owner;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __cacheline_filler[35];
-
  unsigned long stack[64];
 } __attribute__((packed));
-
 #define ARCH_MIN_TASKALIGN 16
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct thread_struct {
-
  struct desc_struct tls_array[GDT_ENTRY_TLS_ENTRIES];
  unsigned long esp0;
  unsigned long sysenter_cs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long eip;
  unsigned long esp;
  unsigned long fs;
  unsigned long gs;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long debugreg[8];
-
  unsigned long cr2, trap_no, error_code;
-
  union i387_union i387;
-
  struct vm86_struct __user * vm86_info;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long screen_bitmap;
  unsigned long v86flags, v86mask, saved_esp0;
  unsigned int saved_fs, saved_gs;
-
  unsigned long *io_bitmap_ptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long iopl;
-
  unsigned long io_bitmap_max;
 };
-
 #define INIT_THREAD {   .esp0 = sizeof(init_stack) + (long)&init_stack,   .vm86_info = NULL,   .sysenter_cs = __KERNEL_CS,   .io_bitmap_ptr = NULL,   .fs = __KERNEL_PERCPU,  }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INIT_TSS {   .x86_tss = {   .esp0 = sizeof(init_stack) + (long)&init_stack,   .ss0 = __KERNEL_DS,   .ss1 = __KERNEL_CS,   .io_bitmap_base = INVALID_IO_BITMAP_OFFSET,   },   .io_bitmap = { [ 0 ... IO_BITMAP_LONGS] = ~0 },  }
-
 #define start_thread(regs, new_eip, new_esp) do {   __asm__("movl %0,%%gs": :"r" (0));   regs->xfs = 0;   set_fs(USER_DS);   regs->xds = __USER_DS;   regs->xes = __USER_DS;   regs->xss = __USER_DS;   regs->xcs = __USER_CS;   regs->eip = new_eip;   regs->esp = new_esp;  } while (0)
-
 struct task_struct;
 struct mm_struct;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define THREAD_SIZE_LONGS (THREAD_SIZE/sizeof(unsigned long))
 #define KSTK_TOP(info)  ({   unsigned long *__ptr = (unsigned long *)(info);   (unsigned long)(&__ptr[THREAD_SIZE_LONGS]);  })
-
 #define task_pt_regs(task)  ({   struct pt_regs *__regs__;   __regs__ = (struct pt_regs *)(KSTK_TOP(task_stack_page(task))-8);   __regs__ - 1;  })
-
 #define KSTK_EIP(task) (task_pt_regs(task)->eip)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KSTK_ESP(task) (task_pt_regs(task)->esp)
-
 struct microcode_header {
  unsigned int hdrver;
  unsigned int rev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int date;
  unsigned int sig;
  unsigned int cksum;
  unsigned int ldrver;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int pf;
  unsigned int datasize;
  unsigned int totalsize;
  unsigned int reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct microcode {
  struct microcode_header hdr;
  unsigned int bits[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 typedef struct microcode microcode_t;
 typedef struct microcode_header microcode_header_t;
-
 struct extended_signature {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int sig;
  unsigned int pf;
  unsigned int cksum;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct extended_sigtable {
  unsigned int count;
  unsigned int cksum;
  unsigned int reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct extended_signature sigs[0];
 };
-
 #define cpu_relax() rep_nop()
 #define paravirt_enabled() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpuid native_cpuid
 #define get_debugreg(var, register)   (var) = native_get_debugreg(register)
 #define set_debugreg(value, register)   native_set_debugreg(register, value)
 #define set_iopl_mask native_set_iopl_mask
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GENERIC_NOP1 ".byte 0x90\n"
 #define GENERIC_NOP2 ".byte 0x89,0xf6\n"
 #define GENERIC_NOP3 ".byte 0x8d,0x76,0x00\n"
 #define GENERIC_NOP4 ".byte 0x8d,0x74,0x26,0x00\n"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GENERIC_NOP5 GENERIC_NOP1 GENERIC_NOP4
 #define GENERIC_NOP6 ".byte 0x8d,0xb6,0x00,0x00,0x00,0x00\n"
 #define GENERIC_NOP7 ".byte 0x8d,0xb4,0x26,0x00,0x00,0x00,0x00\n"
 #define GENERIC_NOP8 GENERIC_NOP1 GENERIC_NOP7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K8_NOP1 GENERIC_NOP1
 #define K8_NOP2 ".byte 0x66,0x90\n" 
 #define K8_NOP3 ".byte 0x66,0x66,0x90\n" 
 #define K8_NOP4 ".byte 0x66,0x66,0x66,0x90\n" 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K8_NOP5 K8_NOP3 K8_NOP2 
 #define K8_NOP6 K8_NOP3 K8_NOP3
 #define K8_NOP7 K8_NOP4 K8_NOP3
 #define K8_NOP8 K8_NOP4 K8_NOP4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K7_NOP1 GENERIC_NOP1
 #define K7_NOP2 ".byte 0x8b,0xc0\n" 
 #define K7_NOP3 ".byte 0x8d,0x04,0x20\n"
 #define K7_NOP4 ".byte 0x8d,0x44,0x20,0x00\n"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K7_NOP5 K7_NOP4 ASM_NOP1
 #define K7_NOP6 ".byte 0x8d,0x80,0,0,0,0\n"
 #define K7_NOP7 ".byte 0x8D,0x04,0x05,0,0,0,0\n"
 #define K7_NOP8 K7_NOP7 ASM_NOP1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P6_NOP1 GENERIC_NOP1
 #define P6_NOP2 ".byte 0x66,0x90\n"
 #define P6_NOP3 ".byte 0x0f,0x1f,0x00\n"
 #define P6_NOP4 ".byte 0x0f,0x1f,0x40,0\n"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P6_NOP5 ".byte 0x0f,0x1f,0x44,0x00,0\n"
 #define P6_NOP6 ".byte 0x66,0x0f,0x1f,0x44,0x00,0\n"
 #define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n"
 #define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASM_NOP1 GENERIC_NOP1
 #define ASM_NOP2 GENERIC_NOP2
 #define ASM_NOP3 GENERIC_NOP3
 #define ASM_NOP4 GENERIC_NOP4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASM_NOP5 GENERIC_NOP5
 #define ASM_NOP6 GENERIC_NOP6
 #define ASM_NOP7 GENERIC_NOP7
 #define ASM_NOP8 GENERIC_NOP8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASM_NOP_MAX 8
 #define ARCH_HAS_PREFETCH
 #define ARCH_HAS_PREFETCH
 #define ARCH_HAS_PREFETCHW
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARCH_HAS_SPINLOCK_PREFETCH
 #define spin_lock_prefetch(x) prefetchw(x)
-
 #define cache_line_size() (boot_cpu_data.x86_cache_alignment)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/ptrace-abi.h b/libc/kernel/arch-x86/asm/ptrace-abi.h
index 3e6ea08..7cd9425 100644
--- a/libc/kernel/arch-x86/asm/ptrace-abi.h
+++ b/libc/kernel/arch-x86/asm/ptrace-abi.h
@@ -7,82 +7,92 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_PTRACE_ABI_H
 #define _ASM_X86_PTRACE_ABI_H
-
 #ifdef __i386__
-
 #define EBX 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECX 1
 #define EDX 2
 #define ESI 3
 #define EDI 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBP 5
 #define EAX 6
 #define DS 7
 #define ES 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS 9
 #define GS 10
 #define ORIG_EAX 11
 #define EIP 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CS 13
 #define EFL 14
 #define UESP 15
 #define SS 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAME_SIZE 17
-
 #else
-
 #if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
 #define R15 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R14 8
 #define R13 16
 #define R12 24
 #define RBP 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RBX 40
-
 #define R11 48
 #define R10 56
 #define R9 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define R8 72
 #define RAX 80
 #define RCX 88
 #define RDX 96
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RSI 104
 #define RDI 112
 #define ORIG_RAX 120  
-
 #define RIP 128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CS 136
 #define EFLAGS 144
 #define RSP 152
 #define SS 160
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARGOFFSET R11
 #endif
-
 #define FRAME_SIZE 168
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_GETREGS 12
 #define PTRACE_SETREGS 13
 #define PTRACE_GETFPREGS 14
 #define PTRACE_SETFPREGS 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_GETFPXREGS 18
 #define PTRACE_SETFPXREGS 19
-
 #define PTRACE_OLDSETOPTIONS 21
-
 #define PTRACE_GET_THREAD_AREA 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_SET_THREAD_AREA 26
-
 #ifdef __x86_64__
 #define PTRACE_ARCH_PRCTL 30
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_SYSEMU 31
 #define PTRACE_SYSEMU_SINGLESTEP 32
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/ptrace.h b/libc/kernel/arch-x86/asm/ptrace.h
index 4743e0f..2560e5a 100644
--- a/libc/kernel/arch-x86/asm/ptrace.h
+++ b/libc/kernel/arch-x86/asm/ptrace.h
@@ -7,68 +7,75 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_PTRACE_H
 #define _ASM_X86_PTRACE_H
-
 #include <linux/compiler.h>  
 #include <asm/ptrace-abi.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
-
 #ifdef __i386__
-
 struct pt_regs {
  long ebx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ecx;
  long edx;
  long esi;
  long edi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ebp;
  long eax;
  int xds;
  int xes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int xfs;
-
  long orig_eax;
  long eip;
  int xcs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long eflags;
  long esp;
  int xss;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
-
 struct pt_regs {
  unsigned long r15;
  unsigned long r14;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long r13;
  unsigned long r12;
  unsigned long rbp;
  unsigned long rbx;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long r11;
  unsigned long r10;
  unsigned long r9;
  unsigned long r8;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long rax;
  unsigned long rcx;
  unsigned long rdx;
  unsigned long rsi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long rdi;
  unsigned long orig_rax;
-
  unsigned long rip;
  unsigned long cs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long eflags;
  unsigned long rsp;
  unsigned long ss;
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/required-features.h b/libc/kernel/arch-x86/asm/required-features.h
index a96517a..df9d33c 100644
--- a/libc/kernel/arch-x86/asm/required-features.h
+++ b/libc/kernel/arch-x86/asm/required-features.h
@@ -7,38 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_REQUIRED_FEATURES_H
 #define _ASM_REQUIRED_FEATURES_H 1
-
 #define NEED_FPU (1<<(X86_FEATURE_FPU & 31))
-
 #define NEED_PAE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NEED_CX8 0
-
 #define NEED_CMOV 0
-
 #define NEED_3DNOW 0
-
 #define NEED_PSE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NEED_MSR 0
 #define NEED_PGE 0
 #define NEED_FXSR 0
 #define NEED_XMM 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NEED_XMM2 0
 #define NEED_LM 0
-
 #define REQUIRED_MASK0 (NEED_FPU|NEED_PSE|NEED_MSR|NEED_PAE|  NEED_CX8|NEED_PGE|NEED_FXSR|NEED_CMOV|  NEED_XMM|NEED_XMM2)
 #define SSE_MASK (NEED_XMM|NEED_XMM2)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REQUIRED_MASK1 (NEED_LM|NEED_3DNOW)
-
 #define REQUIRED_MASK2 0
 #define REQUIRED_MASK3 0
 #define REQUIRED_MASK4 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REQUIRED_MASK5 0
 #define REQUIRED_MASK6 0
 #define REQUIRED_MASK7 0
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/resource.h b/libc/kernel/arch-x86/asm/resource.h
index 29d9e12..371adb5 100644
--- a/libc/kernel/arch-x86/asm/resource.h
+++ b/libc/kernel/arch-x86/asm/resource.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/resource.h>
diff --git a/libc/kernel/arch-x86/asm/rwlock.h b/libc/kernel/arch-x86/asm/rwlock.h
index 3693542..82a96e0 100644
--- a/libc/kernel/arch-x86/asm/rwlock.h
+++ b/libc/kernel/arch-x86/asm/rwlock.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_RWLOCK_H
 #define _ASM_X86_RWLOCK_H
-
 #define RW_LOCK_BIAS 0x01000000
 #define RW_LOCK_BIAS_STR "0x01000000"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/scatterlist.h b/libc/kernel/arch-x86/asm/scatterlist.h
index fa4d0cc..376087f 100644
--- a/libc/kernel/arch-x86/asm/scatterlist.h
+++ b/libc/kernel/arch-x86/asm/scatterlist.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "scatterlist_64.h"
diff --git a/libc/kernel/arch-x86/asm/scatterlist_32.h b/libc/kernel/arch-x86/asm/scatterlist_32.h
index 29044c3..e3c777d 100644
--- a/libc/kernel/arch-x86/asm/scatterlist_32.h
+++ b/libc/kernel/arch-x86/asm/scatterlist_32.h
@@ -7,25 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_SCATTERLIST_H
 #define _I386_SCATTERLIST_H
-
 #include <asm/types.h>
-
 struct scatterlist {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long page_link;
  unsigned int offset;
  dma_addr_t dma_address;
  unsigned int length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ARCH_HAS_SG_CHAIN
-
 #define sg_dma_address(sg) ((sg)->dma_address)
 #define sg_dma_len(sg) ((sg)->length)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ISA_DMA_THRESHOLD (0x00ffffff)
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/sections.h b/libc/kernel/arch-x86/asm/sections.h
index a21da3e..7f35a59 100644
--- a/libc/kernel/arch-x86/asm/sections.h
+++ b/libc/kernel/arch-x86/asm/sections.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm-generic/sections.h>
diff --git a/libc/kernel/arch-x86/asm/segment.h b/libc/kernel/arch-x86/asm/segment.h
index 6877a80..eeb7a1c 100644
--- a/libc/kernel/arch-x86/asm/segment.h
+++ b/libc/kernel/arch-x86/asm/segment.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "segment_64.h"
diff --git a/libc/kernel/arch-x86/asm/segment_32.h b/libc/kernel/arch-x86/asm/segment_32.h
index 54b312b..5d7d0f9 100644
--- a/libc/kernel/arch-x86/asm/segment_32.h
+++ b/libc/kernel/arch-x86/asm/segment_32.h
@@ -7,83 +7,75 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_SEGMENT_H
 #define _ASM_SEGMENT_H
-
 #define GDT_ENTRY_TLS_ENTRIES 3
 #define GDT_ENTRY_TLS_MIN 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRY_TLS_MAX (GDT_ENTRY_TLS_MIN + GDT_ENTRY_TLS_ENTRIES - 1)
-
 #define TLS_SIZE (GDT_ENTRY_TLS_ENTRIES * 8)
-
 #define GDT_ENTRY_DEFAULT_USER_CS 14
 #define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS * 8 + 3)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRY_DEFAULT_USER_DS 15
 #define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS * 8 + 3)
-
 #define GDT_ENTRY_KERNEL_BASE 12
-
 #define GDT_ENTRY_KERNEL_CS (GDT_ENTRY_KERNEL_BASE + 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KERNEL_CS (GDT_ENTRY_KERNEL_CS * 8)
-
 #define GDT_ENTRY_KERNEL_DS (GDT_ENTRY_KERNEL_BASE + 1)
 #define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)
-
 #define GDT_ENTRY_TSS (GDT_ENTRY_KERNEL_BASE + 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRY_LDT (GDT_ENTRY_KERNEL_BASE + 5)
-
 #define GDT_ENTRY_PNPBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 6)
 #define GDT_ENTRY_APMBIOS_BASE (GDT_ENTRY_KERNEL_BASE + 11)
-
 #define GDT_ENTRY_ESPFIX_SS (GDT_ENTRY_KERNEL_BASE + 14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ESPFIX_SS (GDT_ENTRY_ESPFIX_SS * 8)
-
 #define GDT_ENTRY_PERCPU (GDT_ENTRY_KERNEL_BASE + 15)
 #define __KERNEL_PERCPU 0
-
 #define GDT_ENTRY_DOUBLEFAULT_TSS 31
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRIES 32
 #define GDT_SIZE (GDT_ENTRIES * 8)
-
 #define GDT_ENTRY_BOOT_CS 2
 #define __BOOT_CS (GDT_ENTRY_BOOT_CS * 8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRY_BOOT_DS (GDT_ENTRY_BOOT_CS + 1)
 #define __BOOT_DS (GDT_ENTRY_BOOT_DS * 8)
-
 #define GDT_ENTRY_PNPBIOS_CS32 (GDT_ENTRY_PNPBIOS_BASE + 0)
 #define GDT_ENTRY_PNPBIOS_CS16 (GDT_ENTRY_PNPBIOS_BASE + 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GDT_ENTRY_PNPBIOS_DS (GDT_ENTRY_PNPBIOS_BASE + 2)
 #define GDT_ENTRY_PNPBIOS_TS1 (GDT_ENTRY_PNPBIOS_BASE + 3)
 #define GDT_ENTRY_PNPBIOS_TS2 (GDT_ENTRY_PNPBIOS_BASE + 4)
-
 #define PNP_CS32 (GDT_ENTRY_PNPBIOS_CS32 * 8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PNP_CS16 (GDT_ENTRY_PNPBIOS_CS16 * 8)  
 #define PNP_DS (GDT_ENTRY_PNPBIOS_DS * 8)  
 #define PNP_TS1 (GDT_ENTRY_PNPBIOS_TS1 * 8)  
 #define PNP_TS2 (GDT_ENTRY_PNPBIOS_TS2 * 8)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDT_ENTRIES 256
-
 #define SEGMENT_RPL_MASK 0x3
-
 #define SEGMENT_TI_MASK 0x4
-
 #define USER_RPL 0x3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEGMENT_LDT 0x4
 #define SEGMENT_GDT 0x0
-
 #define get_kernel_rpl() 0
-
 #define SEGMENT_IS_KERNEL_CODE(x) (((x) & 0xfc) == GDT_ENTRY_KERNEL_CS * 8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEGMENT_IS_FLAT_CODE(x) (((x) & 0xec) == GDT_ENTRY_KERNEL_CS * 8)
-
 #define SEGMENT_IS_PNP_CODE(x) (((x) & 0xf4) == GDT_ENTRY_PNPBIOS_BASE * 8)
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/semaphore.h b/libc/kernel/arch-x86/asm/semaphore.h
index 8b4c595..6ee8244 100644
--- a/libc/kernel/arch-x86/asm/semaphore.h
+++ b/libc/kernel/arch-x86/asm/semaphore.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "semaphore_64.h"
diff --git a/libc/kernel/arch-x86/asm/semaphore_32.h b/libc/kernel/arch-x86/asm/semaphore_32.h
index babe779..7d48d0e 100644
--- a/libc/kernel/arch-x86/asm/semaphore_32.h
+++ b/libc/kernel/arch-x86/asm/semaphore_32.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_SEMAPHORE_H
 #define _I386_SEMAPHORE_H
-
 #include <linux/linkage.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/sembuf.h b/libc/kernel/arch-x86/asm/sembuf.h
index 1695208..d1cb296 100644
--- a/libc/kernel/arch-x86/asm/sembuf.h
+++ b/libc/kernel/arch-x86/asm/sembuf.h
@@ -7,20 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SEMBUF_H
 #define _ASM_X86_SEMBUF_H
-
 struct semid64_ds {
  struct ipc64_perm sem_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t sem_otime;
  unsigned long __unused1;
  __kernel_time_t sem_ctime;
  unsigned long __unused2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long sem_nsems;
  unsigned long __unused3;
  unsigned long __unused4;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/setup.h b/libc/kernel/arch-x86/asm/setup.h
index 696ed97..fe6ca0f 100644
--- a/libc/kernel/arch-x86/asm/setup.h
+++ b/libc/kernel/arch-x86/asm/setup.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SETUP_H
 #define _ASM_X86_SETUP_H
-
 #define COMMAND_LINE_SIZE 2048
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/shmbuf.h b/libc/kernel/arch-x86/asm/shmbuf.h
index 314ccb7..81cce3e 100644
--- a/libc/kernel/arch-x86/asm/shmbuf.h
+++ b/libc/kernel/arch-x86/asm/shmbuf.h
@@ -7,43 +7,55 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SHMBUF_H
 #define _ASM_X86_SHMBUF_H
-
 struct shmid64_ds {
  struct ipc64_perm shm_perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t shm_segsz;
  __kernel_time_t shm_atime;
 #ifdef __i386__
  unsigned long __unused1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __kernel_time_t shm_dtime;
 #ifdef __i386__
  unsigned long __unused2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __kernel_time_t shm_ctime;
 #ifdef __i386__
  unsigned long __unused3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __kernel_pid_t shm_cpid;
  __kernel_pid_t shm_lpid;
  unsigned long shm_nattch;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __unused4;
  unsigned long __unused5;
 };
-
 struct shminfo64 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long shmmax;
  unsigned long shmmin;
  unsigned long shmmni;
  unsigned long shmseg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long shmall;
  unsigned long __unused1;
  unsigned long __unused2;
  unsigned long __unused3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __unused4;
 };
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/shmparam.h b/libc/kernel/arch-x86/asm/shmparam.h
index e667ba1..43fd83e 100644
--- a/libc/kernel/arch-x86/asm/shmparam.h
+++ b/libc/kernel/arch-x86/asm/shmparam.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SHMPARAM_H
 #define _ASM_X86_SHMPARAM_H
-
 #define SHMLBA PAGE_SIZE  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/sigcontext.h b/libc/kernel/arch-x86/asm/sigcontext.h
index a8f76f0..b0b5fd4 100644
--- a/libc/kernel/arch-x86/asm/sigcontext.h
+++ b/libc/kernel/arch-x86/asm/sigcontext.h
@@ -7,126 +7,144 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SIGCONTEXT_H
 #define _ASM_X86_SIGCONTEXT_H
-
 #include <linux/compiler.h>
 #include <asm/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __i386__
-
 struct _fpreg {
  unsigned short significand[4];
  unsigned short exponent;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct _fpxreg {
  unsigned short significand[4];
  unsigned short exponent;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short padding[3];
 };
-
 struct _xmmreg {
  unsigned long element[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct _fpstate {
-
  unsigned long cw;
  unsigned long sw;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long tag;
  unsigned long ipoff;
  unsigned long cssel;
  unsigned long dataoff;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long datasel;
  struct _fpreg _st[8];
  unsigned short status;
  unsigned short magic;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long _fxsr_env[6];
  unsigned long mxcsr;
  unsigned long reserved;
  struct _fpxreg _fxsr_st[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct _xmmreg _xmm[8];
  unsigned long padding[56];
 };
-
 #define X86_FXSR_MAGIC 0x0000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sigcontext {
  unsigned short gs, __gsh;
  unsigned short fs, __fsh;
  unsigned short es, __esh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ds, __dsh;
  unsigned long edi;
  unsigned long esi;
  unsigned long ebp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long esp;
  unsigned long ebx;
  unsigned long edx;
  unsigned long ecx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long eax;
  unsigned long trapno;
  unsigned long err;
  unsigned long eip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short cs, __csh;
  unsigned long eflags;
  unsigned long esp_at_signal;
  unsigned short ss, __ssh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct _fpstate __user * fpstate;
  unsigned long oldmask;
  unsigned long cr2;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
-
 struct _fpstate {
  __u16 cwd;
  __u16 swd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 twd;
  __u16 fop;
  __u64 rip;
  __u64 rdp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 mxcsr;
  __u32 mxcsr_mask;
  __u32 st_space[32];
  __u32 xmm_space[64];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 reserved2[24];
 };
-
 struct sigcontext {
  unsigned long r8;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long r9;
  unsigned long r10;
  unsigned long r11;
  unsigned long r12;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long r13;
  unsigned long r14;
  unsigned long r15;
  unsigned long rdi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long rsi;
  unsigned long rbp;
  unsigned long rbx;
  unsigned long rdx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long rax;
  unsigned long rcx;
  unsigned long rsp;
  unsigned long rip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long eflags;
  unsigned short cs;
  unsigned short gs;
  unsigned short fs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short __pad0;
  unsigned long err;
  unsigned long trapno;
  unsigned long oldmask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long cr2;
  struct _fpstate __user *fpstate;
  unsigned long reserved1[8];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/siginfo.h b/libc/kernel/arch-x86/asm/siginfo.h
index 0d21d22..6459be7 100644
--- a/libc/kernel/arch-x86/asm/siginfo.h
+++ b/libc/kernel/arch-x86/asm/siginfo.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SIGINFO_H
 #define _ASM_X86_SIGINFO_H
-
 #ifdef __x86_64__
 #define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #include <asm-generic/siginfo.h>
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/signal.h b/libc/kernel/arch-x86/asm/signal.h
index 6d84eab..a15028c 100644
--- a/libc/kernel/arch-x86/asm/signal.h
+++ b/libc/kernel/arch-x86/asm/signal.h
@@ -7,121 +7,127 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SIGNAL_H
 #define _ASM_X86_SIGNAL_H
-
 #ifndef __ASSEMBLY__
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/time.h>
 #include <linux/compiler.h>
-
 struct siginfo;
-
 #define NSIG 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned long sigset_t;
-
 #endif
-
 #define SIGHUP 1
 #define SIGINT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGQUIT 3
 #define SIGILL 4
 #define SIGTRAP 5
 #define SIGABRT 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGIOT 6
 #define SIGBUS 7
 #define SIGFPE 8
 #define SIGKILL 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGUSR1 10
 #define SIGSEGV 11
 #define SIGUSR2 12
 #define SIGPIPE 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGALRM 14
 #define SIGTERM 15
 #define SIGSTKFLT 16
 #define SIGCHLD 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGCONT 18
 #define SIGSTOP 19
 #define SIGTSTP 20
 #define SIGTTIN 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGTTOU 22
 #define SIGURG 23
 #define SIGXCPU 24
 #define SIGXFSZ 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGVTALRM 26
 #define SIGPROF 27
 #define SIGWINCH 28
 #define SIGIO 29
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGPOLL SIGIO
-
 #define SIGPWR 30
 #define SIGSYS 31
 #define SIGUNUSED 31
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGRTMIN 32
 #define SIGRTMAX _NSIG
-
 #define SA_NOCLDSTOP 0x00000001u
 #define SA_NOCLDWAIT 0x00000002u
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SA_SIGINFO 0x00000004u
 #define SA_ONSTACK 0x08000000u
 #define SA_RESTART 0x10000000u
 #define SA_NODEFER 0x40000000u
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SA_RESETHAND 0x80000000u
-
 #define SA_NOMASK SA_NODEFER
 #define SA_ONESHOT SA_RESETHAND
-
 #define SA_RESTORER 0x04000000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SS_ONSTACK 1
 #define SS_DISABLE 2
-
 #define MINSIGSTKSZ 2048
 #define SIGSTKSZ 8192
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm-generic/signal.h>
-
 #ifndef __ASSEMBLY__
-
 #ifdef __i386__
-
 struct sigaction {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  __sighandler_t _sa_handler;
  void (*_sa_sigaction)(int, struct siginfo *, void *);
  } _u;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sigset_t sa_mask;
  unsigned long sa_flags;
  void (*sa_restorer)(void);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define sa_handler _u._sa_handler
 #define sa_sigaction _u._sa_sigaction
-
 #else
-
 struct sigaction {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __sighandler_t sa_handler;
  unsigned long sa_flags;
  __sigrestore_t sa_restorer;
  sigset_t sa_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct k_sigaction {
  struct sigaction sa;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 typedef struct sigaltstack {
  void __user *ss_sp;
  int ss_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t ss_size;
 } stack_t;
-
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/smp.h b/libc/kernel/arch-x86/asm/smp.h
index 40d4601..c69e3ef 100644
--- a/libc/kernel/arch-x86/asm/smp.h
+++ b/libc/kernel/arch-x86/asm/smp.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "smp_64.h"
diff --git a/libc/kernel/arch-x86/asm/smp_32.h b/libc/kernel/arch-x86/asm/smp_32.h
index f093a24..e428b7b 100644
--- a/libc/kernel/arch-x86/asm/smp_32.h
+++ b/libc/kernel/arch-x86/asm/smp_32.h
@@ -7,28 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_SMP_H
 #define __ASM_SMP_H
-
 #ifndef __ASSEMBLY__
 #include <linux/kernel.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/threads.h>
 #include <linux/cpumask.h>
 #endif
-
 #define BAD_APICID 0xFFu
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define safe_smp_processor_id() 0
 #define cpu_physical_id(cpu) boot_cpu_physical_apicid
-
 #define NO_PROC_ID 0xFF  
-
 #ifndef __ASSEMBLY__
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define hard_smp_processor_id() 0
-
 #endif
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/socket.h b/libc/kernel/arch-x86/asm/socket.h
index 27d243f..b520169 100644
--- a/libc/kernel/arch-x86/asm/socket.h
+++ b/libc/kernel/arch-x86/asm/socket.h
@@ -7,57 +7,63 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_SOCKET_H
 #define _ASM_SOCKET_H
-
 #include <asm/sockios.h>
-
 #define SOL_SOCKET 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_DEBUG 1
 #define SO_REUSEADDR 2
 #define SO_TYPE 3
 #define SO_ERROR 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_DONTROUTE 5
 #define SO_BROADCAST 6
 #define SO_SNDBUF 7
 #define SO_RCVBUF 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_SNDBUFFORCE 32
 #define SO_RCVBUFFORCE 33
 #define SO_KEEPALIVE 9
 #define SO_OOBINLINE 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_NO_CHECK 11
 #define SO_PRIORITY 12
 #define SO_LINGER 13
 #define SO_BSDCOMPAT 14
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_PASSCRED 16
 #define SO_PEERCRED 17
 #define SO_RCVLOWAT 18
 #define SO_SNDLOWAT 19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_RCVTIMEO 20
 #define SO_SNDTIMEO 21
-
 #define SO_SECURITY_AUTHENTICATION 22
 #define SO_SECURITY_ENCRYPTION_TRANSPORT 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_SECURITY_ENCRYPTION_NETWORK 24
-
 #define SO_BINDTODEVICE 25
-
 #define SO_ATTACH_FILTER 26
 #define SO_DETACH_FILTER 27
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_PEERNAME 28
 #define SO_TIMESTAMP 29
 #define SCM_TIMESTAMP SO_TIMESTAMP
-
 #define SO_ACCEPTCONN 30
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_PEERSEC 31
 #define SO_PASSSEC 34
 #define SO_TIMESTAMPNS 35
 #define SCM_TIMESTAMPNS SO_TIMESTAMPNS
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/sockios.h b/libc/kernel/arch-x86/asm/sockios.h
index ebdfa98..d8bd1a3 100644
--- a/libc/kernel/arch-x86/asm/sockios.h
+++ b/libc/kernel/arch-x86/asm/sockios.h
@@ -7,17 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_SOCKIOS_H
 #define _ASM_X86_SOCKIOS_H
-
 #define FIOSETOWN 0x8901
 #define SIOCSPGRP 0x8902
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FIOGETOWN 0x8903
 #define SIOCGPGRP 0x8904
 #define SIOCATMARK 0x8905
 #define SIOCGSTAMP 0x8906  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGSTAMPNS 0x8907  
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/spinlock.h b/libc/kernel/arch-x86/asm/spinlock.h
index 10d123a..4c0f30e 100644
--- a/libc/kernel/arch-x86/asm/spinlock.h
+++ b/libc/kernel/arch-x86/asm/spinlock.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "spinlock_64.h"
diff --git a/libc/kernel/arch-x86/asm/spinlock_32.h b/libc/kernel/arch-x86/asm/spinlock_32.h
index 171783e..5d2eb05 100644
--- a/libc/kernel/arch-x86/asm/spinlock_32.h
+++ b/libc/kernel/arch-x86/asm/spinlock_32.h
@@ -7,23 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_SPINLOCK_H
 #define __ASM_SPINLOCK_H
-
 #include <asm/atomic.h>
 #include <asm/rwlock.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/page.h>
 #include <asm/processor.h>
 #include <linux/compiler.h>
-
 #define CLI_STRING "cli"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STI_STRING "sti"
 #define CLI_STI_CLOBBERS
 #define CLI_STI_INPUT_ARGS
-
 #define _raw_spin_relax(lock) cpu_relax()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _raw_read_relax(lock) cpu_relax()
 #define _raw_write_relax(lock) cpu_relax()
 #endif
diff --git a/libc/kernel/arch-x86/asm/spinlock_types.h b/libc/kernel/arch-x86/asm/spinlock_types.h
index ab914c4..9af3cce 100644
--- a/libc/kernel/arch-x86/asm/spinlock_types.h
+++ b/libc/kernel/arch-x86/asm/spinlock_types.h
@@ -7,25 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_SPINLOCK_TYPES_H
 #define __ASM_SPINLOCK_TYPES_H
-
 #ifndef __LINUX_SPINLOCK_TYPES_H
 #error "please don't include this file directly"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 typedef struct {
  unsigned int slock;
 } raw_spinlock_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __RAW_SPIN_LOCK_UNLOCKED { 1 }
-
 typedef struct {
  unsigned int lock;
 } raw_rwlock_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __RAW_RW_LOCK_UNLOCKED { RW_LOCK_BIAS }
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/stat.h b/libc/kernel/arch-x86/asm/stat.h
index 837d716..a4ccbe8 100644
--- a/libc/kernel/arch-x86/asm/stat.h
+++ b/libc/kernel/arch-x86/asm/stat.h
@@ -7,114 +7,123 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_STAT_H
 #define _ASM_X86_STAT_H
-
 #define STAT_HAVE_NSEC 1
-
 #ifdef __i386__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct stat {
  unsigned long st_dev;
  unsigned long st_ino;
  unsigned short st_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short st_nlink;
  unsigned short st_uid;
  unsigned short st_gid;
  unsigned long st_rdev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_size;
  unsigned long st_blksize;
  unsigned long st_blocks;
  unsigned long st_atime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_atime_nsec;
  unsigned long st_mtime;
  unsigned long st_mtime_nsec;
  unsigned long st_ctime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_ctime_nsec;
  unsigned long __unused4;
  unsigned long __unused5;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STAT64_HAS_BROKEN_ST_INO 1
-
 struct stat64 {
  unsigned long long st_dev;
  unsigned char __pad0[4];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long __st_ino;
-
  unsigned int st_mode;
  unsigned int st_nlink;
-
  unsigned long st_uid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_gid;
-
  unsigned long long st_rdev;
  unsigned char __pad3[4];
-
  long long st_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_blksize;
-
  unsigned long long st_blocks;
-
  unsigned long st_atime;
  unsigned long st_atime_nsec;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_mtime;
  unsigned int st_mtime_nsec;
-
  unsigned long st_ctime;
  unsigned long st_ctime_nsec;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long long st_ino;
 };
-
 #else
-
 struct stat {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_dev;
  unsigned long st_ino;
  unsigned long st_nlink;
-
  unsigned int st_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int st_uid;
  unsigned int st_gid;
  unsigned int __pad0;
  unsigned long st_rdev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long st_size;
  long st_blksize;
  long st_blocks;
-
  unsigned long st_atime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_atime_nsec;
  unsigned long st_mtime;
  unsigned long st_mtime_nsec;
  unsigned long st_ctime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_ctime_nsec;
  long __unused[3];
 };
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct __old_kernel_stat {
  unsigned short st_dev;
  unsigned short st_ino;
  unsigned short st_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short st_nlink;
  unsigned short st_uid;
  unsigned short st_gid;
  unsigned short st_rdev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __i386__
  unsigned long st_size;
  unsigned long st_atime;
  unsigned long st_mtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long st_ctime;
 #else
  unsigned int st_size;
  unsigned int st_atime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int st_mtime;
  unsigned int st_ctime;
 #endif
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/statfs.h b/libc/kernel/arch-x86/asm/statfs.h
index 592d864..f137d17 100644
--- a/libc/kernel/arch-x86/asm/statfs.h
+++ b/libc/kernel/arch-x86/asm/statfs.h
@@ -7,56 +7,69 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_STATFS_H
 #define _ASM_X86_STATFS_H
-
 #ifdef __i386__
 #include <asm-generic/statfs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
-
 struct statfs {
  long f_type;
  long f_bsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long f_blocks;
  long f_bfree;
  long f_bavail;
  long f_files;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long f_ffree;
  __kernel_fsid_t f_fsid;
  long f_namelen;
  long f_frsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long f_spare[5];
 };
-
 struct statfs64 {
  long f_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long f_bsize;
  long f_blocks;
  long f_bfree;
  long f_bavail;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long f_files;
  long f_ffree;
  __kernel_fsid_t f_fsid;
  long f_namelen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long f_frsize;
  long f_spare[5];
 };
-
 struct compat_statfs64 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 f_type;
  __u32 f_bsize;
  __u64 f_blocks;
  __u64 f_bfree;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 f_bavail;
  __u64 f_files;
  __u64 f_ffree;
  __kernel_fsid_t f_fsid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 f_namelen;
  __u32 f_frsize;
  __u32 f_spare[5];
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
diff --git a/libc/kernel/arch-x86/asm/string.h b/libc/kernel/arch-x86/asm/string.h
index 92fa291..e6cda34 100644
--- a/libc/kernel/arch-x86/asm/string.h
+++ b/libc/kernel/arch-x86/asm/string.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "string_64.h"
diff --git a/libc/kernel/arch-x86/asm/string_32.h b/libc/kernel/arch-x86/asm/string_32.h
index 58a72d7..3063858 100644
--- a/libc/kernel/arch-x86/asm/string_32.h
+++ b/libc/kernel/arch-x86/asm/string_32.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_STRING_H_
 #define _I386_STRING_H_
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/swiotlb.h b/libc/kernel/arch-x86/asm/swiotlb.h
index 5ee37b3..79bd3e7 100644
--- a/libc/kernel/arch-x86/asm/swiotlb.h
+++ b/libc/kernel/arch-x86/asm/swiotlb.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_SWIOTLB_H
 #define _ASM_SWIOTLB_H 1
-
 #include <asm/dma-mapping.h>
-
 #define swiotlb 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/system.h b/libc/kernel/arch-x86/asm/system.h
index 834193b..e4faf67 100644
--- a/libc/kernel/arch-x86/asm/system.h
+++ b/libc/kernel/arch-x86/asm/system.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "system_64.h"
diff --git a/libc/kernel/arch-x86/asm/system_32.h b/libc/kernel/arch-x86/asm/system_32.h
index d799ae6..ec01cc6 100644
--- a/libc/kernel/arch-x86/asm/system_32.h
+++ b/libc/kernel/arch-x86/asm/system_32.h
@@ -7,27 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_SYSTEM_H
 #define __ASM_SYSTEM_H
-
 #include <linux/kernel.h>
 #include <asm/segment.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/cpufeature.h>
 #include <asm/cmpxchg.h>
-
 #define nop() __asm__ __volatile__ ("nop")
 #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2)
 #define wmb() alternative("lock; addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM)
 #define read_barrier_depends() do { } while(0)
 #define smp_mb() barrier()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define smp_rmb() barrier()
 #define smp_wmb() barrier()
 #define smp_read_barrier_depends() do { } while(0)
 #define set_mb(var, value) do { var = value; barrier(); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/irqflags.h>
 #define HAVE_DISABLE_HLT
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/termbits.h b/libc/kernel/arch-x86/asm/termbits.h
index 6d7c5e8..0d03ddd 100644
--- a/libc/kernel/arch-x86/asm/termbits.h
+++ b/libc/kernel/arch-x86/asm/termbits.h
@@ -7,195 +7,230 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_TERMBITS_H
 #define _ASM_X86_TERMBITS_H
-
 #include <linux/posix_types.h>
-
 typedef unsigned char cc_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned int speed_t;
 typedef unsigned int tcflag_t;
-
 #define NCCS 19
 struct termios {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  tcflag_t c_iflag;
  tcflag_t c_oflag;
  tcflag_t c_cflag;
  tcflag_t c_lflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cc_t c_line;
  cc_t c_cc[NCCS];
 };
-
 struct termios2 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  tcflag_t c_iflag;
  tcflag_t c_oflag;
  tcflag_t c_cflag;
  tcflag_t c_lflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cc_t c_line;
  cc_t c_cc[NCCS];
  speed_t c_ispeed;
  speed_t c_ospeed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ktermios {
  tcflag_t c_iflag;
  tcflag_t c_oflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  tcflag_t c_cflag;
  tcflag_t c_lflag;
  cc_t c_line;
  cc_t c_cc[NCCS];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  speed_t c_ispeed;
  speed_t c_ospeed;
 };
-
 #define VINTR 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VQUIT 1
 #define VERASE 2
 #define VKILL 3
 #define VEOF 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VTIME 5
 #define VMIN 6
 #define VSWTC 7
 #define VSTART 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VSTOP 9
 #define VSUSP 10
 #define VEOL 11
 #define VREPRINT 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDISCARD 13
 #define VWERASE 14
 #define VLNEXT 15
 #define VEOL2 16
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IGNBRK 0000001
 #define BRKINT 0000002
 #define IGNPAR 0000004
 #define PARMRK 0000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPCK 0000020
 #define ISTRIP 0000040
 #define INLCR 0000100
 #define IGNCR 0000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICRNL 0000400
 #define IUCLC 0001000
 #define IXON 0002000
 #define IXANY 0004000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IXOFF 0010000
 #define IMAXBEL 0020000
 #define IUTF8 0040000
-
 #define OPOST 0000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OLCUC 0000002
 #define ONLCR 0000004
 #define OCRNL 0000010
 #define ONOCR 0000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONLRET 0000040
 #define OFILL 0000100
 #define OFDEL 0000200
 #define NLDLY 0000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NL0 0000000
 #define NL1 0000400
 #define CRDLY 0003000
 #define CR0 0000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CR1 0001000
 #define CR2 0002000
 #define CR3 0003000
 #define TABDLY 0014000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TAB0 0000000
 #define TAB1 0004000
 #define TAB2 0010000
 #define TAB3 0014000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XTABS 0014000
 #define BSDLY 0020000
 #define BS0 0000000
 #define BS1 0020000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VTDLY 0040000
 #define VT0 0000000
 #define VT1 0040000
 #define FFDLY 0100000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF0 0000000
 #define FF1 0100000
-
 #define CBAUD 0010017
 #define B0 0000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B50 0000001
 #define B75 0000002
 #define B110 0000003
 #define B134 0000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B150 0000005
 #define B200 0000006
 #define B300 0000007
 #define B600 0000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B1200 0000011
 #define B1800 0000012
 #define B2400 0000013
 #define B4800 0000014
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B9600 0000015
 #define B19200 0000016
 #define B38400 0000017
 #define EXTA B19200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXTB B38400
 #define CSIZE 0000060
 #define CS5 0000000
 #define CS6 0000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CS7 0000040
 #define CS8 0000060
 #define CSTOPB 0000100
 #define CREAD 0000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PARENB 0000400
 #define PARODD 0001000
 #define HUPCL 0002000
 #define CLOCAL 0004000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CBAUDEX 0010000
 #define BOTHER 0010000  
 #define B57600 0010001
 #define B115200 0010002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B230400 0010003
 #define B460800 0010004
 #define B500000 0010005
 #define B576000 0010006
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B921600 0010007
 #define B1000000 0010010
 #define B1152000 0010011
 #define B1500000 0010012
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B2000000 0010013
 #define B2500000 0010014
 #define B3000000 0010015
 #define B3500000 0010016
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B4000000 0010017
 #define CIBAUD 002003600000  
 #define CMSPAR 010000000000  
 #define CRTSCTS 020000000000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IBSHIFT 16  
-
 #define ISIG 0000001
 #define ICANON 0000002
 #define XCASE 0000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECHO 0000010
 #define ECHOE 0000020
 #define ECHOK 0000040
 #define ECHONL 0000100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NOFLSH 0000200
 #define TOSTOP 0000400
 #define ECHOCTL 0001000
 #define ECHOPRT 0002000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECHOKE 0004000
 #define FLUSHO 0010000
 #define PENDIN 0040000
 #define IEXTEN 0100000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCOOFF 0
 #define TCOON 1
 #define TCIOFF 2
 #define TCION 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCIFLUSH 0
 #define TCOFLUSH 1
 #define TCIOFLUSH 2
-
 #define TCSANOW 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/termios.h b/libc/kernel/arch-x86/asm/termios.h
index 6542c78..2aca2fc 100644
--- a/libc/kernel/arch-x86/asm/termios.h
+++ b/libc/kernel/arch-x86/asm/termios.h
@@ -7,61 +7,94 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_TERMIOS_H
 #define _ASM_X86_TERMIOS_H
-
 #include <asm/termbits.h>
 #include <asm/ioctls.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct winsize {
  unsigned short ws_row;
  unsigned short ws_col;
  unsigned short ws_xpixel;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ws_ypixel;
 };
-
 #define NCC 8
 struct termio {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short c_iflag;
  unsigned short c_oflag;
  unsigned short c_cflag;
  unsigned short c_lflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char c_line;
  unsigned char c_cc[NCC];
 };
-
 #define TIOCM_LE 0x001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_DTR 0x002
 #define TIOCM_RTS 0x004
 #define TIOCM_ST 0x008
 #define TIOCM_SR 0x010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_CTS 0x020
 #define TIOCM_CAR 0x040
 #define TIOCM_RNG 0x080
 #define TIOCM_DSR 0x100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_CD TIOCM_CAR
 #define TIOCM_RI TIOCM_RNG
 #define TIOCM_OUT1 0x2000
 #define TIOCM_OUT2 0x4000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCM_LOOP 0x8000
-
 #define N_TTY 0
 #define N_SLIP 1
 #define N_MOUSE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_6PACK 7
+#define N_MASC 8
+#define N_R3964 9
+#define N_PROFIBUS_FDL 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_IRDA 11
+#define N_SMSBLOCK 12
+#define N_HDLC 13
+#define N_SYNC_PPP 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define N_HCI 15
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_PPP 3
 #define N_STRIP 4
 #define N_AX25 5
 #define N_X25 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_6PACK 7
 #define N_MASC 8  
 #define N_R3964 9  
 #define N_PROFIBUS_FDL 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_IRDA 11  
 #define N_SMSBLOCK 12  
 #define N_HDLC 13  
 #define N_SYNC_PPP 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_HCI 15  
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/thread_info.h b/libc/kernel/arch-x86/asm/thread_info.h
index ff46b08..05d12e4 100644
--- a/libc/kernel/arch-x86/asm/thread_info.h
+++ b/libc/kernel/arch-x86/asm/thread_info.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "thread_info_64.h"
diff --git a/libc/kernel/arch-x86/asm/thread_info_32.h b/libc/kernel/arch-x86/asm/thread_info_32.h
index 5664ef8..07fc66b 100644
--- a/libc/kernel/arch-x86/asm/thread_info_32.h
+++ b/libc/kernel/arch-x86/asm/thread_info_32.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_THREAD_INFO_H
 #define _ASM_THREAD_INFO_H
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/tlbflush.h b/libc/kernel/arch-x86/asm/tlbflush.h
index fd6b226..fa924b6 100644
--- a/libc/kernel/arch-x86/asm/tlbflush.h
+++ b/libc/kernel/arch-x86/asm/tlbflush.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "tlbflush_64.h"
diff --git a/libc/kernel/arch-x86/asm/tlbflush_32.h b/libc/kernel/arch-x86/asm/tlbflush_32.h
index 8ebff80..e0ab132 100644
--- a/libc/kernel/arch-x86/asm/tlbflush_32.h
+++ b/libc/kernel/arch-x86/asm/tlbflush_32.h
@@ -7,37 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_TLBFLUSH_H
 #define _I386_TLBFLUSH_H
-
 #include <linux/mm.h>
 #include <asm/processor.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __flush_tlb() __native_flush_tlb()
 #define __flush_tlb_global() __native_flush_tlb_global()
 #define __flush_tlb_single(addr) __native_flush_tlb_single(addr)
-
 #define __native_flush_tlb()   do {   unsigned int tmpreg;     __asm__ __volatile__(   "movl %%cr3, %0;              \n"   "movl %0, %%cr3;  # flush TLB \n"   : "=r" (tmpreg)   :: "memory");   } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __native_flush_tlb_global()   do {   unsigned int tmpreg, cr4, cr4_orig;     __asm__ __volatile__(   "movl %%cr4, %2;  # turn off PGE     \n"   "movl %2, %1;                        \n"   "andl %3, %1;                        \n"   "movl %1, %%cr4;                     \n"   "movl %%cr3, %0;                     \n"   "movl %0, %%cr3;  # flush TLB        \n"   "movl %2, %%cr4;  # turn PGE back on \n"   : "=&r" (tmpreg), "=&r" (cr4), "=&r" (cr4_orig)   : "i" (~X86_CR4_PGE)   : "memory");   } while (0)
-
 #define __native_flush_tlb_single(addr)   __asm__ __volatile__("invlpg (%0)" ::"r" (addr) : "memory")
-
 #define __flush_tlb_all()   do {   if (cpu_has_pge)   __flush_tlb_global();   else   __flush_tlb();   } while (0)
-
 #define cpu_has_invlpg (boot_cpu_data.x86 > 3)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __flush_tlb_one(addr)   do {   if (cpu_has_invlpg)   __flush_tlb_single(addr);   else   __flush_tlb();   } while (0)
-
 #define TLB_FLUSH_ALL 0xffffffff
-
 #include <linux/sched.h>
-
 #define flush_tlb() __flush_tlb()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define flush_tlb_all() __flush_tlb_all()
 #define local_flush_tlb() __flush_tlb()
-
 #define flush_tlb_others(mask, mm, va)   native_flush_tlb_others(&mask, mm, va)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/arch-x86/asm/tsc.h b/libc/kernel/arch-x86/asm/tsc.h
index 2528cd1..e99a1a5 100644
--- a/libc/kernel/arch-x86/asm/tsc.h
+++ b/libc/kernel/arch-x86/asm/tsc.h
@@ -7,16 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_TSC_H
 #define _ASM_X86_TSC_H
-
 #include <asm/processor.h>
-
 #define NS_SCALE 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define US_SCALE 32  
-
 typedef unsigned long long cycles_t;
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/types.h b/libc/kernel/arch-x86/asm/types.h
index 4af92b0..f5aa99e 100644
--- a/libc/kernel/arch-x86/asm/types.h
+++ b/libc/kernel/arch-x86/asm/types.h
@@ -7,34 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_TYPES_H
 #define _ASM_X86_TYPES_H
-
 #ifndef __ASSEMBLY__
-
 typedef unsigned short umode_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __signed__ char __s8;
 typedef unsigned char __u8;
-
 typedef __signed__ short __s16;
 typedef unsigned short __u16;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __signed__ int __s32;
 typedef unsigned int __u32;
-
 #ifdef __i386__
 #ifdef __GNUC__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 __extension__ typedef __signed__ long long __s64;
 __extension__ typedef unsigned long long __u64;
 #endif
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __signed__ long long __s64;
 typedef unsigned long long __u64;
 #endif
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/uaccess.h b/libc/kernel/arch-x86/asm/uaccess.h
index b2bec69..124e7e1 100644
--- a/libc/kernel/arch-x86/asm/uaccess.h
+++ b/libc/kernel/arch-x86/asm/uaccess.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include "uaccess_64.h"
diff --git a/libc/kernel/arch-x86/asm/uaccess_32.h b/libc/kernel/arch-x86/asm/uaccess_32.h
index 9827fc4..47e4dcd 100644
--- a/libc/kernel/arch-x86/asm/uaccess_32.h
+++ b/libc/kernel/arch-x86/asm/uaccess_32.h
@@ -7,77 +7,68 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __i386_UACCESS_H
 #define __i386_UACCESS_H
-
 #include <linux/errno.h>
 #include <linux/thread_info.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/prefetch.h>
 #include <linux/string.h>
 #include <asm/page.h>
-
 #define VERIFY_READ 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VERIFY_WRITE 1
-
 #define MAKE_MM_SEG(s) ((mm_segment_t) { (s) })
-
 #define KERNEL_DS MAKE_MM_SEG(0xFFFFFFFFUL)
 #define USER_DS MAKE_MM_SEG(PAGE_OFFSET)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define get_ds() (KERNEL_DS)
 #define get_fs() (current_thread_info()->addr_limit)
 #define set_fs(x) (current_thread_info()->addr_limit = (x))
-
 #define segment_eq(a,b) ((a).seg == (b).seg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __addr_ok(addr) ((unsigned long __force)(addr) < (current_thread_info()->addr_limit.seg))
-
 #define __range_ok(addr,size) ({   unsigned long flag,roksum;   __chk_user_ptr(addr);   asm("addl %3,%1 ; sbbl %0,%0; cmpl %1,%4; sbbl $0,%0"   :"=&r" (flag), "=r" (roksum)   :"1" (addr),"g" ((int)(size)),"rm" (current_thread_info()->addr_limit.seg));   flag; })
-
 #define access_ok(type,addr,size) (likely(__range_ok(addr,size) == 0))
-
 struct exception_table_entry
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned long insn, fixup;
 };
-
 #define __get_user_x(size,ret,x,ptr)   __asm__ __volatile__("call __get_user_" #size   :"=a" (ret),"=d" (x)   :"0" (ptr))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define get_user(x,ptr)  ({ int __ret_gu;   unsigned long __val_gu;   __chk_user_ptr(ptr);   switch(sizeof (*(ptr))) {   case 1: __get_user_x(1,__ret_gu,__val_gu,ptr); break;   case 2: __get_user_x(2,__ret_gu,__val_gu,ptr); break;   case 4: __get_user_x(4,__ret_gu,__val_gu,ptr); break;   default: __get_user_x(X,__ret_gu,__val_gu,ptr); break;   }   (x) = (__typeof__(*(ptr)))__val_gu;   __ret_gu;  })
-
 #define __put_user_1(x, ptr) __asm__ __volatile__("call __put_user_1":"=a" (__ret_pu):"0" ((typeof(*(ptr)))(x)), "c" (ptr))
 #define __put_user_2(x, ptr) __asm__ __volatile__("call __put_user_2":"=a" (__ret_pu):"0" ((typeof(*(ptr)))(x)), "c" (ptr))
 #define __put_user_4(x, ptr) __asm__ __volatile__("call __put_user_4":"=a" (__ret_pu):"0" ((typeof(*(ptr)))(x)), "c" (ptr))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __put_user_8(x, ptr) __asm__ __volatile__("call __put_user_8":"=a" (__ret_pu):"A" ((typeof(*(ptr)))(x)), "c" (ptr))
 #define __put_user_X(x, ptr) __asm__ __volatile__("call __put_user_X":"=a" (__ret_pu):"c" (ptr))
-
 #define put_user(x,ptr)  ({   int __ret_pu;   __typeof__(*(ptr)) __pus_tmp = x;   __ret_pu=0;   if(unlikely(__copy_to_user_ll(ptr, &__pus_tmp,   sizeof(*(ptr))) != 0))   __ret_pu=-EFAULT;   __ret_pu;   })
-
 #define __get_user(x,ptr)   __get_user_nocheck((x),(ptr),sizeof(*(ptr)))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __put_user(x,ptr)   __put_user_nocheck((__typeof__(*(ptr)))(x),(ptr),sizeof(*(ptr)))
-
 #define __put_user_nocheck(x,ptr,size)  ({   long __pu_err;   __put_user_size((x),(ptr),(size),__pu_err,-EFAULT);   __pu_err;  })
-
 #define __put_user_u64(x, addr, err)   __asm__ __volatile__(   "1:	movl %%eax,0(%2)\n"   "2:	movl %%edx,4(%2)\n"   "3:\n"   ".section .fixup,\"ax\"\n"   "4:	movl %3,%0\n"   "	jmp 3b\n"   ".previous\n"   ".section __ex_table,\"a\"\n"   "	.align 4\n"   "	.long 1b,4b\n"   "	.long 2b,4b\n"   ".previous"   : "=r"(err)   : "A" (x), "r" (addr), "i"(-EFAULT), "0"(err))
-
 #define __put_user_size(x,ptr,size,retval,errret)  do {   __typeof__(*(ptr)) __pus_tmp = x;   retval = 0;     if(unlikely(__copy_to_user_ll(ptr, &__pus_tmp, size) != 0))   retval = errret;  } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct __large_struct { unsigned long buf[100]; };
 #define __m(x) (*(struct __large_struct __user *)(x))
-
 #define __put_user_asm(x, addr, err, itype, rtype, ltype, errret)   __asm__ __volatile__(   "1:	mov"itype" %"rtype"1,%2\n"   "2:\n"   ".section .fixup,\"ax\"\n"   "3:	movl %3,%0\n"   "	jmp 2b\n"   ".previous\n"   ".section __ex_table,\"a\"\n"   "	.align 4\n"   "	.long 1b,3b\n"   ".previous"   : "=r"(err)   : ltype (x), "m"(__m(addr)), "i"(errret), "0"(err))
-
 #define __get_user_nocheck(x,ptr,size)  ({   long __gu_err;   unsigned long __gu_val;   __get_user_size(__gu_val,(ptr),(size),__gu_err,-EFAULT);  (x) = (__typeof__(*(ptr)))__gu_val;   __gu_err;  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __get_user_size(x,ptr,size,retval,errret)  do {   retval = 0;   __chk_user_ptr(ptr);   switch (size) {   case 1: __get_user_asm(x,ptr,retval,"b","b","=q",errret);break;   case 2: __get_user_asm(x,ptr,retval,"w","w","=r",errret);break;   case 4: __get_user_asm(x,ptr,retval,"l","","=r",errret);break;   default: (x) = __get_user_bad();   }  } while (0)
-
 #define __get_user_asm(x, addr, err, itype, rtype, ltype, errret)   __asm__ __volatile__(   "1:	mov"itype" %2,%"rtype"1\n"   "2:\n"   ".section .fixup,\"ax\"\n"   "3:	movl %3,%0\n"   "	xor"itype" %"rtype"1,%"rtype"1\n"   "	jmp 2b\n"   ".previous\n"   ".section __ex_table,\"a\"\n"   "	.align 4\n"   "	.long 1b,3b\n"   ".previous"   : "=r"(err), ltype (x)   : "m"(__m(addr)), "i"(errret), "0"(err))
-
 #define ARCH_HAS_NOCACHE_UACCESS
-
 #define strlen_user(str) strnlen_user(str, LONG_MAX)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/unaligned.h b/libc/kernel/arch-x86/asm/unaligned.h
index ce7a8a7..8f2287c 100644
--- a/libc/kernel/arch-x86/asm/unaligned.h
+++ b/libc/kernel/arch-x86/asm/unaligned.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_UNALIGNED_H
 #define _ASM_X86_UNALIGNED_H
-
 #define get_unaligned(ptr) (*(ptr))
-
 #define put_unaligned(val, ptr) ((void)( *(ptr) = (val) ))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/unistd.h b/libc/kernel/arch-x86/asm/unistd.h
index 769f836..3c55d9a 100644
--- a/libc/kernel/arch-x86/asm/unistd.h
+++ b/libc/kernel/arch-x86/asm/unistd.h
@@ -7,10 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifdef __i386__
 #include "unistd_32.h"
 #else
 #include "unistd_64.h"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/unistd_32.h b/libc/kernel/arch-x86/asm/unistd_32.h
index b3d8b19..b8ade84 100644
--- a/libc/kernel/arch-x86/asm/unistd_32.h
+++ b/libc/kernel/arch-x86/asm/unistd_32.h
@@ -7,335 +7,418 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_I386_UNISTD_H_
 #define _ASM_I386_UNISTD_H_
-
 #define __NR_restart_syscall 0
 #define __NR_exit 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fork 2
 #define __NR_read 3
 #define __NR_write 4
 #define __NR_open 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_close 6
 #define __NR_waitpid 7
 #define __NR_creat 8
 #define __NR_link 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_unlink 10
 #define __NR_execve 11
 #define __NR_chdir 12
 #define __NR_time 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mknod 14
 #define __NR_chmod 15
 #define __NR_lchown 16
 #define __NR_break 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_oldstat 18
 #define __NR_lseek 19
 #define __NR_getpid 20
 #define __NR_mount 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_umount 22
 #define __NR_setuid 23
 #define __NR_getuid 24
 #define __NR_stime 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ptrace 26
 #define __NR_alarm 27
 #define __NR_oldfstat 28
 #define __NR_pause 29
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_utime 30
 #define __NR_stty 31
 #define __NR_gtty 32
 #define __NR_access 33
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_nice 34
 #define __NR_ftime 35
 #define __NR_sync 36
 #define __NR_kill 37
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rename 38
 #define __NR_mkdir 39
 #define __NR_rmdir 40
 #define __NR_dup 41
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_pipe 42
 #define __NR_times 43
 #define __NR_prof 44
 #define __NR_brk 45
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setgid 46
 #define __NR_getgid 47
 #define __NR_signal 48
 #define __NR_geteuid 49
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getegid 50
 #define __NR_acct 51
 #define __NR_umount2 52
 #define __NR_lock 53
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ioctl 54
 #define __NR_fcntl 55
 #define __NR_mpx 56
 #define __NR_setpgid 57
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ulimit 58
 #define __NR_oldolduname 59
 #define __NR_umask 60
 #define __NR_chroot 61
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ustat 62
 #define __NR_dup2 63
 #define __NR_getppid 64
 #define __NR_getpgrp 65
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setsid 66
 #define __NR_sigaction 67
 #define __NR_sgetmask 68
 #define __NR_ssetmask 69
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setreuid 70
 #define __NR_setregid 71
 #define __NR_sigsuspend 72
 #define __NR_sigpending 73
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sethostname 74
 #define __NR_setrlimit 75
 #define __NR_getrlimit 76  
 #define __NR_getrusage 77
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_gettimeofday 78
 #define __NR_settimeofday 79
 #define __NR_getgroups 80
 #define __NR_setgroups 81
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_select 82
 #define __NR_symlink 83
 #define __NR_oldlstat 84
 #define __NR_readlink 85
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_uselib 86
 #define __NR_swapon 87
 #define __NR_reboot 88
 #define __NR_readdir 89
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mmap 90
 #define __NR_munmap 91
 #define __NR_truncate 92
 #define __NR_ftruncate 93
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fchmod 94
 #define __NR_fchown 95
 #define __NR_getpriority 96
 #define __NR_setpriority 97
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_profil 98
 #define __NR_statfs 99
 #define __NR_fstatfs 100
 #define __NR_ioperm 101
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_socketcall 102
 #define __NR_syslog 103
 #define __NR_setitimer 104
 #define __NR_getitimer 105
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_stat 106
 #define __NR_lstat 107
 #define __NR_fstat 108
 #define __NR_olduname 109
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_iopl 110
 #define __NR_vhangup 111
 #define __NR_idle 112
 #define __NR_vm86old 113
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_wait4 114
 #define __NR_swapoff 115
 #define __NR_sysinfo 116
 #define __NR_ipc 117
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fsync 118
 #define __NR_sigreturn 119
 #define __NR_clone 120
 #define __NR_setdomainname 121
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_uname 122
 #define __NR_modify_ldt 123
 #define __NR_adjtimex 124
 #define __NR_mprotect 125
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sigprocmask 126
 #define __NR_create_module 127
 #define __NR_init_module 128
 #define __NR_delete_module 129
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_get_kernel_syms 130
 #define __NR_quotactl 131
 #define __NR_getpgid 132
 #define __NR_fchdir 133
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_bdflush 134
 #define __NR_sysfs 135
 #define __NR_personality 136
 #define __NR_afs_syscall 137  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setfsuid 138
 #define __NR_setfsgid 139
 #define __NR__llseek 140
 #define __NR_getdents 141
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR__newselect 142
 #define __NR_flock 143
 #define __NR_msync 144
 #define __NR_readv 145
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_writev 146
 #define __NR_getsid 147
 #define __NR_fdatasync 148
 #define __NR__sysctl 149
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mlock 150
 #define __NR_munlock 151
 #define __NR_mlockall 152
 #define __NR_munlockall 153
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sched_setparam 154
 #define __NR_sched_getparam 155
 #define __NR_sched_setscheduler 156
 #define __NR_sched_getscheduler 157
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #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
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_nanosleep 162
 #define __NR_mremap 163
 #define __NR_setresuid 164
 #define __NR_getresuid 165
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_vm86 166
 #define __NR_query_module 167
 #define __NR_poll 168
 #define __NR_nfsservctl 169
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setresgid 170
 #define __NR_getresgid 171
 #define __NR_prctl 172
 #define __NR_rt_sigreturn 173
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigaction 174
 #define __NR_rt_sigprocmask 175
 #define __NR_rt_sigpending 176
 #define __NR_rt_sigtimedwait 177
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_rt_sigqueueinfo 178
 #define __NR_rt_sigsuspend 179
 #define __NR_pread64 180
 #define __NR_pwrite64 181
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_chown 182
 #define __NR_getcwd 183
 #define __NR_capget 184
 #define __NR_capset 185
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sigaltstack 186
 #define __NR_sendfile 187
 #define __NR_getpmsg 188  
 #define __NR_putpmsg 189  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_vfork 190
 #define __NR_ugetrlimit 191  
 #define __NR_mmap2 192
 #define __NR_truncate64 193
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ftruncate64 194
 #define __NR_stat64 195
 #define __NR_lstat64 196
 #define __NR_fstat64 197
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lchown32 198
 #define __NR_getuid32 199
 #define __NR_getgid32 200
 #define __NR_geteuid32 201
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_getegid32 202
 #define __NR_setreuid32 203
 #define __NR_setregid32 204
 #define __NR_getgroups32 205
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setgroups32 206
 #define __NR_fchown32 207
 #define __NR_setresuid32 208
 #define __NR_getresuid32 209
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setresgid32 210
 #define __NR_getresgid32 211
 #define __NR_chown32 212
 #define __NR_setuid32 213
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_setgid32 214
 #define __NR_setfsuid32 215
 #define __NR_setfsgid32 216
 #define __NR_pivot_root 217
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mincore 218
 #define __NR_madvise 219
 #define __NR_madvise1 219  
 #define __NR_getdents64 220
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fcntl64 221
-
 #define __NR_gettid 224
 #define __NR_readahead 225
 #define __NR_setxattr 226
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_lsetxattr 227
 #define __NR_fsetxattr 228
 #define __NR_getxattr 229
 #define __NR_lgetxattr 230
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fgetxattr 231
 #define __NR_listxattr 232
 #define __NR_llistxattr 233
 #define __NR_flistxattr 234
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_removexattr 235
 #define __NR_lremovexattr 236
 #define __NR_fremovexattr 237
 #define __NR_tkill 238
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_sendfile64 239
 #define __NR_futex 240
 #define __NR_sched_setaffinity 241
 #define __NR_sched_getaffinity 242
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_set_thread_area 243
 #define __NR_get_thread_area 244
 #define __NR_io_setup 245
 #define __NR_io_destroy 246
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_io_getevents 247
 #define __NR_io_submit 248
 #define __NR_io_cancel 249
 #define __NR_fadvise64 250
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_exit_group 252
 #define __NR_lookup_dcookie 253
 #define __NR_epoll_create 254
 #define __NR_epoll_ctl 255
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_epoll_wait 256
 #define __NR_remap_file_pages 257
 #define __NR_set_tid_address 258
 #define __NR_timer_create 259
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #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)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #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)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_statfs64 268
 #define __NR_fstatfs64 269
 #define __NR_tgkill 270
 #define __NR_utimes 271
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_fadvise64_64 272
 #define __NR_vserver 273
 #define __NR_mbind 274
 #define __NR_get_mempolicy 275
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #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)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #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
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_waitid 284
-
 #define __NR_add_key 286
 #define __NR_request_key 287
 #define __NR_keyctl 288
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ioprio_set 289
 #define __NR_ioprio_get 290
 #define __NR_inotify_init 291
 #define __NR_inotify_add_watch 292
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_inotify_rm_watch 293
 #define __NR_migrate_pages 294
 #define __NR_openat 295
 #define __NR_mkdirat 296
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_mknodat 297
 #define __NR_fchownat 298
 #define __NR_futimesat 299
 #define __NR_fstatat64 300
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_unlinkat 301
 #define __NR_renameat 302
 #define __NR_linkat 303
 #define __NR_symlinkat 304
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_readlinkat 305
 #define __NR_fchmodat 306
 #define __NR_faccessat 307
 #define __NR_pselect6 308
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_ppoll 309
 #define __NR_unshare 310
 #define __NR_set_robust_list 311
 #define __NR_get_robust_list 312
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_splice 313
 #define __NR_sync_file_range 314
 #define __NR_tee 315
 #define __NR_vmsplice 316
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_move_pages 317
 #define __NR_getcpu 318
 #define __NR_epoll_pwait 319
 #define __NR_utimensat 320
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NR_signalfd 321
 #define __NR_timerfd 322
 #define __NR_eventfd 323
 #define __NR_fallocate 324
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/user.h b/libc/kernel/arch-x86/asm/user.h
index 980b0aa..0d655d1 100644
--- a/libc/kernel/arch-x86/asm/user.h
+++ b/libc/kernel/arch-x86/asm/user.h
@@ -7,10 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifdef __i386__
 #include "user_32.h"
 #else
 #include "user_64.h"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/user32.h b/libc/kernel/arch-x86/asm/user32.h
index 89eabb1..1549efd 100644
--- a/libc/kernel/arch-x86/asm/user32.h
+++ b/libc/kernel/arch-x86/asm/user32.h
@@ -7,67 +7,79 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef USER32_H
 #define USER32_H 1
-
 struct user_i387_ia32_struct {
  u32 cwd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 swd;
  u32 twd;
  u32 fip;
  u32 fcs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 foo;
  u32 fos;
  u32 st_space[20];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct user32_fxsr_struct {
  unsigned short cwd;
  unsigned short swd;
  unsigned short twd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short fop;
  int fip;
  int fcs;
  int foo;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int fos;
  int mxcsr;
  int reserved;
  int st_space[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int xmm_space[32];
  int padding[56];
 };
-
 struct user_regs_struct32 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ebx, ecx, edx, esi, edi, ebp, eax;
  unsigned short ds, __ds, es, __es;
  unsigned short fs, __fs, gs, __gs;
  __u32 orig_eax, eip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short cs, __cs;
  __u32 eflags, esp;
  unsigned short ss, __ss;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct user32 {
  struct user_regs_struct32 regs;
  int u_fpvalid;
-
  struct user_i387_ia32_struct i387;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 u_tsize;
  __u32 u_dsize;
  __u32 u_ssize;
  __u32 start_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 start_stack;
  __u32 signal;
  int reserved;
  __u32 u_ar0;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 u_fpstate;
  __u32 magic;
  char u_comm[32];
  int u_debugreg[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/user_32.h b/libc/kernel/arch-x86/asm/user_32.h
index 8e0296c..6825b35 100644
--- a/libc/kernel/arch-x86/asm/user_32.h
+++ b/libc/kernel/arch-x86/asm/user_32.h
@@ -7,75 +7,85 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _I386_USER_H
 #define _I386_USER_H
-
 #include <asm/page.h>
-
 struct user_i387_struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long cwd;
  long swd;
  long twd;
  long fip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long fcs;
  long foo;
  long fos;
  long st_space[20];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct user_fxsr_struct {
  unsigned short cwd;
  unsigned short swd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short twd;
  unsigned short fop;
  long fip;
  long fcs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long foo;
  long fos;
  long mxcsr;
  long reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long st_space[32];
  long xmm_space[32];
  long padding[56];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct user_regs_struct {
  long ebx, ecx, edx, esi, edi, ebp, eax;
  unsigned short ds, __ds, es, __es;
  unsigned short fs, __fs, gs, __gs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long orig_eax, eip;
  unsigned short cs, __cs;
  long eflags, esp;
  unsigned short ss, __ss;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct user{
-
  struct user_regs_struct regs;
-
  int u_fpvalid;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct user_i387_struct i387;
-
  unsigned long int u_tsize;
  unsigned long int u_dsize;
  unsigned long int u_ssize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long start_code;
  unsigned long start_stack;
  long int signal;
  int reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct user_pt_regs * u_ar0;
-
  struct user_i387_struct* u_fpstate;
  unsigned long magic;
  char u_comm[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int u_debugreg[8];
 };
 #define NBPG PAGE_SIZE
 #define UPAGES 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HOST_TEXT_START_ADDR (u.start_code)
 #define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/vm86.h b/libc/kernel/arch-x86/asm/vm86.h
index d0e71f1..222a11e 100644
--- a/libc/kernel/arch-x86/asm/vm86.h
+++ b/libc/kernel/arch-x86/asm/vm86.h
@@ -7,107 +7,119 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_VM86_H
 #define _LINUX_VM86_H
-
 #define TF_MASK 0x00000100
 #define IF_MASK 0x00000200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOPL_MASK 0x00003000
 #define NT_MASK 0x00004000
 #define VM_MASK 0  
 #define AC_MASK 0x00040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIF_MASK 0x00080000  
 #define VIP_MASK 0x00100000  
 #define ID_MASK 0x00200000
-
 #define BIOSSEG 0x0f000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPU_086 0
 #define CPU_186 1
 #define CPU_286 2
 #define CPU_386 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPU_486 4
 #define CPU_586 5
-
 #define VM86_TYPE(retval) ((retval) & 0xff)
 #define VM86_ARG(retval) ((retval) >> 8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM86_SIGNAL 0  
 #define VM86_UNKNOWN 1  
 #define VM86_INTx 2  
 #define VM86_STI 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM86_PICRETURN 4  
 #define VM86_TRAP 6  
-
 #define VM86_PLUS_INSTALL_CHECK 0
 #define VM86_ENTER 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM86_ENTER_NO_BYPASS 2
 #define VM86_REQUEST_IRQ 3
 #define VM86_FREE_IRQ 4
 #define VM86_GET_IRQ_BITS 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM86_GET_AND_RESET_IRQ 6
-
 struct vm86_regs {
-
  long ebx;
  long ecx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long edx;
  long esi;
  long edi;
  long ebp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long eax;
  long __null_ds;
  long __null_es;
  long __null_fs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long __null_gs;
  long orig_eax;
  long eip;
  unsigned short cs, __csh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long eflags;
  long esp;
  unsigned short ss, __ssh;
-
  unsigned short es, __esh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ds, __dsh;
  unsigned short fs, __fsh;
  unsigned short gs, __gsh;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct revectored_struct {
  unsigned long __map[8];
 };
-
 struct vm86_struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vm86_regs regs;
  unsigned long flags;
  unsigned long screen_bitmap;
  unsigned long cpu_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct revectored_struct int_revectored;
  struct revectored_struct int21_revectored;
 };
-
 #define VM86_SCREEN_BITMAP 0x0001
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vm86plus_info_struct {
  unsigned long force_return_for_pic:1;
  unsigned long vm86dbg_active:1;
  unsigned long vm86dbg_TFpendig:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long unused:28;
  unsigned long is_vm86pus:1;
  unsigned char vm86dbg_intxxtab[32];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vm86plus_struct {
  struct vm86_regs regs;
  unsigned long flags;
  unsigned long screen_bitmap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long cpu_type;
  struct revectored_struct int_revectored;
  struct revectored_struct int21_revectored;
  struct vm86plus_info_struct vm86plus;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/arch-x86/asm/voyager.h b/libc/kernel/arch-x86/asm/voyager.h
index c6f50a9..364b211 100644
--- a/libc/kernel/arch-x86/asm/voyager.h
+++ b/libc/kernel/arch-x86/asm/voyager.h
@@ -7,431 +7,454 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #undef VOYAGER_DEBUG
 #undef VOYAGER_CAT_DEBUG
-
 #ifdef VOYAGER_DEBUG
 #define VDEBUG(x) printk x
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #define VDEBUG(x)
 #endif
-
 #define VOYAGER_LEVEL5_AND_ABOVE 0x3435
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_LEVEL4 0x3360
-
 #define VOYAGER_DINO 0x43
-
 #define VOYAGER_MC_SETUP 0x96
-
 #define VOYAGER_CAT_CONFIG_PORT 0x97
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_CAT_DESELECT 0xff
 #define VOYAGER_SSPB_RELOCATION_PORT 0x98
-
 #define VOYAGER_CAT_IRCYC 0x01
-
 #define VOYAGER_CAT_DRCYC 0x02
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_CAT_RUN 0x0F
-
 #define VOYAGER_CAT_END 0x80
-
 #define VOYAGER_CAT_HOLD 0x90
-
 #define VOYAGER_CAT_STEP 0xE0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_CAT_CLEMSON 0xFF
-
 #define VOYAGER_CAT_HEADER 0x7F
-
 #define VOYAGER_MIN_MODULE 0x10
 #define VOYAGER_MAX_MODULE 0x1f
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_ASIC_ID_REG 0x00
 #define VOYAGER_ASIC_TYPE_REG 0x01
-
 #define VOYAGER_AUTO_INC_REG 0x02
 #define VOYAGER_AUTO_INC 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_NO_AUTO_INC 0xfb
 #define VOYAGER_SUBADDRDATA 0x03
 #define VOYAGER_SCANPATH 0x05
 #define VOYAGER_CONNECT_ASIC 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_DISCONNECT_ASIC 0xfe
 #define VOYAGER_SUBADDRLO 0x06
 #define VOYAGER_SUBADDRHI 0x07
 #define VOYAGER_SUBMODSELECT 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_SUBMODPRESENT 0x09
-
 #define VOYAGER_SUBADDR_LO 0xff
 #define VOYAGER_SUBADDR_HI 0xffff
-
 #define VOYAGER_MAX_SCAN_PATH 0x100
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_MAX_REG_SIZE 4
-
 #define VOYAGER_MAX_MODULES 16
-
 #define VOYAGER_MAX_ASICS_PER_MODULE 7
-
 #define VOYAGER_CAT_ID 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_PSI 0x1a
-
 #define VOYAGER_READ_CONFIG 0x1
 #define VOYAGER_WRITE_CONFIG 0x2
 #define VOYAGER_BYPASS 0xff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct voyager_asic
 {
  __u8 asic_addr;
  __u8 asic_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 asic_id;
  __u8 jtag_id[4];
  __u8 asic_location;
  __u8 bit_location;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ireg_length;
  __u16 subaddr;
  struct voyager_asic *next;
 } voyager_asic_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct voyager_module {
  __u8 module_addr;
  __u8 scan_path_connected;
  __u16 ee_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 num_asics;
  __u16 inst_bits;
  __u16 largest_reg;
  __u16 smallest_reg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  voyager_asic_t *asic;
  struct voyager_module *submodule;
  struct voyager_module *next;
 } voyager_module_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct voyager_eeprom_hdr {
  __u8 module_id[4];
  __u8 version_id;
  __u8 config_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 boundry_id;
  __u16 ee_size;
  __u8 assembly[11];
  __u8 assembly_rev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 tracer[4];
  __u16 assembly_cksum;
  __u16 power_consump;
  __u16 num_asics;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 bist_time;
  __u16 err_log_offset;
  __u16 scan_path_offset;
  __u16 cct_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 log_length;
  __u16 xsum_end;
  __u8 reserved[4];
  __u8 sflag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 part_number[13];
  __u8 version[10];
  __u8 signature[8];
  __u16 eeprom_chksum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 data_stamp_offset;
  __u8 eflag ;
 } __attribute__((packed)) voyager_eprom_hdr_t;
-
 #define VOYAGER_EPROM_SIZE_OFFSET ((__u16)(&(((voyager_eprom_hdr_t *)0)->ee_size)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_XSUM_END_OFFSET 0x2a
-
 typedef struct voyager_sp_table {
  __u8 asic_id;
  __u8 bypass_flag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 asic_data_offset;
  __u16 config_data_offset;
 } __attribute__((packed)) voyager_sp_table_t;
-
 typedef struct voyager_jtag_table {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 icode[4];
  __u8 runbist[4];
  __u8 intest[4];
  __u8 samp_preld[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ireg_len;
 } __attribute__((packed)) voyager_jtt_t;
-
 typedef struct voyager_asic_data_table {
  __u8 jtag_id[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 length_bsr;
  __u16 length_bist_reg;
  __u32 bist_clk;
  __u16 subaddr_bits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 seed_bits;
  __u16 sig_bits;
  __u16 jtag_offset;
 } __attribute__((packed)) voyager_at_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_WCBIC0 0x41  
 #define VOYAGER_WCBIC1 0x49  
 #define VOYAGER_WCBIC2 0x51  
 #define VOYAGER_WCBIC3 0x59  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_WCBIC4 0x61  
 #define VOYAGER_WCBIC5 0x69  
 #define VOYAGER_WCBIC6 0x71  
 #define VOYAGER_WCBIC7 0x79  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_WCBIC_TOM_L 0x4
 #define VOYAGER_WCBIC_TOM_H 0x5
-
 #define VOYAGER_VMC1 0x81
 #define VOYAGER_VMC2 0x91
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_VMC3 0xa1
 #define VOYAGER_VMC4 0xb1
-
 #define VOYAGER_VMC_MEMORY_SETUP 0x9
 #define VMC_Interleaving 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMC_4Way 0x02
 #define VMC_EvenCacheLines 0x04
 #define VMC_HighLine 0x08
 #define VMC_Start0_Enable 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMC_Start1_Enable 0x40
 #define VMC_Vremap 0x80
 #define VOYAGER_VMC_BANK_DENSITY 0xa
 #define VMC_BANK_EMPTY 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMC_BANK_4MB 1
 #define VMC_BANK_16MB 2
 #define VMC_BANK_64MB 3
 #define VMC_BANK0_MASK 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VMC_BANK1_MASK 0x0C
 #define VMC_BANK2_MASK 0x30
 #define VMC_BANK3_MASK 0xC0
-
 #define VOYAGER_MMC_ASIC_ID 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_MMC_MEMORY0_MODULE 0x14
 #define VOYAGER_MMC_MEMORY1_MODULE 0x15
-
 #define VOYAGER_MMA_ASIC_ID 2
-
 #define VOYAGER_QUAD_BASEBOARD 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_QUAD_QDATA0 1
 #define VOYAGER_QUAD_QDATA1 2
 #define VOYAGER_QUAD_QABC 3
-
 #define VOYAGER_PROCESSOR_PRESENT_MASK 0x88a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_MEMORY_CLICKMAP 0xa23
 #define VOYAGER_DUMP_LOCATION 0xb1a
-
 #define VOYAGER_SUS_IN_CONTROL_PORT 0x3ff
 #define VOYAGER_IN_CONTROL_FLAG 0x80
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_PSI_STATUS_REG 0x08
 #define PSI_DC_FAIL 0x01
 #define PSI_MON 0x02
 #define PSI_FAULT 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_ALARM 0x08
 #define PSI_CURRENT 0x10
 #define PSI_DVM 0x20
 #define PSI_PSCFAULT 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_STAT_CHG 0x80
-
 #define VOYAGER_PSI_SUPPLY_REG 0x8000
-
 #define PSI_FAIL_DC 0x01
 #define PSI_FAIL_AC 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_MON_INT 0x04
 #define PSI_SWITCH_OFF 0x08
 #define PSI_HX_OFF 0x10
 #define PSI_SECURITY 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_CMOS_BATT_LOW 0x40
 #define PSI_CMOS_BATT_FAIL 0x80
-
 #define PSI_CLR_SWITCH_OFF 0x13
 #define PSI_CLR_HX_OFF 0x14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_CLR_CMOS_BATT_FAIL 0x17
-
 #define VOYAGER_PSI_MASK 0x8001
 #define PSI_MASK_MASK 0x10
-
 #define VOYAGER_PSI_AC_FAIL_REG 0x8004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AC_FAIL_STAT_CHANGE 0x80
-
 #define VOYAGER_PSI_GENERAL_REG 0x8007
-
 #define PSI_SWITCH_ON 0x01
 #define PSI_SWITCH_ENABLED 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_ALARM_ENABLED 0x08
 #define PSI_SECURE_ENABLED 0x10
 #define PSI_COLD_RESET 0x20
 #define PSI_COLD_START 0x80
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_POWER_DOWN 0x10
 #define PSI_SWITCH_DISABLE 0x01
 #define PSI_SWITCH_ENABLE 0x11
 #define PSI_CLEAR 0x12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_ALARM_DISABLE 0x03
 #define PSI_ALARM_ENABLE 0x13
 #define PSI_CLEAR_COLD_RESET 0x05
 #define PSI_SET_COLD_RESET 0x15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSI_CLEAR_COLD_START 0x07
 #define PSI_SET_COLD_START 0x17
-
 struct voyager_bios_info {
  __u8 len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 major;
  __u8 minor;
  __u8 debug;
  __u8 num_classes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 class_1;
  __u8 class_2;
 };
-
 #define NUMBER_OF_MC_BUSSES 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SLOTS_PER_MC_BUS 8
 #define MAX_CPUS 16  
 #define MAX_PROCESSOR_BOARDS 4  
 #define MAX_CACHE_LEVELS 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_SHARED_CPUS 4  
 #define NUMBER_OF_POS_REGS 8
-
 typedef struct {
  __u8 MC_Slot;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 POS_Values[NUMBER_OF_POS_REGS];
 } __attribute__((packed)) MC_SlotInformation_t;
-
 struct QuadDescription {
  __u8 Type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 StructureVersion;
  __u32 CPI_BaseAddress;
  __u32 LARC_BankSize;
  __u32 LocalMemoryStateBits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 Slot;
 } __attribute__((packed));
-
 struct ProcBoardInfo {
  __u8 Type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 StructureVersion;
  __u8 NumberOfBoards;
  struct QuadDescription QuadData[MAX_PROCESSOR_BOARDS];
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct CacheDescription {
  __u8 Level;
  __u32 TotalSize;
  __u16 LineSize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 Associativity;
  __u8 CacheType;
  __u8 WriteType;
  __u8 Number_CPUs_SharedBy;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 Shared_CPUs_Hardware_IDs[MAX_SHARED_CPUS];
-
 } __attribute__((packed));
-
 struct CPU_Description {
  __u8 CPU_HardwareId;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *FRU_String;
  __u8 NumberOfCacheLevels;
  struct CacheDescription CacheLevelData[MAX_CACHE_LEVELS];
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct CPU_Info {
  __u8 Type;
  __u8 StructureVersion;
  __u8 NumberOf_CPUs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct CPU_Description CPU_Data[MAX_CPUS];
 } __attribute__((packed));
-
 typedef struct {
  __u8 Mailbox_SUS;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 Mailbox_OS;
  __u8 SUS_MailboxVersion;
  __u8 OS_MailboxVersion;
  __u32 OS_Flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 SUS_Flags;
  __u32 WatchDogPeriod;
  __u32 WatchDogCount;
  __u32 MemoryFor_SUS_ErrorLog;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MC_SlotInformation_t MC_SlotInfo[NUMBER_OF_MC_BUSSES*SLOTS_PER_MC_BUS];
-
  struct ProcBoardInfo *BoardData;
  struct CPU_Info *CPU_Data;
-
 } Voyager_KernelSUS_Mbox_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct voyager_qic_cpi {
-
  struct {
  __u32 pad1[3];
  __u32 cpi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 pad2[4];
  } qic_cpi[8];
 };
-
 struct voyager_status {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 power_fail:1;
  __u32 switch_off:1;
  __u32 request_from_kernel:1;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct voyager_psi_regs {
  __u8 cat_id;
  __u8 cat_dev;
  __u8 cat_control;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 subaddr;
  __u8 dummy4;
  __u8 checkbit;
  __u8 subaddr_low;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 subaddr_high;
  __u8 intstatus;
  __u8 stat1;
  __u8 stat3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 fault;
  __u8 tms;
  __u8 gen;
  __u8 sysconf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 dummy15;
 };
-
 struct voyager_psi_subregs {
  __u8 supply;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 mask;
  __u8 present;
  __u8 DCfail;
  __u8 ACfail;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 fail;
  __u8 UPSfail;
  __u8 genstatus;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct voyager_psi {
  struct voyager_psi_regs regs;
  struct voyager_psi_subregs subregs;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct voyager_SUS {
 #define VOYAGER_DUMP_BUTTON_NMI 0x1
 #define VOYAGER_SUS_VALID 0x2
 #define VOYAGER_SYSINT_COMPLETE 0x3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 SUS_mbox;
 #define VOYAGER_NO_COMMAND 0x0
 #define VOYAGER_IGNORE_DUMP 0x1
 #define VOYAGER_DO_DUMP 0x2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_SYSINT_HANDSHAKE 0x3
 #define VOYAGER_DO_MEM_DUMP 0x4
 #define VOYAGER_SYSINT_WAS_RECOVERED 0x5
  __u8 kernel_mbox;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_MAILBOX_VERSION 0x10
  __u8 SUS_version;
  __u8 kernel_version;
 #define VOYAGER_OS_HAS_SYSINT 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_OS_IN_PROGRESS 0x2
 #define VOYAGER_UPDATING_WDPERIOD 0x4
  __u32 kernel_flags;
 #define VOYAGER_SUS_BOOTING 0x1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_SUS_IN_PROGRESS 0x2
  __u32 SUS_flags;
  __u32 watchdog_period;
  __u32 watchdog_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 SUS_errorlog;
-
 };
-
 #define VOYAGER_PSI_READ 0
 #define VOYAGER_PSI_WRITE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VOYAGER_PSI_SUBREAD 2
 #define VOYAGER_PSI_SUBWRITE 3
-
diff --git a/libc/kernel/arch-x86/asm/vsyscall.h b/libc/kernel/arch-x86/asm/vsyscall.h
index a7bee3b..41a52cf 100644
--- a/libc/kernel/arch-x86/asm/vsyscall.h
+++ b/libc/kernel/arch-x86/asm/vsyscall.h
@@ -7,21 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_X86_64_VSYSCALL_H_
 #define _ASM_X86_64_VSYSCALL_H_
-
 enum vsyscall_num {
  __NR_vgettimeofday,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __NR_vtime,
  __NR_vgetcpu,
 };
-
 #define VSYSCALL_START (-10UL << 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VSYSCALL_SIZE 1024
 #define VSYSCALL_END (-2UL << 20)
 #define VSYSCALL_MAPPED_PAGES 1
 #define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/arch-x86/asm/xen/hypercall.h b/libc/kernel/arch-x86/asm/xen/hypercall.h
index 3c523a8..bb2342c 100644
--- a/libc/kernel/arch-x86/asm/xen/hypercall.h
+++ b/libc/kernel/arch-x86/asm/xen/hypercall.h
@@ -7,28 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __HYPERCALL_H__
 #define __HYPERCALL_H__
-
 #include <linux/errno.h>
 #include <linux/string.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <xen/interface/xen.h>
 #include <xen/interface/sched.h>
 #include <xen/interface/physdev.h>
-
 #define _hypercall0(type, name)  ({   long __res;   asm volatile (   "call %[call]"   : "=a" (__res)   : [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _hypercall1(type, name, a1)  ({   long __res, __ign1;   asm volatile (   "call %[call]"   : "=a" (__res), "=b" (__ign1)   : "1" ((long)(a1)),   [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
 #define _hypercall2(type, name, a1, a2)  ({   long __res, __ign1, __ign2;   asm volatile (   "call %[call]"   : "=a" (__res), "=b" (__ign1), "=c" (__ign2)   : "1" ((long)(a1)), "2" ((long)(a2)),   [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
 #define _hypercall3(type, name, a1, a2, a3)  ({   long __res, __ign1, __ign2, __ign3;   asm volatile (   "call %[call]"   : "=a" (__res), "=b" (__ign1), "=c" (__ign2),   "=d" (__ign3)   : "1" ((long)(a1)), "2" ((long)(a2)),   "3" ((long)(a3)),   [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
 #define _hypercall4(type, name, a1, a2, a3, a4)  ({   long __res, __ign1, __ign2, __ign3, __ign4;   asm volatile (   "call %[call]"   : "=a" (__res), "=b" (__ign1), "=c" (__ign2),   "=d" (__ign3), "=S" (__ign4)   : "1" ((long)(a1)), "2" ((long)(a2)),   "3" ((long)(a3)), "4" ((long)(a4)),   [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _hypercall5(type, name, a1, a2, a3, a4, a5)  ({   long __res, __ign1, __ign2, __ign3, __ign4, __ign5;   asm volatile (   "call %[call]"   : "=a" (__res), "=b" (__ign1), "=c" (__ign2),   "=d" (__ign3), "=S" (__ign4), "=D" (__ign5)   : "1" ((long)(a1)), "2" ((long)(a2)),   "3" ((long)(a3)), "4" ((long)(a4)),   "5" ((long)(a5)),   [call] "m" (hypercall_page[__HYPERVISOR_##name])   : "memory" );   (type)__res;  })
-
 #endif
diff --git a/libc/kernel/common/asm-generic/4level-fixup.h b/libc/kernel/common/asm-generic/4level-fixup.h
index 91ae7f4..dddba1b 100644
--- a/libc/kernel/common/asm-generic/4level-fixup.h
+++ b/libc/kernel/common/asm-generic/4level-fixup.h
@@ -7,36 +7,40 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _4LEVEL_FIXUP_H
 #define _4LEVEL_FIXUP_H
-
 #define __ARCH_HAS_4LEVEL_HACK
 #define __PAGETABLE_PUD_FOLDED
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PUD_SIZE PGDIR_SIZE
 #define PUD_MASK PGDIR_MASK
 #define PTRS_PER_PUD 1
-
 #define pud_t pgd_t
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pmd_alloc(mm, pud, address)   ((unlikely(pgd_none(*(pud))) && __pmd_alloc(mm, pud, address))?   NULL: pmd_offset(pud, address))
-
 #define pud_alloc(mm, pgd, address) (pgd)
 #define pud_offset(pgd, start) (pgd)
 #define pud_none(pud) 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pud_bad(pud) 0
 #define pud_present(pud) 1
 #define pud_ERROR(pud) do { } while (0)
 #define pud_clear(pud) pgd_clear(pud)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef pud_free_tlb
 #define pud_free_tlb(tlb, x) do { } while (0)
 #define pud_free(x) do { } while (0)
 #define __pud_free_tlb(tlb, x) do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef pud_addr_end
 #define pud_addr_end(addr, end) (end)
-
 #endif
diff --git a/libc/kernel/common/asm-generic/audit_dir_write.h b/libc/kernel/common/asm-generic/audit_dir_write.h
index 1327b59..878419c 100644
--- a/libc/kernel/common/asm-generic/audit_dir_write.h
+++ b/libc/kernel/common/asm-generic/audit_dir_write.h
@@ -7,5 +7,12 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
diff --git a/libc/kernel/common/asm-generic/bitops/__ffs.h b/libc/kernel/common/asm-generic/bitops/__ffs.h
index 3d135bd..ecc1939 100644
--- a/libc/kernel/common/asm-generic/bitops/__ffs.h
+++ b/libc/kernel/common/asm-generic/bitops/__ffs.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_BITOPS___FFS_H_
 #define _ASM_GENERIC_BITOPS___FFS_H_
-
 #include <asm/types.h>
-
 #if BITS_PER_LONG == 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
diff --git a/libc/kernel/common/asm-generic/bitops/atomic.h b/libc/kernel/common/asm-generic/bitops/atomic.h
index 5f53ba9..b054bc9 100644
--- a/libc/kernel/common/asm-generic/bitops/atomic.h
+++ b/libc/kernel/common/asm-generic/bitops/atomic.h
@@ -7,17 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_BITOPS_ATOMIC_H_
 #define _ASM_GENERIC_BITOPS_ATOMIC_H_
-
 #include <asm/types.h>
-
 #define BITOP_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BITOP_WORD(nr) ((nr) / BITS_PER_LONG)
-
 #define _atomic_spin_lock_irqsave(l,f) do { local_irq_save(f); } while (0)
 #define _atomic_spin_unlock_irqrestore(l,f) do { local_irq_restore(f); } while (0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/asm-generic/bitops/ffz.h b/libc/kernel/common/asm-generic/bitops/ffz.h
index 18da271..1f2eba5 100644
--- a/libc/kernel/common/asm-generic/bitops/ffz.h
+++ b/libc/kernel/common/asm-generic/bitops/ffz.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_BITOPS_FFZ_H_
 #define _ASM_GENERIC_BITOPS_FFZ_H_
-
 #define ffz(x) __ffs(~(x))
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/asm-generic/bitops/find.h b/libc/kernel/common/asm-generic/bitops/find.h
index 8361cfe..0de0f7d 100644
--- a/libc/kernel/common/asm-generic/bitops/find.h
+++ b/libc/kernel/common/asm-generic/bitops/find.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_BITOPS_FIND_H_
 #define _ASM_GENERIC_BITOPS_FIND_H_
-
 #define find_first_bit(addr, size) find_next_bit((addr), (size), 0)
 #define find_first_zero_bit(addr, size) find_next_zero_bit((addr), (size), 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/asm-generic/bitops/fls.h b/libc/kernel/common/asm-generic/bitops/fls.h
index 8adbf31..e4326b7 100644
--- a/libc/kernel/common/asm-generic/bitops/fls.h
+++ b/libc/kernel/common/asm-generic/bitops/fls.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_BITOPS_FLS_H_
 #define _ASM_GENERIC_BITOPS_FLS_H_
-
 #endif
diff --git a/libc/kernel/common/asm-generic/bitops/fls64.h b/libc/kernel/common/asm-generic/bitops/fls64.h
index af77098..3769f63 100644
--- a/libc/kernel/common/asm-generic/bitops/fls64.h
+++ b/libc/kernel/common/asm-generic/bitops/fls64.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_BITOPS_FLS64_H_
 #define _ASM_GENERIC_BITOPS_FLS64_H_
-
 #include <asm/types.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/asm-generic/bitops/le.h b/libc/kernel/common/asm-generic/bitops/le.h
index 97ca973..9d6dd78 100644
--- a/libc/kernel/common/asm-generic/bitops/le.h
+++ b/libc/kernel/common/asm-generic/bitops/le.h
@@ -7,47 +7,47 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_BITOPS_LE_H_
 #define _ASM_GENERIC_BITOPS_LE_H_
-
 #include <asm/types.h>
 #include <asm/byteorder.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BITOP_WORD(nr) ((nr) / BITS_PER_LONG)
 #define BITOP_LE_SWIZZLE ((BITS_PER_LONG-1) & ~0x7)
-
 #ifdef __LITTLE_ENDIAN
-
 #define generic_test_le_bit(nr, addr) test_bit(nr, addr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define generic___set_le_bit(nr, addr) __set_bit(nr, addr)
 #define generic___clear_le_bit(nr, addr) __clear_bit(nr, addr)
-
 #define generic_test_and_set_le_bit(nr, addr) test_and_set_bit(nr, addr)
 #define generic_test_and_clear_le_bit(nr, addr) test_and_clear_bit(nr, addr)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define generic___test_and_set_le_bit(nr, addr) __test_and_set_bit(nr, addr)
 #define generic___test_and_clear_le_bit(nr, addr) __test_and_clear_bit(nr, addr)
-
 #define generic_find_next_zero_le_bit(addr, size, offset) find_next_zero_bit(addr, size, offset)
-
 #elif defined(__BIG_ENDIAN)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define generic_test_le_bit(nr, addr)   test_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
 #define generic___set_le_bit(nr, addr)   __set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
 #define generic___clear_le_bit(nr, addr)   __clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
-
 #define generic_test_and_set_le_bit(nr, addr)   test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define generic_test_and_clear_le_bit(nr, addr)   test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
-
 #define generic___test_and_set_le_bit(nr, addr)   __test_and_set_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
 #define generic___test_and_clear_le_bit(nr, addr)   __test_and_clear_bit((nr) ^ BITOP_LE_SWIZZLE, (addr))
-
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error "Please fix <asm/byteorder.h>"
 #endif
-
 #define generic_find_first_zero_le_bit(addr, size)   generic_find_next_zero_le_bit((addr), (size), 0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/asm-generic/bitops/non-atomic.h b/libc/kernel/common/asm-generic/bitops/non-atomic.h
index 727f736..5f2866e 100644
--- a/libc/kernel/common/asm-generic/bitops/non-atomic.h
+++ b/libc/kernel/common/asm-generic/bitops/non-atomic.h
@@ -7,14 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_BITOPS_NON_ATOMIC_H_
 #define _ASM_GENERIC_BITOPS_NON_ATOMIC_H_
-
 #include <asm/types.h>
-
 #define BITOP_MASK(nr) (1UL << ((nr) % BITS_PER_LONG))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BITOP_WORD(nr) ((nr) / BITS_PER_LONG)
-
 #endif
diff --git a/libc/kernel/common/asm-generic/bug.h b/libc/kernel/common/asm-generic/bug.h
index d91a135..19460a7 100644
--- a/libc/kernel/common/asm-generic/bug.h
+++ b/libc/kernel/common/asm-generic/bug.h
@@ -7,27 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_BUG_H
 #define _ASM_GENERIC_BUG_H
-
 #include <linux/compiler.h>
-
 #ifndef HAVE_ARCH_BUG
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUG()
 #endif
-
 #ifndef HAVE_ARCH_BUG_ON
 #define BUG_ON(condition) do { if (condition) ; } while(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef HAVE_ARCH_WARN_ON
 #define WARN_ON(condition) do { if (condition) ; } while(0)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WARN_ON_ONCE(condition)  ({   static int __warn_once = 1;   int __ret = 0;     if (unlikely((condition) && __warn_once)) {   __warn_once = 0;   WARN_ON(1);   __ret = 1;   }   __ret;  })
-
 #define WARN_ON_SMP(x) do { } while (0)
-
 #endif
diff --git a/libc/kernel/common/asm-generic/cputime.h b/libc/kernel/common/asm-generic/cputime.h
index 0486b87..dbc7859 100644
--- a/libc/kernel/common/asm-generic/cputime.h
+++ b/libc/kernel/common/asm-generic/cputime.h
@@ -7,54 +7,58 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_CPUTIME_H
 #define _ASM_GENERIC_CPUTIME_H
-
 #include <linux/time.h>
 #include <linux/jiffies.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned long cputime_t;
-
 #define cputime_zero (0UL)
 #define cputime_max ((~0UL >> 1) - 1)
 #define cputime_add(__a, __b) ((__a) + (__b))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cputime_sub(__a, __b) ((__a) - (__b))
 #define cputime_div(__a, __n) ((__a) / (__n))
 #define cputime_halve(__a) ((__a) >> 1)
 #define cputime_eq(__a, __b) ((__a) == (__b))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cputime_gt(__a, __b) ((__a) > (__b))
 #define cputime_ge(__a, __b) ((__a) >= (__b))
 #define cputime_lt(__a, __b) ((__a) < (__b))
 #define cputime_le(__a, __b) ((__a) <= (__b))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cputime_to_jiffies(__ct) (__ct)
 #define jiffies_to_cputime(__hz) (__hz)
-
 typedef u64 cputime64_t;
-
 #define cputime64_zero (0ULL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cputime64_add(__a, __b) ((__a) + (__b))
 #define cputime64_sub(__a, __b) ((__a) - (__b))
 #define cputime64_to_jiffies64(__ct) (__ct)
 #define jiffies64_to_cputime64(__jif) (__jif)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cputime_to_cputime64(__ct) ((u64) __ct)
-
 #define cputime_to_msecs(__ct) jiffies_to_msecs(__ct)
 #define msecs_to_cputime(__msecs) msecs_to_jiffies(__msecs)
-
 #define cputime_to_secs(jif) ((jif) / HZ)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define secs_to_cputime(sec) ((sec) * HZ)
-
 #define timespec_to_cputime(__val) timespec_to_jiffies(__val)
 #define cputime_to_timespec(__ct,__val) jiffies_to_timespec(__ct,__val)
-
 #define timeval_to_cputime(__val) timeval_to_jiffies(__val)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cputime_to_timeval(__ct,__val) jiffies_to_timeval(__ct,__val)
-
 #define cputime_to_clock_t(__ct) jiffies_to_clock_t(__ct)
 #define clock_t_to_cputime(__x) clock_t_to_jiffies(__x)
-
 #define cputime64_to_clock_t(__ct) jiffies_64_to_clock_t(__ct)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/asm-generic/emergency-restart.h b/libc/kernel/common/asm-generic/emergency-restart.h
index 619c682..8cffc57 100644
--- a/libc/kernel/common/asm-generic/emergency-restart.h
+++ b/libc/kernel/common/asm-generic/emergency-restart.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_EMERGENCY_RESTART_H
 #define _ASM_GENERIC_EMERGENCY_RESTART_H
-
 #endif
diff --git a/libc/kernel/common/asm-generic/errno-base.h b/libc/kernel/common/asm-generic/errno-base.h
index 2fb4a33..82c5a0e 100644
--- a/libc/kernel/common/asm-generic/errno-base.h
+++ b/libc/kernel/common/asm-generic/errno-base.h
@@ -7,44 +7,58 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_ERRNO_BASE_H
 #define _ASM_GENERIC_ERRNO_BASE_H
-
 #define EPERM 1  
 #define ENOENT 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ESRCH 3  
 #define EINTR 4  
 #define EIO 5  
 #define ENXIO 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define E2BIG 7  
 #define ENOEXEC 8  
 #define EBADF 9  
 #define ECHILD 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EAGAIN 11  
 #define ENOMEM 12  
 #define EACCES 13  
 #define EFAULT 14  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENOTBLK 15  
 #define EBUSY 16  
 #define EEXIST 17  
 #define EXDEV 18  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENODEV 19  
 #define ENOTDIR 20  
 #define EISDIR 21  
 #define EINVAL 22  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENFILE 23  
 #define EMFILE 24  
 #define ENOTTY 25  
 #define ETXTBSY 26  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EFBIG 27  
 #define ENOSPC 28  
 #define ESPIPE 29  
 #define EROFS 30  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EMLINK 31  
 #define EPIPE 32  
 #define EDOM 33  
 #define ERANGE 34  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/asm-generic/errno.h b/libc/kernel/common/asm-generic/errno.h
index 11dd00f..1ef9ba9 100644
--- a/libc/kernel/common/asm-generic/errno.h
+++ b/libc/kernel/common/asm-generic/errno.h
@@ -7,113 +7,138 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_ERRNO_H
 #define _ASM_GENERIC_ERRNO_H
-
 #include <asm-generic/errno-base.h>
-
 #define EDEADLK 35  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENAMETOOLONG 36  
 #define ENOLCK 37  
 #define ENOSYS 38  
 #define ENOTEMPTY 39  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELOOP 40  
 #define EWOULDBLOCK EAGAIN  
 #define ENOMSG 42  
 #define EIDRM 43  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECHRNG 44  
 #define EL2NSYNC 45  
 #define EL3HLT 46  
 #define EL3RST 47  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELNRNG 48  
 #define EUNATCH 49  
 #define ENOCSI 50  
 #define EL2HLT 51  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBADE 52  
 #define EBADR 53  
 #define EXFULL 54  
 #define ENOANO 55  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EBADRQC 56  
 #define EBADSLT 57  
-
 #define EDEADLOCK EDEADLK
-
 #define EBFONT 59  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENOSTR 60  
 #define ENODATA 61  
 #define ETIME 62  
 #define ENOSR 63  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENONET 64  
 #define ENOPKG 65  
 #define EREMOTE 66  
 #define ENOLINK 67  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EADV 68  
 #define ESRMNT 69  
 #define ECOMM 70  
 #define EPROTO 71  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EMULTIHOP 72  
 #define EDOTDOT 73  
 #define EBADMSG 74  
 #define EOVERFLOW 75  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENOTUNIQ 76  
 #define EBADFD 77  
 #define EREMCHG 78  
 #define ELIBACC 79  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELIBBAD 80  
 #define ELIBSCN 81  
 #define ELIBMAX 82  
 #define ELIBEXEC 83  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EILSEQ 84  
 #define ERESTART 85  
 #define ESTRPIPE 86  
 #define EUSERS 87  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENOTSOCK 88  
 #define EDESTADDRREQ 89  
 #define EMSGSIZE 90  
 #define EPROTOTYPE 91  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENOPROTOOPT 92  
 #define EPROTONOSUPPORT 93  
 #define ESOCKTNOSUPPORT 94  
 #define EOPNOTSUPP 95  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EPFNOSUPPORT 96  
 #define EAFNOSUPPORT 97  
 #define EADDRINUSE 98  
 #define EADDRNOTAVAIL 99  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ENETDOWN 100  
 #define ENETUNREACH 101  
 #define ENETRESET 102  
 #define ECONNABORTED 103  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECONNRESET 104  
 #define ENOBUFS 105  
 #define EISCONN 106  
 #define ENOTCONN 107  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ESHUTDOWN 108  
 #define ETOOMANYREFS 109  
 #define ETIMEDOUT 110  
 #define ECONNREFUSED 111  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EHOSTDOWN 112  
 #define EHOSTUNREACH 113  
 #define EALREADY 114  
 #define EINPROGRESS 115  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ESTALE 116  
 #define EUCLEAN 117  
 #define ENOTNAM 118  
 #define ENAVAIL 119  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EISNAM 120  
 #define EREMOTEIO 121  
 #define EDQUOT 122  
-
 #define ENOMEDIUM 123  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EMEDIUMTYPE 124  
 #define ECANCELED 125  
 #define ENOKEY 126  
 #define EKEYEXPIRED 127  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EKEYREVOKED 128  
 #define EKEYREJECTED 129  
-
 #define EOWNERDEAD 130  
 #define ENOTRECOVERABLE 131  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/asm-generic/fcntl.h b/libc/kernel/common/asm-generic/fcntl.h
index a53b536..0944a2a 100644
--- a/libc/kernel/common/asm-generic/fcntl.h
+++ b/libc/kernel/common/asm-generic/fcntl.h
@@ -7,142 +7,163 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_FCNTL_H
 #define _ASM_GENERIC_FCNTL_H
-
 #include <linux/types.h>
-
 #define O_ACCMODE 00000003
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define O_RDONLY 00000000
 #define O_WRONLY 00000001
 #define O_RDWR 00000002
 #ifndef O_CREAT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define O_CREAT 00000100  
 #endif
 #ifndef O_EXCL
 #define O_EXCL 00000200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef O_NOCTTY
 #define O_NOCTTY 00000400  
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef O_TRUNC
 #define O_TRUNC 00001000  
 #endif
 #ifndef O_APPEND
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define O_APPEND 00002000
 #endif
 #ifndef O_NONBLOCK
 #define O_NONBLOCK 00004000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef O_SYNC
 #define O_SYNC 00010000
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef FASYNC
 #define FASYNC 00020000  
 #endif
 #ifndef O_DIRECT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define O_DIRECT 00040000  
 #endif
 #ifndef O_LARGEFILE
 #define O_LARGEFILE 00100000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef O_DIRECTORY
 #define O_DIRECTORY 00200000  
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef O_NOFOLLOW
 #define O_NOFOLLOW 00400000  
 #endif
 #ifndef O_NOATIME
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define O_NOATIME 01000000
 #endif
 #ifndef O_NDELAY
 #define O_NDELAY O_NONBLOCK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define F_DUPFD 0  
 #define F_GETFD 1  
 #define F_SETFD 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_GETFL 3  
 #define F_SETFL 4  
 #ifndef F_GETLK
 #define F_GETLK 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_SETLK 6
 #define F_SETLKW 7
 #endif
 #ifndef F_SETOWN
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_SETOWN 8  
 #define F_GETOWN 9  
 #endif
 #ifndef F_SETSIG
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_SETSIG 10  
 #define F_GETSIG 11  
 #endif
-
 #define FD_CLOEXEC 1  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef F_RDLCK
 #define F_RDLCK 0
 #define F_WRLCK 1
 #define F_UNLCK 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef F_EXLCK
 #define F_EXLCK 4  
 #define F_SHLCK 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef F_INPROGRESS
 #define F_INPROGRESS 16
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LOCK_SH 1  
 #define LOCK_EX 2  
 #define LOCK_NB 4  
 #define LOCK_UN 8  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LOCK_MAND 32  
 #define LOCK_READ 64  
 #define LOCK_WRITE 128  
 #define LOCK_RW 192  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_LINUX_SPECIFIC_BASE 1024
-
 #ifndef HAVE_ARCH_STRUCT_FLOCK
 #ifndef __ARCH_FLOCK_PAD
 #define __ARCH_FLOCK_PAD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 struct flock {
  short l_type;
  short l_whence;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  off_t l_start;
  off_t l_len;
  pid_t l_pid;
  __ARCH_FLOCK_PAD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
-
 #ifndef F_GETLK64
 #define F_GETLK64 12  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_SETLK64 13
 #define F_SETLKW64 14
 #endif
-
 #ifndef HAVE_ARCH_STRUCT_FLOCK64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ARCH_FLOCK64_PAD
 #define __ARCH_FLOCK64_PAD
 #endif
-
 struct flock64 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  short l_type;
  short l_whence;
  loff_t l_start;
  loff_t l_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  pid_t l_pid;
  __ARCH_FLOCK64_PAD
 };
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/asm-generic/futex.h b/libc/kernel/common/asm-generic/futex.h
index 05d3afe..77f7bba 100644
--- a/libc/kernel/common/asm-generic/futex.h
+++ b/libc/kernel/common/asm-generic/futex.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_FUTEX_H
 #define _ASM_GENERIC_FUTEX_H
-
 #endif
diff --git a/libc/kernel/common/asm-generic/ioctl.h b/libc/kernel/common/asm-generic/ioctl.h
index cba2b8e..f987314 100644
--- a/libc/kernel/common/asm-generic/ioctl.h
+++ b/libc/kernel/common/asm-generic/ioctl.h
@@ -7,52 +7,58 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_IOCTL_H
 #define _ASM_GENERIC_IOCTL_H
-
 #define _IOC_NRBITS 8
 #define _IOC_TYPEBITS 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _IOC_SIZEBITS 14
 #define _IOC_DIRBITS 2
-
 #define _IOC_NRMASK ((1 << _IOC_NRBITS)-1)
 #define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1)
 #define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1)
-
 #define _IOC_NRSHIFT 0
 #define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS)
 #define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS)
-
 #define _IOC_NONE 0U
 #define _IOC_WRITE 1U
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _IOC_READ 2U
-
 #define _IOC(dir,type,nr,size)   (((dir) << _IOC_DIRSHIFT) |   ((type) << _IOC_TYPESHIFT) |   ((nr) << _IOC_NRSHIFT) |   ((size) << _IOC_SIZESHIFT))
-
 extern unsigned int __invalid_size_argument_for_IOC;
 #define _IOC_TYPECHECK(t)   ((sizeof(t) == sizeof(t[1]) &&   sizeof(t) < (1 << _IOC_SIZEBITS)) ?   sizeof(t) : __invalid_size_argument_for_IOC)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0)
 #define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size)))
 #define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
 #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size))
 #define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
 #define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
-
 #define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
 #define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
 #define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
-
 #define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT)
 #define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
 #define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT)
 #define IOCSIZE_SHIFT (_IOC_SIZESHIFT)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/asm-generic/ipc.h b/libc/kernel/common/asm-generic/ipc.h
index 57657a7..a3ba44e 100644
--- a/libc/kernel/common/asm-generic/ipc.h
+++ b/libc/kernel/common/asm-generic/ipc.h
@@ -7,31 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_IPC_H
 #define _ASM_GENERIC_IPC_H
-
 struct ipc_kludge {
  struct msgbuf __user *msgp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long msgtyp;
 };
-
 #define SEMOP 1
 #define SEMGET 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEMCTL 3
 #define SEMTIMEDOP 4
 #define MSGSND 11
 #define MSGRCV 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSGGET 13
 #define MSGCTL 14
 #define SHMAT 21
 #define SHMDT 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHMGET 23
 #define SHMCTL 24
-
 #define DIPC 25
-
 #define IPCCALL(version,op) ((version)<<16 | (op))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/asm-generic/local.h b/libc/kernel/common/asm-generic/local.h
index cae0d54..c673bdf 100644
--- a/libc/kernel/common/asm-generic/local.h
+++ b/libc/kernel/common/asm-generic/local.h
@@ -7,45 +7,52 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_LOCAL_H
 #define _ASM_GENERIC_LOCAL_H
-
 #include <linux/percpu.h>
 #include <linux/hardirq.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/atomic.h>
 #include <asm/types.h>
-
 typedef struct
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_long_t a;
 } local_t;
-
 #define LOCAL_INIT(i) { ATOMIC_LONG_INIT(i) }
-
 #define local_read(l) atomic_long_read(&(l)->a)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define local_set(l,i) atomic_long_set((&(l)->a),(i))
 #define local_inc(l) atomic_long_inc(&(l)->a)
 #define local_dec(l) atomic_long_dec(&(l)->a)
 #define local_add(i,l) atomic_long_add((i),(&(l)->a))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define local_sub(i,l) atomic_long_sub((i),(&(l)->a))
-
 #define __local_inc(l) local_set((l), local_read(l) + 1)
 #define __local_dec(l) local_set((l), local_read(l) - 1)
 #define __local_add(i,l) local_set((l), local_read(l) + (i))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __local_sub(i,l) local_set((l), local_read(l) - (i))
-
 #define cpu_local_read(v) local_read(&__get_cpu_var(v))
 #define cpu_local_set(v, i) local_set(&__get_cpu_var(v), (i))
 #define cpu_local_inc(v) local_inc(&__get_cpu_var(v))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_local_dec(v) local_dec(&__get_cpu_var(v))
 #define cpu_local_add(i, v) local_add((i), &__get_cpu_var(v))
 #define cpu_local_sub(i, v) local_sub((i), &__get_cpu_var(v))
-
 #define __cpu_local_inc(v) __local_inc(&__get_cpu_var(v))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_local_dec(v) __local_dec(&__get_cpu_var(v))
 #define __cpu_local_add(i, v) __local_add((i), &__get_cpu_var(v))
 #define __cpu_local_sub(i, v) __local_sub((i), &__get_cpu_var(v))
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/asm-generic/memory_model.h b/libc/kernel/common/asm-generic/memory_model.h
index fa7602e..4765311 100644
--- a/libc/kernel/common/asm-generic/memory_model.h
+++ b/libc/kernel/common/asm-generic/memory_model.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_MEMORY_MODEL_H
 #define __ASM_MEMORY_MODEL_H
-
 #endif
diff --git a/libc/kernel/common/asm-generic/mman.h b/libc/kernel/common/asm-generic/mman.h
index 98d2783..d454921 100644
--- a/libc/kernel/common/asm-generic/mman.h
+++ b/libc/kernel/common/asm-generic/mman.h
@@ -7,40 +7,47 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_MMAN_H
 #define _ASM_GENERIC_MMAN_H
-
 #define PROT_READ 0x1  
 #define PROT_WRITE 0x2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PROT_EXEC 0x4  
 #define PROT_SEM 0x8  
 #define PROT_NONE 0x0  
 #define PROT_GROWSDOWN 0x01000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PROT_GROWSUP 0x02000000  
-
 #define MAP_SHARED 0x01  
 #define MAP_PRIVATE 0x02  
 #define MAP_TYPE 0x0f  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAP_FIXED 0x10  
 #define MAP_ANONYMOUS 0x20  
-
 #define MS_ASYNC 1  
 #define MS_INVALIDATE 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_SYNC 4  
-
 #define MADV_NORMAL 0  
 #define MADV_RANDOM 1  
 #define MADV_SEQUENTIAL 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MADV_WILLNEED 3  
 #define MADV_DONTNEED 4  
-
 #define MADV_REMOVE 9  
 #define MADV_DONTFORK 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MADV_DOFORK 11  
-
 #define MAP_ANON MAP_ANONYMOUS
 #define MAP_FILE 0
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/asm-generic/mutex-xchg.h b/libc/kernel/common/asm-generic/mutex-xchg.h
index 63a557e..7494965 100644
--- a/libc/kernel/common/asm-generic/mutex-xchg.h
+++ b/libc/kernel/common/asm-generic/mutex-xchg.h
@@ -7,10 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_MUTEX_XCHG_H
 #define _ASM_GENERIC_MUTEX_XCHG_H
-
 #define __mutex_slowpath_needs_to_unlock() 0
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/asm-generic/percpu.h b/libc/kernel/common/asm-generic/percpu.h
index e498300..55b8b6a 100644
--- a/libc/kernel/common/asm-generic/percpu.h
+++ b/libc/kernel/common/asm-generic/percpu.h
@@ -7,23 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_PERCPU_H_
 #define _ASM_GENERIC_PERCPU_H_
 #include <linux/compiler.h>
-
 #define __GENERIC_PER_CPU
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DEFINE_PER_CPU(type, name)   __typeof__(type) per_cpu__##name
-
 #define per_cpu(var, cpu) (*((void)(cpu), &per_cpu__##var))
 #define __get_cpu_var(var) per_cpu__##var
 #define __raw_get_cpu_var(var) per_cpu__##var
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DECLARE_PER_CPU(type, name) extern __typeof__(type) per_cpu__##name
-
 #define EXPORT_PER_CPU_SYMBOL(var) EXPORT_SYMBOL(per_cpu__##var)
 #define EXPORT_PER_CPU_SYMBOL_GPL(var) EXPORT_SYMBOL_GPL(per_cpu__##var)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/asm-generic/pgtable-nopud.h b/libc/kernel/common/asm-generic/pgtable-nopud.h
index 585f816..e940ae4 100644
--- a/libc/kernel/common/asm-generic/pgtable-nopud.h
+++ b/libc/kernel/common/asm-generic/pgtable-nopud.h
@@ -7,33 +7,40 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _PGTABLE_NOPUD_H
 #define _PGTABLE_NOPUD_H
-
 #ifndef __ASSEMBLY__
-
 #define __PAGETABLE_PUD_FOLDED
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct { pgd_t pgd; } pud_t;
-
 #define PUD_SHIFT PGDIR_SHIFT
 #define PTRS_PER_PUD 1
 #define PUD_SIZE (1UL << PUD_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PUD_MASK (~(PUD_SIZE-1))
-
 #define pud_ERROR(pud) (pgd_ERROR((pud).pgd))
 #define pgd_populate(mm, pgd, pud) do { } while (0)
 #define set_pgd(pgdptr, pgdval) set_pud((pud_t *)(pgdptr), (pud_t) { pgdval })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pud_val(x) (pgd_val((x).pgd))
 #define __pud(x) ((pud_t) { __pgd(x) } )
 #define pgd_page(pgd) (pud_page((pud_t){ pgd }))
 #define pgd_page_kernel(pgd) (pud_page_kernel((pud_t){ pgd }))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pud_alloc_one(mm, address) NULL
 #define pud_free(x) do { } while (0)
 #define __pud_free_tlb(tlb, x) do { } while (0)
 #undef pud_addr_end
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pud_addr_end(addr, end) (end)
 #endif
 #endif
diff --git a/libc/kernel/common/asm-generic/pgtable.h b/libc/kernel/common/asm-generic/pgtable.h
index a21cdba..dadf386 100644
--- a/libc/kernel/common/asm-generic/pgtable.h
+++ b/libc/kernel/common/asm-generic/pgtable.h
@@ -7,89 +7,99 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_PGTABLE_H
 #define _ASM_GENERIC_PGTABLE_H
-
 #ifndef __HAVE_ARCH_PTEP_ESTABLISH
-
 #ifndef __HAVE_ARCH_SET_PTE_ATOMIC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ptep_establish(__vma, __address, __ptep, __entry)  do {   set_pte_at((__vma)->vm_mm, (__address), __ptep, __entry);   flush_tlb_page(__vma, __address);  } while (0)
 #else
 #define ptep_establish(__vma, __address, __ptep, __entry)  do {   set_pte_atomic(__ptep, __entry);   flush_tlb_page(__vma, __address);  } while (0)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef __HAVE_ARCH_PTEP_SET_ACCESS_FLAGS
-
 #define ptep_set_access_flags(__vma, __address, __ptep, __entry, __dirty)  do {   set_pte_at((__vma)->vm_mm, (__address), __ptep, __entry);   flush_tlb_page(__vma, __address);  } while (0)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
 #define ptep_test_and_clear_young(__vma, __address, __ptep)  ({   pte_t __pte = *(__ptep);   int r = 1;   if (!pte_young(__pte))   r = 0;   else   set_pte_at((__vma)->vm_mm, (__address),   (__ptep), pte_mkold(__pte));   r;  })
 #endif
-
 #ifndef __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ptep_clear_flush_young(__vma, __address, __ptep)  ({   int __young;   __young = ptep_test_and_clear_young(__vma, __address, __ptep);   if (__young)   flush_tlb_page(__vma, __address);   __young;  })
 #endif
-
 #ifndef __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY
 #define ptep_test_and_clear_dirty(__vma, __address, __ptep)  ({   pte_t __pte = *__ptep;   int r = 1;   if (!pte_dirty(__pte))   r = 0;   else   set_pte_at((__vma)->vm_mm, (__address), (__ptep),   pte_mkclean(__pte));   r;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef __HAVE_ARCH_PTEP_CLEAR_DIRTY_FLUSH
 #define ptep_clear_flush_dirty(__vma, __address, __ptep)  ({   int __dirty;   __dirty = ptep_test_and_clear_dirty(__vma, __address, __ptep);   if (__dirty)   flush_tlb_page(__vma, __address);   __dirty;  })
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __HAVE_ARCH_PTEP_GET_AND_CLEAR
 #define ptep_get_and_clear(__mm, __address, __ptep)  ({   pte_t __pte = *(__ptep);   pte_clear((__mm), (__address), (__ptep));   __pte;  })
 #endif
-
 #ifndef __HAVE_ARCH_PTEP_GET_AND_CLEAR_FULL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ptep_get_and_clear_full(__mm, __address, __ptep, __full)  ({   pte_t __pte;   __pte = ptep_get_and_clear((__mm), (__address), (__ptep));   __pte;  })
 #endif
-
 #ifndef __HAVE_ARCH_PTE_CLEAR_FULL
 #define pte_clear_full(__mm, __address, __ptep, __full)  do {   pte_clear((__mm), (__address), (__ptep));  } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef __HAVE_ARCH_PTEP_CLEAR_FLUSH
 #define ptep_clear_flush(__vma, __address, __ptep)  ({   pte_t __pte;   __pte = ptep_get_and_clear((__vma)->vm_mm, __address, __ptep);   flush_tlb_page(__vma, __address);   __pte;  })
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __HAVE_ARCH_PTEP_SET_WRPROTECT
 struct mm_struct;
 #endif
 #ifndef __HAVE_ARCH_PTE_SAME
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pte_same(A,B) (pte_val(A) == pte_val(B))
 #endif
 #ifndef __HAVE_ARCH_PAGE_TEST_AND_CLEAR_DIRTY
 #define page_test_and_clear_dirty(page) (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pte_maybe_dirty(pte) pte_dirty(pte)
 #else
 #define pte_maybe_dirty(pte) (1)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __HAVE_ARCH_PAGE_TEST_AND_CLEAR_YOUNG
 #define page_test_and_clear_young(page) (0)
 #endif
 #ifndef __HAVE_ARCH_PGD_OFFSET_GATE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pgd_offset_gate(mm, addr) pgd_offset(mm, addr)
 #endif
 #ifndef __HAVE_ARCH_LAZY_MMU_PROT_UPDATE
 #define lazy_mmu_prot_update(pte) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __HAVE_ARCH_MOVE_PTE
 #define move_pte(pte, prot, old_addr, new_addr) (pte)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define pgd_addr_end(addr, end)  ({ unsigned long __boundary = ((addr) + PGDIR_SIZE) & PGDIR_MASK;   (__boundary - 1 < (end) - 1)? __boundary: (end);  })
 #ifndef pud_addr_end
 #define pud_addr_end(addr, end)  ({ unsigned long __boundary = ((addr) + PUD_SIZE) & PUD_MASK;   (__boundary - 1 < (end) - 1)? __boundary: (end);  })
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef pmd_addr_end
 #define pmd_addr_end(addr, end)  ({ unsigned long __boundary = ((addr) + PMD_SIZE) & PMD_MASK;   (__boundary - 1 < (end) - 1)? __boundary: (end);  })
 #endif
 #ifndef __ASSEMBLY__
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
diff --git a/libc/kernel/common/asm-generic/poll.h b/libc/kernel/common/asm-generic/poll.h
index b8cd3da..f7b911d 100644
--- a/libc/kernel/common/asm-generic/poll.h
+++ b/libc/kernel/common/asm-generic/poll.h
@@ -7,40 +7,50 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_GENERIC_POLL_H
 #define __ASM_GENERIC_POLL_H
-
 #define POLLIN 0x0001
 #define POLLPRI 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POLLOUT 0x0004
 #define POLLERR 0x0008
 #define POLLHUP 0x0010
 #define POLLNVAL 0x0020
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POLLRDNORM 0x0040
 #define POLLRDBAND 0x0080
 #ifndef POLLWRNORM
 #define POLLWRNORM 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef POLLWRBAND
 #define POLLWRBAND 0x0200
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef POLLMSG
 #define POLLMSG 0x0400
 #endif
 #ifndef POLLREMOVE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POLLREMOVE 0x1000
 #endif
 #ifndef POLLRDHUP
 #define POLLRDHUP 0x2000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 struct pollfd {
  int fd;
  short events;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  short revents;
 };
-
 #endif
diff --git a/libc/kernel/common/asm-generic/sections.h b/libc/kernel/common/asm-generic/sections.h
index e9eaa46..0529280 100644
--- a/libc/kernel/common/asm-generic/sections.h
+++ b/libc/kernel/common/asm-generic/sections.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_SECTIONS_H_
 #define _ASM_GENERIC_SECTIONS_H_
-
 #endif
diff --git a/libc/kernel/common/asm-generic/siginfo.h b/libc/kernel/common/asm-generic/siginfo.h
index d6743a7..6ba48a0 100644
--- a/libc/kernel/common/asm-generic/siginfo.h
+++ b/libc/kernel/common/asm-generic/siginfo.h
@@ -7,207 +7,222 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_SIGINFO_H
 #define _ASM_GENERIC_SIGINFO_H
-
 #include <linux/compiler.h>
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef union sigval {
  int sival_int;
  void __user *sival_ptr;
 } sigval_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ARCH_SI_PREAMBLE_SIZE
 #define __ARCH_SI_PREAMBLE_SIZE (3 * sizeof(int))
 #endif
-
 #define SI_MAX_SIZE 128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef SI_PAD_SIZE
 #define SI_PAD_SIZE ((SI_MAX_SIZE - __ARCH_SI_PREAMBLE_SIZE) / sizeof(int))
 #endif
-
 #ifndef __ARCH_SI_UID_T
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ARCH_SI_UID_T uid_t
 #endif
-
 #ifndef __ARCH_SI_BAND_T
 #define __ARCH_SI_BAND_T long
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef HAVE_ARCH_SIGINFO_T
-
 typedef struct siginfo {
  int si_signo;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int si_errno;
  int si_code;
-
  union {
  int _pad[SI_PAD_SIZE];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  pid_t _pid;
  __ARCH_SI_UID_T _uid;
  } _kill;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  timer_t _tid;
  int _overrun;
  char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sigval_t _sigval;
  int _sys_private;
  } _timer;
-
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  pid_t _pid;
  __ARCH_SI_UID_T _uid;
  sigval_t _sigval;
  } _rt;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  pid_t _pid;
  __ARCH_SI_UID_T _uid;
  int _status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  clock_t _utime;
  clock_t _stime;
  } _sigchld;
-
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __user *_addr;
 #ifdef __ARCH_SI_TRAPNO
  int _trapno;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } _sigfault;
-
  struct {
  __ARCH_SI_BAND_T _band;
  int _fd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } _sigpoll;
  } _sifields;
 } siginfo_t;
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define si_pid _sifields._kill._pid
 #define si_uid _sifields._kill._uid
 #define si_tid _sifields._timer._tid
 #define si_overrun _sifields._timer._overrun
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define si_sys_private _sifields._timer._sys_private
 #define si_status _sifields._sigchld._status
 #define si_utime _sifields._sigchld._utime
 #define si_stime _sifields._sigchld._stime
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define si_value _sifields._rt._sigval
 #define si_int _sifields._rt._sigval.sival_int
 #define si_ptr _sifields._rt._sigval.sival_ptr
 #define si_addr _sifields._sigfault._addr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __ARCH_SI_TRAPNO
 #define si_trapno _sifields._sigfault._trapno
 #endif
 #define si_band _sifields._sigpoll._band
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define si_fd _sifields._sigpoll._fd
-
 #define __SI_KILL 0
 #define __SI_TIMER 0
 #define __SI_POLL 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __SI_FAULT 0
 #define __SI_CHLD 0
 #define __SI_RT 0
 #define __SI_MESGQ 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __SI_CODE(T,N) (N)
-
 #define SI_USER 0  
 #define SI_KERNEL 0x80  
 #define SI_QUEUE -1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SI_TIMER __SI_CODE(__SI_TIMER,-2)  
 #define SI_MESGQ __SI_CODE(__SI_MESGQ,-3)  
 #define SI_ASYNCIO -4  
 #define SI_SIGIO -5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SI_TKILL -6  
 #define SI_DETHREAD -7  
-
 #define SI_FROMUSER(siptr) ((siptr)->si_code <= 0)
 #define SI_FROMKERNEL(siptr) ((siptr)->si_code > 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ILL_ILLOPC (__SI_FAULT|1)  
 #define ILL_ILLOPN (__SI_FAULT|2)  
 #define ILL_ILLADR (__SI_FAULT|3)  
 #define ILL_ILLTRP (__SI_FAULT|4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ILL_PRVOPC (__SI_FAULT|5)  
 #define ILL_PRVREG (__SI_FAULT|6)  
 #define ILL_COPROC (__SI_FAULT|7)  
 #define ILL_BADSTK (__SI_FAULT|8)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NSIGILL 8
-
 #define FPE_INTDIV (__SI_FAULT|1)  
 #define FPE_INTOVF (__SI_FAULT|2)  
 #define FPE_FLTDIV (__SI_FAULT|3)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FPE_FLTOVF (__SI_FAULT|4)  
 #define FPE_FLTUND (__SI_FAULT|5)  
 #define FPE_FLTRES (__SI_FAULT|6)  
 #define FPE_FLTINV (__SI_FAULT|7)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FPE_FLTSUB (__SI_FAULT|8)  
 #define NSIGFPE 8
-
 #define SEGV_MAPERR (__SI_FAULT|1)  
 #define SEGV_ACCERR (__SI_FAULT|2)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NSIGSEGV 2
-
 #define BUS_ADRALN (__SI_FAULT|1)  
 #define BUS_ADRERR (__SI_FAULT|2)  
 #define BUS_OBJERR (__SI_FAULT|3)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NSIGBUS 3
-
 #define TRAP_BRKPT (__SI_FAULT|1)  
 #define TRAP_TRACE (__SI_FAULT|2)  
 #define NSIGTRAP 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLD_EXITED (__SI_CHLD|1)  
 #define CLD_KILLED (__SI_CHLD|2)  
 #define CLD_DUMPED (__SI_CHLD|3)  
 #define CLD_TRAPPED (__SI_CHLD|4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLD_STOPPED (__SI_CHLD|5)  
 #define CLD_CONTINUED (__SI_CHLD|6)  
 #define NSIGCHLD 6
-
 #define POLL_IN (__SI_POLL|1)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POLL_OUT (__SI_POLL|2)  
 #define POLL_MSG (__SI_POLL|3)  
 #define POLL_ERR (__SI_POLL|4)  
 #define POLL_PRI (__SI_POLL|5)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POLL_HUP (__SI_POLL|6)  
 #define NSIGPOLL 6
-
 #define SIGEV_SIGNAL 0  
 #define SIGEV_NONE 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIGEV_THREAD 2  
 #define SIGEV_THREAD_ID 4  
-
 #ifndef __ARCH_SIGEV_PREAMBLE_SIZE
 #define __ARCH_SIGEV_PREAMBLE_SIZE (sizeof(int) * 2 + sizeof(sigval_t))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define SIGEV_MAX_SIZE 64
 #define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE - __ARCH_SIGEV_PREAMBLE_SIZE)   / sizeof(int))
-
 typedef struct sigevent {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sigval_t sigev_value;
  int sigev_signo;
  int sigev_notify;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int _pad[SIGEV_PAD_SIZE];
  int _tid;
-
  struct {
  void (*_function)(sigval_t);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *_attribute;
  } _sigev_thread;
  } _sigev_un;
 } sigevent_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define sigev_notify_function _sigev_un._sigev_thread._function
 #define sigev_notify_attributes _sigev_un._sigev_thread._attribute
 #define sigev_notify_thread_id _sigev_un._tid
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/asm-generic/signal.h b/libc/kernel/common/asm-generic/signal.h
index 226d99c..f106b38 100644
--- a/libc/kernel/common/asm-generic/signal.h
+++ b/libc/kernel/common/asm-generic/signal.h
@@ -7,33 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ASM_GENERIC_SIGNAL_H
 #define __ASM_GENERIC_SIGNAL_H
-
 #include <linux/compiler.h>
-
 #ifndef SIG_BLOCK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIG_BLOCK 0  
 #endif
 #ifndef SIG_UNBLOCK
 #define SIG_UNBLOCK 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef SIG_SETMASK
 #define SIG_SETMASK 2  
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
 typedef void __signalfn_t(int);
 typedef __signalfn_t __user *__sighandler_t;
-
 typedef void __restorefn_t(void);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __restorefn_t __user *__sigrestore_t;
-
 #define SIG_DFL ((__force __sighandler_t)0)  
 #define SIG_IGN ((__force __sighandler_t)1)  
 #define SIG_ERR ((__force __sighandler_t)-1)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #endif
diff --git a/libc/kernel/common/asm-generic/swab.h b/libc/kernel/common/asm-generic/swab.h
index 592926d..8279332 100644
--- a/libc/kernel/common/asm-generic/swab.h
+++ b/libc/kernel/common/asm-generic/swab.h
@@ -7,17 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_SWAB_H
 #define _ASM_GENERIC_SWAB_H
-
 #include <asm/bitsperlong.h>
-
 #if __BITS_PER_LONG == 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if defined(__GNUC__) && (!defined(__STRICT_ANSI__) || defined(__KERNEL__))
 #define __SWAB_64_THRU_32__
 #endif
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/asm-generic/tlb.h b/libc/kernel/common/asm-generic/tlb.h
index dc1e79f..6669388 100644
--- a/libc/kernel/common/asm-generic/tlb.h
+++ b/libc/kernel/common/asm-generic/tlb.h
@@ -7,31 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC__TLB_H
 #define _ASM_GENERIC__TLB_H
-
 #include <linux/swap.h>
 #include <asm/pgalloc.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/tlbflush.h>
-
 #define FREE_PTE_NR 1
 #define tlb_fast_mode(tlb) 1
-
 struct mmu_gather {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mm_struct *mm;
  unsigned int nr;
  unsigned int need_flush;
  unsigned int fullmm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page * pages[FREE_PTE_NR];
 };
-
 #define tlb_remove_tlb_entry(tlb, ptep, address)   do {   tlb->need_flush = 1;   __tlb_remove_tlb_entry(tlb, ptep, address);   } while (0)
 #define pte_free_tlb(tlb, ptep)   do {   tlb->need_flush = 1;   __pte_free_tlb(tlb, ptep);   } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ARCH_HAS_4LEVEL_HACK
 #define pud_free_tlb(tlb, pudp)   do {   tlb->need_flush = 1;   __pud_free_tlb(tlb, pudp);   } while (0)
 #endif
 #define pmd_free_tlb(tlb, pmdp)   do {   tlb->need_flush = 1;   __pmd_free_tlb(tlb, pmdp);   } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define tlb_migrate_finish(mm) do {} while (0)
 #endif
diff --git a/libc/kernel/common/asm-generic/topology.h b/libc/kernel/common/asm-generic/topology.h
index 089b1f2..7833d7d 100644
--- a/libc/kernel/common/asm-generic/topology.h
+++ b/libc/kernel/common/asm-generic/topology.h
@@ -7,29 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_GENERIC_TOPOLOGY_H
 #define _ASM_GENERIC_TOPOLOGY_H
-
 #ifndef cpu_to_node
 #define cpu_to_node(cpu) (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef parent_node
 #define parent_node(node) (0)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef node_to_cpumask
 #define node_to_cpumask(node) (cpu_online_map)
 #endif
 #ifndef node_to_first_cpu
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define node_to_first_cpu(node) (0)
 #endif
 #ifndef pcibus_to_node
 #define pcibus_to_node(node) (-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef pcibus_to_cpumask
 #define pcibus_to_cpumask(bus) (pcibus_to_node(bus) == -1 ?   CPU_MASK_ALL :   node_to_cpumask(pcibus_to_node(bus))   )
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/asm-generic/xor.h b/libc/kernel/common/asm-generic/xor.h
index 6b1e4e8..7aaa117 100644
--- a/libc/kernel/common/asm-generic/xor.h
+++ b/libc/kernel/common/asm-generic/xor.h
@@ -7,8 +7,14 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm/processor.h>
-
 #define XOR_TRY_TEMPLATES   do {   xor_speed(&xor_block_8regs);   xor_speed(&xor_block_8regs_p);   xor_speed(&xor_block_32regs);   xor_speed(&xor_block_32regs_p);   } while (0)
diff --git a/libc/kernel/common/linux/a.out.h b/libc/kernel/common/linux/a.out.h
index 7325304..87c5b19 100644
--- a/libc/kernel/common/linux/a.out.h
+++ b/libc/kernel/common/linux/a.out.h
@@ -7,214 +7,218 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __A_OUT_GNU_H__
 #define __A_OUT_GNU_H__
-
 #define __GNU_EXEC_MACROS__
-
 #ifndef __STRUCT_EXEC_OVERRIDE__
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/a.out.h>
-
 #endif
-
 enum machine_type {
 #ifdef M_OLDSUN2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  M__OLDSUN2 = M_OLDSUN2,
 #else
  M_OLDSUN2 = 0,
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef M_68010
  M__68010 = M_68010,
 #else
  M_68010 = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifdef M_68020
  M__68020 = M_68020,
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  M_68020 = 2,
 #endif
 #ifdef M_SPARC
  M__SPARC = M_SPARC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
  M_SPARC = 3,
 #endif
-
  M_386 = 100,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  M_MIPS1 = 151,
  M_MIPS2 = 152
 };
-
 #ifndef N_MAGIC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_MAGIC(exec) ((exec).a_info & 0xffff)
 #endif
 #define N_MACHTYPE(exec) ((enum machine_type)(((exec).a_info >> 16) & 0xff))
 #define N_FLAGS(exec) (((exec).a_info >> 24) & 0xff)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_SET_INFO(exec, magic, type, flags)   ((exec).a_info = ((magic) & 0xffff)   | (((int)(type) & 0xff) << 16)   | (((flags) & 0xff) << 24))
 #define N_SET_MAGIC(exec, magic)   ((exec).a_info = (((exec).a_info & 0xffff0000) | ((magic) & 0xffff)))
-
 #define N_SET_MACHTYPE(exec, machtype)   ((exec).a_info =   ((exec).a_info&0xff00ffff) | ((((int)(machtype))&0xff) << 16))
-
 #define N_SET_FLAGS(exec, flags)   ((exec).a_info =   ((exec).a_info&0x00ffffff) | (((flags) & 0xff) << 24))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAGIC 0407
-
 #define NMAGIC 0410
-
 #define ZMAGIC 0413
-
 #define QMAGIC 0314
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMAGIC 0421
-
 #ifndef N_BADMAG
 #define N_BADMAG(x) (N_MAGIC(x) != OMAGIC   && N_MAGIC(x) != NMAGIC   && N_MAGIC(x) != ZMAGIC   && N_MAGIC(x) != QMAGIC)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _N_HDROFF(x) (1024 - sizeof (struct exec))
-
 #ifndef N_TXTOFF
 #define N_TXTOFF(x)   (N_MAGIC(x) == ZMAGIC ? _N_HDROFF((x)) + sizeof (struct exec) :   (N_MAGIC(x) == QMAGIC ? 0 : sizeof (struct exec)))
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef N_DATOFF
 #define N_DATOFF(x) (N_TXTOFF(x) + (x).a_text)
 #endif
-
 #ifndef N_TRELOFF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_TRELOFF(x) (N_DATOFF(x) + (x).a_data)
 #endif
-
 #ifndef N_DRELOFF
 #define N_DRELOFF(x) (N_TRELOFF(x) + N_TRSIZE(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef N_SYMOFF
 #define N_SYMOFF(x) (N_DRELOFF(x) + N_DRSIZE(x))
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef N_STROFF
 #define N_STROFF(x) (N_SYMOFF(x) + N_SYMSIZE(x))
 #endif
-
 #ifndef N_TXTADDR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? PAGE_SIZE : 0)
 #endif
-
 #if defined(vax) || defined(hp300) || defined(pyr)
 #define SEGMENT_SIZE page_size
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifdef sony
 #define SEGMENT_SIZE 0x2000
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef is68k
 #define SEGMENT_SIZE 0x20000
 #endif
 #if defined(m68k) && defined(PORTAR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_SIZE 0x400
 #define SEGMENT_SIZE PAGE_SIZE
 #endif
-
 #ifdef linux
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/page.h>
 #if defined(__i386__) || defined(__mc68000__)
 #define SEGMENT_SIZE 1024
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef SEGMENT_SIZE
 #define SEGMENT_SIZE PAGE_SIZE
 #endif
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define _N_SEGMENT_ROUND(x) ALIGN(x, SEGMENT_SIZE)
-
 #define _N_TXTENDADDR(x) (N_TXTADDR(x)+(x).a_text)
-
 #ifndef N_DATADDR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_DATADDR(x)   (N_MAGIC(x)==OMAGIC? (_N_TXTENDADDR(x))   : (_N_SEGMENT_ROUND (_N_TXTENDADDR(x))))
 #endif
-
 #ifndef N_BSSADDR
 #define N_BSSADDR(x) (N_DATADDR(x) + (x).a_data)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef N_NLIST_DECLARED
 struct nlist {
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *n_name;
  struct nlist *n_next;
  long n_strx;
  } n_un;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char n_type;
  char n_other;
  short n_desc;
  unsigned long n_value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
-
 #ifndef N_UNDF
 #define N_UNDF 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef N_ABS
 #define N_ABS 2
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef N_TEXT
 #define N_TEXT 4
 #endif
 #ifndef N_DATA
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_DATA 6
 #endif
 #ifndef N_BSS
 #define N_BSS 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef N_FN
 #define N_FN 15
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef N_EXT
 #define N_EXT 1
 #endif
 #ifndef N_TYPE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_TYPE 036
 #endif
 #ifndef N_STAB
 #define N_STAB 0340
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define N_INDR 0xa
-
 #define N_SETA 0x14  
 #define N_SETT 0x16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define N_SETD 0x18  
 #define N_SETB 0x1A  
-
 #define N_SETV 0x1C  
-
 #ifndef N_RELOCATION_INFO_DECLARED
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct relocation_info
 {
-
  int r_address;
-
  unsigned int r_symbolnum:24;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int r_pcrel:1;
-
  unsigned int r_length:2;
-
  unsigned int r_extern:1;
-
 #ifdef NS32K
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned r_bsr:1;
  unsigned r_disp:1;
  unsigned r_pad:2;
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int r_pad:4;
 #endif
 };
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/a1026.h b/libc/kernel/common/linux/a1026.h
index 2bf6190..1e5ce1b 100644
--- a/libc/kernel/common/linux/a1026.h
+++ b/libc/kernel/common/linux/a1026.h
@@ -7,61 +7,70 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_A1026_H
 #define __LINUX_A1026_H
-
 #include <linux/ioctl.h>
-
 #define A1026_MAX_FW_SIZE (32*1024)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct a1026img {
  unsigned char *buf;
  unsigned img_size;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum A1026_PathID {
  A1026_PATH_SUSPEND,
  A1026_PATH_INCALL_RECEIVER,
  A1026_PATH_INCALL_HEADSET,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  A1026_PATH_INCALL_SPEAKER,
  A1026_PATH_INCALL_BT,
  A1026_PATH_VR_NO_NS_RECEIVER,
  A1026_PATH_VR_NO_NS_HEADSET,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  A1026_PATH_VR_NO_NS_SPEAKER,
  A1026_PATH_VR_NO_NS_BT,
  A1026_PATH_VR_NS_RECEIVER,
  A1026_PATH_VR_NS_HEADSET,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  A1026_PATH_VR_NS_SPEAKER,
  A1026_PATH_VR_NS_BT,
  A1026_PATH_RECORD_RECEIVER,
  A1026_PATH_RECORD_HEADSET,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  A1026_PATH_RECORD_SPEAKER,
  A1026_PATH_RECORD_BT,
  A1026_PATH_CAMCORDER,
  A1026_PATH_INCALL_TTY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum A1026_NS_states {
  A1026_NS_STATE_AUTO,
  A1026_NS_STATE_OFF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  A1026_NS_STATE_CT,
  A1026_NS_STATE_FT,
  A1026_NS_NUM_STATES
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define A1026_IOCTL_MAGIC 'u'
-
 #define A1026_BOOTUP_INIT _IOW(A1026_IOCTL_MAGIC, 0x01, struct a1026img *)
 #define A1026_SET_CONFIG _IOW(A1026_IOCTL_MAGIC, 0x02, enum A1026_PathID)
 #define A1026_SET_NS_STATE _IOW(A1026_IOCTL_MAGIC, 0x03, enum A1026_NS_states)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define A1026_SET_MIC_ONOFF _IOW(A1026_IOCTL_MAGIC, 0x50, unsigned)
 #define A1026_SET_MICSEL_ONOFF _IOW(A1026_IOCTL_MAGIC, 0x51, unsigned)
 #define A1026_READ_DATA _IOR(A1026_IOCTL_MAGIC, 0x52, unsigned)
 #define A1026_WRITE_MSG _IOW(A1026_IOCTL_MAGIC, 0x53, unsigned)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define A1026_SYNC_CMD _IO(A1026_IOCTL_MAGIC, 0x54)
 #define A1026_SET_CMD_FILE _IOW(A1026_IOCTL_MAGIC, 0x55, unsigned)
-
 #endif
-
diff --git a/libc/kernel/common/linux/aio_abi.h b/libc/kernel/common/linux/aio_abi.h
index c92bc8f..3b87399 100644
--- a/libc/kernel/common/linux/aio_abi.h
+++ b/libc/kernel/common/linux/aio_abi.h
@@ -7,58 +7,60 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX__AIO_ABI_H
 #define __LINUX__AIO_ABI_H
-
 #include <asm/byteorder.h>
-
 typedef unsigned long aio_context_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  IOCB_CMD_PREAD = 0,
  IOCB_CMD_PWRITE = 1,
  IOCB_CMD_FSYNC = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IOCB_CMD_FDSYNC = 3,
-
  IOCB_CMD_NOOP = 6,
 };
-
 struct io_event {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 data;
  __u64 obj;
  __s64 res;
  __s64 res2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #ifdef __LITTLE_ENDIAN
 #define PADDED(x,y) x, y
 #elif defined(__BIG_ENDIAN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PADDED(x,y) y, x
 #else
 #error edit for your odd byteorder.
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct iocb {
-
  __u64 aio_data;
  __u32 PADDED(aio_key, aio_reserved1);
-
  __u16 aio_lio_opcode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s16 aio_reqprio;
  __u32 aio_fildes;
-
  __u64 aio_buf;
  __u64 aio_nbytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s64 aio_offset;
-
  __u64 aio_reserved2;
  __u64 aio_reserved3;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef IFBIG
 #undef IFLITTLE
-
 #endif
-
diff --git a/libc/kernel/common/linux/akm8973.h b/libc/kernel/common/linux/akm8973.h
index 2892f72..0721803 100644
--- a/libc/kernel/common/linux/akm8973.h
+++ b/libc/kernel/common/linux/akm8973.h
@@ -7,39 +7,45 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef AKM8973_H
 #define AKM8973_H
-
 #include <linux/ioctl.h>
-
 #define AKMIO 0xA1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_WRITE _IOW(AKMIO, 0x01, char[5])
 #define ECS_IOCTL_READ _IOWR(AKMIO, 0x02, char[5])
 #define ECS_IOCTL_RESET _IO(AKMIO, 0x03)
 #define ECS_IOCTL_SET_MODE _IOW(AKMIO, 0x04, short)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_GETDATA _IOR(AKMIO, 0x05, char[RBUFF_SIZE+1])
 #define ECS_IOCTL_SET_YPR _IOW(AKMIO, 0x06, short[12])
 #define ECS_IOCTL_GET_OPEN_STATUS _IOR(AKMIO, 0x07, int)
 #define ECS_IOCTL_GET_CLOSE_STATUS _IOR(AKMIO, 0x08, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_GET_DELAY _IOR(AKMIO, 0x30, short)
-
 #define ECS_IOCTL_APP_SET_MODE _IOW(AKMIO, 0x10, short)
 #define ECS_IOCTL_APP_SET_MFLAG _IOW(AKMIO, 0x11, short)
 #define ECS_IOCTL_APP_GET_MFLAG _IOW(AKMIO, 0x12, short)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_APP_SET_AFLAG _IOW(AKMIO, 0x13, short)
 #define ECS_IOCTL_APP_GET_AFLAG _IOR(AKMIO, 0x14, short)
 #define ECS_IOCTL_APP_SET_TFLAG _IOR(AKMIO, 0x15, short)
 #define ECS_IOCTL_APP_GET_TFLAG _IOR(AKMIO, 0x16, short)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_APP_RESET_PEDOMETER _IO(AKMIO, 0x17)
 #define ECS_IOCTL_APP_SET_DELAY _IOW(AKMIO, 0x18, short)
 #define ECS_IOCTL_APP_GET_DELAY ECS_IOCTL_GET_DELAY
-#define ECS_IOCTL_APP_SET_MVFLAG _IOW(AKMIO, 0x19, short)
-#define ECS_IOCTL_APP_GET_MVFLAG _IOR(AKMIO, 0x1A, short)
-
+#define ECS_IOCTL_APP_SET_MVFLAG _IOW(AKMIO, 0x19, short)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ECS_IOCTL_APP_GET_MVFLAG _IOR(AKMIO, 0x1A, short)  
 #define ECS_IOCTL_SET_STEP_CNT _IOW(AKMIO, 0x20, short)
 #endif
-
-
diff --git a/libc/kernel/common/linux/akm8975.h b/libc/kernel/common/linux/akm8975.h
index 1815f75..3e68ab5 100644
--- a/libc/kernel/common/linux/akm8975.h
+++ b/libc/kernel/common/linux/akm8975.h
@@ -7,66 +7,73 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef AKM8975_H
 #define AKM8975_H
-
 #include <linux/ioctl.h>
-
 #define AK8975_MODE_SNG_MEASURE 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AK8975_MODE_SELF_TEST 0x08
 #define AK8975_MODE_FUSE_ACCESS 0x0F
 #define AK8975_MODE_POWER_DOWN 0x00
-
 #define RBUFF_SIZE 8  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AK8975_REG_WIA 0x00
 #define AK8975_REG_INFO 0x01
 #define AK8975_REG_ST1 0x02
 #define AK8975_REG_HXL 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AK8975_REG_HXH 0x04
 #define AK8975_REG_HYL 0x05
 #define AK8975_REG_HYH 0x06
 #define AK8975_REG_HZL 0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AK8975_REG_HZH 0x08
 #define AK8975_REG_ST2 0x09
 #define AK8975_REG_CNTL 0x0A
 #define AK8975_REG_RSV 0x0B
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AK8975_REG_ASTC 0x0C
 #define AK8975_REG_TS1 0x0D
 #define AK8975_REG_TS2 0x0E
 #define AK8975_REG_I2CDIS 0x0F
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AK8975_FUSE_ASAX 0x10
 #define AK8975_FUSE_ASAY 0x11
 #define AK8975_FUSE_ASAZ 0x12
-
 #define AKMIO 0xA1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_WRITE _IOW(AKMIO, 0x02, char[5])
 #define ECS_IOCTL_READ _IOWR(AKMIO, 0x03, char[5])
 #define ECS_IOCTL_GETDATA _IOR(AKMIO, 0x08, char[RBUFF_SIZE])
 #define ECS_IOCTL_SET_YPR _IOW(AKMIO, 0x0C, short[12])
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_GET_OPEN_STATUS _IOR(AKMIO, 0x0D, int)
 #define ECS_IOCTL_GET_CLOSE_STATUS _IOR(AKMIO, 0x0E, int)
 #define ECS_IOCTL_GET_DELAY _IOR(AKMIO, 0x30, short)
-
 #define ECS_IOCTL_APP_SET_MFLAG _IOW(AKMIO, 0x11, short)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_APP_GET_MFLAG _IOW(AKMIO, 0x12, short)
 #define ECS_IOCTL_APP_SET_AFLAG _IOW(AKMIO, 0x13, short)
 #define ECS_IOCTL_APP_GET_AFLAG _IOR(AKMIO, 0x14, short)
 #define ECS_IOCTL_APP_SET_DELAY _IOW(AKMIO, 0x18, short)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_APP_GET_DELAY ECS_IOCTL_GET_DELAY
 #define ECS_IOCTL_APP_SET_MVFLAG _IOW(AKMIO, 0x19, short)  
 #define ECS_IOCTL_APP_GET_MVFLAG _IOR(AKMIO, 0x1A, short)  
 #define ECS_IOCTL_APP_SET_TFLAG _IOR(AKMIO, 0x15, short)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_INTR 140
-
 struct akm8975_platform_data {
  int intr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/akm8976.h b/libc/kernel/common/linux/akm8976.h
index a5aa68e..84ac803 100644
--- a/libc/kernel/common/linux/akm8976.h
+++ b/libc/kernel/common/linux/akm8976.h
@@ -7,83 +7,90 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef AKM8976_H
 #define AKM8976_H
-
 #include <linux/ioctl.h>
-
 #define AKECS_MODE_MEASURE 0x00  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AKECS_MODE_PFFD 0x01  
 #define AKECS_MODE_E2P_READ 0x02  
 #define AKECS_MODE_POWERDOWN 0x03  
-
 #define AKECS_MODE_MEASURE_SNG 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AKECS_MODE_MEASURE_SEQ 0x11  
-
 #define CSPEC_AINT 0x01  
 #define CSPEC_SNG_NUM 0x01  
 #define CSPEC_SEQ_NUM 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CSPEC_SFRQ_32 0x00  
 #define CSPEC_SFRQ_64 0x01  
 #define CSPEC_MCS 0x07  
 #define CSPEC_MKS 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CSPEC_INTEN 0x01  
-
 #define RBUFF_SIZE 31  
 #define MAX_CALI_SIZE 0x1000U  
-
 #define AKECS_REG_ST 0xC0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AKECS_REG_TMPS 0xC1
 #define AKECS_REG_MS1 0xE0
 #define AKECS_REG_MS2 0xE1
 #define AKECS_REG_MS3 0xE2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AKMIO 0xA1
-
 #define ECS_IOCTL_INIT _IO(AKMIO, 0x01)
 #define ECS_IOCTL_WRITE _IOW(AKMIO, 0x02, char[5])
 #define ECS_IOCTL_READ _IOWR(AKMIO, 0x03, char[5])
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_RESET _IO(AKMIO, 0x04)
 #define ECS_IOCTL_INT_STATUS _IO(AKMIO, 0x05)
 #define ECS_IOCTL_FFD_STATUS _IO(AKMIO, 0x06)
 #define ECS_IOCTL_SET_MODE _IOW(AKMIO, 0x07, short)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_GETDATA _IOR(AKMIO, 0x08, char[RBUFF_SIZE+1])
 #define ECS_IOCTL_GET_NUMFRQ _IOR(AKMIO, 0x09, char[2])
 #define ECS_IOCTL_SET_PERST _IO(AKMIO, 0x0A)
 #define ECS_IOCTL_SET_G0RST _IO(AKMIO, 0x0B)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_SET_YPR _IOW(AKMIO, 0x0C, short[12])
 #define ECS_IOCTL_GET_OPEN_STATUS _IOR(AKMIO, 0x0D, int)
 #define ECS_IOCTL_GET_CLOSE_STATUS _IOR(AKMIO, 0x0E, int)
 #define ECS_IOCTL_GET_CALI_DATA _IOR(AKMIO, 0x0F, char[MAX_CALI_SIZE])
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_GET_DELAY _IOR(AKMIO, 0x30, short)
-
 #define ECS_IOCTL_APP_SET_MODE _IOW(AKMIO, 0x10, short)
 #define ECS_IOCTL_APP_SET_MFLAG _IOW(AKMIO, 0x11, short)
 #define ECS_IOCTL_APP_GET_MFLAG _IOW(AKMIO, 0x12, short)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_APP_SET_AFLAG _IOW(AKMIO, 0x13, short)
 #define ECS_IOCTL_APP_GET_AFLAG _IOR(AKMIO, 0x14, short)
 #define ECS_IOCTL_APP_SET_TFLAG _IOR(AKMIO, 0x15, short)
 #define ECS_IOCTL_APP_GET_TFLAG _IOR(AKMIO, 0x16, short)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_APP_RESET_PEDOMETER _IO(AKMIO, 0x17)
 #define ECS_IOCTL_APP_SET_DELAY _IOW(AKMIO, 0x18, short)
 #define ECS_IOCTL_APP_GET_DELAY ECS_IOCTL_GET_DELAY
 #define ECS_IOCTL_APP_SET_MVFLAG _IOW(AKMIO, 0x19, short)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_IOCTL_APP_GET_MVFLAG _IOR(AKMIO, 0x1A, short)  
-
 #define ECS_IOCTL_SET_STEP_CNT _IOW(AKMIO, 0x20, short)
-
 #define ECS_RST 146  
 #define ECS_CLK_ON 155  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ECS_INTR 161  
-
 struct akm8976_platform_data {
  int reset;
  int clk_on;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int intr;
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/android_alarm.h b/libc/kernel/common/linux/android_alarm.h
index 80828ea..015acf4 100644
--- a/libc/kernel/common/linux/android_alarm.h
+++ b/libc/kernel/common/linux/android_alarm.h
@@ -7,44 +7,49 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ANDROID_ALARM_H
 #define _LINUX_ANDROID_ALARM_H
-
 #include <asm/ioctl.h>
 #include <linux/time.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
-
  ANDROID_ALARM_RTC_WAKEUP,
  ANDROID_ALARM_RTC,
  ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ANDROID_ALARM_ELAPSED_REALTIME,
  ANDROID_ALARM_SYSTEMTIME,
-
  ANDROID_ALARM_TYPE_COUNT,
-
 } android_alarm_type_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
  ANDROID_ALARM_RTC_WAKEUP_MASK = 1U << ANDROID_ALARM_RTC_WAKEUP,
  ANDROID_ALARM_RTC_MASK = 1U << ANDROID_ALARM_RTC,
  ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP_MASK = 1U << ANDROID_ALARM_ELAPSED_REALTIME_WAKEUP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ANDROID_ALARM_ELAPSED_REALTIME_MASK = 1U << ANDROID_ALARM_ELAPSED_REALTIME,
  ANDROID_ALARM_SYSTEMTIME_MASK = 1U << ANDROID_ALARM_SYSTEMTIME,
  ANDROID_ALARM_TIME_CHANGE_MASK = 1U << 16
 } android_alarm_return_flags_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ANDROID_ALARM_CLEAR(type) _IO('a', 0 | ((type) << 4)) 
 #define ANDROID_ALARM_WAIT _IO('a', 1) 
 #define ANDROID_ALARM_SET(type) _IOW('a', 2 | ((type) << 4), struct timespec) 
 #define ANDROID_ALARM_SET_AND_WAIT(type) _IOW('a', 3 | ((type) << 4), struct timespec)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ANDROID_ALARM_GET_TIME(type) _IOW('a', 4 | ((type) << 4), struct timespec)
 #define ANDROID_ALARM_SET_RTC _IOW('a', 5, struct timespec)
 #define ANDROID_ALARM_SET_TIMEZONE _IOW('a', 6, struct timezone)
-
 #define ANDROID_ALARM_BASE_CMD(cmd) (cmd & ~(_IOC(0, 0, 0xf0, 0)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ANDROID_ALARM_IOCTL_TO_TYPE(cmd) (_IOC_NR(cmd) >> 4)
-
 #endif
diff --git a/libc/kernel/common/linux/android_pmem.h b/libc/kernel/common/linux/android_pmem.h
index be0b342..8c605e4 100644
--- a/libc/kernel/common/linux/android_pmem.h
+++ b/libc/kernel/common/linux/android_pmem.h
@@ -7,43 +7,43 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ANDROID_PMEM_H_
 #define _ANDROID_PMEM_H_
-
 #define PMEM_IOCTL_MAGIC 'p'
 #define PMEM_GET_PHYS _IOW(PMEM_IOCTL_MAGIC, 1, unsigned int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PMEM_MAP _IOW(PMEM_IOCTL_MAGIC, 2, unsigned int)
 #define PMEM_GET_SIZE _IOW(PMEM_IOCTL_MAGIC, 3, unsigned int)
 #define PMEM_UNMAP _IOW(PMEM_IOCTL_MAGIC, 4, unsigned int)
-
 #define PMEM_ALLOCATE _IOW(PMEM_IOCTL_MAGIC, 5, unsigned int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PMEM_CONNECT _IOW(PMEM_IOCTL_MAGIC, 6, unsigned int)
-
 #define PMEM_GET_TOTAL_SIZE _IOW(PMEM_IOCTL_MAGIC, 7, unsigned int)
 #define PMEM_CACHE_FLUSH _IOW(PMEM_IOCTL_MAGIC, 8, unsigned int)
-
 struct android_pmem_platform_data
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  const char* name;
-
  unsigned long start;
-
  unsigned long size;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned no_allocator;
-
  unsigned cached;
-
  unsigned buffered;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct pmem_region {
  unsigned long offset;
  unsigned long len;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/android_power.h b/libc/kernel/common/linux/android_power.h
index 2e90321..946dd0b 100644
--- a/libc/kernel/common/linux/android_power.h
+++ b/libc/kernel/common/linux/android_power.h
@@ -7,49 +7,58 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ANDROID_POWER_H
 #define _LINUX_ANDROID_POWER_H
-
 #include <linux/list.h>
-
 typedef struct
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  struct list_head link;
  int lock_count;
  int flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char *name;
  int expires;
 } android_suspend_lock_t;
-
 #define ANDROID_SUSPEND_LOCK_FLAG_COUNTED (1U << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ANDROID_SUSPEND_LOCK_FLAG_USER_READABLE (1U << 1)
 #define ANDROID_SUSPEND_LOCK_FLAG_USER_SET (1U << 2)
 #define ANDROID_SUSPEND_LOCK_FLAG_USER_CLEAR (1U << 3)
 #define ANDROID_SUSPEND_LOCK_FLAG_USER_INC (1U << 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ANDROID_SUSPEND_LOCK_FLAG_USER_DEC (1U << 5)
 #define ANDROID_SUSPEND_LOCK_FLAG_USER_VISIBLE_MASK (0x1fU << 1)
 #define ANDROID_SUSPEND_LOCK_AUTO_EXPIRE (1U << 6)
-
 typedef struct android_early_suspend android_early_suspend_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct android_early_suspend
 {
  struct list_head link;
  int level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*suspend)(android_early_suspend_t *h);
  void (*resume)(android_early_suspend_t *h);
 };
-
 typedef enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ANDROID_CHARGING_STATE_UNKNOWN,
  ANDROID_CHARGING_STATE_DISCHARGE,
  ANDROID_CHARGING_STATE_MAINTAIN,
  ANDROID_CHARGING_STATE_SLOW,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ANDROID_CHARGING_STATE_NORMAL,
  ANDROID_CHARGING_STATE_FAST,
  ANDROID_CHARGING_STATE_OVERHEAT
 } android_charging_state_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/apm_bios.h b/libc/kernel/common/linux/apm_bios.h
index d32b4aa..63fe95a 100644
--- a/libc/kernel/common/linux/apm_bios.h
+++ b/libc/kernel/common/linux/apm_bios.h
@@ -7,88 +7,100 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_APM_H
 #define _LINUX_APM_H
-
 typedef unsigned short apm_event_t;
 typedef unsigned short apm_eventinfo_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_STATE_READY 0x0000
 #define APM_STATE_STANDBY 0x0001
 #define APM_STATE_SUSPEND 0x0002
 #define APM_STATE_OFF 0x0003
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_STATE_BUSY 0x0004
 #define APM_STATE_REJECT 0x0005
 #define APM_STATE_OEM_SYS 0x0020
 #define APM_STATE_OEM_DEV 0x0040
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_STATE_DISABLE 0x0000
 #define APM_STATE_ENABLE 0x0001
-
 #define APM_STATE_DISENGAGE 0x0000
 #define APM_STATE_ENGAGE 0x0001
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_SYS_STANDBY 0x0001
 #define APM_SYS_SUSPEND 0x0002
 #define APM_NORMAL_RESUME 0x0003
 #define APM_CRITICAL_RESUME 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_LOW_BATTERY 0x0005
 #define APM_POWER_STATUS_CHANGE 0x0006
 #define APM_UPDATE_TIME 0x0007
 #define APM_CRITICAL_SUSPEND 0x0008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_USER_STANDBY 0x0009
 #define APM_USER_SUSPEND 0x000a
 #define APM_STANDBY_RESUME 0x000b
 #define APM_CAPABILITY_CHANGE 0x000c
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_SUCCESS 0x00
 #define APM_DISABLED 0x01
 #define APM_CONNECTED 0x02
 #define APM_NOT_CONNECTED 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_16_CONNECTED 0x05
 #define APM_16_UNSUPPORTED 0x06
 #define APM_32_CONNECTED 0x07
 #define APM_32_UNSUPPORTED 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_BAD_DEVICE 0x09
 #define APM_BAD_PARAM 0x0a
 #define APM_NOT_ENGAGED 0x0b
 #define APM_BAD_FUNCTION 0x0c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_RESUME_DISABLED 0x0d
 #define APM_NO_ERROR 0x53
 #define APM_BAD_STATE 0x60
 #define APM_NO_EVENTS 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_NOT_PRESENT 0x86
-
 #define APM_DEVICE_BIOS 0x0000
 #define APM_DEVICE_ALL 0x0001
 #define APM_DEVICE_DISPLAY 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_DEVICE_STORAGE 0x0200
 #define APM_DEVICE_PARALLEL 0x0300
 #define APM_DEVICE_SERIAL 0x0400
 #define APM_DEVICE_NETWORK 0x0500
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_DEVICE_PCMCIA 0x0600
 #define APM_DEVICE_BATTERY 0x8000
 #define APM_DEVICE_OEM 0xe000
 #define APM_DEVICE_OLD_ALL 0xffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_DEVICE_CLASS 0x00ff
 #define APM_DEVICE_MASK 0xff00
-
 #define APM_MAX_BATTERIES 2
-
 #define APM_CAP_GLOBAL_STANDBY 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_CAP_GLOBAL_SUSPEND 0x0002
 #define APM_CAP_RESUME_STANDBY_TIMER 0x0004  
 #define APM_CAP_RESUME_SUSPEND_TIMER 0x0008  
 #define APM_CAP_RESUME_STANDBY_RING 0x0010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_CAP_RESUME_SUSPEND_RING 0x0020  
 #define APM_CAP_RESUME_STANDBY_PCMCIA 0x0040  
 #define APM_CAP_RESUME_SUSPEND_PCMCIA 0x0080  
-
 #include <linux/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APM_IOC_STANDBY _IO('A', 1)
 #define APM_IOC_SUSPEND _IO('A', 2)
-
 #endif
diff --git a/libc/kernel/common/linux/ashmem.h b/libc/kernel/common/linux/ashmem.h
index a57d1de..e402e4e 100644
--- a/libc/kernel/common/linux/ashmem.h
+++ b/libc/kernel/common/linux/ashmem.h
@@ -7,40 +7,44 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ASHMEM_H
 #define _LINUX_ASHMEM_H
-
 #include <linux/limits.h>
 #include <linux/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASHMEM_NAME_LEN 256
-
 #define ASHMEM_NAME_DEF "dev/ashmem"
-
 #define ASHMEM_NOT_PURGED 0
 #define ASHMEM_WAS_PURGED 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASHMEM_IS_UNPINNED 0
 #define ASHMEM_IS_PINNED 1
-
 struct ashmem_pin {
  __u32 offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 len;
 };
-
 #define __ASHMEMIOC 0x77
-
 #define ASHMEM_SET_NAME _IOW(__ASHMEMIOC, 1, char[ASHMEM_NAME_LEN])
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASHMEM_GET_NAME _IOR(__ASHMEMIOC, 2, char[ASHMEM_NAME_LEN])
 #define ASHMEM_SET_SIZE _IOW(__ASHMEMIOC, 3, size_t)
 #define ASHMEM_GET_SIZE _IO(__ASHMEMIOC, 4)
 #define ASHMEM_SET_PROT_MASK _IOW(__ASHMEMIOC, 5, unsigned long)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASHMEM_GET_PROT_MASK _IO(__ASHMEMIOC, 6)
 #define ASHMEM_PIN _IOW(__ASHMEMIOC, 7, struct ashmem_pin)
 #define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
 #define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
-
 #endif
diff --git a/libc/kernel/common/linux/ata.h b/libc/kernel/common/linux/ata.h
index 76af576..e897638 100644
--- a/libc/kernel/common/linux/ata.h
+++ b/libc/kernel/common/linux/ata.h
@@ -7,259 +7,287 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_ATA_H__
 #define __LINUX_ATA_H__
-
 #include <linux/types.h>
-
 #define ATA_DMA_BOUNDARY 0xffffUL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATA_DMA_MASK 0xffffffffULL
-
 enum {
-
  ATA_MAX_DEVICES = 2,
  ATA_MAX_PRD = 256,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_SECT_SIZE = 512,
-
  ATA_ID_WORDS = 256,
  ATA_ID_SERNO_OFS = 10,
  ATA_ID_FW_REV_OFS = 23,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_ID_PROD_OFS = 27,
  ATA_ID_OLD_PIO_MODES = 51,
  ATA_ID_FIELD_VALID = 53,
  ATA_ID_MWDMA_MODES = 63,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_ID_PIO_MODES = 64,
  ATA_ID_EIDE_DMA_MIN = 65,
  ATA_ID_EIDE_PIO = 67,
  ATA_ID_EIDE_PIO_IORDY = 68,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_ID_UDMA_MODES = 88,
  ATA_ID_MAJOR_VER = 80,
  ATA_ID_PIO4 = (1 << 1),
-
  ATA_PCI_CTL_OFS = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_SERNO_LEN = 20,
  ATA_UDMA0 = (1 << 0),
  ATA_UDMA1 = ATA_UDMA0 | (1 << 1),
  ATA_UDMA2 = ATA_UDMA1 | (1 << 2),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_UDMA3 = ATA_UDMA2 | (1 << 3),
  ATA_UDMA4 = ATA_UDMA3 | (1 << 4),
  ATA_UDMA5 = ATA_UDMA4 | (1 << 5),
  ATA_UDMA6 = ATA_UDMA5 | (1 << 6),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_UDMA7 = ATA_UDMA6 | (1 << 7),
-
  ATA_UDMA_MASK_40C = ATA_UDMA2,
-
  ATA_PRD_SZ = 8,
  ATA_PRD_TBL_SZ = (ATA_MAX_PRD * ATA_PRD_SZ),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_PRD_EOT = (1 << 31),
-
  ATA_DMA_TABLE_OFS = 4,
  ATA_DMA_STATUS = 2,
  ATA_DMA_CMD = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_DMA_WR = (1 << 3),
  ATA_DMA_START = (1 << 0),
  ATA_DMA_INTR = (1 << 2),
  ATA_DMA_ERR = (1 << 1),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_DMA_ACTIVE = (1 << 0),
-
  ATA_HOB = (1 << 7),
  ATA_NIEN = (1 << 1),
  ATA_LBA = (1 << 6),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_DEV1 = (1 << 4),
  ATA_DEVICE_OBS = (1 << 7) | (1 << 5),
  ATA_DEVCTL_OBS = (1 << 3),
  ATA_BUSY = (1 << 7),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_DRDY = (1 << 6),
  ATA_DF = (1 << 5),
  ATA_DRQ = (1 << 3),
  ATA_ERR = (1 << 0),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_SRST = (1 << 2),
  ATA_ICRC = (1 << 7),
  ATA_UNC = (1 << 6),
  ATA_IDNF = (1 << 4),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_ABORTED = (1 << 2),
-
  ATA_REG_DATA = 0x00,
  ATA_REG_ERR = 0x01,
  ATA_REG_NSECT = 0x02,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_REG_LBAL = 0x03,
  ATA_REG_LBAM = 0x04,
  ATA_REG_LBAH = 0x05,
  ATA_REG_DEVICE = 0x06,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_REG_STATUS = 0x07,
-
  ATA_REG_FEATURE = ATA_REG_ERR,
  ATA_REG_CMD = ATA_REG_STATUS,
  ATA_REG_BYTEL = ATA_REG_LBAM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_REG_BYTEH = ATA_REG_LBAH,
  ATA_REG_DEVSEL = ATA_REG_DEVICE,
  ATA_REG_IRQ = ATA_REG_NSECT,
-
  ATA_CMD_CHK_POWER = 0xE5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_STANDBY = 0xE2,
  ATA_CMD_IDLE = 0xE3,
  ATA_CMD_EDD = 0x90,
  ATA_CMD_FLUSH = 0xE7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_FLUSH_EXT = 0xEA,
  ATA_CMD_ID_ATA = 0xEC,
  ATA_CMD_ID_ATAPI = 0xA1,
  ATA_CMD_READ = 0xC8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_READ_EXT = 0x25,
  ATA_CMD_WRITE = 0xCA,
  ATA_CMD_WRITE_EXT = 0x35,
  ATA_CMD_WRITE_FUA_EXT = 0x3D,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_FPDMA_READ = 0x60,
  ATA_CMD_FPDMA_WRITE = 0x61,
  ATA_CMD_PIO_READ = 0x20,
  ATA_CMD_PIO_READ_EXT = 0x24,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_PIO_WRITE = 0x30,
  ATA_CMD_PIO_WRITE_EXT = 0x34,
  ATA_CMD_READ_MULTI = 0xC4,
  ATA_CMD_READ_MULTI_EXT = 0x29,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_WRITE_MULTI = 0xC5,
  ATA_CMD_WRITE_MULTI_EXT = 0x39,
  ATA_CMD_WRITE_MULTI_FUA_EXT = 0xCE,
  ATA_CMD_SET_FEATURES = 0xEF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_PACKET = 0xA0,
  ATA_CMD_VERIFY = 0x40,
  ATA_CMD_VERIFY_EXT = 0x42,
  ATA_CMD_STANDBYNOW1 = 0xE0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_IDLEIMMEDIATE = 0xE1,
  ATA_CMD_INIT_DEV_PARAMS = 0x91,
  ATA_CMD_READ_NATIVE_MAX = 0xF8,
  ATA_CMD_READ_NATIVE_MAX_EXT = 0x27,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CMD_READ_LOG_EXT = 0x2f,
-
  ATA_LOG_SATA_NCQ = 0x10,
-
  SETFEATURES_XFER = 0x03,
  XFER_UDMA_7 = 0x47,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XFER_UDMA_6 = 0x46,
  XFER_UDMA_5 = 0x45,
  XFER_UDMA_4 = 0x44,
  XFER_UDMA_3 = 0x43,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XFER_UDMA_2 = 0x42,
  XFER_UDMA_1 = 0x41,
  XFER_UDMA_0 = 0x40,
  XFER_MW_DMA_2 = 0x22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XFER_MW_DMA_1 = 0x21,
  XFER_MW_DMA_0 = 0x20,
  XFER_SW_DMA_2 = 0x12,
  XFER_SW_DMA_1 = 0x11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XFER_SW_DMA_0 = 0x10,
  XFER_PIO_4 = 0x0C,
  XFER_PIO_3 = 0x0B,
  XFER_PIO_2 = 0x0A,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XFER_PIO_1 = 0x09,
  XFER_PIO_0 = 0x08,
  XFER_PIO_SLOW = 0x00,
-
  SETFEATURES_WC_ON = 0x02,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SETFEATURES_WC_OFF = 0x82,
-
  ATAPI_PKT_DMA = (1 << 0),
  ATAPI_DMADIR = (1 << 2),
  ATAPI_CDB_LEN = 16,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CBL_NONE = 0,
  ATA_CBL_PATA40 = 1,
  ATA_CBL_PATA80 = 2,
  ATA_CBL_PATA_UNK = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_CBL_SATA = 4,
-
  SCR_STATUS = 0,
  SCR_ERROR = 1,
  SCR_CONTROL = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SCR_ACTIVE = 3,
  SCR_NOTIFICATION = 4,
-
  SERR_DATA_RECOVERED = (1 << 0),
  SERR_COMM_RECOVERED = (1 << 1),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SERR_DATA = (1 << 8),
  SERR_PERSISTENT = (1 << 9),
  SERR_PROTOCOL = (1 << 10),
  SERR_INTERNAL = (1 << 11),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SERR_PHYRDY_CHG = (1 << 16),
  SERR_DEV_XCHG = (1 << 26),
-
  ATA_TFLAG_LBA48 = (1 << 0),
  ATA_TFLAG_ISADDR = (1 << 1),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_TFLAG_DEVICE = (1 << 2),
  ATA_TFLAG_WRITE = (1 << 3),
  ATA_TFLAG_LBA = (1 << 4),
  ATA_TFLAG_FUA = (1 << 5),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_TFLAG_POLLING = (1 << 6),
 };
-
 enum ata_tf_protocols {
-
  ATA_PROT_UNKNOWN,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_PROT_NODATA,
  ATA_PROT_PIO,
  ATA_PROT_DMA,
  ATA_PROT_NCQ,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ATA_PROT_ATAPI,
  ATA_PROT_ATAPI_NODATA,
  ATA_PROT_ATAPI_DMA,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ata_ioctls {
  ATA_IOC_GET_IO32 = 0x309,
  ATA_IOC_SET_IO32 = 0x324,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ata_prd {
  u32 addr;
  u32 flags_len;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ata_taskfile {
  unsigned long flags;
  u8 protocol;
-
  u8 ctl;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 hob_feature;
  u8 hob_nsect;
  u8 hob_lbal;
  u8 hob_lbam;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 hob_lbah;
-
  u8 feature;
  u8 nsect;
  u8 lbal;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u8 lbam;
  u8 lbah;
-
  u8 device;
-
  u8 command;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ata_id_is_ata(id) (((id)[0] & (1 << 15)) == 0)
 #define ata_id_is_cfa(id) ((id)[0] == 0x848A)
 #define ata_id_is_sata(id) ((id)[93] == 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ata_id_rahead_enabled(id) ((id)[85] & (1 << 6))
 #define ata_id_wcache_enabled(id) ((id)[85] & (1 << 5))
 #define ata_id_hpa_enabled(id) ((id)[85] & (1 << 10))
 #define ata_id_has_fua(id) ((id)[84] & (1 << 6))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ata_id_has_flush(id) ((id)[83] & (1 << 12))
 #define ata_id_has_flush_ext(id) ((id)[83] & (1 << 13))
 #define ata_id_has_lba48(id) ((id)[83] & (1 << 10))
 #define ata_id_has_hpa(id) ((id)[82] & (1 << 10))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ata_id_has_wcache(id) ((id)[82] & (1 << 5))
 #define ata_id_has_pm(id) ((id)[82] & (1 << 3))
 #define ata_id_has_lba(id) ((id)[49] & (1 << 9))
 #define ata_id_has_dma(id) ((id)[49] & (1 << 8))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ata_id_has_ncq(id) ((id)[76] & (1 << 8))
 #define ata_id_queue_depth(id) (((id)[75] & 0x1f) + 1)
 #define ata_id_removeable(id) ((id)[0] & (1 << 7))
 #define ata_id_has_dword_io(id) ((id)[50] & (1 << 0))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ata_id_u32(id,n)   (((u32) (id)[(n) + 1] << 16) | ((u32) (id)[(n)]))
 #define ata_id_u64(id,n)   ( ((u64) (id)[(n) + 3] << 48) |   ((u64) (id)[(n) + 2] << 32) |   ((u64) (id)[(n) + 1] << 16) |   ((u64) (id)[(n) + 0]) )
-
 #define ata_id_cdb_intr(id) (((id)[0] & 0x60) == 0x20)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/atm.h b/libc/kernel/common/linux/atm.h
index c9bcd70..47155a2 100644
--- a/libc/kernel/common/linux/atm.h
+++ b/libc/kernel/common/linux/atm.h
@@ -7,155 +7,170 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ATM_H
 #define _LINUX_ATM_H
-
 #include <linux/compiler.h>
 #include <linux/atmapi.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/atmsap.h>
 #include <linux/atmioc.h>
-
 #define ATM_CELL_SIZE 53  
 #define ATM_CELL_PAYLOAD 48  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_AAL0_SDU 52  
 #define ATM_MAX_AAL34_PDU 65535  
 #define ATM_AAL5_TRAILER 8  
 #define ATM_MAX_AAL5_PDU 65535  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_MAX_CDV 9999  
 #define ATM_NOT_RSV_VCI 32  
-
 #define ATM_MAX_VPI 255  
 #define ATM_MAX_VPI_NNI 4096  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_MAX_VCI 65535  
-
 #define ATM_NO_AAL 0  
 #define ATM_AAL0 13  
 #define ATM_AAL1 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_AAL2 2  
 #define ATM_AAL34 3  
 #define ATM_AAL5 5  
-
 #define __SO_ENCODE(l,n,t) ((((l) & 0x1FF) << 22) | ((n) << 16) |   sizeof(t))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __SO_LEVEL_MATCH(c,m) (((c) >> 22) == ((m) & 0x1FF))
 #define __SO_NUMBER(c) (((c) >> 16) & 0x3f)
 #define __SO_SIZE(c) ((c) & 0x3fff)
-
 #define SO_SETCLP __SO_ENCODE(SOL_ATM,0,int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_CIRANGE __SO_ENCODE(SOL_ATM,1,struct atm_cirange)
-
 #define SO_ATMQOS __SO_ENCODE(SOL_ATM,2,struct atm_qos)
-
 #define SO_ATMSAP __SO_ENCODE(SOL_ATM,3,struct atm_sap)
-
 #define SO_ATMPVC __SO_ENCODE(SOL_ATM,4,struct sockaddr_atmpvc)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_MULTIPOINT __SO_ENCODE(SOL_ATM, 5, int)
-
 #define ATM_HDR_GFC_MASK 0xf0000000
 #define ATM_HDR_GFC_SHIFT 28
 #define ATM_HDR_VPI_MASK 0x0ff00000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_HDR_VPI_SHIFT 20
 #define ATM_HDR_VCI_MASK 0x000ffff0
 #define ATM_HDR_VCI_SHIFT 4
 #define ATM_HDR_PTI_MASK 0x0000000e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_HDR_PTI_SHIFT 1
 #define ATM_HDR_CLP 0x00000001
-
 #define ATM_PTI_US0 0  
 #define ATM_PTI_US1 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_PTI_UCES0 2  
 #define ATM_PTI_UCES1 3  
 #define ATM_PTI_SEGF5 4  
 #define ATM_PTI_E2EF5 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_PTI_RSV_RM 6  
 #define ATM_PTI_RSV 7  
-
 #define ATM_NONE 0  
 #define ATM_UBR 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_CBR 2
 #define ATM_VBR 3
 #define ATM_ABR 4
 #define ATM_ANYCLASS 5  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_MAX_PCR -1  
-
 struct atm_trafprm {
  unsigned char traffic_class;
  int max_pcr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int pcr;
  int min_pcr;
  int max_cdv;
  int max_sdu;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int icr;
  unsigned int tbe;
  unsigned int frtt : 24;
  unsigned int rif : 4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int rdf : 4;
  unsigned int nrm_pres :1;
  unsigned int trm_pres :1;
  unsigned int adtf_pres :1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int cdf_pres :1;
  unsigned int nrm :3;
  unsigned int trm :3;
  unsigned int adtf :10;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int cdf :3;
  unsigned int spare :9;
 };
-
 struct atm_qos {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct atm_trafprm txtp;
  struct atm_trafprm rxtp __ATM_API_ALIGN;
-
  unsigned char aal __ATM_API_ALIGN;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_ITF_ANY -1  
 #define ATM_VPI_ANY -1
 #define ATM_VCI_ANY -1
 #define ATM_VPI_UNSPEC -2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_VCI_UNSPEC -2
-
 struct sockaddr_atmpvc {
  unsigned short sap_family;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  short itf;
  short vpi;
  int vci;
  } sap_addr __ATM_API_ALIGN;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ATM_ESA_LEN 20  
 #define ATM_E164_LEN 12  
-
 #define ATM_AFI_DCC 0x39  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_AFI_ICD 0x47  
 #define ATM_AFI_E164 0x45  
 #define ATM_AFI_LOCAL 0x49   
-
 #define ATM_AFI_DCC_GROUP 0xBD  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_AFI_ICD_GROUP 0xC5  
 #define ATM_AFI_E164_GROUP 0xC3  
 #define ATM_AFI_LOCAL_GROUP 0xC7  
-
 #define ATM_LIJ_NONE 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_LIJ 1  
 #define ATM_LIJ_RPJ 2  
 #define ATM_LIJ_NJ 3  
-
 struct sockaddr_atmsvc {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short sas_family;
  struct {
  unsigned char prv[ATM_ESA_LEN];
  char pub[ATM_E164_LEN+1];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char lij_type;
  uint32_t lij_id;
  } sas_addr __ATM_API_ALIGN;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct atmif_sioc {
+ int number;
+ int length;
+ void __user *arg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 typedef unsigned short atm_backend_t;
 #endif
diff --git a/libc/kernel/common/linux/atmapi.h b/libc/kernel/common/linux/atmapi.h
index bee5cae..16e8fdf 100644
--- a/libc/kernel/common/linux/atmapi.h
+++ b/libc/kernel/common/linux/atmapi.h
@@ -7,18 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ATMAPI_H
 #define _LINUX_ATMAPI_H
-
 #if defined(__sparc__) || defined(__ia64__)
-
 #define __ATM_API_ALIGN __attribute__((aligned(8)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #define __ATM_API_ALIGN
 #endif
-
 typedef struct { unsigned char _[8]; } __ATM_API_ALIGN atm_kptr_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/atmdev.h b/libc/kernel/common/linux/atmdev.h
index 27baeb0..5a07c12 100644
--- a/libc/kernel/common/linux/atmdev.h
+++ b/libc/kernel/common/linux/atmdev.h
@@ -7,155 +7,132 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_ATMDEV_H
 #define LINUX_ATMDEV_H
-
 #include <linux/atmapi.h>
 #include <linux/atm.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/atmioc.h>
-
 #define ESI_LEN 6
-
 #define ATM_OC3_PCR (155520000/270*260/8/53)
-
 #define ATM_25_PCR ((25600000/8-8000)/54)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_OC12_PCR (622080000/1080*1040/8/53)
-
 #define ATM_DS3_PCR (8000*12)
-
 #define __AAL_STAT_ITEMS   __HANDLE_ITEM(tx);     __HANDLE_ITEM(tx_err);     __HANDLE_ITEM(rx);     __HANDLE_ITEM(rx_err);     __HANDLE_ITEM(rx_drop);  
-
 struct atm_aal_stats {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __HANDLE_ITEM(i) int i
  __AAL_STAT_ITEMS
 #undef __HANDLE_ITEM
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct atm_dev_stats {
  struct atm_aal_stats aal0;
  struct atm_aal_stats aal34;
  struct atm_aal_stats aal5;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __ATM_API_ALIGN;
-
 #define ATM_GETLINKRATE _IOW('a',ATMIOC_ITF+1,struct atmif_sioc)
-
 #define ATM_GETNAMES _IOW('a',ATMIOC_ITF+3,struct atm_iobuf)
-
 #define ATM_GETTYPE _IOW('a',ATMIOC_ITF+4,struct atmif_sioc)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_GETESI _IOW('a',ATMIOC_ITF+5,struct atmif_sioc)
-
 #define ATM_GETADDR _IOW('a',ATMIOC_ITF+6,struct atmif_sioc)
-
 #define ATM_RSTADDR _IOW('a',ATMIOC_ITF+7,struct atmif_sioc)
-
 #define ATM_ADDADDR _IOW('a',ATMIOC_ITF+8,struct atmif_sioc)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_DELADDR _IOW('a',ATMIOC_ITF+9,struct atmif_sioc)
-
 #define ATM_GETCIRANGE _IOW('a',ATMIOC_ITF+10,struct atmif_sioc)
-
 #define ATM_SETCIRANGE _IOW('a',ATMIOC_ITF+11,struct atmif_sioc)
-
 #define ATM_SETESI _IOW('a',ATMIOC_ITF+12,struct atmif_sioc)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_SETESIF _IOW('a',ATMIOC_ITF+13,struct atmif_sioc)
-
 #define ATM_ADDLECSADDR _IOW('a', ATMIOC_ITF+14, struct atmif_sioc)
-
 #define ATM_DELLECSADDR _IOW('a', ATMIOC_ITF+15, struct atmif_sioc)
-
 #define ATM_GETLECSADDR _IOW('a', ATMIOC_ITF+16, struct atmif_sioc)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_GETSTAT _IOW('a',ATMIOC_SARCOM+0,struct atmif_sioc)
-
 #define ATM_GETSTATZ _IOW('a',ATMIOC_SARCOM+1,struct atmif_sioc)
-
 #define ATM_GETLOOP _IOW('a',ATMIOC_SARCOM+2,struct atmif_sioc)
-
 #define ATM_SETLOOP _IOW('a',ATMIOC_SARCOM+3,struct atmif_sioc)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_QUERYLOOP _IOW('a',ATMIOC_SARCOM+4,struct atmif_sioc)
-
 #define ATM_SETSC _IOW('a',ATMIOC_SPECIAL+1,int)
-
 #define ATM_SETBACKEND _IOW('a',ATMIOC_SPECIAL+2,atm_backend_t)
-
 #define ATM_NEWBACKENDIF _IOW('a',ATMIOC_SPECIAL+3,atm_backend_t)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_ADDPARTY _IOW('a', ATMIOC_SPECIAL+4,struct atm_iobuf)
-
 #define ATM_DROPPARTY _IOW('a', ATMIOC_SPECIAL+5,int)
-
 #define ATM_BACKEND_RAW 0 
 #define ATM_BACKEND_PPP 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_BACKEND_BR2684 2  
-
 #define ATM_ITFTYP_LEN 8  
-
 #define __ATM_LM_NONE 0  
 #define __ATM_LM_AAL 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ATM_LM_ATM 2  
-
 #define __ATM_LM_PHY 8  
 #define __ATM_LM_ANALOG 16  
-
 #define __ATM_LM_MKLOC(n) ((n))  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ATM_LM_MKRMT(n) ((n) << 8)  
-
 #define __ATM_LM_XTLOC(n) ((n) & 0xff)
 #define __ATM_LM_XTRMT(n) (((n) >> 8) & 0xff)
-
 #define ATM_LM_NONE 0  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_LM_LOC_AAL __ATM_LM_MKLOC(__ATM_LM_AAL)
 #define ATM_LM_LOC_ATM __ATM_LM_MKLOC(__ATM_LM_ATM)
 #define ATM_LM_LOC_PHY __ATM_LM_MKLOC(__ATM_LM_PHY)
 #define ATM_LM_LOC_ANALOG __ATM_LM_MKLOC(__ATM_LM_ANALOG)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_LM_RMT_AAL __ATM_LM_MKRMT(__ATM_LM_AAL)
 #define ATM_LM_RMT_ATM __ATM_LM_MKRMT(__ATM_LM_ATM)
 #define ATM_LM_RMT_PHY __ATM_LM_MKRMT(__ATM_LM_PHY)
 #define ATM_LM_RMT_ANALOG __ATM_LM_MKRMT(__ATM_LM_ANALOG)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct atm_iobuf {
  int length;
  void __user *buffer;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_CI_MAX -1  
-
 struct atm_cirange {
  signed char vpi_bits;
  signed char vci_bits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ATM_SC_RX 1024  
 #define ATM_SC_TX 2048  
-
 #define ATM_BACKLOG_DEFAULT 32  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_MF_IMMED 1  
 #define ATM_MF_INC_RSV 2  
 #define ATM_MF_INC_SHP 4  
 #define ATM_MF_DEC_RSV 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_MF_DEC_SHP 16  
 #define ATM_MF_BWD 32  
-
 #define ATM_MF_SET (ATM_MF_INC_RSV | ATM_MF_INC_SHP | ATM_MF_DEC_RSV |   ATM_MF_DEC_SHP | ATM_MF_BWD)
-
 #define ATM_VS_IDLE 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_VS_CONNECTED 1  
 #define ATM_VS_CLOSING 2  
 #define ATM_VS_LISTEN 3  
 #define ATM_VS_INUSE 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_VS_BOUND 5  
-
 #define ATM_VS2TXT_MAP   "IDLE", "CONNECTED", "CLOSING", "LISTEN", "INUSE", "BOUND"
-
 #define ATM_VF2TXT_MAP   "ADDR", "READY", "PARTIAL", "REGIS",   "RELEASED", "HASQOS", "LISTEN", "META",   "256", "512", "1024", "2048",   "SESSION", "HASSAP", "BOUND", "CLOSE"
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/atmioc.h b/libc/kernel/common/linux/atmioc.h
index d004339..cad0b8a 100644
--- a/libc/kernel/common/linux/atmioc.h
+++ b/libc/kernel/common/linux/atmioc.h
@@ -7,34 +7,43 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ATMIOC_H
 #define _LINUX_ATMIOC_H
-
 #include <asm/ioctl.h>
-
 #define ATMIOC_PHYCOM 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATMIOC_PHYCOM_END 0x0f
 #define ATMIOC_PHYTYP 0x10  
 #define ATMIOC_PHYTYP_END 0x2f
 #define ATMIOC_PHYPRV 0x30  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATMIOC_PHYPRV_END 0x4f
 #define ATMIOC_SARCOM 0x50  
 #define ATMIOC_SARCOM_END 0x50
 #define ATMIOC_SARPRV 0x60  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATMIOC_SARPRV_END 0x7f
 #define ATMIOC_ITF 0x80  
 #define ATMIOC_ITF_END 0x8f
 #define ATMIOC_BACKEND 0x90  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATMIOC_BACKEND_END 0xaf
-
 #define ATMIOC_AREQUIPA 0xc0  
 #define ATMIOC_LANE 0xd0  
 #define ATMIOC_MPOA 0xd8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATMIOC_CLIP 0xe0  
 #define ATMIOC_CLIP_END 0xef
 #define ATMIOC_SPECIAL 0xf0  
 #define ATMIOC_SPECIAL_END 0xff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/atmppp.h b/libc/kernel/common/linux/atmppp.h
index 3330c32..98e2e31 100644
--- a/libc/kernel/common/linux/atmppp.h
+++ b/libc/kernel/common/linux/atmppp.h
@@ -7,20 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ATMPPP_H
 #define _LINUX_ATMPPP_H
-
 #include <linux/atm.h>
-
 #define PPPOATM_ENCAPS_AUTODETECT (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPPOATM_ENCAPS_VC (1)
 #define PPPOATM_ENCAPS_LLC (2)
-
 struct atm_backend_ppp {
  atm_backend_t backend_num;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int encaps;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/atmsap.h b/libc/kernel/common/linux/atmsap.h
index 456f75f..eae4bcf 100644
--- a/libc/kernel/common/linux/atmsap.h
+++ b/libc/kernel/common/linux/atmsap.h
@@ -7,111 +7,118 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ATMSAP_H
 #define _LINUX_ATMSAP_H
-
 #include <linux/atmapi.h>
-
 #define ATM_L2_NONE 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_L2_ISO1745 0x01  
 #define ATM_L2_Q291 0x02  
 #define ATM_L2_X25_LL 0x06  
 #define ATM_L2_X25_ML 0x07  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_L2_LAPB 0x08  
 #define ATM_L2_HDLC_ARM 0x09  
 #define ATM_L2_HDLC_NRM 0x0a  
 #define ATM_L2_HDLC_ABM 0x0b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_L2_ISO8802 0x0c  
 #define ATM_L2_X75 0x0d  
 #define ATM_L2_Q922 0x0e  
 #define ATM_L2_USER 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_L2_ISO7776 0x11  
-
 #define ATM_L3_NONE 0  
 #define ATM_L3_X25 0x06  
 #define ATM_L3_ISO8208 0x07  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_L3_X223 0x08  
 #define ATM_L3_ISO8473 0x09  
 #define ATM_L3_T70 0x0a  
 #define ATM_L3_TR9577 0x0b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_L3_H310 0x0c  
 #define ATM_L3_H321 0x0d  
 #define ATM_L3_USER 0x10  
-
 #define ATM_HL_NONE 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_HL_ISO 0x01  
 #define ATM_HL_USER 0x02  
 #define ATM_HL_HLP 0x03  
 #define ATM_HL_VENDOR 0x04  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_IMD_NONE 0  
 #define ATM_IMD_NORMAL 1  
 #define ATM_IMD_EXTENDED 2  
-
 #define ATM_TT_NONE 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_TT_RX 1  
 #define ATM_TT_TX 2  
 #define ATM_TT_RXTX 3  
-
 #define ATM_MC_NONE 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_MC_TS 1  
 #define ATM_MC_TS_FEC 2  
 #define ATM_MC_PS 3  
 #define ATM_MC_PS_FEC 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATM_MC_H221 5  
-
 #define ATM_MAX_HLI 8  
-
 struct atm_blli {
  unsigned char l2_proto;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  struct {
  unsigned char mode;
-
  unsigned char window;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } itu;
  unsigned char user;
  } l2;
  unsigned char l3_proto;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  struct {
  unsigned char mode;
-
  unsigned char def_size;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char window;
  } itu;
  unsigned char user;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char term_type;
  unsigned char fw_mpx_cap;
-
  unsigned char bw_mpx_cap;
-
  } h310;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  unsigned char ipi;
  unsigned char snap[5];
-
  } tr9577;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } l3;
 } __ATM_API_ALIGN;
-
 struct atm_bhli {
  unsigned char hl_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char hl_length;
-
  unsigned char hl_info[ATM_MAX_HLI];
 };
-
 #define ATM_MAX_BLLI 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct atm_sap {
  struct atm_bhli bhli;
  struct atm_blli blli[ATM_MAX_BLLI] __ATM_API_ALIGN;
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/attribute_container.h b/libc/kernel/common/linux/attribute_container.h
index 1a9bfb0..68ad365 100644
--- a/libc/kernel/common/linux/attribute_container.h
+++ b/libc/kernel/common/linux/attribute_container.h
@@ -7,28 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ATTRIBUTE_CONTAINER_H_
 #define _ATTRIBUTE_CONTAINER_H_
-
 #include <linux/device.h>
 #include <linux/list.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/klist.h>
 #include <linux/spinlock.h>
-
 struct attribute_container {
  struct list_head node;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct klist containers;
  struct class *class;
  struct class_device_attribute **attrs;
  int (*match)(struct attribute_container *, struct device *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATTRIBUTE_CONTAINER_NO_CLASSDEVS 0x01
  unsigned long flags;
 };
-
 struct attribute_container *attribute_container_classdev_to_container(struct class_device *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct class_device *attribute_container_find_class_device(struct attribute_container *, struct device *);
 struct class_device_attribute **attribute_container_classdev_to_attrs(const struct class_device *classdev);
-
 #endif
diff --git a/libc/kernel/common/linux/auto_fs.h b/libc/kernel/common/linux/auto_fs.h
index 3711cc4..8520585 100644
--- a/libc/kernel/common/linux/auto_fs.h
+++ b/libc/kernel/common/linux/auto_fs.h
@@ -7,50 +7,55 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_AUTO_FS_H
 #define _LINUX_AUTO_FS_H
-
 #include <linux/ioctl.h>
-
 #define AUTOFS_PROTO_VERSION 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUTOFS_MAX_PROTO_VERSION AUTOFS_PROTO_VERSION
 #define AUTOFS_MIN_PROTO_VERSION AUTOFS_PROTO_VERSION
-
 #if defined(__sparc__) || defined(__mips__) || defined(__x86_64__) || defined(__powerpc__) || defined(__s390__)
 typedef unsigned int autofs_wqt_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 typedef unsigned long autofs_wqt_t;
 #endif
-
 #define autofs_ptype_missing 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define autofs_ptype_expire 1  
-
 struct autofs_packet_hdr {
  int proto_version;
  int type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct autofs_packet_missing {
  struct autofs_packet_hdr hdr;
  autofs_wqt_t wait_queue_token;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int len;
  char name[NAME_MAX+1];
 };
-
 struct autofs_packet_expire {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct autofs_packet_hdr hdr;
  int len;
  char name[NAME_MAX+1];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUTOFS_IOC_READY _IO(0x93,0x60)
 #define AUTOFS_IOC_FAIL _IO(0x93,0x61)
 #define AUTOFS_IOC_CATATONIC _IO(0x93,0x62)
 #define AUTOFS_IOC_PROTOVER _IOR(0x93,0x63,int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUTOFS_IOC_SETTIMEOUT _IOWR(0x93,0x64,unsigned long)
 #define AUTOFS_IOC_EXPIRE _IOR(0x93,0x65,struct autofs_packet_expire)
-
 #endif
diff --git a/libc/kernel/common/linux/autoconf.h b/libc/kernel/common/linux/autoconf.h
index 306bf12..686f54b 100644
--- a/libc/kernel/common/linux/autoconf.h
+++ b/libc/kernel/common/linux/autoconf.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_AUTOCONF_CRAP_GOES_HERE
 #define LINUX_AUTOCONF_CRAP_GOES_HERE
-
 #define AUTOCONF_INCLUDED
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/auxvec.h b/libc/kernel/common/linux/auxvec.h
index f8a0701..a6dcec9 100644
--- a/libc/kernel/common/linux/auxvec.h
+++ b/libc/kernel/common/linux/auxvec.h
@@ -7,34 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_AUXVEC_H
 #define _LINUX_AUXVEC_H
-
 #include <asm/auxvec.h>
-
 #define AT_NULL 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AT_IGNORE 1  
 #define AT_EXECFD 2  
 #define AT_PHDR 3  
 #define AT_PHENT 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AT_PHNUM 5  
 #define AT_PAGESZ 6  
 #define AT_BASE 7  
 #define AT_FLAGS 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AT_ENTRY 9  
 #define AT_NOTELF 10  
 #define AT_UID 11  
 #define AT_EUID 12  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AT_GID 13  
 #define AT_EGID 14  
 #define AT_PLATFORM 15  
 #define AT_HWCAP 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AT_CLKTCK 17  
-
 #define AT_SECURE 23  
-
 #define AT_VECTOR_SIZE 44  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/backing-dev.h b/libc/kernel/common/linux/backing-dev.h
index 4996d2c..553cca7 100644
--- a/libc/kernel/common/linux/backing-dev.h
+++ b/libc/kernel/common/linux/backing-dev.h
@@ -7,47 +7,55 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BACKING_DEV_H
 #define _LINUX_BACKING_DEV_H
-
 #include <asm/atomic.h>
-
 enum bdi_state {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BDI_pdflush,
  BDI_write_congested,
  BDI_read_congested,
  BDI_unused,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 typedef int (congested_fn)(void *, int);
-
 struct backing_dev_info {
  unsigned long ra_pages;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long state;
  unsigned int capabilities;
  congested_fn *congested_fn;
  void *congested_data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*unplug_io_fn)(struct backing_dev_info *, struct page *);
  void *unplug_io_data;
 };
-
 #define BDI_CAP_NO_ACCT_DIRTY 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BDI_CAP_NO_WRITEBACK 0x00000002  
 #define BDI_CAP_MAP_COPY 0x00000004  
 #define BDI_CAP_MAP_DIRECT 0x00000008  
 #define BDI_CAP_READ_MAP 0x00000010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BDI_CAP_WRITE_MAP 0x00000020  
 #define BDI_CAP_EXEC_MAP 0x00000040  
 #define BDI_CAP_VMFLAGS   (BDI_CAP_READ_MAP | BDI_CAP_WRITE_MAP | BDI_CAP_EXEC_MAP)
-
 #if defined(VM_MAYREAD) && BDI_CAP_READ_MAP != (VM_MAYREAD || BDI_CAP_WRITE_MAP != (VM_MAYWRITE || BDI_CAP_EXEC_MAP != VM_MAYEXEC))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error please change backing_dev_info::capabilities flags
 #endif
-
 #define bdi_cap_writeback_dirty(bdi)   (!((bdi)->capabilities & BDI_CAP_NO_WRITEBACK))
 #define bdi_cap_account_dirty(bdi)   (!((bdi)->capabilities & BDI_CAP_NO_ACCT_DIRTY))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define mapping_cap_writeback_dirty(mapping)   bdi_cap_writeback_dirty((mapping)->backing_dev_info)
 #define mapping_cap_account_dirty(mapping)   bdi_cap_account_dirty((mapping)->backing_dev_info)
 #endif
diff --git a/libc/kernel/common/linux/binder.h b/libc/kernel/common/linux/binder.h
index b97eafb..c560653 100644
--- a/libc/kernel/common/linux/binder.h
+++ b/libc/kernel/common/linux/binder.h
@@ -7,180 +7,165 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BINDER_H
 #define _LINUX_BINDER_H
-
 #include <linux/ioctl.h>
-
 #define B_PACK_CHARS(c1, c2, c3, c4)   ((((c1)<<24)) | (((c2)<<16)) | (((c3)<<8)) | (c4))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define B_TYPE_LARGE 0x85
-
 enum {
  BINDER_TYPE_BINDER = B_PACK_CHARS('s', 'b', '*', B_TYPE_LARGE),
  BINDER_TYPE_WEAK_BINDER = B_PACK_CHARS('w', 'b', '*', B_TYPE_LARGE),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE),
  BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE),
  BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE),
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff,
  FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct flat_binder_object {
-
  unsigned long type;
  unsigned long flags;
-
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *binder;
  signed long handle;
  };
-
  void *cookie;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct binder_write_read {
  signed long write_size;
  signed long write_consumed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long write_buffer;
  signed long read_size;
  signed long read_consumed;
  unsigned long read_buffer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct binder_version {
-
  signed long protocol_version;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BINDER_CURRENT_PROTOCOL_VERSION 7
-
 #define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
 #define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, int64_t)
 #define BINDER_SET_MAX_THREADS _IOW('b', 5, size_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, int)
 #define BINDER_SET_CONTEXT_MGR _IOW('b', 7, int)
 #define BINDER_THREAD_EXIT _IOW('b', 8, int)
 #define BINDER_VERSION _IOWR('b', 9, struct binder_version)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum transaction_flags {
  TF_ONE_WAY = 0x01,
  TF_ROOT_OBJECT = 0x04,
  TF_STATUS_CODE = 0x08,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TF_ACCEPT_FDS = 0x10,
 };
-
 struct binder_transaction_data {
-
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t handle;
  void *ptr;
  } target;
  void *cookie;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int code;
-
  unsigned int flags;
  pid_t sender_pid;
  uid_t sender_euid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t data_size;
  size_t offsets_size;
-
  union {
  struct {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const void *buffer;
-
  const void *offsets;
  } ptr;
  uint8_t buf[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } data;
 };
-
 struct binder_ptr_cookie {
  void *ptr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *cookie;
 };
-
 struct binder_pri_desc {
  int priority;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int desc;
 };
-
 struct binder_pri_ptr_cookie {
  int priority;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *ptr;
  void *cookie;
 };
-
 enum BinderDriverReturnProtocol {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BR_ERROR = _IOR_BAD('r', 0, int),
-
  BR_OK = _IO('r', 1),
-
  BR_TRANSACTION = _IOR_BAD('r', 2, struct binder_transaction_data),
  BR_REPLY = _IOR_BAD('r', 3, struct binder_transaction_data),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BR_ACQUIRE_RESULT = _IOR_BAD('r', 4, int),
-
  BR_DEAD_REPLY = _IO('r', 5),
-
  BR_TRANSACTION_COMPLETE = _IO('r', 6),
-
  BR_INCREFS = _IOR_BAD('r', 7, struct binder_ptr_cookie),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BR_ACQUIRE = _IOR_BAD('r', 8, struct binder_ptr_cookie),
  BR_RELEASE = _IOR_BAD('r', 9, struct binder_ptr_cookie),
  BR_DECREFS = _IOR_BAD('r', 10, struct binder_ptr_cookie),
-
  BR_ATTEMPT_ACQUIRE = _IOR_BAD('r', 11, struct binder_pri_ptr_cookie),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BR_NOOP = _IO('r', 12),
-
  BR_SPAWN_LOOPER = _IO('r', 13),
-
  BR_FINISHED = _IO('r', 14),
-
  BR_DEAD_BINDER = _IOR_BAD('r', 15, void *),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BR_CLEAR_DEATH_NOTIFICATION_DONE = _IOR_BAD('r', 16, void *),
-
  BR_FAILED_REPLY = _IO('r', 17),
-
 };
-
 enum BinderDriverCommandProtocol {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BC_TRANSACTION = _IOW_BAD('c', 0, struct binder_transaction_data),
  BC_REPLY = _IOW_BAD('c', 1, struct binder_transaction_data),
-
  BC_ACQUIRE_RESULT = _IOW_BAD('c', 2, int),
-
  BC_FREE_BUFFER = _IOW_BAD('c', 3, int),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BC_INCREFS = _IOW_BAD('c', 4, int),
  BC_ACQUIRE = _IOW_BAD('c', 5, int),
  BC_RELEASE = _IOW_BAD('c', 6, int),
  BC_DECREFS = _IOW_BAD('c', 7, int),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BC_INCREFS_DONE = _IOW_BAD('c', 8, struct binder_ptr_cookie),
  BC_ACQUIRE_DONE = _IOW_BAD('c', 9, struct binder_ptr_cookie),
-
  BC_ATTEMPT_ACQUIRE = _IOW_BAD('c', 10, struct binder_pri_desc),
-
  BC_REGISTER_LOOPER = _IO('c', 11),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BC_ENTER_LOOPER = _IO('c', 12),
  BC_EXIT_LOOPER = _IO('c', 13),
-
  BC_REQUEST_DEATH_NOTIFICATION = _IOW_BAD('c', 14, struct binder_ptr_cookie),
-
  BC_CLEAR_DEATH_NOTIFICATION = _IOW_BAD('c', 15, struct binder_ptr_cookie),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BC_DEAD_BINDER_DONE = _IOW_BAD('c', 16, void *),
-
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/binfmts.h b/libc/kernel/common/linux/binfmts.h
index 3335985..b93fd09 100644
--- a/libc/kernel/common/linux/binfmts.h
+++ b/libc/kernel/common/linux/binfmts.h
@@ -7,17 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BINFMTS_H
 #define _LINUX_BINFMTS_H
-
 #include <linux/capability.h>
-
 struct pt_regs;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_ARG_PAGES 32
-
 #define BINPRM_BUF_SIZE 128
-
 #endif
diff --git a/libc/kernel/common/linux/bio.h b/libc/kernel/common/linux/bio.h
index 4e91314..1de8e70 100644
--- a/libc/kernel/common/linux/bio.h
+++ b/libc/kernel/common/linux/bio.h
@@ -7,165 +7,160 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_BIO_H
 #define __LINUX_BIO_H
-
 #include <linux/highmem.h>
 #include <linux/mempool.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/ioprio.h>
-
 #include <asm/io.h>
-
 #if defined(BIO_VMERGE_MAX_SIZE) && defined(BIO_VMERGE_BOUNDARY)
 #define BIOVEC_VIRT_START_SIZE(x) (bvec_to_phys(x) & (BIO_VMERGE_BOUNDARY - 1))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BIOVEC_VIRT_OVERSIZE(x) ((x) > BIO_VMERGE_MAX_SIZE)
 #else
 #define BIOVEC_VIRT_START_SIZE(x) 0
 #define BIOVEC_VIRT_OVERSIZE(x) 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef BIO_VMERGE_BOUNDARY
 #define BIO_VMERGE_BOUNDARY 0
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BIO_DEBUG
-
 #ifdef BIO_DEBUG
 #define BIO_BUG_ON BUG_ON
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BIO_BUG_ON
 #endif
-
 #define BIO_MAX_PAGES 256
 #define BIO_MAX_SIZE (BIO_MAX_PAGES << PAGE_CACHE_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BIO_MAX_SECTORS (BIO_MAX_SIZE >> 9)
-
 struct bio_vec {
  struct page *bv_page;
  unsigned int bv_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int bv_offset;
 };
-
 struct bio_set;
 struct bio;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int (bio_end_io_t) (struct bio *, unsigned int, int);
 typedef void (bio_destructor_t) (struct bio *);
-
 struct bio {
  sector_t bi_sector;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct bio *bi_next;
  struct block_device *bi_bdev;
  unsigned long bi_flags;
  unsigned long bi_rw;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short bi_vcnt;
  unsigned short bi_idx;
-
  unsigned short bi_phys_segments;
-
  unsigned short bi_hw_segments;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int bi_size;
-
  unsigned int bi_hw_front_size;
  unsigned int bi_hw_back_size;
-
  unsigned int bi_max_vecs;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct bio_vec *bi_io_vec;
-
  bio_end_io_t *bi_end_io;
  atomic_t bi_cnt;
-
  void *bi_private;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  bio_destructor_t *bi_destructor;
 };
-
 #define BIO_UPTODATE 0  
 #define BIO_RW_BLOCK 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BIO_EOF 2  
 #define BIO_SEG_VALID 3  
 #define BIO_CLONED 4  
 #define BIO_BOUNCED 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BIO_USER_MAPPED 6  
 #define BIO_EOPNOTSUPP 7  
 #define bio_flagged(bio, flag) ((bio)->bi_flags & (1 << (flag)))
-
 #define BIO_POOL_BITS (4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BIO_POOL_OFFSET (BITS_PER_LONG - BIO_POOL_BITS)
 #define BIO_POOL_MASK (1UL << BIO_POOL_OFFSET)
 #define BIO_POOL_IDX(bio) ((bio)->bi_flags >> BIO_POOL_OFFSET) 
-
 #define BIO_RW 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BIO_RW_AHEAD 1
 #define BIO_RW_BARRIER 2
 #define BIO_RW_FAILFAST 3
 #define BIO_RW_SYNC 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BIO_PRIO_SHIFT (8 * sizeof(unsigned long) - IOPRIO_BITS)
 #define bio_prio(bio) ((bio)->bi_rw >> BIO_PRIO_SHIFT)
 #define bio_prio_valid(bio) ioprio_valid(bio_prio(bio))
-
 #define bio_set_prio(bio, prio) do {   WARN_ON(prio >= (1 << IOPRIO_BITS));   (bio)->bi_rw &= ((1UL << BIO_PRIO_SHIFT) - 1);   (bio)->bi_rw |= ((unsigned long) (prio) << BIO_PRIO_SHIFT);  } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define bio_iovec_idx(bio, idx) (&((bio)->bi_io_vec[(idx)]))
 #define bio_iovec(bio) bio_iovec_idx((bio), (bio)->bi_idx)
 #define bio_page(bio) bio_iovec((bio))->bv_page
 #define bio_offset(bio) bio_iovec((bio))->bv_offset
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx)
 #define bio_sectors(bio) ((bio)->bi_size >> 9)
 #define bio_cur_sectors(bio) (bio_iovec(bio)->bv_len >> 9)
 #define bio_data(bio) (page_address(bio_page((bio))) + bio_offset((bio)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define bio_barrier(bio) ((bio)->bi_rw & (1 << BIO_RW_BARRIER))
 #define bio_sync(bio) ((bio)->bi_rw & (1 << BIO_RW_SYNC))
 #define bio_failfast(bio) ((bio)->bi_rw & (1 << BIO_RW_FAILFAST))
 #define bio_rw_ahead(bio) ((bio)->bi_rw & (1 << BIO_RW_AHEAD))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define bio_to_phys(bio) (page_to_phys(bio_page((bio))) + (unsigned long) bio_offset((bio)))
 #define bvec_to_phys(bv) (page_to_phys((bv)->bv_page) + (unsigned long) (bv)->bv_offset)
-
 #define __bio_kmap_atomic(bio, idx, kmtype)   (kmap_atomic(bio_iovec_idx((bio), (idx))->bv_page, kmtype) +   bio_iovec_idx((bio), (idx))->bv_offset)
-
 #define __bio_kunmap_atomic(addr, kmtype) kunmap_atomic(addr, kmtype)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __BVEC_END(bio) bio_iovec_idx((bio), (bio)->bi_vcnt - 1)
 #define __BVEC_START(bio) bio_iovec_idx((bio), (bio)->bi_idx)
-
 #ifndef BIOVEC_PHYS_MERGEABLE
 #define BIOVEC_PHYS_MERGEABLE(vec1, vec2)   ((bvec_to_phys((vec1)) + (vec1)->bv_len) == bvec_to_phys((vec2)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define BIOVEC_VIRT_MERGEABLE(vec1, vec2)   ((((bvec_to_phys((vec1)) + (vec1)->bv_len) | bvec_to_phys((vec2))) & (BIO_VMERGE_BOUNDARY - 1)) == 0)
 #define __BIO_SEG_BOUNDARY(addr1, addr2, mask)   (((addr1) | (mask)) == (((addr2) - 1) | (mask)))
 #define BIOVEC_SEG_BOUNDARY(q, b1, b2)   __BIO_SEG_BOUNDARY(bvec_to_phys((b1)), bvec_to_phys((b2)) + (b2)->bv_len, (q)->seg_boundary_mask)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BIO_SEG_BOUNDARY(q, b1, b2)   BIOVEC_SEG_BOUNDARY((q), __BVEC_END((b1)), __BVEC_START((b2)))
-
 #define bio_io_error(bio, bytes) bio_endio((bio), (bytes), -EIO)
-
 #define __bio_for_each_segment(bvl, bio, i, start_idx)   for (bvl = bio_iovec_idx((bio), (start_idx)), i = (start_idx);   i < (bio)->bi_vcnt;   bvl++, i++)
-
 #define bio_for_each_segment(bvl, bio, i)   __bio_for_each_segment(bvl, bio, i, (bio)->bi_idx)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define bio_get(bio) atomic_inc(&(bio)->bi_cnt)
-
 struct bio_pair {
  struct bio bio1, bio2;
  struct bio_vec bv1, bv2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t cnt;
  int error;
 };
-
 struct request_queue;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sg_iovec;
-
 #define bvec_kmap_irq(bvec, flags) (page_address((bvec)->bv_page) + (bvec)->bv_offset)
 #define bvec_kunmap_irq(buf, flags) do { *(flags) = 0; } while (0)
-
 #define __bio_kunmap_irq(buf, flags) bvec_kunmap_irq(buf, flags)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define bio_kmap_irq(bio, flags)   __bio_kmap_irq((bio), (bio)->bi_idx, (flags))
 #define bio_kunmap_irq(buf,flags) __bio_kunmap_irq(buf, flags)
 #endif
diff --git a/libc/kernel/common/linux/bitmap.h b/libc/kernel/common/linux/bitmap.h
index 246d158..c43959a 100644
--- a/libc/kernel/common/linux/bitmap.h
+++ b/libc/kernel/common/linux/bitmap.h
@@ -7,18 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_BITMAP_H
 #define __LINUX_BITMAP_H
-
 #ifndef __ASSEMBLY__
-
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/bitops.h>
 #include <linux/string.h>
-
 #define BITMAP_LAST_WORD_MASK(nbits)  (   ((nbits) % BITS_PER_LONG) ?   (1UL<<((nbits) % BITS_PER_LONG))-1 : ~0UL  )
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/bitops.h b/libc/kernel/common/linux/bitops.h
index f8df614..a837fd4 100644
--- a/libc/kernel/common/linux/bitops.h
+++ b/libc/kernel/common/linux/bitops.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BITOPS_H
 #define _LINUX_BITOPS_H
 #include <asm/types.h>
-
 #include <asm/bitops.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/blkdev.h b/libc/kernel/common/linux/blkdev.h
index 3004524..9a92850 100644
--- a/libc/kernel/common/linux/blkdev.h
+++ b/libc/kernel/common/linux/blkdev.h
@@ -7,455 +7,450 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BLKDEV_H
 #define _LINUX_BLKDEV_H
-
 #include <linux/major.h>
 #include <linux/genhd.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/list.h>
 #include <linux/timer.h>
 #include <linux/workqueue.h>
 #include <linux/pagemap.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/backing-dev.h>
 #include <linux/wait.h>
 #include <linux/mempool.h>
 #include <linux/bio.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/module.h>
 #include <linux/stringify.h>
-
 #include <asm/scatterlist.h>
-
 struct scsi_ioctl_command;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct request_queue;
 typedef struct request_queue request_queue_t;
 struct elevator_queue;
 typedef struct elevator_queue elevator_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct request_pm_state;
 struct blk_trace;
-
 #define BLKDEV_MIN_RQ 4
 #define BLKDEV_MAX_RQ 128  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct as_io_context {
  spinlock_t lock;
-
  void (*dtor)(struct as_io_context *aic);
  void (*exit)(struct as_io_context *aic);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long state;
  atomic_t nr_queued;
  atomic_t nr_dispatched;
-
  unsigned long last_end_request;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long ttime_total;
  unsigned long ttime_samples;
  unsigned long ttime_mean;
-
  unsigned int seek_samples;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t last_request_pos;
  u64 seek_total;
  sector_t seek_mean;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cfq_queue;
 struct cfq_io_context {
  struct rb_node rb_node;
  void *key;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct cfq_queue *cfqq[2];
-
  struct io_context *ioc;
-
  unsigned long last_end_request;
  sector_t last_request_pos;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long last_queue;
-
  unsigned long ttime_total;
  unsigned long ttime_samples;
  unsigned long ttime_mean;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int seek_samples;
  u64 seek_total;
  sector_t seek_mean;
-
  struct list_head queue_list;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*dtor)(struct io_context *);
  void (*exit)(struct io_context *);
 };
-
 struct io_context {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t refcount;
  struct task_struct *task;
-
  int (*set_ioprio)(struct io_context *, unsigned int);
-
  unsigned long last_waited;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int nr_batch_requests;
-
  struct as_io_context *aic;
  struct rb_root cic_root;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct io_context *current_io_context(gfp_t gfp_flags);
 struct io_context *get_io_context(gfp_t gfp_flags);
-
 struct request;
 typedef void (rq_end_io_fn)(struct request *, int);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct request_list {
  int count[2];
  int starved[2];
  int elvpriv;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  mempool_t *rq_pool;
  wait_queue_head_t wait[2];
 };
-
 #define BLK_MAX_CDB 16
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct request {
  struct list_head queuelist;
  struct list_head donelist;
-
  unsigned long flags;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t sector;
  unsigned long nr_sectors;
-
  unsigned int current_nr_sectors;
-
  sector_t hard_sector;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long hard_nr_sectors;
-
  unsigned int hard_cur_sectors;
-
  struct bio *bio;
  struct bio *biotail;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *elevator_private;
  void *completion_data;
-
  int rq_status;
  int errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct gendisk *rq_disk;
  unsigned long start_time;
-
  unsigned short nr_phys_segments;
-
  unsigned short nr_hw_segments;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ioprio;
-
  int tag;
-
  int ref_count;
  request_queue_t *q;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct request_list *rl;
-
  struct completion *waiting;
  void *special;
  char *buffer;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int cmd_len;
  unsigned char cmd[BLK_MAX_CDB];
-
  unsigned int data_len;
  unsigned int sense_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *data;
  void *sense;
-
  unsigned int timeout;
  int retries;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  rq_end_io_fn *end_io;
  void *end_io_data;
 };
-
 enum rq_flag_bits {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __REQ_RW,
  __REQ_FAILFAST,
  __REQ_SORTED,
  __REQ_SOFTBARRIER,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __REQ_HARDBARRIER,
  __REQ_FUA,
  __REQ_CMD,
  __REQ_NOMERGE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __REQ_STARTED,
  __REQ_DONTPREP,
  __REQ_QUEUED,
  __REQ_ELVPRIV,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __REQ_PC,
  __REQ_BLOCK_PC,
  __REQ_SENSE,
-
  __REQ_FAILED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __REQ_QUIET,
  __REQ_SPECIAL,
  __REQ_DRIVE_CMD,
  __REQ_DRIVE_TASK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __REQ_DRIVE_TASKFILE,
  __REQ_PREEMPT,
  __REQ_PM_SUSPEND,
  __REQ_PM_RESUME,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __REQ_PM_SHUTDOWN,
  __REQ_ORDERED_COLOR,
  __REQ_RW_SYNC,
  __REQ_NR_BITS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define REQ_RW (1 << __REQ_RW)
 #define REQ_FAILFAST (1 << __REQ_FAILFAST)
 #define REQ_SORTED (1 << __REQ_SORTED)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REQ_SOFTBARRIER (1 << __REQ_SOFTBARRIER)
 #define REQ_HARDBARRIER (1 << __REQ_HARDBARRIER)
 #define REQ_FUA (1 << __REQ_FUA)
 #define REQ_CMD (1 << __REQ_CMD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REQ_NOMERGE (1 << __REQ_NOMERGE)
 #define REQ_STARTED (1 << __REQ_STARTED)
 #define REQ_DONTPREP (1 << __REQ_DONTPREP)
 #define REQ_QUEUED (1 << __REQ_QUEUED)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REQ_ELVPRIV (1 << __REQ_ELVPRIV)
 #define REQ_PC (1 << __REQ_PC)
 #define REQ_BLOCK_PC (1 << __REQ_BLOCK_PC)
 #define REQ_SENSE (1 << __REQ_SENSE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REQ_FAILED (1 << __REQ_FAILED)
 #define REQ_QUIET (1 << __REQ_QUIET)
 #define REQ_SPECIAL (1 << __REQ_SPECIAL)
 #define REQ_DRIVE_CMD (1 << __REQ_DRIVE_CMD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REQ_DRIVE_TASK (1 << __REQ_DRIVE_TASK)
 #define REQ_DRIVE_TASKFILE (1 << __REQ_DRIVE_TASKFILE)
 #define REQ_PREEMPT (1 << __REQ_PREEMPT)
 #define REQ_PM_SUSPEND (1 << __REQ_PM_SUSPEND)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REQ_PM_RESUME (1 << __REQ_PM_RESUME)
 #define REQ_PM_SHUTDOWN (1 << __REQ_PM_SHUTDOWN)
 #define REQ_ORDERED_COLOR (1 << __REQ_ORDERED_COLOR)
 #define REQ_RW_SYNC (1 << __REQ_RW_SYNC)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct request_pm_state
 {
-
  int pm_step;
-
  u32 pm_state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void* data;
 };
-
 #include <linux/elevator.h>
-
 typedef int (merge_request_fn) (request_queue_t *, struct request *,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct bio *);
 typedef int (merge_requests_fn) (request_queue_t *, struct request *,
  struct request *);
 typedef void (request_fn_proc) (request_queue_t *q);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int (make_request_fn) (request_queue_t *q, struct bio *bio);
 typedef int (prep_rq_fn) (request_queue_t *, struct request *);
 typedef void (unplug_fn) (request_queue_t *);
-
 struct bio_vec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int (merge_bvec_fn) (request_queue_t *, struct bio *, struct bio_vec *);
 typedef void (activity_fn) (void *data, int rw);
 typedef int (issue_flush_fn) (request_queue_t *, struct gendisk *, sector_t *);
 typedef void (prepare_flush_fn) (request_queue_t *, struct request *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef void (softirq_done_fn)(struct request *);
-
 enum blk_queue_state {
  Queue_down,
  Queue_up,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct blk_queue_tag {
  struct request **tag_index;
  unsigned long *tag_map;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct list_head busy_list;
  int busy;
  int max_depth;
  int real_max_depth;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t refcnt;
 };
-
 struct request_queue
 {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct list_head queue_head;
  struct request *last_merge;
  elevator_t *elevator;
-
  struct request_list rq;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  request_fn_proc *request_fn;
  merge_request_fn *back_merge_fn;
  merge_request_fn *front_merge_fn;
  merge_requests_fn *merge_requests_fn;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  make_request_fn *make_request_fn;
  prep_rq_fn *prep_rq_fn;
  unplug_fn *unplug_fn;
  merge_bvec_fn *merge_bvec_fn;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  activity_fn *activity_fn;
  issue_flush_fn *issue_flush_fn;
  prepare_flush_fn *prepare_flush_fn;
  softirq_done_fn *softirq_done_fn;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t end_sector;
  struct request *boundary_rq;
-
  struct timer_list unplug_timer;
  int unplug_thresh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long unplug_delay;
  struct work_struct unplug_work;
-
  struct backing_dev_info backing_dev_info;
-
  void *queuedata;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *activity_data;
-
  unsigned long bounce_pfn;
  gfp_t bounce_gfp;
-
  unsigned long queue_flags;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  spinlock_t __queue_lock;
  spinlock_t *queue_lock;
-
  struct kobject kobj;
-
  unsigned long nr_requests;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int nr_congestion_on;
  unsigned int nr_congestion_off;
  unsigned int nr_batching;
-
  unsigned int max_sectors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int max_hw_sectors;
  unsigned short max_phys_segments;
  unsigned short max_hw_segments;
  unsigned short hardsect_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int max_segment_size;
-
  unsigned long seg_boundary_mask;
  unsigned int dma_alignment;
-
  struct blk_queue_tag *queue_tags;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int nr_sorted;
  unsigned int in_flight;
-
  unsigned int sg_timeout;
  unsigned int sg_reserved_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int node;
-
  struct blk_trace *blk_trace;
-
  unsigned int ordered, next_ordered, ordseq;
  int orderr, ordcolor;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct request pre_flush_rq, bar_rq, post_flush_rq;
  struct request *orig_bar_rq;
  unsigned int bi_size;
-
  struct mutex sysfs_lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define RQ_INACTIVE (-1)
 #define RQ_ACTIVE 1
-
 #define QUEUE_FLAG_CLUSTER 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QUEUE_FLAG_QUEUED 1  
 #define QUEUE_FLAG_STOPPED 2  
 #define QUEUE_FLAG_READFULL 3  
 #define QUEUE_FLAG_WRITEFULL 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QUEUE_FLAG_DEAD 5  
 #define QUEUE_FLAG_REENTER 6  
 #define QUEUE_FLAG_PLUGGED 7  
 #define QUEUE_FLAG_ELVSWITCH 8  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
-
  QUEUE_ORDERED_NONE = 0x00,
  QUEUE_ORDERED_DRAIN = 0x01,
  QUEUE_ORDERED_TAG = 0x02,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QUEUE_ORDERED_PREFLUSH = 0x10,
  QUEUE_ORDERED_POSTFLUSH = 0x20,
  QUEUE_ORDERED_FUA = 0x40,
-
  QUEUE_ORDERED_DRAIN_FLUSH = QUEUE_ORDERED_DRAIN |
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_POSTFLUSH,
  QUEUE_ORDERED_DRAIN_FUA = QUEUE_ORDERED_DRAIN |
  QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_FUA,
  QUEUE_ORDERED_TAG_FLUSH = QUEUE_ORDERED_TAG |
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_POSTFLUSH,
  QUEUE_ORDERED_TAG_FUA = QUEUE_ORDERED_TAG |
  QUEUE_ORDERED_PREFLUSH | QUEUE_ORDERED_FUA,
-
  QUEUE_ORDSEQ_STARTED = 0x01,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QUEUE_ORDSEQ_DRAIN = 0x02,
  QUEUE_ORDSEQ_PREFLUSH = 0x04,
  QUEUE_ORDSEQ_BAR = 0x08,
  QUEUE_ORDSEQ_POSTFLUSH = 0x10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QUEUE_ORDSEQ_DONE = 0x20,
 };
-
 #define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags)
 #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags)
 #define blk_queue_flushing(q) ((q)->ordseq)
-
 #define blk_fs_request(rq) ((rq)->flags & REQ_CMD)
 #define blk_pc_request(rq) ((rq)->flags & REQ_BLOCK_PC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define blk_noretry_request(rq) ((rq)->flags & REQ_FAILFAST)
 #define blk_rq_started(rq) ((rq)->flags & REQ_STARTED)
-
 #define blk_account_rq(rq) (blk_rq_started(rq) && blk_fs_request(rq))
-
 #define blk_pm_suspend_request(rq) ((rq)->flags & REQ_PM_SUSPEND)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define blk_pm_resume_request(rq) ((rq)->flags & REQ_PM_RESUME)
 #define blk_pm_request(rq)   ((rq)->flags & (REQ_PM_SUSPEND | REQ_PM_RESUME))
-
 #define blk_sorted_rq(rq) ((rq)->flags & REQ_SORTED)
 #define blk_barrier_rq(rq) ((rq)->flags & REQ_HARDBARRIER)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define blk_fua_rq(rq) ((rq)->flags & REQ_FUA)
-
 #define list_entry_rq(ptr) list_entry((ptr), struct request, queuelist)
-
 #define rq_data_dir(rq) ((rq)->flags & 1)
-
 #define RQ_NOMERGE_FLAGS   (REQ_NOMERGE | REQ_STARTED | REQ_HARDBARRIER | REQ_SOFTBARRIER)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rq_mergeable(rq)   (!((rq)->flags & RQ_NOMERGE_FLAGS) && blk_fs_request((rq)))
 #define blk_queue_headactive(q, head_active)
 #define BLKPREP_OK 0  
 #define BLKPREP_KILL 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLKPREP_DEFER 2  
-
 #define BLK_BOUNCE_HIGH ((u64)blk_max_low_pfn << PAGE_SHIFT)
 #define BLK_BOUNCE_ANY ((u64)blk_max_pfn << PAGE_SHIFT)
 #define BLK_BOUNCE_ISA (ISA_DMA_THRESHOLD)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rq_for_each_bio(_bio, rq)   if ((rq->bio))   for (_bio = (rq)->bio; _bio; _bio = _bio->bi_next)
-
+struct sec_size {
+ unsigned block_size;
+ unsigned block_size_bits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 #define end_io_error(uptodate) (unlikely((uptodate) <= 0))
-
 #define blk_queue_tag_depth(q) ((q)->queue_tags->busy)
 #define blk_queue_tag_queue(q) ((q)->queue_tags->busy < (q)->queue_tags->max_depth)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define blk_rq_tagged(rq) ((rq)->flags & REQ_QUEUED)
-
 #define MAX_PHYS_SEGMENTS 128
 #define MAX_HW_SEGMENTS 128
 #define SAFE_MAX_SECTORS 255
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLK_DEF_MAX_SECTORS 1024
-
 #define MAX_SEGMENT_SIZE 65536
-
 #define blkdev_entry_to_request(entry) list_entry((entry), struct request, queuelist)
-
 #define blk_finished_io(nsects) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define blk_started_io(nsects) do { } while (0)
-
+typedef struct {struct page *v;} Sector;
+struct work_struct;
 #define sector_div(n, b)(  {   int _res;   _res = (n) % (b);   (n) /= (b);   _res;  }  )
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MODULE_ALIAS_BLOCKDEV(major,minor)   MODULE_ALIAS("block-major-" __stringify(major) "-" __stringify(minor))
 #define MODULE_ALIAS_BLOCKDEV_MAJOR(major)   MODULE_ALIAS("block-major-" __stringify(major) "-*")
-
 #endif
diff --git a/libc/kernel/common/linux/blkpg.h b/libc/kernel/common/linux/blkpg.h
index 45a4a47..21dcdb4 100644
--- a/libc/kernel/common/linux/blkpg.h
+++ b/libc/kernel/common/linux/blkpg.h
@@ -7,35 +7,40 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BLKPG_H
 #define _LINUX_BLKPG_H
-
 #include <linux/compiler.h>
 #include <linux/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLKPG _IO(0x12,105)
-
 struct blkpg_ioctl_arg {
  int op;
  int flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int datalen;
  void __user *data;
 };
-
 #define BLKPG_ADD_PARTITION 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLKPG_DEL_PARTITION 2
-
 #define BLKPG_DEVNAMELTH 64
 #define BLKPG_VOLNAMELTH 64
-
 struct blkpg_partition {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long long start;
  long long length;
  int pno;
  char devname[BLKPG_DEVNAMELTH];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char volname[BLKPG_VOLNAMELTH];
 };
-
 #endif
diff --git a/libc/kernel/common/linux/blockgroup_lock.h b/libc/kernel/common/linux/blockgroup_lock.h
index c814020..f68edbb 100644
--- a/libc/kernel/common/linux/blockgroup_lock.h
+++ b/libc/kernel/common/linux/blockgroup_lock.h
@@ -7,23 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BLOCKGROUP_LOCK_H
 #define _LINUX_BLOCKGROUP_LOCK_H
-
 #include <linux/spinlock.h>
 #include <linux/cache.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NR_BG_LOCKS 1
-
 struct bgl_lock {
  spinlock_t lock;
 } ____cacheline_aligned_in_smp;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct blockgroup_lock {
  struct bgl_lock locks[NR_BG_LOCKS];
 };
-
 #define sb_bgl_lock(sb, block_group)   (&(sb)->s_blockgroup_lock.locks[(block_group) & (NR_BG_LOCKS-1)].lock)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/bmp085.h b/libc/kernel/common/linux/bmp085.h
index 650cb88..0f88567 100644
--- a/libc/kernel/common/linux/bmp085.h
+++ b/libc/kernel/common/linux/bmp085.h
@@ -7,23 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __BMP085_H__
 #define __BMP085_H__
-
 #include <linux/ioctl.h>  
-
 #define BMP085_NAME "bmp085"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BMP085_IOCTL_BASE 78
-
 #define BMP085_IOCTL_SET_DELAY _IOW(BMP085_IOCTL_BASE, 0, int)
 #define BMP085_IOCTL_GET_DELAY _IOR(BMP085_IOCTL_BASE, 1, int)
 #define BMP085_IOCTL_SET_ENABLE _IOW(BMP085_IOCTL_BASE, 2, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BMP085_IOCTL_GET_ENABLE _IOR(BMP085_IOCTL_BASE, 3, int)
 #define BMP085_IOCTL_ACCURACY _IOW(BMP085_IOCTL_BASE, 4, int)
-
 #endif
-
-
diff --git a/libc/kernel/common/linux/byteorder/big_endian.h b/libc/kernel/common/linux/byteorder/big_endian.h
index ee0d880..ab01d68 100644
--- a/libc/kernel/common/linux/byteorder/big_endian.h
+++ b/libc/kernel/common/linux/byteorder/big_endian.h
@@ -7,61 +7,77 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BYTEORDER_BIG_ENDIAN_H
 #define _LINUX_BYTEORDER_BIG_ENDIAN_H
-
 #ifndef __BIG_ENDIAN
 #define __BIG_ENDIAN 4321
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __BIG_ENDIAN_BITFIELD
 #define __BIG_ENDIAN_BITFIELD
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
 #include <linux/byteorder/swab.h>
-
 #define __constant_htonl(x) ((__force __be32)(__u32)(x))
 #define __constant_ntohl(x) ((__force __u32)(__be32)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __constant_htons(x) ((__force __be16)(__u16)(x))
 #define __constant_ntohs(x) ((__force __u16)(__be16)(x))
 #define __constant_cpu_to_le64(x) ((__force __le64)___constant_swab64((x)))
 #define __constant_le64_to_cpu(x) ___constant_swab64((__force __u64)(__le64)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __constant_cpu_to_le32(x) ((__force __le32)___constant_swab32((x)))
 #define __constant_le32_to_cpu(x) ___constant_swab32((__force __u32)(__le32)(x))
 #define __constant_cpu_to_le16(x) ((__force __le16)___constant_swab16((x)))
 #define __constant_le16_to_cpu(x) ___constant_swab16((__force __u16)(__le16)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __constant_cpu_to_be64(x) ((__force __be64)(__u64)(x))
 #define __constant_be64_to_cpu(x) ((__force __u64)(__be64)(x))
 #define __constant_cpu_to_be32(x) ((__force __be32)(__u32)(x))
 #define __constant_be32_to_cpu(x) ((__force __u32)(__be32)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __constant_cpu_to_be16(x) ((__force __be16)(__u16)(x))
 #define __constant_be16_to_cpu(x) ((__force __u16)(__be16)(x))
 #define __cpu_to_le64(x) ((__force __le64)__swab64((x)))
 #define __le64_to_cpu(x) __swab64((__force __u64)(__le64)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_le32(x) ((__force __le32)__swab32((x)))
 #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
 #define __cpu_to_le16(x) ((__force __le16)__swab16((x)))
 #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_be64(x) ((__force __be64)(__u64)(x))
 #define __be64_to_cpu(x) ((__force __u64)(__be64)(x))
 #define __cpu_to_be32(x) ((__force __be32)(__u32)(x))
 #define __be32_to_cpu(x) ((__force __u32)(__be32)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_be16(x) ((__force __be16)(__u16)(x))
 #define __be16_to_cpu(x) ((__force __u16)(__be16)(x))
-
 #define __cpu_to_le64s(x) __swab64s((x))
 #define __le64_to_cpus(x) __swab64s((x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_le32s(x) __swab32s((x))
 #define __le32_to_cpus(x) __swab32s((x))
 #define __cpu_to_le16s(x) __swab16s((x))
 #define __le16_to_cpus(x) __swab16s((x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_be64s(x) do {} while (0)
 #define __be64_to_cpus(x) do {} while (0)
 #define __cpu_to_be32s(x) do {} while (0)
 #define __be32_to_cpus(x) do {} while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_be16s(x) do {} while (0)
 #define __be16_to_cpus(x) do {} while (0)
 #include <linux/byteorder/generic.h>
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/byteorder/generic.h b/libc/kernel/common/linux/byteorder/generic.h
index ac469ff..196437d 100644
--- a/libc/kernel/common/linux/byteorder/generic.h
+++ b/libc/kernel/common/linux/byteorder/generic.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BYTEORDER_GENERIC_H
 #define _LINUX_BYTEORDER_GENERIC_H
-
 #endif
diff --git a/libc/kernel/common/linux/byteorder/little_endian.h b/libc/kernel/common/linux/byteorder/little_endian.h
index 2c26e9c..5e94401 100644
--- a/libc/kernel/common/linux/byteorder/little_endian.h
+++ b/libc/kernel/common/linux/byteorder/little_endian.h
@@ -7,61 +7,77 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BYTEORDER_LITTLE_ENDIAN_H
 #define _LINUX_BYTEORDER_LITTLE_ENDIAN_H
-
 #ifndef __LITTLE_ENDIAN
 #define __LITTLE_ENDIAN 1234
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __LITTLE_ENDIAN_BITFIELD
 #define __LITTLE_ENDIAN_BITFIELD
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
 #include <linux/byteorder/swab.h>
-
 #define __constant_htonl(x) ((__force __be32)___constant_swab32((x)))
 #define __constant_ntohl(x) ___constant_swab32((__force __be32)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __constant_htons(x) ((__force __be16)___constant_swab16((x)))
 #define __constant_ntohs(x) ___constant_swab16((__force __be16)(x))
 #define __constant_cpu_to_le64(x) ((__force __le64)(__u64)(x))
 #define __constant_le64_to_cpu(x) ((__force __u64)(__le64)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __constant_cpu_to_le32(x) ((__force __le32)(__u32)(x))
 #define __constant_le32_to_cpu(x) ((__force __u32)(__le32)(x))
 #define __constant_cpu_to_le16(x) ((__force __le16)(__u16)(x))
 #define __constant_le16_to_cpu(x) ((__force __u16)(__le16)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __constant_cpu_to_be64(x) ((__force __be64)___constant_swab64((x)))
 #define __constant_be64_to_cpu(x) ___constant_swab64((__force __u64)(__be64)(x))
 #define __constant_cpu_to_be32(x) ((__force __be32)___constant_swab32((x)))
 #define __constant_be32_to_cpu(x) ___constant_swab32((__force __u32)(__be32)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __constant_cpu_to_be16(x) ((__force __be16)___constant_swab16((x)))
 #define __constant_be16_to_cpu(x) ___constant_swab16((__force __u16)(__be16)(x))
 #define __cpu_to_le64(x) ((__force __le64)(__u64)(x))
 #define __le64_to_cpu(x) ((__force __u64)(__le64)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_le32(x) ((__force __le32)(__u32)(x))
 #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
 #define __cpu_to_le16(x) ((__force __le16)(__u16)(x))
 #define __le16_to_cpu(x) ((__force __u16)(__le16)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_be64(x) ((__force __be64)__swab64((x)))
 #define __be64_to_cpu(x) __swab64((__force __u64)(__be64)(x))
 #define __cpu_to_be32(x) ((__force __be32)__swab32((x)))
 #define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_be16(x) ((__force __be16)__swab16((x)))
 #define __be16_to_cpu(x) __swab16((__force __u16)(__be16)(x))
-
 #define __cpu_to_le64s(x) do {} while (0)
 #define __le64_to_cpus(x) do {} while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_le32s(x) do {} while (0)
 #define __le32_to_cpus(x) do {} while (0)
 #define __cpu_to_le16s(x) do {} while (0)
 #define __le16_to_cpus(x) do {} while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_be64s(x) __swab64s((x))
 #define __be64_to_cpus(x) __swab64s((x))
 #define __cpu_to_be32s(x) __swab32s((x))
 #define __be32_to_cpus(x) __swab32s((x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpu_to_be16s(x) __swab16s((x))
 #define __be16_to_cpus(x) __swab16s((x))
 #include <linux/byteorder/generic.h>
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/byteorder/swab.h b/libc/kernel/common/linux/byteorder/swab.h
index 37336b5..86e2f30 100644
--- a/libc/kernel/common/linux/byteorder/swab.h
+++ b/libc/kernel/common/linux/byteorder/swab.h
@@ -7,66 +7,75 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BYTEORDER_SWAB_H
 #define _LINUX_BYTEORDER_SWAB_H
-
 #include <linux/compiler.h>
-
 #define ___swab16(x)  ({   __u16 __x = (x);   ((__u16)(   (((__u16)(__x) & (__u16)0x00ffU) << 8) |   (((__u16)(__x) & (__u16)0xff00U) >> 8) ));  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ___swab32(x)  ({   __u32 __x = (x);   ((__u32)(   (((__u32)(__x) & (__u32)0x000000ffUL) << 24) |   (((__u32)(__x) & (__u32)0x0000ff00UL) << 8) |   (((__u32)(__x) & (__u32)0x00ff0000UL) >> 8) |   (((__u32)(__x) & (__u32)0xff000000UL) >> 24) ));  })
-
 #define ___swab64(x)  ({   __u64 __x = (x);   ((__u64)(   (__u64)(((__u64)(__x) & (__u64)0x00000000000000ffULL) << 56) |   (__u64)(((__u64)(__x) & (__u64)0x000000000000ff00ULL) << 40) |   (__u64)(((__u64)(__x) & (__u64)0x0000000000ff0000ULL) << 24) |   (__u64)(((__u64)(__x) & (__u64)0x00000000ff000000ULL) << 8) |   (__u64)(((__u64)(__x) & (__u64)0x000000ff00000000ULL) >> 8) |   (__u64)(((__u64)(__x) & (__u64)0x0000ff0000000000ULL) >> 24) |   (__u64)(((__u64)(__x) & (__u64)0x00ff000000000000ULL) >> 40) |   (__u64)(((__u64)(__x) & (__u64)0xff00000000000000ULL) >> 56) ));  })
-
 #define ___constant_swab16(x)   ((__u16)(   (((__u16)(x) & (__u16)0x00ffU) << 8) |   (((__u16)(x) & (__u16)0xff00U) >> 8) ))
 #define ___constant_swab32(x)   ((__u32)(   (((__u32)(x) & (__u32)0x000000ffUL) << 24) |   (((__u32)(x) & (__u32)0x0000ff00UL) << 8) |   (((__u32)(x) & (__u32)0x00ff0000UL) >> 8) |   (((__u32)(x) & (__u32)0xff000000UL) >> 24) ))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ___constant_swab64(x)   ((__u64)(   (__u64)(((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) |   (__u64)(((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) |   (__u64)(((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) |   (__u64)(((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) |   (__u64)(((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) |   (__u64)(((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) |   (__u64)(((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) |   (__u64)(((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56) ))
-
 #ifndef __arch__swab16
 #define __arch__swab16(x) ({ __u16 __tmp = (x) ; ___swab16(__tmp); })
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __arch__swab32
 #define __arch__swab32(x) ({ __u32 __tmp = (x) ; ___swab32(__tmp); })
 #endif
 #ifndef __arch__swab64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __arch__swab64(x) ({ __u64 __tmp = (x) ; ___swab64(__tmp); })
 #endif
-
 #ifndef __arch__swab16p
 #define __arch__swab16p(x) __arch__swab16(*(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __arch__swab32p
 #define __arch__swab32p(x) __arch__swab32(*(x))
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __arch__swab64p
 #define __arch__swab64p(x) __arch__swab64(*(x))
 #endif
-
 #ifndef __arch__swab16s
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __arch__swab16s(x) do { *(x) = __arch__swab16p((x)); } while (0)
 #endif
 #ifndef __arch__swab32s
 #define __arch__swab32s(x) do { *(x) = __arch__swab32p((x)); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __arch__swab64s
 #define __arch__swab64s(x) do { *(x) = __arch__swab64p((x)); } while (0)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if defined(__GNUC__) && defined(__OPTIMIZE__)
 #define __swab16(x)  (__builtin_constant_p((__u16)(x)) ?   ___swab16((x)) :   __fswab16((x)))
 #define __swab32(x)  (__builtin_constant_p((__u32)(x)) ?   ___swab32((x)) :   __fswab32((x)))
 #define __swab64(x)  (__builtin_constant_p((__u64)(x)) ?   ___swab64((x)) :   __fswab64((x)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #define __swab16(x) __fswab16(x)
 #define __swab32(x) __fswab32(x)
 #define __swab64(x) __fswab64(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifdef __BYTEORDER_HAS_U64__
 #ifdef __SWAB_64_THRU_32__
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
 #endif
diff --git a/libc/kernel/common/linux/byteorder/swabb.h b/libc/kernel/common/linux/byteorder/swabb.h
index c5b6a3e..714a712 100644
--- a/libc/kernel/common/linux/byteorder/swabb.h
+++ b/libc/kernel/common/linux/byteorder/swabb.h
@@ -7,46 +7,54 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_BYTEORDER_SWABB_H
 #define _LINUX_BYTEORDER_SWABB_H
-
 #define ___swahw32(x)  ({   __u32 __x = (x);   ((__u32)(   (((__u32)(__x) & (__u32)0x0000ffffUL) << 16) |   (((__u32)(__x) & (__u32)0xffff0000UL) >> 16) ));  })
 #define ___swahb32(x)  ({   __u32 __x = (x);   ((__u32)(   (((__u32)(__x) & (__u32)0x00ff00ffUL) << 8) |   (((__u32)(__x) & (__u32)0xff00ff00UL) >> 8) ));  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ___constant_swahw32(x)   ((__u32)(   (((__u32)(x) & (__u32)0x0000ffffUL) << 16) |   (((__u32)(x) & (__u32)0xffff0000UL) >> 16) ))
 #define ___constant_swahb32(x)   ((__u32)(   (((__u32)(x) & (__u32)0x00ff00ffUL) << 8) |   (((__u32)(x) & (__u32)0xff00ff00UL) >> 8) ))
-
 #ifndef __arch__swahw32
 #define __arch__swahw32(x) ___swahw32(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __arch__swahb32
 #define __arch__swahb32(x) ___swahb32(x)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __arch__swahw32p
 #define __arch__swahw32p(x) __swahw32(*(x))
 #endif
 #ifndef __arch__swahb32p
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __arch__swahb32p(x) __swahb32(*(x))
 #endif
-
 #ifndef __arch__swahw32s
 #define __arch__swahw32s(x) do { *(x) = __swahw32p((x)); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifndef __arch__swahb32s
 #define __arch__swahb32s(x) do { *(x) = __swahb32p((x)); } while (0)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if defined(__GNUC__) && defined(__OPTIMIZE__)
 #define __swahw32(x)  (__builtin_constant_p((__u32)(x)) ?   ___swahw32((x)) :   __fswahw32((x)))
 #define __swahb32(x)  (__builtin_constant_p((__u32)(x)) ?   ___swahb32((x)) :   __fswahb32((x)))
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __swahw32(x) __fswahw32(x)
 #define __swahb32(x) __fswahb32(x)
 #endif
-
 #ifdef __BYTEORDER_HAS_U64__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
diff --git a/libc/kernel/common/linux/cache.h b/libc/kernel/common/linux/cache.h
index d281855..dca5a3c 100644
--- a/libc/kernel/common/linux/cache.h
+++ b/libc/kernel/common/linux/cache.h
@@ -7,48 +7,52 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_CACHE_H
 #define __LINUX_CACHE_H
-
 #include <linux/kernel.h>
 #include <asm/cache.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef L1_CACHE_ALIGN
 #define L1_CACHE_ALIGN(x) ALIGN(x, L1_CACHE_BYTES)
 #endif
-
 #ifndef SMP_CACHE_BYTES
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SMP_CACHE_BYTES L1_CACHE_BYTES
 #endif
-
 #ifndef __read_mostly
 #define __read_mostly
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef ____cacheline_aligned
 #define ____cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES)))
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef ____cacheline_aligned_in_smp
 #define ____cacheline_aligned_in_smp
 #endif
-
 #ifndef __cacheline_aligned
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cacheline_aligned   __attribute__((__aligned__(SMP_CACHE_BYTES),   __section__(".data.cacheline_aligned")))
 #endif
-
 #ifndef __cacheline_aligned_in_smp
 #define __cacheline_aligned_in_smp
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef INTERNODE_CACHE_SHIFT
 #define INTERNODE_CACHE_SHIFT L1_CACHE_SHIFT
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef ____cacheline_internodealigned_in_smp
 #define ____cacheline_internodealigned_in_smp
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/calc64.h b/libc/kernel/common/linux/calc64.h
index 9f726aa..8137ab5 100644
--- a/libc/kernel/common/linux/calc64.h
+++ b/libc/kernel/common/linux/calc64.h
@@ -7,16 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_CALC64_H
 #define _LINUX_CALC64_H
-
 #include <linux/types.h>
 #include <asm/div64.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef div_long_long_rem
 #define div_long_long_rem(dividend, divisor, remainder)   do_div_llr((dividend), divisor, remainder)
-
 #endif
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/capability.h b/libc/kernel/common/linux/capability.h
index 605bc27..7350e7c 100644
--- a/libc/kernel/common/linux/capability.h
+++ b/libc/kernel/common/linux/capability.h
@@ -7,89 +7,114 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_CAPABILITY_H
 #define _LINUX_CAPABILITY_H
-
 #include <linux/types.h>
-#include <linux/compiler.h>
-
-#define _LINUX_CAPABILITY_VERSION 0x19980330
-
+struct task_struct;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _LINUX_CAPABILITY_VERSION_1 0x19980330
+#define _LINUX_CAPABILITY_U32S_1 1
+#define _LINUX_CAPABILITY_VERSION_2 0x20071026  
+#define _LINUX_CAPABILITY_U32S_2 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _LINUX_CAPABILITY_VERSION_3 0x20080522
+#define _LINUX_CAPABILITY_U32S_3 2
 typedef struct __user_cap_header_struct {
  __u32 version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int pid;
 } __user *cap_user_header_t;
-
 typedef struct __user_cap_data_struct {
  __u32 effective;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 permitted;
  __u32 inheritable;
 } __user *cap_user_data_t;
-
+#define VFS_CAP_REVISION_MASK 0xFF000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VFS_CAP_REVISION_SHIFT 24
+#define VFS_CAP_FLAGS_MASK ~VFS_CAP_REVISION_MASK
+#define VFS_CAP_FLAGS_EFFECTIVE 0x000001
+#define VFS_CAP_REVISION_1 0x01000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define VFS_CAP_U32_1 1
+#define XATTR_CAPS_SZ_1 (sizeof(__le32)*(1 + 2*VFS_CAP_U32_1))
+#define VFS_CAP_REVISION_2 0x02000000
+#define VFS_CAP_U32_2 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define XATTR_CAPS_SZ_2 (sizeof(__le32)*(1 + 2*VFS_CAP_U32_2))
+#define XATTR_CAPS_SZ XATTR_CAPS_SZ_2
+#define VFS_CAP_U32 VFS_CAP_U32_2
+#define VFS_CAP_REVISION VFS_CAP_REVISION_2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct vfs_cap_data {
+ __le32 magic_etc;
+ struct {
+ __le32 permitted;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __le32 inheritable;
+ } data[VFS_CAP_U32];
+};
+#define _LINUX_CAPABILITY_VERSION _LINUX_CAPABILITY_VERSION_1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define _LINUX_CAPABILITY_U32S _LINUX_CAPABILITY_U32S_1
 #define CAP_CHOWN 0
-
 #define CAP_DAC_OVERRIDE 1
-
 #define CAP_DAC_READ_SEARCH 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAP_FOWNER 3
-
 #define CAP_FSETID 4
-
-#define CAP_FS_MASK 0x1f
-
 #define CAP_KILL 5
-
 #define CAP_SETGID 6
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAP_SETUID 7
-
 #define CAP_SETPCAP 8
-
 #define CAP_LINUX_IMMUTABLE 9
-
 #define CAP_NET_BIND_SERVICE 10
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAP_NET_BROADCAST 11
-
 #define CAP_NET_ADMIN 12
-
 #define CAP_NET_RAW 13
-
 #define CAP_IPC_LOCK 14
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAP_IPC_OWNER 15
-
 #define CAP_SYS_MODULE 16
-
 #define CAP_SYS_RAWIO 17
-
 #define CAP_SYS_CHROOT 18
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAP_SYS_PTRACE 19
-
 #define CAP_SYS_PACCT 20
-
 #define CAP_SYS_ADMIN 21
-
 #define CAP_SYS_BOOT 22
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAP_SYS_NICE 23
-
 #define CAP_SYS_RESOURCE 24
-
 #define CAP_SYS_TIME 25
-
 #define CAP_SYS_TTY_CONFIG 26
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAP_MKNOD 27
-
 #define CAP_LEASE 28
-
 #define CAP_AUDIT_WRITE 29
-
 #define CAP_AUDIT_CONTROL 30
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CAP_SETFCAP 31
+#define CAP_MAC_OVERRIDE 32
+#define CAP_MAC_ADMIN 33
+#define CAP_SYSLOG 34
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CAP_WAKE_ALARM 35
+#define CAP_LAST_CAP CAP_WAKE_ALARM
+#define cap_valid(x) ((x) >= 0 && (x) <= CAP_LAST_CAP)
+#define CAP_TO_INDEX(x) ((x) >> 5)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define CAP_TO_MASK(x) (1 << ((x) & 31))  
 #endif
diff --git a/libc/kernel/common/linux/capella_cm3602.h b/libc/kernel/common/linux/capella_cm3602.h
index 6391e8a..672f829 100644
--- a/libc/kernel/common/linux/capella_cm3602.h
+++ b/libc/kernel/common/linux/capella_cm3602.h
@@ -7,17 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_CAPELLA_CM3602_H
 #define __LINUX_CAPELLA_CM3602_H
-
 #include <linux/types.h>
 #include <linux/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAPELLA_CM3602_IOCTL_MAGIC 'c'
 #define CAPELLA_CM3602_IOCTL_GET_ENABLED   _IOR(CAPELLA_CM3602_IOCTL_MAGIC, 1, int *)
 #define CAPELLA_CM3602_IOCTL_ENABLE   _IOW(CAPELLA_CM3602_IOCTL_MAGIC, 2, int *)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/capi.h b/libc/kernel/common/linux/capi.h
index 5591cf6..6ca9935 100644
--- a/libc/kernel/common/linux/capi.h
+++ b/libc/kernel/common/linux/capi.h
@@ -7,82 +7,83 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_CAPI_H__
 #define __LINUX_CAPI_H__
-
 #include <asm/types.h>
 #include <linux/ioctl.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/kernelcapi.h>
-
 typedef struct capi_register_params {
  __u32 level3cnt;
  __u32 datablkcnt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 datablklen;
 } capi_register_params;
-
 #define CAPI_REGISTER _IOW('C',0x01,struct capi_register_params)
-
 #define CAPI_MANUFACTURER_LEN 64
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAPI_GET_MANUFACTURER _IOWR('C',0x06,int)  
-
 typedef struct capi_version {
  __u32 majorversion;
  __u32 minorversion;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 majormanuversion;
  __u32 minormanuversion;
 } capi_version;
-
 #define CAPI_GET_VERSION _IOWR('C',0x07,struct capi_version)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAPI_SERIAL_LEN 8
 #define CAPI_GET_SERIAL _IOWR('C',0x08,int)  
-
 typedef struct capi_profile {
  __u16 ncontroller;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 nbchannel;
  __u32 goptions;
  __u32 support1;
  __u32 support2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 support3;
  __u32 reserved[6];
  __u32 manu[5];
 } capi_profile;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAPI_GET_PROFILE _IOWR('C',0x09,struct capi_profile)
-
 typedef struct capi_manufacturer_cmd {
  unsigned long cmd;
  void __user *data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } capi_manufacturer_cmd;
-
 #define CAPI_MANUFACTURER_CMD _IOWR('C',0x20, struct capi_manufacturer_cmd)
-
 #define CAPI_GET_ERRCODE _IOR('C',0x21, __u16)
-
 #define CAPI_INSTALLED _IOR('C',0x22, __u16)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef union capi_ioctl_struct {
  __u32 contr;
  capi_register_params rparams;
  __u8 manufacturer[CAPI_MANUFACTURER_LEN];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  capi_version version;
  __u8 serial[CAPI_SERIAL_LEN];
  capi_profile profile;
  capi_manufacturer_cmd cmd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 errcode;
 } capi_ioctl_struct;
-
 #define CAPIFLAG_HIGHJACKING 0x0001
-
 #define CAPI_GET_FLAGS _IOR('C',0x23, unsigned)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAPI_SET_FLAGS _IOR('C',0x24, unsigned)
 #define CAPI_CLR_FLAGS _IOR('C',0x25, unsigned)
-
 #define CAPI_NCCI_OPENCOUNT _IOR('C',0x26, unsigned)
-
 #define CAPI_NCCI_GETUNIT _IOR('C',0x27, unsigned)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/cdev.h b/libc/kernel/common/linux/cdev.h
index 7a71c7e..122fb94 100644
--- a/libc/kernel/common/linux/cdev.h
+++ b/libc/kernel/common/linux/cdev.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_CDEV_H
diff --git a/libc/kernel/common/linux/cdrom.h b/libc/kernel/common/linux/cdrom.h
index cc70c9f..ca51fa9 100644
--- a/libc/kernel/common/linux/cdrom.h
+++ b/libc/kernel/common/linux/cdrom.h
@@ -7,712 +7,778 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_CDROM_H
 #define _LINUX_CDROM_H
-
 #include <asm/byteorder.h>
-
 #define EDRIVE_CANT_DO_THIS EOPNOTSUPP
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROMPAUSE 0x5301   
 #define CDROMRESUME 0x5302  
 #define CDROMPLAYMSF 0x5303  
 #define CDROMPLAYTRKIND 0x5304  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROMREADTOCHDR 0x5305  
 #define CDROMREADTOCENTRY 0x5306  
 #define CDROMSTOP 0x5307  
 #define CDROMSTART 0x5308  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROMEJECT 0x5309  
 #define CDROMVOLCTRL 0x530a  
 #define CDROMSUBCHNL 0x530b  
 #define CDROMREADMODE2 0x530c  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROMREADMODE1 0x530d  
 #define CDROMREADAUDIO 0x530e  
 #define CDROMEJECT_SW 0x530f  
 #define CDROMMULTISESSION 0x5310  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_GET_MCN 0x5311  
 #define CDROM_GET_UPC CDROM_GET_MCN  
 #define CDROMRESET 0x5312  
 #define CDROMVOLREAD 0x5313  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROMREADRAW 0x5314  
-
 #define CDROMREADCOOKED 0x5315  
 #define CDROMSEEK 0x5316  
-
 #define CDROMPLAYBLK 0x5317  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROMREADALL 0x5318  
-
 #define CDROMGETSPINDOWN 0x531d
 #define CDROMSETSPINDOWN 0x531e
-
 #define CDROMCLOSETRAY 0x5319  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_SET_OPTIONS 0x5320  
 #define CDROM_CLEAR_OPTIONS 0x5321  
 #define CDROM_SELECT_SPEED 0x5322  
 #define CDROM_SELECT_DISC 0x5323  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_MEDIA_CHANGED 0x5325  
 #define CDROM_DRIVE_STATUS 0x5326  
 #define CDROM_DISC_STATUS 0x5327  
 #define CDROM_CHANGER_NSLOTS 0x5328  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_LOCKDOOR 0x5329  
 #define CDROM_DEBUG 0x5330  
 #define CDROM_GET_CAPABILITY 0x5331  
-
 #define CDROMAUDIOBUFSIZ 0x5382  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_READ_STRUCT 0x5390  
 #define DVD_WRITE_STRUCT 0x5391  
 #define DVD_AUTH 0x5392  
-
 #define CDROM_SEND_PACKET 0x5393  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_NEXT_WRITABLE 0x5394  
 #define CDROM_LAST_WRITTEN 0x5395  
-
 struct cdrom_msf0
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 minute;
  __u8 second;
  __u8 frame;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union cdrom_addr
 {
  struct cdrom_msf0 msf;
  int lba;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct cdrom_msf
 {
  __u8 cdmsf_min0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 cdmsf_sec0;
  __u8 cdmsf_frame0;
  __u8 cdmsf_min1;
  __u8 cdmsf_sec1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 cdmsf_frame1;
 };
-
 struct cdrom_ti
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 cdti_trk0;
  __u8 cdti_ind0;
  __u8 cdti_trk1;
  __u8 cdti_ind1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct cdrom_tochdr
 {
  __u8 cdth_trk0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 cdth_trk1;
 };
-
 struct cdrom_volctrl
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 channel0;
  __u8 channel1;
  __u8 channel2;
  __u8 channel3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct cdrom_subchnl
 {
  __u8 cdsc_format;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 cdsc_audiostatus;
  __u8 cdsc_adr: 4;
  __u8 cdsc_ctrl: 4;
  __u8 cdsc_trk;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 cdsc_ind;
  union cdrom_addr cdsc_absaddr;
  union cdrom_addr cdsc_reladdr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cdrom_tocentry
 {
  __u8 cdte_track;
  __u8 cdte_adr :4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 cdte_ctrl :4;
  __u8 cdte_format;
  union cdrom_addr cdte_addr;
  __u8 cdte_datamode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct cdrom_read
 {
  int cdread_lba;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *cdread_bufaddr;
  int cdread_buflen;
 };
-
 struct cdrom_read_audio
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  union cdrom_addr addr;
  __u8 addr_format;
  int nframes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 __user *buf;
 };
-
 struct cdrom_multisession
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union cdrom_addr addr;
  __u8 xa_flag;
  __u8 addr_format;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cdrom_mcn
 {
  __u8 medium_catalog_number[14];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cdrom_blk
 {
  unsigned from;
  unsigned short len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define CDROM_PACKET_SIZE 12
-
 #define CGC_DATA_UNKNOWN 0
 #define CGC_DATA_WRITE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CGC_DATA_READ 2
 #define CGC_DATA_NONE 3
-
 struct cdrom_generic_command
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char cmd[CDROM_PACKET_SIZE];
  unsigned char __user *buffer;
  unsigned int buflen;
  int stat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct request_sense __user *sense;
  unsigned char data_direction;
  int quiet;
  int timeout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __user *reserved[1];
 };
-
 #define CD_MINS 74  
 #define CD_SECS 60  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_FRAMES 75  
 #define CD_SYNC_SIZE 12  
 #define CD_MSF_OFFSET 150  
 #define CD_CHUNK_SIZE 24  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_NUM_OF_CHUNKS 98  
 #define CD_FRAMESIZE_SUB 96  
 #define CD_HEAD_SIZE 4  
 #define CD_SUBHEAD_SIZE 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_EDC_SIZE 4  
 #define CD_ZERO_SIZE 8  
 #define CD_ECC_SIZE 276  
 #define CD_FRAMESIZE 2048  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_FRAMESIZE_RAW 2352  
 #define CD_FRAMESIZE_RAWER 2646   
-
 #define CD_FRAMESIZE_RAW1 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE)  
 #define CD_FRAMESIZE_RAW0 (CD_FRAMESIZE_RAW-CD_SYNC_SIZE-CD_HEAD_SIZE)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_XA_HEAD (CD_HEAD_SIZE+CD_SUBHEAD_SIZE)  
 #define CD_XA_TAIL (CD_EDC_SIZE+CD_ECC_SIZE)  
 #define CD_XA_SYNC_HEAD (CD_SYNC_SIZE+CD_XA_HEAD)  
-
 #define CDROM_LBA 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_MSF 0x02  
-
 #define CDROM_DATA_TRACK 0x04
-
 #define CDROM_LEADOUT 0xAA
-
 #define CDROM_AUDIO_INVALID 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_AUDIO_PLAY 0x11  
 #define CDROM_AUDIO_PAUSED 0x12  
 #define CDROM_AUDIO_COMPLETED 0x13  
 #define CDROM_AUDIO_ERROR 0x14  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDROM_AUDIO_NO_STATUS 0x15  
-
 #define CDC_CLOSE_TRAY 0x1  
 #define CDC_OPEN_TRAY 0x2  
 #define CDC_LOCK 0x4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_SELECT_SPEED 0x8  
 #define CDC_SELECT_DISC 0x10  
 #define CDC_MULTI_SESSION 0x20  
 #define CDC_MCN 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_MEDIA_CHANGED 0x80  
 #define CDC_PLAY_AUDIO 0x100  
 #define CDC_RESET 0x200  
 #define CDC_DRIVE_STATUS 0x800  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_GENERIC_PACKET 0x1000  
 #define CDC_CD_R 0x2000  
 #define CDC_CD_RW 0x4000  
 #define CDC_DVD 0x8000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_DVD_R 0x10000  
 #define CDC_DVD_RAM 0x20000  
 #define CDC_MO_DRIVE 0x40000  
 #define CDC_MRW 0x80000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDC_MRW_W 0x100000  
 #define CDC_RAM 0x200000  
-
 #define CDS_NO_INFO 0  
 #define CDS_NO_DISC 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDS_TRAY_OPEN 2
 #define CDS_DRIVE_NOT_READY 3
 #define CDS_DISC_OK 4
-
 #define CDS_AUDIO 100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDS_DATA_1 101
 #define CDS_DATA_2 102
 #define CDS_XA_2_1 103
 #define CDS_XA_2_2 104
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDS_MIXED 105
-
 #define CDO_AUTO_CLOSE 0x1  
 #define CDO_AUTO_EJECT 0x2  
 #define CDO_USE_FFLAGS 0x4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDO_LOCK 0x8  
 #define CDO_CHECK_TYPE 0x10  
-
 #define CDSL_NONE ((int) (~0U>>1)-1)
 #define CDSL_CURRENT ((int) (~0U>>1))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CD_PART_MAX 64
 #define CD_PART_MASK (CD_PART_MAX - 1)
-
 #define GPCMD_BLANK 0xa1
 #define GPCMD_CLOSE_TRACK 0x5b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_FLUSH_CACHE 0x35
 #define GPCMD_FORMAT_UNIT 0x04
 #define GPCMD_GET_CONFIGURATION 0x46
 #define GPCMD_GET_EVENT_STATUS_NOTIFICATION 0x4a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_GET_PERFORMANCE 0xac
 #define GPCMD_INQUIRY 0x12
 #define GPCMD_LOAD_UNLOAD 0xa6
 #define GPCMD_MECHANISM_STATUS 0xbd
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_MODE_SELECT_10 0x55
 #define GPCMD_MODE_SENSE_10 0x5a
 #define GPCMD_PAUSE_RESUME 0x4b
 #define GPCMD_PLAY_AUDIO_10 0x45
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_PLAY_AUDIO_MSF 0x47
 #define GPCMD_PLAY_AUDIO_TI 0x48
 #define GPCMD_PLAY_CD 0xbc
 #define GPCMD_PREVENT_ALLOW_MEDIUM_REMOVAL 0x1e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_10 0x28
 #define GPCMD_READ_12 0xa8
 #define GPCMD_READ_BUFFER_CAPACITY 0x5c
 #define GPCMD_READ_CDVD_CAPACITY 0x25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_CD 0xbe
 #define GPCMD_READ_CD_MSF 0xb9
 #define GPCMD_READ_DISC_INFO 0x51
 #define GPCMD_READ_DVD_STRUCTURE 0xad
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_FORMAT_CAPACITIES 0x23
 #define GPCMD_READ_HEADER 0x44
 #define GPCMD_READ_TRACK_RZONE_INFO 0x52
 #define GPCMD_READ_SUBCHANNEL 0x42
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_READ_TOC_PMA_ATIP 0x43
 #define GPCMD_REPAIR_RZONE_TRACK 0x58
 #define GPCMD_REPORT_KEY 0xa4
 #define GPCMD_REQUEST_SENSE 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_RESERVE_RZONE_TRACK 0x53
 #define GPCMD_SEND_CUE_SHEET 0x5d
 #define GPCMD_SCAN 0xba
 #define GPCMD_SEEK 0x2b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_SEND_DVD_STRUCTURE 0xbf
 #define GPCMD_SEND_EVENT 0xa2
 #define GPCMD_SEND_KEY 0xa3
 #define GPCMD_SEND_OPC 0x54
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_SET_READ_AHEAD 0xa7
 #define GPCMD_SET_STREAMING 0xb6
 #define GPCMD_START_STOP_UNIT 0x1b
 #define GPCMD_STOP_PLAY_SCAN 0x4e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_TEST_UNIT_READY 0x00
 #define GPCMD_VERIFY_10 0x2f
 #define GPCMD_WRITE_10 0x2a
 #define GPCMD_WRITE_AND_VERIFY_10 0x2e
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPCMD_SET_SPEED 0xbb
-
 #define GPCMD_PLAYAUDIO_TI 0x48
-
 #define GPCMD_GET_MEDIA_STATUS 0xda
-
 #define GPMODE_VENDOR_PAGE 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPMODE_R_W_ERROR_PAGE 0x01
 #define GPMODE_WRITE_PARMS_PAGE 0x05
 #define GPMODE_WCACHING_PAGE 0x08
 #define GPMODE_AUDIO_CTL_PAGE 0x0e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPMODE_POWER_PAGE 0x1a
 #define GPMODE_FAULT_FAIL_PAGE 0x1c
 #define GPMODE_TO_PROTECT_PAGE 0x1d
 #define GPMODE_CAPABILITIES_PAGE 0x2a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GPMODE_ALL_PAGES 0x3f
-
 #define GPMODE_CDROM_PAGE 0x0d
-
 #define DVD_STRUCT_PHYSICAL 0x00
 #define DVD_STRUCT_COPYRIGHT 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_STRUCT_DISCKEY 0x02
 #define DVD_STRUCT_BCA 0x03
 #define DVD_STRUCT_MANUFACT 0x04
-
 struct dvd_layer {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 book_version : 4;
  __u8 book_type : 4;
  __u8 min_rate : 4;
  __u8 disc_size : 4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 layer_type : 4;
  __u8 track_path : 1;
  __u8 nlayers : 2;
  __u8 track_density : 4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 linear_density : 4;
  __u8 bca : 1;
  __u32 start_sector;
  __u32 end_sector;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 end_sector_l0;
 };
-
 #define DVD_LAYERS 4
-
 struct dvd_physical {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 type;
  __u8 layer_num;
  struct dvd_layer layer[DVD_LAYERS];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_copyright {
  __u8 type;
-
  __u8 layer_num;
  __u8 cpst;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 rmi;
 };
-
 struct dvd_disckey {
  __u8 type;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned agid : 2;
  __u8 value[2048];
 };
-
 struct dvd_bca {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 type;
-
  int len;
  __u8 value[188];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_manufact {
  __u8 type;
-
  __u8 layer_num;
  int len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 value[2048];
 };
-
 typedef union {
  __u8 type;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct dvd_physical physical;
  struct dvd_copyright copyright;
  struct dvd_disckey disckey;
  struct dvd_bca bca;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct dvd_manufact manufact;
 } dvd_struct;
-
 #define DVD_LU_SEND_AGID 0
 #define DVD_HOST_SEND_CHALLENGE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_LU_SEND_KEY1 2
 #define DVD_LU_SEND_CHALLENGE 3
 #define DVD_HOST_SEND_KEY2 4
-
 #define DVD_AUTH_ESTABLISHED 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_AUTH_FAILURE 6
-
 #define DVD_LU_SEND_TITLE_KEY 7
 #define DVD_LU_SEND_ASF 8
 #define DVD_INVALIDATE_AGID 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_LU_SEND_RPC_STATE 10
 #define DVD_HOST_SEND_RPC_STATE 11
-
 typedef __u8 dvd_key[5];
 typedef __u8 dvd_challenge[10];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_lu_send_agid {
  __u8 type;
  unsigned agid : 2;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_host_send_challenge {
  __u8 type;
  unsigned agid : 2;
-
  dvd_challenge chal;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct dvd_send_key {
  __u8 type;
  unsigned agid : 2;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  dvd_key key;
 };
-
 struct dvd_lu_send_challenge {
  __u8 type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned agid : 2;
-
  dvd_challenge chal;
 };
-
 #define DVD_CPM_NO_COPYRIGHT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_CPM_COPYRIGHTED 1
-
 #define DVD_CP_SEC_NONE 0
 #define DVD_CP_SEC_EXIST 1
-
 #define DVD_CGMS_UNRESTRICTED 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DVD_CGMS_SINGLE 2
 #define DVD_CGMS_RESTRICTED 3
-
 struct dvd_lu_send_title_key {
  __u8 type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned agid : 2;
-
  dvd_key title_key;
  int lba;
  unsigned cpm : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned cp_sec : 1;
  unsigned cgms : 2;
 };
-
 struct dvd_lu_send_asf {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 type;
  unsigned agid : 2;
-
  unsigned asf : 1;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_host_send_rpcstate {
  __u8 type;
  __u8 pdrc;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dvd_lu_send_rpcstate {
  __u8 type : 2;
  __u8 vra : 3;
  __u8 ucca : 3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 region_mask;
  __u8 rpc_scheme;
 };
-
 typedef union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 type;
-
  struct dvd_lu_send_agid lsa;
  struct dvd_host_send_challenge hsc;
  struct dvd_send_key lsk;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct dvd_lu_send_challenge lsc;
  struct dvd_send_key hsk;
  struct dvd_lu_send_title_key lstk;
  struct dvd_lu_send_asf lsasf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct dvd_host_send_rpcstate hrpcs;
  struct dvd_lu_send_rpcstate lrpcs;
 } dvd_authinfo;
-
 struct request_sense {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __BIG_ENDIAN_BITFIELD
  __u8 valid : 1;
  __u8 error_code : 7;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 error_code : 7;
  __u8 valid : 1;
 #endif
  __u8 segment_number;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __BIG_ENDIAN_BITFIELD
  __u8 reserved1 : 2;
  __u8 ili : 1;
  __u8 reserved2 : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 sense_key : 4;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
  __u8 sense_key : 4;
  __u8 reserved2 : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ili : 1;
  __u8 reserved1 : 2;
 #endif
  __u8 information[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 add_sense_len;
  __u8 command_info[4];
  __u8 asc;
  __u8 ascq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 fruc;
  __u8 sks[3];
  __u8 asb[46];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDF_RWRT 0x0020  
 #define CDF_HWDM 0x0024  
 #define CDF_MRW 0x0028
-
 #define CDM_MRW_NOTMRW 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDM_MRW_BGFORMAT_INACTIVE 1
 #define CDM_MRW_BGFORMAT_ACTIVE 2
 #define CDM_MRW_BGFORMAT_COMPLETE 3
-
 #define MRW_LBA_DMA 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MRW_LBA_GAA 1
-
 #define MRW_MODE_PC_PRE1 0x2c
 #define MRW_MODE_PC 0x03
-
 struct mrw_feature_desc {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 feature_code;
 #ifdef __BIG_ENDIAN_BITFIELD
  __u8 reserved1 : 2;
  __u8 feature_version : 4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 persistent : 1;
  __u8 curr : 1;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
  __u8 curr : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 persistent : 1;
  __u8 feature_version : 4;
  __u8 reserved1 : 2;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 add_len;
 #ifdef __BIG_ENDIAN_BITFIELD
  __u8 reserved2 : 7;
  __u8 write : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
  __u8 write : 1;
  __u8 reserved2 : 7;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved3;
  __u8 reserved4;
  __u8 reserved5;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rwrt_feature_desc {
  __u16 feature_code;
 #ifdef __BIG_ENDIAN_BITFIELD
  __u8 reserved1 : 2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 feature_version : 4;
  __u8 persistent : 1;
  __u8 curr : 1;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 curr : 1;
  __u8 persistent : 1;
  __u8 feature_version : 4;
  __u8 reserved1 : 2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __u8 add_len;
  __u32 last_lba;
  __u32 block_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 blocking;
 #ifdef __BIG_ENDIAN_BITFIELD
  __u8 reserved2 : 7;
  __u8 page_present : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
  __u8 page_present : 1;
  __u8 reserved2 : 7;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved3;
 };
-
 typedef struct {
  __u16 disc_information_length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __BIG_ENDIAN_BITFIELD
  __u8 reserved1 : 3;
  __u8 erasable : 1;
  __u8 border_status : 2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 disc_status : 2;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
  __u8 disc_status : 2;
  __u8 border_status : 2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 erasable : 1;
  __u8 reserved1 : 3;
 #else
 #error "Please fix <asm/byteorder.h>"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __u8 n_first_track;
  __u8 n_sessions_lsb;
  __u8 first_track_lsb;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 last_track_lsb;
 #ifdef __BIG_ENDIAN_BITFIELD
  __u8 did_v : 1;
  __u8 dbc_v : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 uru : 1;
  __u8 reserved2 : 2;
  __u8 dbit : 1;
  __u8 mrw_status : 2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
  __u8 mrw_status : 2;
  __u8 dbit : 1;
  __u8 reserved2 : 2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 uru : 1;
  __u8 dbc_v : 1;
  __u8 did_v : 1;
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 disc_type;
  __u8 n_sessions_msb;
  __u8 first_track_msb;
  __u8 last_track_msb;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 disc_id;
  __u32 lead_in;
  __u32 lead_out;
  __u8 disc_bar_code[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved3;
  __u8 n_opc;
 } disc_information;
-
 typedef struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 track_information_length;
  __u8 track_lsb;
  __u8 session_lsb;
  __u8 reserved1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __BIG_ENDIAN_BITFIELD
  __u8 reserved2 : 2;
  __u8 damage : 1;
  __u8 copy : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 track_mode : 4;
  __u8 rt : 1;
  __u8 blank : 1;
  __u8 packet : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 fp : 1;
  __u8 data_mode : 4;
  __u8 reserved3 : 6;
  __u8 lra_v : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 nwa_v : 1;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
  __u8 track_mode : 4;
  __u8 copy : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 damage : 1;
  __u8 reserved2 : 2;
  __u8 data_mode : 4;
  __u8 fp : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 packet : 1;
  __u8 blank : 1;
  __u8 rt : 1;
  __u8 nwa_v : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 lra_v : 1;
  __u8 reserved3 : 6;
 #endif
  __u32 track_start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 next_writable;
  __u32 free_blocks;
  __u32 fixed_packet_size;
  __u32 track_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 last_rec_address;
 } track_information;
-
 struct feature_header {
  __u32 data_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved1;
  __u8 reserved2;
  __u16 curr_profile;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mode_page_header {
  __u16 mode_data_length;
  __u8 medium_type;
  __u8 reserved1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved2;
  __u8 reserved3;
  __u16 desc_length;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/circ_buf.h b/libc/kernel/common/linux/circ_buf.h
index 438250c..262e163 100644
--- a/libc/kernel/common/linux/circ_buf.h
+++ b/libc/kernel/common/linux/circ_buf.h
@@ -7,23 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_CIRC_BUF_H
 #define _LINUX_CIRC_BUF_H 1
-
 struct circ_buf {
  char *buf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int head;
  int tail;
 };
-
 #define CIRC_CNT(head,tail,size) (((head) - (tail)) & ((size)-1))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CIRC_SPACE(head,tail,size) CIRC_CNT((tail),((head)+1),(size))
-
 #define CIRC_CNT_TO_END(head,tail,size)   ({int end = (size) - (tail);   int n = ((head) + end) & ((size)-1);   n < end ? n : end;})
-
 #define CIRC_SPACE_TO_END(head,tail,size)   ({int end = (size) - 1 - (head);   int n = (end + (tail)) & ((size)-1);   n <= end ? n : end+1;})
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/clk.h b/libc/kernel/common/linux/clk.h
index 2b8f436..f9e4be1 100644
--- a/libc/kernel/common/linux/clk.h
+++ b/libc/kernel/common/linux/clk.h
@@ -7,17 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_CLK_H
 #define __LINUX_CLK_H
-
 struct device;
-
 struct clk;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct clk *clk_get(struct device *dev, const char *id);
-
 struct clk *clk_get_parent(struct clk *clk);
-
 #endif
diff --git a/libc/kernel/common/linux/coda.h b/libc/kernel/common/linux/coda.h
index e7e89f9..ff109e8 100644
--- a/libc/kernel/common/linux/coda.h
+++ b/libc/kernel/common/linux/coda.h
@@ -7,588 +7,620 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _CODA_HEADER_
 #define _CODA_HEADER_
-
 #if defined(__NetBSD__) || (defined(DJGPP) || defined(__CYGWIN32__)) && !defined(KERNEL)
 #include <sys/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef CODA_MAXSYMLINKS
 #define CODA_MAXSYMLINKS 10
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if defined(DJGPP) || defined(__CYGWIN32__)
 #ifdef KERNEL
 typedef unsigned long u_long;
 typedef unsigned int u_int;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short u_short;
 typedef u_long ino_t;
 typedef u_long dev_t;
 typedef void * caddr_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef DOS
 typedef unsigned __int64 u_quad_t;
 #else
 typedef unsigned long long u_quad_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define inline
-
 struct timespec {
  long ts_sec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ts_nsec;
 };
 #else
 #include <sys/time.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned long long u_quad_t;
 #endif
 #endif
-
 #ifdef __linux__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/time.h>
 #define cdev_t u_quad_t
 #if !defined(_UQUAD_T_) && (!defined(__GLIBC__) || __GLIBC__ < 2)
 #define _UQUAD_T_ 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned long long u_quad_t;
 #endif
 #else
 #define cdev_t dev_t
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifdef __CYGWIN32__
 struct timespec {
  time_t tv_sec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long tv_nsec;
 };
 #endif
-
 #ifndef __BIT_TYPES_DEFINED__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __BIT_TYPES_DEFINED__
 typedef signed char int8_t;
 typedef unsigned char u_int8_t;
 typedef short int16_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short u_int16_t;
 typedef int int32_t;
 typedef unsigned int u_int32_t;
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_MAXNAMLEN 255
 #define CODA_MAXPATHLEN 1024
 #define CODA_MAXSYMLINK 10
-
 #define C_O_READ 0x001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define C_O_WRITE 0x002
 #define C_O_TRUNC 0x010
 #define C_O_EXCL 0x100
 #define C_O_CREAT 0x200
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define C_M_READ 00400
 #define C_M_WRITE 00200
-
 #define C_A_C_OK 8  
 #define C_A_R_OK 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define C_A_W_OK 2  
 #define C_A_X_OK 1  
 #define C_A_F_OK 0  
-
 #ifndef _VENUS_DIRENT_T_
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _VENUS_DIRENT_T_ 1
 struct venus_dirent {
  u_int32_t d_fileno;
  u_int16_t d_reclen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t d_type;
  u_int8_t d_namlen;
  char d_name[CODA_MAXNAMLEN + 1];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef DIRSIZ
 #define DIRSIZ(dp) ((sizeof (struct venus_dirent) - (CODA_MAXNAMLEN+1)) +   (((dp)->d_namlen+1 + 3) &~ 3))
-
 #define CDT_UNKNOWN 0
 #define CDT_FIFO 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDT_CHR 2
 #define CDT_DIR 4
 #define CDT_BLK 6
 #define CDT_REG 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDT_LNK 10
 #define CDT_SOCK 12
 #define CDT_WHT 14
-
 #define IFTOCDT(mode) (((mode) & 0170000) >> 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDTTOIF(dirtype) ((dirtype) << 12)
-
 #endif
-
 #ifndef _VUID_T_
 #define _VUID_T_
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef u_int32_t vuid_t;
 typedef u_int32_t vgid_t;
 #endif
-
 struct CodaFid {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t opaque[4];
 };
-
 #define coda_f2i(fid)  (fid ? (fid->opaque[3] ^ (fid->opaque[2]<<10) ^ (fid->opaque[1]<<20) ^ fid->opaque[0]) : 0)
-
 #ifndef _VENUS_VATTR_T_
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _VENUS_VATTR_T_
-
 enum coda_vtype { C_VNON, C_VREG, C_VDIR, C_VBLK, C_VCHR, C_VLNK, C_VSOCK, C_VFIFO, C_VBAD };
-
 struct coda_vattr {
  long va_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_short va_mode;
  short va_nlink;
  vuid_t va_uid;
  vgid_t va_gid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long va_fileid;
  u_quad_t va_size;
  long va_blocksize;
  struct timespec va_atime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct timespec va_mtime;
  struct timespec va_ctime;
  u_long va_gen;
  u_long va_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cdev_t va_rdev;
  u_quad_t va_bytes;
  u_quad_t va_filerev;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 struct coda_statfs {
  int32_t f_blocks;
  int32_t f_bfree;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int32_t f_bavail;
  int32_t f_files;
  int32_t f_ffree;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_ROOT 2
 #define CODA_OPEN_BY_FD 3
 #define CODA_OPEN 4
 #define CODA_CLOSE 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_IOCTL 6
 #define CODA_GETATTR 7
 #define CODA_SETATTR 8
 #define CODA_ACCESS 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_LOOKUP 10
 #define CODA_CREATE 11
 #define CODA_REMOVE 12
 #define CODA_LINK 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_RENAME 14
 #define CODA_MKDIR 15
 #define CODA_RMDIR 16
 #define CODA_SYMLINK 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_READLINK 19
 #define CODA_FSYNC 20
 #define CODA_VGET 22
 #define CODA_SIGNAL 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_REPLACE 24  
 #define CODA_FLUSH 25  
 #define CODA_PURGEUSER 26  
 #define CODA_ZAPFILE 27  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_ZAPDIR 28  
 #define CODA_PURGEFID 30  
 #define CODA_OPEN_BY_PATH 31
 #define CODA_RESOLVE 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_REINTEGRATE 33
 #define CODA_STATFS 34
 #define CODA_STORE 35
 #define CODA_RELEASE 36
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CODA_NCALLS 37
-
 #define DOWNCALL(opcode) (opcode >= CODA_REPLACE && opcode <= CODA_PURGEFID)
-
 #define VC_MAXDATASIZE 8192
 #define VC_MAXMSGSIZE sizeof(union inputArgs)+sizeof(union outputArgs) +  VC_MAXDATASIZE 
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CIOC_KERNEL_VERSION _IOWR('c', 10, size_t)
-
 #define CODA_KERNEL_VERSION 3  
-
 struct coda_in_hdr {
  u_int32_t opcode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t unique;
  pid_t pid;
  pid_t pgid;
  vuid_t uid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_out_hdr {
  u_int32_t opcode;
  u_int32_t unique;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t result;
 };
-
 struct coda_root_out {
  struct coda_out_hdr oh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct CodaFid VFid;
 };
-
 struct coda_root_in {
  struct coda_in_hdr in;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_open_in {
  struct coda_in_hdr ih;
  struct CodaFid VFid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int flags;
 };
-
 struct coda_open_out {
  struct coda_out_hdr oh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cdev_t dev;
  ino_t inode;
 };
-
 struct coda_store_in {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_in_hdr ih;
  struct CodaFid VFid;
  int flags;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_store_out {
  struct coda_out_hdr out;
 };
-
 struct coda_release_in {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_in_hdr ih;
  struct CodaFid VFid;
  int flags;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_release_out {
  struct coda_out_hdr out;
 };
-
 struct coda_close_in {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_in_hdr ih;
  struct CodaFid VFid;
  int flags;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_close_out {
  struct coda_out_hdr out;
 };
-
 struct coda_ioctl_in {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_in_hdr ih;
  struct CodaFid VFid;
  int cmd;
  int len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int rwflag;
  char *data;
 };
-
 struct coda_ioctl_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr oh;
  int len;
  caddr_t data;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_getattr_in {
  struct coda_in_hdr ih;
  struct CodaFid VFid;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_getattr_out {
  struct coda_out_hdr oh;
  struct coda_vattr attr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_setattr_in {
  struct coda_in_hdr ih;
  struct CodaFid VFid;
  struct coda_vattr attr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_setattr_out {
  struct coda_out_hdr out;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_access_in {
  struct coda_in_hdr ih;
  struct CodaFid VFid;
  int flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_access_out {
  struct coda_out_hdr out;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLU_CASE_SENSITIVE 0x01
 #define CLU_CASE_INSENSITIVE 0x02
-
 struct coda_lookup_in {
  struct coda_in_hdr ih;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct CodaFid VFid;
  int name;
  int flags;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_lookup_out {
  struct coda_out_hdr oh;
  struct CodaFid VFid;
  int vtype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_create_in {
  struct coda_in_hdr ih;
  struct CodaFid VFid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_vattr attr;
  int excl;
  int mode;
  int name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_create_out {
  struct coda_out_hdr oh;
  struct CodaFid VFid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_vattr attr;
 };
-
 struct coda_remove_in {
  struct coda_in_hdr ih;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct CodaFid VFid;
  int name;
 };
-
 struct coda_remove_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr out;
 };
-
 struct coda_link_in {
  struct coda_in_hdr ih;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct CodaFid sourceFid;
  struct CodaFid destFid;
  int tname;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_link_out {
  struct coda_out_hdr out;
 };
-
 struct coda_rename_in {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_in_hdr ih;
  struct CodaFid sourceFid;
  int srcname;
  struct CodaFid destFid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int destname;
 };
-
 struct coda_rename_out {
  struct coda_out_hdr out;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_mkdir_in {
  struct coda_in_hdr ih;
  struct CodaFid VFid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_vattr attr;
  int name;
 };
-
 struct coda_mkdir_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr oh;
  struct CodaFid VFid;
  struct coda_vattr attr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_rmdir_in {
  struct coda_in_hdr ih;
  struct CodaFid VFid;
  int name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_rmdir_out {
  struct coda_out_hdr out;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_symlink_in {
  struct coda_in_hdr ih;
  struct CodaFid VFid;
  int srcname;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_vattr attr;
  int tname;
 };
-
 struct coda_symlink_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr out;
 };
-
 struct coda_readlink_in {
  struct coda_in_hdr ih;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct CodaFid VFid;
 };
-
 struct coda_readlink_out {
  struct coda_out_hdr oh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int count;
  caddr_t data;
 };
-
 struct coda_fsync_in {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_in_hdr ih;
  struct CodaFid VFid;
 };
-
 struct coda_fsync_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr out;
 };
-
 struct coda_vget_in {
  struct coda_in_hdr ih;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct CodaFid VFid;
 };
-
 struct coda_vget_out {
  struct coda_out_hdr oh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct CodaFid VFid;
  int vtype;
 };
-
 struct coda_purgeuser_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr oh;
  vuid_t uid;
 };
-
 struct coda_zapfile_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr oh;
  struct CodaFid CodaFid;
 };
-
 struct coda_zapdir_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr oh;
  struct CodaFid CodaFid;
 };
-
 struct coda_purgefid_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr oh;
  struct CodaFid CodaFid;
 };
-
 struct coda_replace_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr oh;
  struct CodaFid NewFid;
  struct CodaFid OldFid;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct coda_open_by_fd_in {
  struct coda_in_hdr ih;
  struct CodaFid VFid;
  int flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_open_by_fd_out {
  struct coda_out_hdr oh;
  int fd;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_open_by_path_in {
  struct coda_in_hdr ih;
  struct CodaFid VFid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int flags;
 };
-
 struct coda_open_by_path_out {
  struct coda_out_hdr oh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int path;
 };
-
 struct coda_statfs_in {
  struct coda_in_hdr in;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct coda_statfs_out {
  struct coda_out_hdr oh;
  struct coda_statfs stat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define CODA_NOCACHE 0x80000000
-
 union inputArgs {
  struct coda_in_hdr ih;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_open_in coda_open;
  struct coda_store_in coda_store;
  struct coda_release_in coda_release;
  struct coda_close_in coda_close;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_ioctl_in coda_ioctl;
  struct coda_getattr_in coda_getattr;
  struct coda_setattr_in coda_setattr;
  struct coda_access_in coda_access;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_lookup_in coda_lookup;
  struct coda_create_in coda_create;
  struct coda_remove_in coda_remove;
  struct coda_link_in coda_link;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_rename_in coda_rename;
  struct coda_mkdir_in coda_mkdir;
  struct coda_rmdir_in coda_rmdir;
  struct coda_symlink_in coda_symlink;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_readlink_in coda_readlink;
  struct coda_fsync_in coda_fsync;
  struct coda_vget_in coda_vget;
  struct coda_open_by_fd_in coda_open_by_fd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_open_by_path_in coda_open_by_path;
  struct coda_statfs_in coda_statfs;
 };
-
 union outputArgs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_out_hdr oh;
  struct coda_root_out coda_root;
  struct coda_open_out coda_open;
  struct coda_ioctl_out coda_ioctl;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_getattr_out coda_getattr;
  struct coda_lookup_out coda_lookup;
  struct coda_create_out coda_create;
  struct coda_mkdir_out coda_mkdir;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_readlink_out coda_readlink;
  struct coda_vget_out coda_vget;
  struct coda_purgeuser_out coda_purgeuser;
  struct coda_zapfile_out coda_zapfile;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_zapdir_out coda_zapdir;
  struct coda_purgefid_out coda_purgefid;
  struct coda_replace_out coda_replace;
  struct coda_open_by_fd_out coda_open_by_fd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_open_by_path_out coda_open_by_path;
  struct coda_statfs_out coda_statfs;
 };
-
 union coda_downcalls {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_purgeuser_out purgeuser;
  struct coda_zapfile_out zapfile;
  struct coda_zapdir_out zapdir;
  struct coda_purgefid_out purgefid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct coda_replace_out replace;
 };
-
 #define PIOCPARM_MASK 0x0000ffff
 struct ViceIoctl {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __user *in;
  void __user *out;
  u_short in_size;
  u_short out_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct PioctlData {
  const char __user *path;
  int follow;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ViceIoctl vi;
 };
-
 #define CODA_CONTROL ".CONTROL"
 #define CODA_CONTROLLEN 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_INO -1
-
 #define CODA_MOUNT_VERSION 1
-
 struct coda_mount_data {
  int version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int fd;
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/coda_fs_i.h b/libc/kernel/common/linux/coda_fs_i.h
index 28b0e59..e80c819 100644
--- a/libc/kernel/common/linux/coda_fs_i.h
+++ b/libc/kernel/common/linux/coda_fs_i.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_CODA_FS_I
 #define _LINUX_CODA_FS_I
-
 #endif
diff --git a/libc/kernel/common/linux/compat.h b/libc/kernel/common/linux/compat.h
index d30b550..86da73e 100644
--- a/libc/kernel/common/linux/compat.h
+++ b/libc/kernel/common/linux/compat.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_COMPAT_H
 #define _LINUX_COMPAT_H
-
 #endif
diff --git a/libc/kernel/common/linux/compiler-gcc.h b/libc/kernel/common/linux/compiler-gcc.h
index 0dd4a62..1064868 100644
--- a/libc/kernel/common/linux/compiler-gcc.h
+++ b/libc/kernel/common/linux/compiler-gcc.h
@@ -7,16 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #define barrier() __asm__ __volatile__("": : :"memory")
-
 #define RELOC_HIDE(ptr, off)   ({ unsigned long __ptr;   __asm__ ("" : "=r"(__ptr) : "0"(ptr));   (typeof(ptr)) (__ptr + (off)); })
-
 #define inline inline __attribute__((always_inline))
 #define __inline__ __inline__ __attribute__((always_inline))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __inline __inline __attribute__((always_inline))
 #define __deprecated __attribute__((deprecated))
 #define noinline __attribute__((noinline))
 #define __attribute_pure__ __attribute__((pure))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __attribute_const__ __attribute__((__const__))
diff --git a/libc/kernel/common/linux/compiler.h b/libc/kernel/common/linux/compiler.h
index 4055e33..9e6dc4b 100644
--- a/libc/kernel/common/linux/compiler.h
+++ b/libc/kernel/common/linux/compiler.h
@@ -7,32 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_COMPILER_H
 #define __LINUX_COMPILER_H
-
 #ifndef __ASSEMBLY__
-
 #define __user
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __kernel
 #define __safe
 #define __force
 #define __nocast
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __iomem
 #define __chk_user_ptr(x) (void)0
 #define __chk_io_ptr(x) (void)0
 #define __builtin_warning(x, y...) (1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __acquires(x)
 #define __releases(x)
 #define __acquire(x) (void)0
 #define __release(x) (void)0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cond_lock(x) (x)
-
 #endif
-
 #ifndef __attribute_const__
 #define __attribute_const__  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #endif
diff --git a/libc/kernel/common/linux/completion.h b/libc/kernel/common/linux/completion.h
index ee18211..d67d10a 100644
--- a/libc/kernel/common/linux/completion.h
+++ b/libc/kernel/common/linux/completion.h
@@ -7,26 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_COMPLETION_H
 #define __LINUX_COMPLETION_H
-
 #include <linux/wait.h>
-
 struct completion {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int done;
  wait_queue_head_t wait;
 };
-
 #define COMPLETION_INITIALIZER(work)   { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COMPLETION_INITIALIZER_ONSTACK(work)   ({ init_completion(&work); work; })
-
 #define DECLARE_COMPLETION(work)   struct completion work = COMPLETION_INITIALIZER(work)
-
 #define DECLARE_COMPLETION_ONSTACK(work) DECLARE_COMPLETION(work)
-
 #define INIT_COMPLETION(x) ((x).done = 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/config.h b/libc/kernel/common/linux/config.h
index 7aa1056..d729251 100644
--- a/libc/kernel/common/linux/config.h
+++ b/libc/kernel/common/linux/config.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_CONFIG_H
 #define _LINUX_CONFIG_H
-
 #include <linux/autoconf.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/console_struct.h b/libc/kernel/common/linux/console_struct.h
index 50e4cbe..2649c7b 100644
--- a/libc/kernel/common/linux/console_struct.h
+++ b/libc/kernel/common/linux/console_struct.h
@@ -7,115 +7,128 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <linux/wait.h>
 #include <linux/vt.h>
-
 struct vt_struct;
-
 #define NPAR 16
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vc_data {
  unsigned short vc_num;
  unsigned int vc_cols;
  unsigned int vc_rows;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int vc_size_row;
  unsigned int vc_scan_lines;
  unsigned long vc_origin;
  unsigned long vc_scr_end;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long vc_visible_origin;
  unsigned int vc_top, vc_bottom;
  const struct consw *vc_sw;
  unsigned short *vc_screenbuf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int vc_screenbuf_size;
  unsigned char vc_mode;
-
  unsigned char vc_attr;
  unsigned char vc_def_color;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char vc_color;
  unsigned char vc_s_color;
  unsigned char vc_ulcolor;
  unsigned char vc_halfcolor;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int vc_cursor_type;
  unsigned short vc_complement_mask;
  unsigned short vc_s_complement_mask;
  unsigned int vc_x, vc_y;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int vc_saved_x, vc_saved_y;
  unsigned long vc_pos;
-
  unsigned short vc_hi_font_mask;
  struct console_font vc_font;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short vc_video_erase_char;
-
  unsigned int vc_state;
  unsigned int vc_npar,vc_par[NPAR];
  struct tty_struct *vc_tty;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vt_mode vt_mode;
  int vt_pid;
  int vt_newvt;
  wait_queue_head_t paste_wait;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int vc_charset : 1;
  unsigned int vc_s_charset : 1;
  unsigned int vc_disp_ctrl : 1;
  unsigned int vc_toggle_meta : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int vc_decscnm : 1;
  unsigned int vc_decom : 1;
  unsigned int vc_decawm : 1;
  unsigned int vc_deccm : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int vc_decim : 1;
  unsigned int vc_deccolm : 1;
-
  unsigned int vc_intensity : 2;
  unsigned int vc_underline : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int vc_blink : 1;
  unsigned int vc_reverse : 1;
  unsigned int vc_s_intensity : 2;
  unsigned int vc_s_underline : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int vc_s_blink : 1;
  unsigned int vc_s_reverse : 1;
-
  unsigned int vc_ques : 1;
  unsigned int vc_need_wrap : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int vc_can_do_color : 1;
  unsigned int vc_report_mouse : 2;
  unsigned int vc_kmalloced : 1;
  unsigned char vc_utf : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char vc_utf_count;
  int vc_utf_char;
  unsigned int vc_tab_stop[8];
  unsigned char vc_palette[16*3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short * vc_translate;
  unsigned char vc_G0_charset;
  unsigned char vc_G1_charset;
  unsigned char vc_saved_G0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char vc_saved_G1;
  unsigned int vc_bell_pitch;
  unsigned int vc_bell_duration;
  struct vc_data **vc_display_fg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long vc_uni_pagedir;
  unsigned long *vc_uni_pagedir_loc;
-
 };
-
 struct vc {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vc_data *d;
-
 };
-
 #define CUR_DEF 0
 #define CUR_NONE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CUR_UNDERLINE 2
 #define CUR_LOWER_THIRD 3
 #define CUR_LOWER_HALF 4
 #define CUR_TWO_THIRDS 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CUR_BLOCK 6
 #define CUR_HWMASK 0x0f
 #define CUR_SWMASK 0xfff0
-
 #define CUR_DEFAULT CUR_UNDERLINE
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CON_IS_VISIBLE(conp) (*conp->vc_display_fg == conp)
diff --git a/libc/kernel/common/linux/cpcap_audio.h b/libc/kernel/common/linux/cpcap_audio.h
index a59550f..df8e249 100644
--- a/libc/kernel/common/linux/cpcap_audio.h
+++ b/libc/kernel/common/linux/cpcap_audio.h
@@ -7,59 +7,57 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _CPCAP_AUDIO_H
 #define _CPCAP_AUDIO_H
-
 #include <linux/ioctl.h>
-
 #define CPCAP_AUDIO_MAGIC 'c'
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_AUDIO_OUT_SPEAKER 0
 #define CPCAP_AUDIO_OUT_HEADSET 1
 #define CPCAP_AUDIO_OUT_HEADSET_AND_SPEAKER 2
 #define CPCAP_AUDIO_OUT_STANDBY 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_AUDIO_OUT_ANLG_DOCK_HEADSET 4
 #define CPCAP_AUDIO_OUT_MAX 4
-
 struct cpcap_audio_stream {
  unsigned id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int on;
 };
-
 #define CPCAP_AUDIO_OUT_SET_OUTPUT _IOW(CPCAP_AUDIO_MAGIC, 0,   const struct cpcap_audio_stream *)
-
 #define CPCAP_AUDIO_OUT_VOL_MIN 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_AUDIO_OUT_VOL_MAX 15
-
 #define CPCAP_AUDIO_OUT_SET_VOLUME _IOW(CPCAP_AUDIO_MAGIC, 1, unsigned int)
-
 #define CPCAP_AUDIO_OUT_GET_OUTPUT   _IOR(CPCAP_AUDIO_MAGIC, 2, struct cpcap_audio_stream *)
 #define CPCAP_AUDIO_OUT_GET_VOLUME   _IOR(CPCAP_AUDIO_MAGIC, 3, unsigned int *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_AUDIO_IN_MIC1 0
 #define CPCAP_AUDIO_IN_MIC2 1
 #define CPCAP_AUDIO_IN_STANDBY 2
 #define CPCAP_AUDIO_IN_MAX 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_AUDIO_IN_SET_INPUT _IOW(CPCAP_AUDIO_MAGIC, 4,   const struct cpcap_audio_stream *)
-
 #define CPCAP_AUDIO_IN_GET_INPUT _IOR(CPCAP_AUDIO_MAGIC, 5,   struct cpcap_audio_stream *)
-
 #define CPCAP_AUDIO_IN_VOL_MIN 0
 #define CPCAP_AUDIO_IN_VOL_MAX 31
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_AUDIO_IN_SET_VOLUME _IOW(CPCAP_AUDIO_MAGIC, 6, unsigned int)
-
 #define CPCAP_AUDIO_IN_GET_VOLUME _IOR(CPCAP_AUDIO_MAGIC, 7, unsigned int *)
-
 #define CPCAP_AUDIO_OUT_GET_RATE _IOR(CPCAP_AUDIO_MAGIC, 8, unsigned int *)
 #define CPCAP_AUDIO_OUT_SET_RATE _IOW(CPCAP_AUDIO_MAGIC, 9, unsigned int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_AUDIO_IN_GET_RATE _IOR(CPCAP_AUDIO_MAGIC, 10, unsigned int *)
 #define CPCAP_AUDIO_IN_SET_RATE _IOW(CPCAP_AUDIO_MAGIC, 11, unsigned int)
-
 #define CPCAP_AUDIO_SET_BLUETOOTH_BYPASS _IOW(CPCAP_AUDIO_MAGIC, 12, unsigned int)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/cpu.h b/libc/kernel/common/linux/cpu.h
index f7e3889..e91515b 100644
--- a/libc/kernel/common/linux/cpu.h
+++ b/libc/kernel/common/linux/cpu.h
@@ -7,30 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_CPU_H_
 #define _LINUX_CPU_H_
-
 #include <linux/sysdev.h>
 #include <linux/node.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/compiler.h>
 #include <linux/cpumask.h>
 #include <asm/semaphore.h>
-
 struct cpu {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int node_id;
  int no_control;
  struct sys_device sysdev;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct notifier_block;
-
 #define lock_cpu_hotplug() do { } while (0)
 #define unlock_cpu_hotplug() do { } while (0)
 #define lock_cpu_hotplug_interruptible() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define hotcpu_notifier(fn, pri) do { } while (0)
 #define register_hotcpu_notifier(nb) do { } while (0)
 #define unregister_hotcpu_notifier(nb) do { } while (0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/cpumask.h b/libc/kernel/common/linux/cpumask.h
index 541940a..04cb839 100644
--- a/libc/kernel/common/linux/cpumask.h
+++ b/libc/kernel/common/linux/cpumask.h
@@ -7,81 +7,98 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_CPUMASK_H
 #define __LINUX_CPUMASK_H
-
 #include <linux/kernel.h>
 #include <linux/threads.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/bitmap.h>
-
 typedef struct { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;
-
 #define cpu_set(cpu, dst) __cpu_set((cpu), &(dst))
 #define cpu_clear(cpu, dst) __cpu_clear((cpu), &(dst))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpus_setall(dst) __cpus_setall(&(dst), NR_CPUS)
 #define cpus_clear(dst) __cpus_clear(&(dst), NR_CPUS)
 #define cpu_isset(cpu, cpumask) test_bit((cpu), (cpumask).bits)
 #define cpu_test_and_set(cpu, cpumask) __cpu_test_and_set((cpu), &(cpumask))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpus_and(dst, src1, src2) __cpus_and(&(dst), &(src1), &(src2), NR_CPUS)
 #define cpus_or(dst, src1, src2) __cpus_or(&(dst), &(src1), &(src2), NR_CPUS)
 #define cpus_xor(dst, src1, src2) __cpus_xor(&(dst), &(src1), &(src2), NR_CPUS)
 #define cpus_andnot(dst, src1, src2)   __cpus_andnot(&(dst), &(src1), &(src2), NR_CPUS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpus_complement(dst, src) __cpus_complement(&(dst), &(src), NR_CPUS)
 #define cpus_equal(src1, src2) __cpus_equal(&(src1), &(src2), NR_CPUS)
 #define cpus_intersects(src1, src2) __cpus_intersects(&(src1), &(src2), NR_CPUS)
 #define cpus_subset(src1, src2) __cpus_subset(&(src1), &(src2), NR_CPUS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpus_empty(src) __cpus_empty(&(src), NR_CPUS)
 #define cpus_full(cpumask) __cpus_full(&(cpumask), NR_CPUS)
 #define cpus_weight(cpumask) __cpus_weight(&(cpumask), NR_CPUS)
 #define cpus_shift_right(dst, src, n)   __cpus_shift_right(&(dst), &(src), (n), NR_CPUS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpus_shift_left(dst, src, n)   __cpus_shift_left(&(dst), &(src), (n), NR_CPUS)
 #define first_cpu(src) 0
 #define next_cpu(n, src) 1
 #define cpumask_of_cpu(cpu)  ({   typeof(_unused_cpumask_arg_) m;   if (sizeof(m) == sizeof(unsigned long)) {   m.bits[0] = 1UL<<(cpu);   } else {   cpus_clear(m);   cpu_set((cpu), m);   }   m;  })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPU_MASK_LAST_WORD BITMAP_LAST_WORD_MASK(NR_CPUS)
 #if NR_CPUS <= BITS_PER_LONG
 #define CPU_MASK_ALL  (cpumask_t) { {   [BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD  } }
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPU_MASK_ALL  (cpumask_t) { {   [0 ... BITS_TO_LONGS(NR_CPUS)-2] = ~0UL,   [BITS_TO_LONGS(NR_CPUS)-1] = CPU_MASK_LAST_WORD  } }
 #endif
 #define CPU_MASK_NONE  (cpumask_t) { {   [0 ... BITS_TO_LONGS(NR_CPUS)-1] = 0UL  } }
 #define CPU_MASK_CPU0  (cpumask_t) { {   [0] = 1UL  } }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpus_addr(src) ((src).bits)
 #define cpumask_scnprintf(buf, len, src)   __cpumask_scnprintf((buf), (len), &(src), NR_CPUS)
 #define cpumask_parse(ubuf, ulen, dst)   __cpumask_parse((ubuf), (ulen), &(dst), NR_CPUS)
 #define cpulist_scnprintf(buf, len, src)   __cpulist_scnprintf((buf), (len), &(src), NR_CPUS)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpulist_parse(buf, dst) __cpulist_parse((buf), &(dst), NR_CPUS)
 #define cpu_remap(oldbit, old, new)   __cpu_remap((oldbit), &(old), &(new), NR_CPUS)
 #define cpus_remap(dst, src, old, new)   __cpus_remap(&(dst), &(src), &(old), &(new), NR_CPUS)
 #if NR_CPUS > 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define for_each_cpu_mask(cpu, mask)   for ((cpu) = first_cpu(mask);   (cpu) < NR_CPUS;   (cpu) = next_cpu((cpu), (mask)))
 #else
 #define for_each_cpu_mask(cpu, mask)   for ((cpu) = 0; (cpu) < 1; (cpu)++, (void)mask)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if NR_CPUS > 1
 #define num_online_cpus() cpus_weight(cpu_online_map)
 #define num_possible_cpus() cpus_weight(cpu_possible_map)
 #define num_present_cpus() cpus_weight(cpu_present_map)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_online(cpu) cpu_isset((cpu), cpu_online_map)
 #define cpu_possible(cpu) cpu_isset((cpu), cpu_possible_map)
 #define cpu_present(cpu) cpu_isset((cpu), cpu_present_map)
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define num_online_cpus() 1
 #define num_possible_cpus() 1
 #define num_present_cpus() 1
 #define cpu_online(cpu) ((cpu) == 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_possible(cpu) ((cpu) == 0)
 #define cpu_present(cpu) ((cpu) == 0)
 #endif
-
 #define highest_possible_processor_id() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define any_online_cpu(mask) 0
-
 #define for_each_possible_cpu(cpu) for_each_cpu_mask((cpu), cpu_possible_map)
 #define for_each_online_cpu(cpu) for_each_cpu_mask((cpu), cpu_online_map)
 #define for_each_present_cpu(cpu) for_each_cpu_mask((cpu), cpu_present_map)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/ctype.h b/libc/kernel/common/linux/ctype.h
index 4644d12..ca4da81 100644
--- a/libc/kernel/common/linux/ctype.h
+++ b/libc/kernel/common/linux/ctype.h
@@ -7,37 +7,45 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_CTYPE_H
 #define _LINUX_CTYPE_H
-
 #define _U 0x01  
 #define _L 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _D 0x04  
 #define _C 0x08  
 #define _P 0x10  
 #define _S 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _X 0x40  
 #define _SP 0x80  
-
 #define __ismask(x) (_ctype[(int)(unsigned char)(x)])
-
 #define isalnum(c) ((__ismask(c)&(_U|_L|_D)) != 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define isalpha(c) ((__ismask(c)&(_U|_L)) != 0)
 #define iscntrl(c) ((__ismask(c)&(_C)) != 0)
 #define isdigit(c) ((__ismask(c)&(_D)) != 0)
 #define isgraph(c) ((__ismask(c)&(_P|_U|_L|_D)) != 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define islower(c) ((__ismask(c)&(_L)) != 0)
 #define isprint(c) ((__ismask(c)&(_P|_U|_L|_D|_SP)) != 0)
 #define ispunct(c) ((__ismask(c)&(_P)) != 0)
 #define isspace(c) ((__ismask(c)&(_S)) != 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define isupper(c) ((__ismask(c)&(_U)) != 0)
 #define isxdigit(c) ((__ismask(c)&(_D|_X)) != 0)
-
 #define isascii(c) (((unsigned char)(c))<=0x7f)
 #define toascii(c) (((unsigned char)(c))&0x7f)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define tolower(c) __tolower(c)
 #define toupper(c) __toupper(c)
 #endif
diff --git a/libc/kernel/common/linux/dccp.h b/libc/kernel/common/linux/dccp.h
index 5e33777..ab5965d 100644
--- a/libc/kernel/common/linux/dccp.h
+++ b/libc/kernel/common/linux/dccp.h
@@ -7,129 +7,164 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_DCCP_H
 #define _LINUX_DCCP_H
-
 #include <linux/types.h>
 #include <asm/byteorder.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dccp_hdr {
  __be16 dccph_sport,
  dccph_dport;
  __u8 dccph_doff;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __LITTLE_ENDIAN_BITFIELD
  __u8 dccph_cscov:4,
  dccph_ccval:4;
 #elif defined(__BIG_ENDIAN_BITFIELD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 dccph_ccval:4,
  dccph_cscov:4;
 #else
 #error "Adjust your <asm/byteorder.h> defines"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __u16 dccph_checksum;
 #ifdef __LITTLE_ENDIAN_BITFIELD
  __u8 dccph_x:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  dccph_type:4,
  dccph_reserved:3;
 #elif defined(__BIG_ENDIAN_BITFIELD)
  __u8 dccph_reserved:3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  dccph_type:4,
  dccph_x:1;
 #else
 #error "Adjust your <asm/byteorder.h> defines"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __u8 dccph_seq2;
  __be16 dccph_seq;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dccp_hdr_ext {
  __be32 dccph_seq_low;
 };
-
 struct dccp_hdr_request {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 dccph_req_service;
 };
-
 struct dccp_hdr_ack_bits {
  __be16 dccph_reserved1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 dccph_ack_nr_high;
  __be32 dccph_ack_nr_low;
 };
-
 struct dccp_hdr_response {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct dccp_hdr_ack_bits dccph_resp_ack;
  __be32 dccph_resp_service;
 };
-
 struct dccp_hdr_reset {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct dccp_hdr_ack_bits dccph_reset_ack;
  __u8 dccph_reset_code,
  dccph_reset_data[3];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum dccp_pkt_type {
  DCCP_PKT_REQUEST = 0,
  DCCP_PKT_RESPONSE,
  DCCP_PKT_DATA,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DCCP_PKT_ACK,
  DCCP_PKT_DATAACK,
  DCCP_PKT_CLOSEREQ,
  DCCP_PKT_CLOSE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DCCP_PKT_RESET,
  DCCP_PKT_SYNC,
  DCCP_PKT_SYNCACK,
  DCCP_PKT_INVALID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define DCCP_NR_PKT_TYPES DCCP_PKT_INVALID
-
+enum dccp_reset_codes {
+ DCCP_RESET_CODE_UNSPECIFIED = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ DCCP_RESET_CODE_CLOSED,
+ DCCP_RESET_CODE_ABORTED,
+ DCCP_RESET_CODE_NO_CONNECTION,
+ DCCP_RESET_CODE_PACKET_ERROR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ DCCP_RESET_CODE_OPTION_ERROR,
+ DCCP_RESET_CODE_MANDATORY_ERROR,
+ DCCP_RESET_CODE_CONNECTION_REFUSED,
+ DCCP_RESET_CODE_BAD_SERVICE_CODE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ DCCP_RESET_CODE_TOO_BUSY,
+ DCCP_RESET_CODE_BAD_INIT_COOKIE,
+ DCCP_RESET_CODE_AGGRESSION_PENALTY,
+};
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  DCCPO_PADDING = 0,
  DCCPO_MANDATORY = 1,
  DCCPO_MIN_RESERVED = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DCCPO_MAX_RESERVED = 31,
  DCCPO_CHANGE_L = 32,
  DCCPO_CONFIRM_L = 33,
  DCCPO_CHANGE_R = 34,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DCCPO_CONFIRM_R = 35,
  DCCPO_NDP_COUNT = 37,
  DCCPO_ACK_VECTOR_0 = 38,
  DCCPO_ACK_VECTOR_1 = 39,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DCCPO_TIMESTAMP = 41,
  DCCPO_TIMESTAMP_ECHO = 42,
  DCCPO_ELAPSED_TIME = 43,
  DCCPO_MAX = 45,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DCCPO_MIN_CCID_SPECIFIC = 128,
  DCCPO_MAX_CCID_SPECIFIC = 255,
 };
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DCCPF_RESERVED = 0,
  DCCPF_CCID = 1,
  DCCPF_SEQUENCE_WINDOW = 3,
  DCCPF_ACK_RATIO = 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DCCPF_SEND_ACK_VECTOR = 6,
  DCCPF_SEND_NDP_COUNT = 7,
-
  DCCPF_MIN_CCID_SPECIFIC = 128,
  DCCPF_MAX_CCID_SPECIFIC = 255,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct dccp_so_feat {
  __u8 dccpsf_feat;
  __u8 *dccpsf_val;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 dccpsf_len;
 };
-
 #define DCCP_SOCKOPT_PACKET_SIZE 1
 #define DCCP_SOCKOPT_SERVICE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DCCP_SOCKOPT_CHANGE_L 3
 #define DCCP_SOCKOPT_CHANGE_R 4
 #define DCCP_SOCKOPT_CCID_RX_INFO 128
 #define DCCP_SOCKOPT_CCID_TX_INFO 192
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DCCP_SERVICE_LIST_MAX_LEN 32
-
 #endif
diff --git a/libc/kernel/common/linux/debug_locks.h b/libc/kernel/common/linux/debug_locks.h
index 2d55fcd..a29acc3 100644
--- a/libc/kernel/common/linux/debug_locks.h
+++ b/libc/kernel/common/linux/debug_locks.h
@@ -7,20 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_DEBUG_LOCKING_H
 #define __LINUX_DEBUG_LOCKING_H
-
 struct task_struct;
-
 #define _RET_IP_ (unsigned long)__builtin_return_address(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _THIS_IP_ ({ __label__ __here; __here: (unsigned long)&&__here; })
-
 #define DEBUG_LOCKS_WARN_ON(c)  ({   int __ret = 0;     if (unlikely(c)) {   if (debug_locks_off())   WARN_ON(1);   __ret = 1;   }   __ret;  })
-
 #define SMP_DEBUG_LOCKS_WARN_ON(c) do { } while (0)
-
 #define locking_selftest() do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/delay.h b/libc/kernel/common/linux/delay.h
index e032b6f..a6ba250 100644
--- a/libc/kernel/common/linux/delay.h
+++ b/libc/kernel/common/linux/delay.h
@@ -7,23 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_DELAY_H
 #define _LINUX_DELAY_H
-
 #include <asm/delay.h>
-
 #ifndef MAX_UDELAY_MS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_UDELAY_MS 5
 #endif
-
 #ifndef mdelay
 #define mdelay(n) (  (__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) :   ({unsigned long __ms=(n); while (__ms--) udelay(1000);}))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef ndelay
 #define ndelay(x) udelay(((x)+999)/1000)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/device.h b/libc/kernel/common/linux/device.h
index 6419322..025b88e 100644
--- a/libc/kernel/common/linux/device.h
+++ b/libc/kernel/common/linux/device.h
@@ -7,216 +7,218 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _DEVICE_H_
 #define _DEVICE_H_
-
 #include <linux/ioport.h>
 #include <linux/kobject.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/klist.h>
 #include <linux/list.h>
 #include <linux/types.h>
 #include <linux/module.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/pm.h>
 #include <asm/semaphore.h>
 #include <asm/atomic.h>
-
 #define DEVICE_NAME_SIZE 50
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DEVICE_NAME_HALF __stringify(20)  
 #define DEVICE_ID_SIZE 32
 #define BUS_ID_SIZE KOBJ_NAME_LEN
-
 struct device;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct device_driver;
 struct class;
 struct class_device;
-
 struct bus_type {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char * name;
-
  struct subsystem subsys;
  struct kset drivers;
  struct kset devices;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct klist klist_devices;
  struct klist klist_drivers;
-
  struct bus_attribute * bus_attrs;
  struct device_attribute * dev_attrs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct driver_attribute * drv_attrs;
-
  int (*match)(struct device * dev, struct device_driver * drv);
  int (*uevent)(struct device *dev, char **envp,
  int num_envp, char *buffer, int buffer_size);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*probe)(struct device * dev);
  int (*remove)(struct device * dev);
  void (*shutdown)(struct device * dev);
  int (*suspend)(struct device * dev, pm_message_t state);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*resume)(struct device * dev);
 };
-
 struct device * bus_find_device(struct bus_type *bus, struct device *start,
  void *data, int (*match)(struct device *, void *));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct bus_attribute {
  struct attribute attr;
  ssize_t (*show)(struct bus_type *, char * buf);
  ssize_t (*store)(struct bus_type *, const char * buf, size_t count);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define BUS_ATTR(_name,_mode,_show,_store)  struct bus_attribute bus_attr_##_name = __ATTR(_name,_mode,_show,_store)
-
 struct device_driver {
  const char * name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct bus_type * bus;
-
  struct completion unloaded;
  struct kobject kobj;
  struct klist klist_devices;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct klist_node knode_bus;
-
  struct module * owner;
-
  int (*probe) (struct device * dev);
  int (*remove) (struct device * dev);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*shutdown) (struct device * dev);
  int (*suspend) (struct device * dev, pm_message_t state);
  int (*resume) (struct device * dev);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct driver_attribute {
  struct attribute attr;
  ssize_t (*show)(struct device_driver *, char * buf);
  ssize_t (*store)(struct device_driver *, const char * buf, size_t count);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define DRIVER_ATTR(_name,_mode,_show,_store)  struct driver_attribute driver_attr_##_name = __ATTR(_name,_mode,_show,_store)
-
 struct device * driver_find_device(struct device_driver *drv,
  struct device *start, void *data,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*match)(struct device *, void *));
-
 struct class {
  const char * name;
  struct module * owner;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct subsystem subsys;
  struct list_head children;
  struct list_head devices;
  struct list_head interfaces;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct semaphore sem;
-
  struct class_attribute * class_attrs;
  struct class_device_attribute * class_dev_attrs;
-
  int (*uevent)(struct class_device *dev, char **envp,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int num_envp, char *buffer, int buffer_size);
-
  void (*release)(struct class_device *dev);
  void (*class_release)(struct class *class);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct class_attribute {
  struct attribute attr;
  ssize_t (*show)(struct class *, char * buf);
  ssize_t (*store)(struct class *, const char * buf, size_t count);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define CLASS_ATTR(_name,_mode,_show,_store)  struct class_attribute class_attr_##_name = __ATTR(_name,_mode,_show,_store) 
-
 struct class_device_attribute {
  struct attribute attr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ssize_t (*show)(struct class_device *, char * buf);
  ssize_t (*store)(struct class_device *, const char * buf, size_t count);
 };
-
 #define CLASS_DEVICE_ATTR(_name,_mode,_show,_store)  struct class_device_attribute class_device_attr_##_name =   __ATTR(_name,_mode,_show,_store)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct class_device {
  struct list_head node;
-
  struct kobject kobj;
  struct class * class;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  dev_t devt;
  struct class_device_attribute *devt_attr;
  struct class_device_attribute uevent_attr;
  struct device * dev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void * class_data;
  struct class_device *parent;
  struct attribute_group ** groups;
-
  void (*release)(struct class_device *dev);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*uevent)(struct class_device *dev, char **envp,
  int num_envp, char *buffer, int buffer_size);
  char class_id[BUS_ID_SIZE];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct class_interface {
  struct list_head node;
  struct class *class;
-
  int (*add) (struct class_device *, struct class_interface *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*remove) (struct class_device *, struct class_interface *);
 };
-
 struct device_attribute {
  struct attribute attr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ssize_t (*show)(struct device *dev, struct device_attribute *attr,
  char *buf);
  ssize_t (*store)(struct device *dev, struct device_attribute *attr,
  const char *buf, size_t count);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define DEVICE_ATTR(_name,_mode,_show,_store)  struct device_attribute dev_attr_##_name = __ATTR(_name,_mode,_show,_store)
-
 struct device {
  struct klist klist_children;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct klist_node knode_parent;
  struct klist_node knode_driver;
  struct klist_node knode_bus;
  struct device * parent;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct kobject kobj;
  char bus_id[BUS_ID_SIZE];
  struct device_attribute uevent_attr;
  struct device_attribute *devt_attr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct semaphore sem;
-
  struct bus_type * bus;
  struct device_driver *driver;
  void *driver_data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *platform_data;
  void *firmware_data;
  struct dev_pm_info power;
-
  u64 *dma_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u64 coherent_dma_mask;
-
  struct list_head dma_pools;
-
  struct dma_coherent_mem *dma_mem;
-
  struct list_head node;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct class *class;
  dev_t devt;
-
  void (*release)(struct device * dev);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define dev_printk(level, dev, format, arg...)   printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg)
-
 #ifdef DEBUG
 #define dev_dbg(dev, format, arg...)   dev_printk(KERN_DEBUG , dev , format , ## arg)
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define dev_dbg(dev, format, arg...) do { (void)(dev); } while (0)
 #endif
-
 #define dev_err(dev, format, arg...)   dev_printk(KERN_ERR , dev , format , ## arg)
 #define dev_info(dev, format, arg...)   dev_printk(KERN_INFO , dev , format , ## arg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define dev_warn(dev, format, arg...)   dev_printk(KERN_WARNING , dev , format , ## arg)
 #define dev_notice(dev, format, arg...)   dev_printk(KERN_NOTICE , dev , format , ## arg)
-
 #define MODULE_ALIAS_CHARDEV(major,minor)   MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))
 #define MODULE_ALIAS_CHARDEV_MAJOR(major)   MODULE_ALIAS("char-major-" __stringify(major) "-*")
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/dirent.h b/libc/kernel/common/linux/dirent.h
index 2dace18..ba35011 100644
--- a/libc/kernel/common/linux/dirent.h
+++ b/libc/kernel/common/linux/dirent.h
@@ -7,24 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_DIRENT_H
 #define _LINUX_DIRENT_H
-
 struct dirent {
  long d_ino;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_off_t d_off;
  unsigned short d_reclen;
  char d_name[256];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dirent64 {
  __u64 d_ino;
  __s64 d_off;
  unsigned short d_reclen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char d_type;
  char d_name[256];
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/dm-ioctl.h b/libc/kernel/common/linux/dm-ioctl.h
index ead7744..aa9521f 100644
--- a/libc/kernel/common/linux/dm-ioctl.h
+++ b/libc/kernel/common/linux/dm-ioctl.h
@@ -7,140 +7,133 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_DM_IOCTL_V4_H
 #define _LINUX_DM_IOCTL_V4_H
-
 #include <linux/types.h>
-
 #define DM_DIR "mapper"  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_MAX_TYPE_NAME 16
 #define DM_NAME_LEN 128
 #define DM_UUID_LEN 129
-
 struct dm_ioctl {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t version[3];
  uint32_t data_size;
-
  uint32_t data_start;
-
  uint32_t target_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int32_t open_count;
  uint32_t flags;
  uint32_t event_nr;
  uint32_t padding;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint64_t dev;
-
  char name[DM_NAME_LEN];
  char uuid[DM_UUID_LEN];
  char data[7];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct dm_target_spec {
  uint64_t sector_start;
  uint64_t length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int32_t status;
-
  uint32_t next;
-
  char target_type[DM_MAX_TYPE_NAME];
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct dm_target_deps {
  uint32_t count;
  uint32_t padding;
  uint64_t dev[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct dm_name_list {
  uint64_t dev;
  uint32_t next;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[0];
 };
-
 struct dm_target_versions {
  uint32_t next;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t version[3];
-
  char name[0];
 };
-
 struct dm_target_msg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint64_t sector;
-
  char message[0];
 };
-
 enum {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DM_VERSION_CMD = 0,
  DM_REMOVE_ALL_CMD,
  DM_LIST_DEVICES_CMD,
-
  DM_DEV_CREATE_CMD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DM_DEV_REMOVE_CMD,
  DM_DEV_RENAME_CMD,
  DM_DEV_SUSPEND_CMD,
  DM_DEV_STATUS_CMD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DM_DEV_WAIT_CMD,
-
  DM_TABLE_LOAD_CMD,
  DM_TABLE_CLEAR_CMD,
  DM_TABLE_DEPS_CMD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DM_TABLE_STATUS_CMD,
-
  DM_LIST_VERSIONS_CMD,
  DM_TARGET_MSG_CMD,
  DM_DEV_SET_GEOMETRY_CMD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define DM_IOCTL 0xfd
-
 #define DM_VERSION _IOWR(DM_IOCTL, DM_VERSION_CMD, struct dm_ioctl)
 #define DM_REMOVE_ALL _IOWR(DM_IOCTL, DM_REMOVE_ALL_CMD, struct dm_ioctl)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_LIST_DEVICES _IOWR(DM_IOCTL, DM_LIST_DEVICES_CMD, struct dm_ioctl)
-
 #define DM_DEV_CREATE _IOWR(DM_IOCTL, DM_DEV_CREATE_CMD, struct dm_ioctl)
 #define DM_DEV_REMOVE _IOWR(DM_IOCTL, DM_DEV_REMOVE_CMD, struct dm_ioctl)
 #define DM_DEV_RENAME _IOWR(DM_IOCTL, DM_DEV_RENAME_CMD, struct dm_ioctl)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_DEV_SUSPEND _IOWR(DM_IOCTL, DM_DEV_SUSPEND_CMD, struct dm_ioctl)
 #define DM_DEV_STATUS _IOWR(DM_IOCTL, DM_DEV_STATUS_CMD, struct dm_ioctl)
 #define DM_DEV_WAIT _IOWR(DM_IOCTL, DM_DEV_WAIT_CMD, struct dm_ioctl)
-
 #define DM_TABLE_LOAD _IOWR(DM_IOCTL, DM_TABLE_LOAD_CMD, struct dm_ioctl)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_TABLE_CLEAR _IOWR(DM_IOCTL, DM_TABLE_CLEAR_CMD, struct dm_ioctl)
 #define DM_TABLE_DEPS _IOWR(DM_IOCTL, DM_TABLE_DEPS_CMD, struct dm_ioctl)
 #define DM_TABLE_STATUS _IOWR(DM_IOCTL, DM_TABLE_STATUS_CMD, struct dm_ioctl)
-
 #define DM_LIST_VERSIONS _IOWR(DM_IOCTL, DM_LIST_VERSIONS_CMD, struct dm_ioctl)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
-
 #define DM_VERSION_MAJOR 4
 #define DM_VERSION_MINOR 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_VERSION_PATCHLEVEL 0
 #define DM_VERSION_EXTRA "-ioctl (2008-04-23)"
-
 #define DM_READONLY_FLAG (1 << 0)  
 #define DM_SUSPEND_FLAG (1 << 1)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)  
-
 #define DM_STATUS_TABLE_FLAG (1 << 4)  
-
 #define DM_ACTIVE_PRESENT_FLAG (1 << 5)  
 #define DM_INACTIVE_PRESENT_FLAG (1 << 6)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_BUFFER_FULL_FLAG (1 << 8)  
-
 #define DM_SKIP_BDGET_FLAG (1 << 9)  
-
 #define DM_SKIP_LOCKFS_FLAG (1 << 10)  
-
 #define DM_NOFLUSH_FLAG (1 << 11)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/dma-mapping.h b/libc/kernel/common/linux/dma-mapping.h
index 6432259..6e78058 100644
--- a/libc/kernel/common/linux/dma-mapping.h
+++ b/libc/kernel/common/linux/dma-mapping.h
@@ -7,42 +7,49 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ASM_LINUX_DMA_MAPPING_H
 #define _ASM_LINUX_DMA_MAPPING_H
-
 #include <linux/device.h>
 #include <linux/err.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum dma_data_direction {
  DMA_BIDIRECTIONAL = 0,
  DMA_TO_DEVICE = 1,
  DMA_FROM_DEVICE = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DMA_NONE = 3,
 };
-
 #define DMA_64BIT_MASK 0xffffffffffffffffULL
 #define DMA_48BIT_MASK 0x0000ffffffffffffULL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_40BIT_MASK 0x000000ffffffffffULL
 #define DMA_39BIT_MASK 0x0000007fffffffffULL
 #define DMA_32BIT_MASK 0x00000000ffffffffULL
 #define DMA_31BIT_MASK 0x000000007fffffffULL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_30BIT_MASK 0x000000003fffffffULL
 #define DMA_29BIT_MASK 0x000000001fffffffULL
 #define DMA_28BIT_MASK 0x000000000fffffffULL
 #define DMA_24BIT_MASK 0x0000000000ffffffULL
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/dma-mapping.h>
-
 #define dma_sync_single dma_sync_single_for_cpu
 #define dma_sync_sg dma_sync_sg_for_cpu
-
 #define DMA_MEMORY_MAP 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMA_MEMORY_IO 0x02
 #define DMA_MEMORY_INCLUDES_CHILDREN 0x04
 #define DMA_MEMORY_EXCLUSIVE 0x08
-
 #ifndef ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
diff --git a/libc/kernel/common/linux/dmaengine.h b/libc/kernel/common/linux/dmaengine.h
index 549fea9..72027ed 100644
--- a/libc/kernel/common/linux/dmaengine.h
+++ b/libc/kernel/common/linux/dmaengine.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef DMAENGINE_H
 #define DMAENGINE_H
-
 #endif
diff --git a/libc/kernel/common/linux/efs_dir.h b/libc/kernel/common/linux/efs_dir.h
index 5be2762..40991a3 100644
--- a/libc/kernel/common/linux/efs_dir.h
+++ b/libc/kernel/common/linux/efs_dir.h
@@ -7,39 +7,40 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __EFS_DIR_H__
 #define __EFS_DIR_H__
-
 #define EFS_DIRBSIZE_BITS EFS_BLOCKSIZE_BITS
 #define EFS_DIRBSIZE (1 << EFS_DIRBSIZE_BITS)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct efs_dentry {
  __be32 inode;
  unsigned char namelen;
  char name[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define EFS_DENTSIZE (sizeof(struct efs_dentry) - 3 + 1)
 #define EFS_MAXNAMELEN ((1 << (sizeof(char) * 8)) - 1)
-
 #define EFS_DIRBLK_HEADERSIZE 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EFS_DIRBLK_MAGIC 0xbeef  
-
 struct efs_dir {
  __be16 magic;
  unsigned char firstused;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char slots;
-
  unsigned char space[EFS_DIRBSIZE - EFS_DIRBLK_HEADERSIZE];
 };
-
 #define EFS_MAXENTS   ((EFS_DIRBSIZE - EFS_DIRBLK_HEADERSIZE) /   (EFS_DENTSIZE + sizeof(char)))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EFS_SLOTAT(dir, slot) EFS_REALOFF((dir)->space[slot])
-
 #define EFS_REALOFF(offset) ((offset << 1))
-
 #endif
-
diff --git a/libc/kernel/common/linux/efs_fs_i.h b/libc/kernel/common/linux/efs_fs_i.h
index 6d88d28..9d282e4 100644
--- a/libc/kernel/common/linux/efs_fs_i.h
+++ b/libc/kernel/common/linux/efs_fs_i.h
@@ -7,57 +7,65 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __EFS_FS_I_H__
 #define __EFS_FS_I_H__
-
 typedef int32_t efs_block_t;
 typedef uint32_t efs_ino_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EFS_DIRECTEXTENTS 12
-
 typedef union extent_u {
  unsigned char raw[8];
  struct extent_s {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int ex_magic:8;
  unsigned int ex_bn:24;
  unsigned int ex_length:8;
  unsigned int ex_offset:24;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } cooked;
 } efs_extent;
-
 typedef struct edevs {
  __be16 odev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 ndev;
 } efs_devs;
-
 struct efs_dinode {
  __be16 di_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 di_nlink;
  __be16 di_uid;
  __be16 di_gid;
  __be32 di_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 di_atime;
  __be32 di_mtime;
  __be32 di_ctime;
  __be32 di_gen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 di_numextents;
  u_char di_version;
  u_char di_spare;
  union di_addr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  efs_extent di_extents[EFS_DIRECTEXTENTS];
  efs_devs di_dev;
  } di_u;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct efs_inode_info {
  int numextents;
  int lastextent;
-
  efs_extent extents[EFS_DIRECTEXTENTS];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct inode vfs_inode;
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/efs_fs_sb.h b/libc/kernel/common/linux/efs_fs_sb.h
index f7960c0..094db76 100644
--- a/libc/kernel/common/linux/efs_fs_sb.h
+++ b/libc/kernel/common/linux/efs_fs_sb.h
@@ -7,55 +7,64 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __EFS_FS_SB_H__
 #define __EFS_FS_SB_H__
-
 #define EFS_SUPER_MAGIC 0x414A53
-
 #define EFS_MAGIC 0x072959
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EFS_NEWMAGIC 0x07295a
-
 #define IS_EFS_MAGIC(x) ((x == EFS_MAGIC) || (x == EFS_NEWMAGIC))
-
 #define EFS_SUPER 1
 #define EFS_ROOTINODE 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct efs_super {
  __be32 fs_size;
  __be32 fs_firstcg;
  __be32 fs_cgfsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 fs_cgisize;
  __be16 fs_sectors;
  __be16 fs_heads;
  __be16 fs_ncg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 fs_dirty;
  __be32 fs_time;
  __be32 fs_magic;
  char fs_fname[6];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char fs_fpack[6];
  __be32 fs_bmsize;
  __be32 fs_tfree;
  __be32 fs_tinode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 fs_bmblock;
  __be32 fs_replsb;
  __be32 fs_lastialloc;
  char fs_spare[20];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 fs_checksum;
 };
-
 struct efs_sb_info {
  __u32 fs_magic;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 fs_start;
  __u32 first_block;
  __u32 total_blocks;
  __u32 group_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 data_free;
  __u32 inode_free;
  __u16 inode_blocks;
  __u16 total_groups;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/elevator.h b/libc/kernel/common/linux/elevator.h
index 2e79ce9..38c6023 100644
--- a/libc/kernel/common/linux/elevator.h
+++ b/libc/kernel/common/linux/elevator.h
@@ -7,103 +7,105 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ELEVATOR_H
 #define _LINUX_ELEVATOR_H
-
 typedef int (elevator_merge_fn) (request_queue_t *, struct request **,
  struct bio *);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef void (elevator_merge_req_fn) (request_queue_t *, struct request *, struct request *);
-
 typedef void (elevator_merged_fn) (request_queue_t *, struct request *);
-
 typedef int (elevator_dispatch_fn) (request_queue_t *, int);
-
 typedef void (elevator_add_req_fn) (request_queue_t *, struct request *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int (elevator_queue_empty_fn) (request_queue_t *);
 typedef struct request *(elevator_request_list_fn) (request_queue_t *, struct request *);
 typedef void (elevator_completed_req_fn) (request_queue_t *, struct request *);
 typedef int (elevator_may_queue_fn) (request_queue_t *, int, struct bio *);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int (elevator_set_req_fn) (request_queue_t *, struct request *, struct bio *, gfp_t);
 typedef void (elevator_put_req_fn) (request_queue_t *, struct request *);
 typedef void (elevator_activate_req_fn) (request_queue_t *, struct request *);
 typedef void (elevator_deactivate_req_fn) (request_queue_t *, struct request *);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef void *(elevator_init_fn) (request_queue_t *, elevator_t *);
 typedef void (elevator_exit_fn) (elevator_t *);
-
 struct elevator_ops
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  elevator_merge_fn *elevator_merge_fn;
  elevator_merged_fn *elevator_merged_fn;
  elevator_merge_req_fn *elevator_merge_req_fn;
-
  elevator_dispatch_fn *elevator_dispatch_fn;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  elevator_add_req_fn *elevator_add_req_fn;
  elevator_activate_req_fn *elevator_activate_req_fn;
  elevator_deactivate_req_fn *elevator_deactivate_req_fn;
-
  elevator_queue_empty_fn *elevator_queue_empty_fn;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  elevator_completed_req_fn *elevator_completed_req_fn;
-
  elevator_request_list_fn *elevator_former_req_fn;
  elevator_request_list_fn *elevator_latter_req_fn;
-
  elevator_set_req_fn *elevator_set_req_fn;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  elevator_put_req_fn *elevator_put_req_fn;
-
  elevator_may_queue_fn *elevator_may_queue_fn;
-
  elevator_init_fn *elevator_init_fn;
  elevator_exit_fn *elevator_exit_fn;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*trim)(struct io_context *);
 };
-
 #define ELV_NAME_MAX (16)
-
 struct elv_fs_entry {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct attribute attr;
  ssize_t (*show)(elevator_t *, char *);
  ssize_t (*store)(elevator_t *, const char *, size_t);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct elevator_type
 {
  struct list_head list;
  struct elevator_ops ops;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct elevator_type *elevator_type;
  struct elv_fs_entry *elevator_attrs;
  char elevator_name[ELV_NAME_MAX];
  struct module *elevator_owner;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct elevator_queue
 {
  struct elevator_ops *ops;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *elevator_data;
  struct kobject kobj;
  struct elevator_type *elevator_type;
  struct mutex sysfs_lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ELEVATOR_NO_MERGE 0
 #define ELEVATOR_FRONT_MERGE 1
 #define ELEVATOR_BACK_MERGE 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELEVATOR_INSERT_FRONT 1
 #define ELEVATOR_INSERT_BACK 2
 #define ELEVATOR_INSERT_SORT 3
 #define ELEVATOR_INSERT_REQUEUE 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  ELV_MQUEUE_MAY,
  ELV_MQUEUE_NO,
  ELV_MQUEUE_MUST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define rq_end_sector(rq) ((rq)->sector + (rq)->nr_sectors)
-
 #endif
diff --git a/libc/kernel/common/linux/elf-em.h b/libc/kernel/common/linux/elf-em.h
index e151fdf..766dd14 100644
--- a/libc/kernel/common/linux/elf-em.h
+++ b/libc/kernel/common/linux/elf-em.h
@@ -7,45 +7,52 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ELF_EM_H
 #define _LINUX_ELF_EM_H
-
 #define EM_NONE 0
 #define EM_M32 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EM_SPARC 2
 #define EM_386 3
 #define EM_68K 4
 #define EM_88K 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EM_486 6  
 #define EM_860 7
 #define EM_MIPS 8  
-
 #define EM_MIPS_RS3_LE 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EM_MIPS_RS4_BE 10  
-
 #define EM_PARISC 15  
 #define EM_SPARC32PLUS 18  
 #define EM_PPC 20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EM_PPC64 21  
 #define EM_SH 42  
 #define EM_SPARCV9 43  
 #define EM_IA_64 50  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EM_X86_64 62  
 #define EM_S390 22  
 #define EM_CRIS 76  
 #define EM_V850 87  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EM_M32R 88  
 #define EM_H8_300 46  
 #define EM_FRV 0x5441  
-
 #define EM_ALPHA 0x9026
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EM_CYGNUS_V850 0x9080
-
 #define EM_CYGNUS_M32R 0x9041
-
 #define EM_S390_OLD 0xA390
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/elf.h b/libc/kernel/common/linux/elf.h
index f16b439..d79e3b9 100644
--- a/libc/kernel/common/linux/elf.h
+++ b/libc/kernel/common/linux/elf.h
@@ -7,355 +7,388 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ELF_H
 #define _LINUX_ELF_H
-
 #include <linux/types.h>
 #include <linux/auxvec.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/elf-em.h>
 #include <asm/elf.h>
-
 #ifndef elf_read_implies_exec
-
 #define elf_read_implies_exec(ex, have_pt_gnu_stack) 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 typedef __u32 Elf32_Addr;
 typedef __u16 Elf32_Half;
 typedef __u32 Elf32_Off;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __s32 Elf32_Sword;
 typedef __u32 Elf32_Word;
-
 typedef __u64 Elf64_Addr;
 typedef __u16 Elf64_Half;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __s16 Elf64_SHalf;
 typedef __u64 Elf64_Off;
 typedef __s32 Elf64_Sword;
 typedef __u32 Elf64_Word;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __u64 Elf64_Xword;
 typedef __s64 Elf64_Sxword;
-
 #define PT_NULL 0
 #define PT_LOAD 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PT_DYNAMIC 2
 #define PT_INTERP 3
 #define PT_NOTE 4
 #define PT_SHLIB 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PT_PHDR 6
 #define PT_TLS 7  
 #define PT_LOOS 0x60000000  
 #define PT_HIOS 0x6fffffff  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PT_LOPROC 0x70000000
 #define PT_HIPROC 0x7fffffff
 #define PT_GNU_EH_FRAME 0x6474e550
-
 #define PT_GNU_STACK (PT_LOOS + 0x474e551)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ET_NONE 0
 #define ET_REL 1
 #define ET_EXEC 2
 #define ET_DYN 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ET_CORE 4
 #define ET_LOPROC 0xff00
 #define ET_HIPROC 0xffff
-
 #define DT_NULL 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DT_NEEDED 1
 #define DT_PLTRELSZ 2
 #define DT_PLTGOT 3
 #define DT_HASH 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DT_STRTAB 5
 #define DT_SYMTAB 6
 #define DT_RELA 7
 #define DT_RELASZ 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DT_RELAENT 9
 #define DT_STRSZ 10
 #define DT_SYMENT 11
 #define DT_INIT 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DT_FINI 13
 #define DT_SONAME 14
 #define DT_RPATH 15
 #define DT_SYMBOLIC 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DT_REL 17
 #define DT_RELSZ 18
 #define DT_RELENT 19
 #define DT_PLTREL 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DT_DEBUG 21
 #define DT_TEXTREL 22
 #define DT_JMPREL 23
 #define DT_LOPROC 0x70000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DT_HIPROC 0x7fffffff
-
 #define STB_LOCAL 0
 #define STB_GLOBAL 1
 #define STB_WEAK 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STT_NOTYPE 0
 #define STT_OBJECT 1
 #define STT_FUNC 2
 #define STT_SECTION 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STT_FILE 4
 #define STT_COMMON 5
 #define STT_TLS 6
-
 #define ELF_ST_BIND(x) ((x) >> 4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF_ST_TYPE(x) (((unsigned int) x) & 0xf)
 #define ELF32_ST_BIND(x) ELF_ST_BIND(x)
 #define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
 #define ELF64_ST_BIND(x) ELF_ST_BIND(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF64_ST_TYPE(x) ELF_ST_TYPE(x)
-
 typedef struct dynamic{
  Elf32_Sword d_tag;
  union{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Sword d_val;
  Elf32_Addr d_ptr;
  } d_un;
 } Elf32_Dyn;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  Elf64_Sxword d_tag;
  union {
  Elf64_Xword d_val;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Addr d_ptr;
  } d_un;
 } Elf64_Dyn;
-
 #define ELF32_R_SYM(x) ((x) >> 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELF32_R_TYPE(x) ((x) & 0xff)
-
 #define ELF64_R_SYM(i) ((i) >> 32)
 #define ELF64_R_TYPE(i) ((i) & 0xffffffff)
-
 typedef struct elf32_rel {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Addr r_offset;
  Elf32_Word r_info;
 } Elf32_Rel;
-
 typedef struct elf64_rel {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Addr r_offset;
  Elf64_Xword r_info;
 } Elf64_Rel;
-
 typedef struct elf32_rela{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Addr r_offset;
  Elf32_Word r_info;
  Elf32_Sword r_addend;
 } Elf32_Rela;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct elf64_rela {
  Elf64_Addr r_offset;
  Elf64_Xword r_info;
  Elf64_Sxword r_addend;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } Elf64_Rela;
-
 typedef struct elf32_sym{
  Elf32_Word st_name;
  Elf32_Addr st_value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Word st_size;
  unsigned char st_info;
  unsigned char st_other;
  Elf32_Half st_shndx;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } Elf32_Sym;
-
 typedef struct elf64_sym {
  Elf64_Word st_name;
  unsigned char st_info;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char st_other;
  Elf64_Half st_shndx;
  Elf64_Addr st_value;
  Elf64_Xword st_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } Elf64_Sym;
-
 #define EI_NIDENT 16
-
 typedef struct elf32_hdr{
  unsigned char e_ident[EI_NIDENT];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Half e_type;
  Elf32_Half e_machine;
  Elf32_Word e_version;
  Elf32_Addr e_entry;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Off e_phoff;
  Elf32_Off e_shoff;
  Elf32_Word e_flags;
  Elf32_Half e_ehsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Half e_phentsize;
  Elf32_Half e_phnum;
  Elf32_Half e_shentsize;
  Elf32_Half e_shnum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Half e_shstrndx;
 } Elf32_Ehdr;
-
 typedef struct elf64_hdr {
  unsigned char e_ident[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Half e_type;
  Elf64_Half e_machine;
  Elf64_Word e_version;
  Elf64_Addr e_entry;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Off e_phoff;
  Elf64_Off e_shoff;
  Elf64_Word e_flags;
  Elf64_Half e_ehsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Half e_phentsize;
  Elf64_Half e_phnum;
  Elf64_Half e_shentsize;
  Elf64_Half e_shnum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Half e_shstrndx;
 } Elf64_Ehdr;
-
 #define PF_R 0x4
 #define PF_W 0x2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_X 0x1
-
 typedef struct elf32_phdr{
  Elf32_Word p_type;
  Elf32_Off p_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Addr p_vaddr;
  Elf32_Addr p_paddr;
  Elf32_Word p_filesz;
  Elf32_Word p_memsz;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Word p_flags;
  Elf32_Word p_align;
 } Elf32_Phdr;
-
 typedef struct elf64_phdr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Word p_type;
  Elf64_Word p_flags;
  Elf64_Off p_offset;
  Elf64_Addr p_vaddr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Addr p_paddr;
  Elf64_Xword p_filesz;
  Elf64_Xword p_memsz;
  Elf64_Xword p_align;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } Elf64_Phdr;
-
 #define SHT_NULL 0
 #define SHT_PROGBITS 1
 #define SHT_SYMTAB 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHT_STRTAB 3
 #define SHT_RELA 4
 #define SHT_HASH 5
 #define SHT_DYNAMIC 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHT_NOTE 7
 #define SHT_NOBITS 8
 #define SHT_REL 9
 #define SHT_SHLIB 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHT_DYNSYM 11
 #define SHT_NUM 12
 #define SHT_LOPROC 0x70000000
 #define SHT_HIPROC 0x7fffffff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHT_LOUSER 0x80000000
 #define SHT_HIUSER 0xffffffff
-
 #define SHF_WRITE 0x1
 #define SHF_ALLOC 0x2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHF_EXECINSTR 0x4
 #define SHF_MASKPROC 0xf0000000
-
 #define SHN_UNDEF 0
 #define SHN_LORESERVE 0xff00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHN_LOPROC 0xff00
 #define SHN_HIPROC 0xff1f
 #define SHN_ABS 0xfff1
 #define SHN_COMMON 0xfff2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHN_HIRESERVE 0xffff
-
 typedef struct {
  Elf32_Word sh_name;
  Elf32_Word sh_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Word sh_flags;
  Elf32_Addr sh_addr;
  Elf32_Off sh_offset;
  Elf32_Word sh_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Word sh_link;
  Elf32_Word sh_info;
  Elf32_Word sh_addralign;
  Elf32_Word sh_entsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } Elf32_Shdr;
-
 typedef struct elf64_shdr {
  Elf64_Word sh_name;
  Elf64_Word sh_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Xword sh_flags;
  Elf64_Addr sh_addr;
  Elf64_Off sh_offset;
  Elf64_Xword sh_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Word sh_link;
  Elf64_Word sh_info;
  Elf64_Xword sh_addralign;
  Elf64_Xword sh_entsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } Elf64_Shdr;
-
 #define EI_MAG0 0  
 #define EI_MAG1 1
 #define EI_MAG2 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EI_MAG3 3
 #define EI_CLASS 4
 #define EI_DATA 5
 #define EI_VERSION 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EI_OSABI 7
 #define EI_PAD 8
-
 #define ELFMAG0 0x7f  
 #define ELFMAG1 'E'
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELFMAG2 'L'
 #define ELFMAG3 'F'
 #define ELFMAG "\177ELF"
 #define SELFMAG 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELFCLASSNONE 0  
 #define ELFCLASS32 1
 #define ELFCLASS64 2
 #define ELFCLASSNUM 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ELFDATANONE 0  
 #define ELFDATA2LSB 1
 #define ELFDATA2MSB 2
-
 #define EV_NONE 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_CURRENT 1
 #define EV_NUM 2
-
 #define ELFOSABI_NONE 0
 #define ELFOSABI_LINUX 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef ELF_OSABI
 #define ELF_OSABI ELFOSABI_NONE
 #endif
-
 #define NT_PRSTATUS 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NT_PRFPREG 2
 #define NT_PRPSINFO 3
 #define NT_TASKSTRUCT 4
 #define NT_AUXV 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NT_PRXFPREG 0x46e62b7f  
-
 typedef struct elf32_note {
  Elf32_Word n_namesz;
  Elf32_Word n_descsz;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf32_Word n_type;
 } Elf32_Nhdr;
-
 typedef struct elf64_note {
  Elf64_Word n_namesz;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Elf64_Word n_descsz;
  Elf64_Word n_type;
 } Elf64_Nhdr;
-
 #if ELF_CLASS == ELFCLASS32
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define elfhdr elf32_hdr
 #define elf_phdr elf32_phdr
 #define elf_note elf32_note
-
 #else
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define elfhdr elf64_hdr
 #define elf_phdr elf64_phdr
 #define elf_note elf64_note
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/err.h b/libc/kernel/common/linux/err.h
index 1aa4f9b..442a1d8 100644
--- a/libc/kernel/common/linux/err.h
+++ b/libc/kernel/common/linux/err.h
@@ -7,17 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ERR_H
 #define _LINUX_ERR_H
-
 #include <linux/compiler.h>
-
 #include <asm/errno.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_ERRNO 4095
-
 #define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
-
 #endif
diff --git a/libc/kernel/common/linux/errno.h b/libc/kernel/common/linux/errno.h
index 72ee642..9ecf8d3 100644
--- a/libc/kernel/common/linux/errno.h
+++ b/libc/kernel/common/linux/errno.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ERRNO_H
 #define _LINUX_ERRNO_H
-
 #include <asm/errno.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/errqueue.h b/libc/kernel/common/linux/errqueue.h
index 03b2e42..45744fa 100644
--- a/libc/kernel/common/linux/errqueue.h
+++ b/libc/kernel/common/linux/errqueue.h
@@ -7,27 +7,34 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ERRQUEUE_H
 #define _LINUX_ERRQUEUE_H 1
-
 struct sock_extended_err
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ee_errno;
  __u8 ee_origin;
  __u8 ee_type;
  __u8 ee_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ee_pad;
  __u32 ee_info;
  __u32 ee_data;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_EE_ORIGIN_NONE 0
 #define SO_EE_ORIGIN_LOCAL 1
 #define SO_EE_ORIGIN_ICMP 2
 #define SO_EE_ORIGIN_ICMP6 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SO_EE_OFFENDER(ee) ((struct sockaddr*)((ee)+1))
-
 #endif
diff --git a/libc/kernel/common/linux/etherdevice.h b/libc/kernel/common/linux/etherdevice.h
index d087e8f..2602995 100644
--- a/libc/kernel/common/linux/etherdevice.h
+++ b/libc/kernel/common/linux/etherdevice.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ETHERDEVICE_H
 #define _LINUX_ETHERDEVICE_H
-
 #include <linux/if_ether.h>
 #include <linux/netdevice.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/random.h>
-
 #endif
diff --git a/libc/kernel/common/linux/ethtool.h b/libc/kernel/common/linux/ethtool.h
index 7a5b3cd..5dc9921 100644
--- a/libc/kernel/common/linux/ethtool.h
+++ b/libc/kernel/common/linux/ethtool.h
@@ -7,315 +7,339 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ETHTOOL_H
 #define _LINUX_ETHTOOL_H
-
 #include <linux/types.h>
-
 struct ethtool_cmd {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 cmd;
  __u32 supported;
  __u32 advertising;
  __u16 speed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 duplex;
  __u8 port;
  __u8 phy_address;
  __u8 transceiver;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 autoneg;
  __u32 maxtxpkt;
  __u32 maxrxpkt;
  __u16 speed_hi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 reserved2;
  __u32 reserved[3];
 };
-
 #define ETHTOOL_BUSINFO_LEN 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_drvinfo {
  __u32 cmd;
  char driver[32];
  char version[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char fw_version[32];
  char bus_info[ETHTOOL_BUSINFO_LEN];
  char reserved1[32];
  char reserved2[12];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 n_priv_flags;
  __u32 n_stats;
  __u32 testinfo_len;
  __u32 eedump_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 regdump_len;
 };
-																
 #define SOPASS_MAX 6
-
 struct ethtool_wolinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 cmd;
  __u32 supported;
  __u32 wolopts;
  __u8 sopass[SOPASS_MAX];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ethtool_value {
  __u32 cmd;
  __u32 data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ethtool_regs {
  __u32 cmd;
  __u32 version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 len;
  __u8 data[0];
 };
-
 struct ethtool_eeprom {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 cmd;
  __u32 magic;
  __u32 offset;
  __u32 len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 data[0];
 };
-
 struct ethtool_coalesce {
  __u32 cmd;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 rx_coalesce_usecs;
-
  __u32 rx_max_coalesced_frames;
-
  __u32 rx_coalesce_usecs_irq;
  __u32 rx_max_coalesced_frames_irq;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tx_coalesce_usecs;
-
  __u32 tx_max_coalesced_frames;
-
  __u32 tx_coalesce_usecs_irq;
  __u32 tx_max_coalesced_frames_irq;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 stats_block_coalesce_usecs;
-
  __u32 use_adaptive_rx_coalesce;
  __u32 use_adaptive_tx_coalesce;
-
  __u32 pkt_rate_low;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 rx_coalesce_usecs_low;
  __u32 rx_max_coalesced_frames_low;
  __u32 tx_coalesce_usecs_low;
  __u32 tx_max_coalesced_frames_low;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 pkt_rate_high;
  __u32 rx_coalesce_usecs_high;
  __u32 rx_max_coalesced_frames_high;
  __u32 tx_coalesce_usecs_high;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tx_max_coalesced_frames_high;
-
  __u32 rate_sample_interval;
 };
-
 struct ethtool_ringparam {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 cmd;
-
  __u32 rx_max_pending;
  __u32 rx_mini_max_pending;
  __u32 rx_jumbo_max_pending;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tx_max_pending;
-
  __u32 rx_pending;
  __u32 rx_mini_pending;
  __u32 rx_jumbo_pending;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tx_pending;
 };
-
 struct ethtool_pauseparam {
  __u32 cmd;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 autoneg;
  __u32 rx_pause;
  __u32 tx_pause;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_GSTRING_LEN 32
 enum ethtool_stringset {
  ETH_SS_TEST = 0,
  ETH_SS_STATS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ETH_SS_PRIV_FLAGS,
 };
-
 struct ethtool_gstrings {
  __u32 cmd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 string_set;
  __u32 len;
  __u8 data[0];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ethtool_test_flags {
  ETH_TEST_FL_OFFLINE = (1 << 0),
  ETH_TEST_FL_FAILED = (1 << 1),
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_test {
  __u32 cmd;
  __u32 flags;
  __u32 reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 len;
  __u64 data[0];
 };
-
 struct ethtool_stats {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 cmd;
  __u32 n_stats;
  __u64 data[0];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_perm_addr {
  __u32 cmd;
  __u32 size;
  __u8 data[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum ethtool_flags {
  ETH_FLAG_LRO = (1 << 15),
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethtool_rxnfc {
  __u32 cmd;
  __u32 flow_type;
  __u64 data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ETHTOOL_GSET 0x00000001  
 #define ETHTOOL_SSET 0x00000002  
 #define ETHTOOL_GDRVINFO 0x00000003  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETHTOOL_GREGS 0x00000004  
 #define ETHTOOL_GWOL 0x00000005  
 #define ETHTOOL_SWOL 0x00000006  
 #define ETHTOOL_GMSGLVL 0x00000007  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETHTOOL_SMSGLVL 0x00000008  
 #define ETHTOOL_NWAY_RST 0x00000009  
 #define ETHTOOL_GLINK 0x0000000a  
 #define ETHTOOL_GEEPROM 0x0000000b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETHTOOL_SEEPROM 0x0000000c  
 #define ETHTOOL_GCOALESCE 0x0000000e  
 #define ETHTOOL_SCOALESCE 0x0000000f  
 #define ETHTOOL_GRINGPARAM 0x00000010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETHTOOL_SRINGPARAM 0x00000011  
 #define ETHTOOL_GPAUSEPARAM 0x00000012  
 #define ETHTOOL_SPAUSEPARAM 0x00000013  
 #define ETHTOOL_GRXCSUM 0x00000014  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETHTOOL_SRXCSUM 0x00000015  
 #define ETHTOOL_GTXCSUM 0x00000016  
 #define ETHTOOL_STXCSUM 0x00000017  
 #define ETHTOOL_GSG 0x00000018  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETHTOOL_SSG 0x00000019  
 #define ETHTOOL_TEST 0x0000001a  
 #define ETHTOOL_GSTRINGS 0x0000001b  
 #define ETHTOOL_PHYS_ID 0x0000001c  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETHTOOL_GSTATS 0x0000001d  
 #define ETHTOOL_GTSO 0x0000001e  
 #define ETHTOOL_STSO 0x0000001f  
 #define ETHTOOL_GPERMADDR 0x00000020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETHTOOL_GUFO 0x00000021  
 #define ETHTOOL_SUFO 0x00000022  
 #define ETHTOOL_GGSO 0x00000023  
 #define ETHTOOL_SGSO 0x00000024  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETHTOOL_GFLAGS 0x00000025  
 #define ETHTOOL_SFLAGS 0x00000026  
 #define ETHTOOL_GPFLAGS 0x00000027  
 #define ETHTOOL_SPFLAGS 0x00000028  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETHTOOL_GRXFH 0x00000029  
 #define ETHTOOL_SRXFH 0x0000002a  
 #define ETHTOOL_GGRO 0x0000002b  
 #define ETHTOOL_SGRO 0x0000002c  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPARC_ETH_GSET ETHTOOL_GSET
 #define SPARC_ETH_SSET ETHTOOL_SSET
-
 #define SUPPORTED_10baseT_Half (1 << 0)
 #define SUPPORTED_10baseT_Full (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SUPPORTED_100baseT_Half (1 << 2)
 #define SUPPORTED_100baseT_Full (1 << 3)
 #define SUPPORTED_1000baseT_Half (1 << 4)
 #define SUPPORTED_1000baseT_Full (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SUPPORTED_Autoneg (1 << 6)
 #define SUPPORTED_TP (1 << 7)
 #define SUPPORTED_AUI (1 << 8)
 #define SUPPORTED_MII (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SUPPORTED_FIBRE (1 << 10)
 #define SUPPORTED_BNC (1 << 11)
 #define SUPPORTED_10000baseT_Full (1 << 12)
 #define SUPPORTED_Pause (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SUPPORTED_Asym_Pause (1 << 14)
 #define SUPPORTED_2500baseX_Full (1 << 15)
-
 #define ADVERTISED_10baseT_Half (1 << 0)
 #define ADVERTISED_10baseT_Full (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADVERTISED_100baseT_Half (1 << 2)
 #define ADVERTISED_100baseT_Full (1 << 3)
 #define ADVERTISED_1000baseT_Half (1 << 4)
 #define ADVERTISED_1000baseT_Full (1 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADVERTISED_Autoneg (1 << 6)
 #define ADVERTISED_TP (1 << 7)
 #define ADVERTISED_AUI (1 << 8)
 #define ADVERTISED_MII (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADVERTISED_FIBRE (1 << 10)
 #define ADVERTISED_BNC (1 << 11)
 #define ADVERTISED_10000baseT_Full (1 << 12)
 #define ADVERTISED_Pause (1 << 13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADVERTISED_Asym_Pause (1 << 14)
 #define ADVERTISED_2500baseX_Full (1 << 15)
-
 #define SPEED_10 10
 #define SPEED_100 100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPEED_1000 1000
 #define SPEED_2500 2500
 #define SPEED_10000 10000
-
 #define DUPLEX_HALF 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DUPLEX_FULL 0x01
-
 #define PORT_TP 0x00
 #define PORT_AUI 0x01
 #define PORT_MII 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_FIBRE 0x03
 #define PORT_BNC 0x04
-
 #define XCVR_INTERNAL 0x00
 #define XCVR_EXTERNAL 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XCVR_DUMMY1 0x02
 #define XCVR_DUMMY2 0x03
 #define XCVR_DUMMY3 0x04
-
 #define AUTONEG_DISABLE 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUTONEG_ENABLE 0x01
-
 #define WAKE_PHY (1 << 0)
 #define WAKE_UCAST (1 << 1)
 #define WAKE_MCAST (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAKE_BCAST (1 << 3)
 #define WAKE_ARP (1 << 4)
 #define WAKE_MAGIC (1 << 5)
 #define WAKE_MAGICSECURE (1 << 6)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_V4_FLOW 0x01
 #define UDP_V4_FLOW 0x02
 #define SCTP_V4_FLOW 0x03
 #define AH_ESP_V4_FLOW 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_V6_FLOW 0x05
 #define UDP_V6_FLOW 0x06
 #define SCTP_V6_FLOW 0x07
 #define AH_ESP_V6_FLOW 0x08
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RXH_DEV_PORT (1 << 0)
 #define RXH_L2DA (1 << 1)
 #define RXH_VLAN (1 << 2)
 #define RXH_L3_PROTO (1 << 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RXH_IP_SRC (1 << 4)
 #define RXH_IP_DST (1 << 5)
 #define RXH_L4_B_0_1 (1 << 6)  
 #define RXH_L4_B_2_3 (1 << 7)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RXH_DISCARD (1 << 31)
-
 #endif
-
diff --git a/libc/kernel/common/linux/ext2_fs.h b/libc/kernel/common/linux/ext2_fs.h
index c21b09a..3335580 100644
--- a/libc/kernel/common/linux/ext2_fs.h
+++ b/libc/kernel/common/linux/ext2_fs.h
@@ -7,372 +7,405 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_EXT2_FS_H
 #define _LINUX_EXT2_FS_H
-
 #include <linux/types.h>
-
 #undef EXT2FS_DEBUG
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_PREALLOCATE
 #define EXT2_DEFAULT_PREALLOC_BLOCKS 8
-
 #define EXT2FS_DATE "95/08/09"
 #define EXT2FS_VERSION "0.5b"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef EXT2FS_DEBUG
 #define ext2_debug(f, a...) {   printk ("EXT2-fs DEBUG (%s, %d): %s:",   __FILE__, __LINE__, __FUNCTION__);   printk (f, ## a);   }
 #else
 #define ext2_debug(f, a...)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define EXT2_BAD_INO 1  
 #define EXT2_ROOT_INO 2  
 #define EXT2_BOOT_LOADER_INO 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_UNDEL_DIR_INO 6  
-
 #define EXT2_GOOD_OLD_FIRST_INO 11
-
 #define EXT2_SUPER_MAGIC 0xEF53
-
 #define EXT2_SB(sb) (sb)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_LINK_MAX 32000
-
 #define EXT2_MIN_BLOCK_SIZE 1024
 #define EXT2_MAX_BLOCK_SIZE 4096
 #define EXT2_MIN_BLOCK_LOG_SIZE 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_BLOCK_SIZE(s) (EXT2_MIN_BLOCK_SIZE << (s)->s_log_block_size)
 #define EXT2_ADDR_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (__u32))
 #define EXT2_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10)
 #define EXT2_INODE_SIZE(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ?   EXT2_GOOD_OLD_INODE_SIZE :   (s)->s_inode_size)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_FIRST_INO(s) (((s)->s_rev_level == EXT2_GOOD_OLD_REV) ?   EXT2_GOOD_OLD_FIRST_INO :   (s)->s_first_ino)
-
 #define EXT2_MIN_FRAG_SIZE 1024
 #define EXT2_MAX_FRAG_SIZE 4096
 #define EXT2_MIN_FRAG_LOG_SIZE 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_FRAG_SIZE(s) (EXT2_MIN_FRAG_SIZE << (s)->s_log_frag_size)
 #define EXT2_FRAGS_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / EXT2_FRAG_SIZE(s))
-
 struct ext2_group_desc
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 bg_block_bitmap;
  __le32 bg_inode_bitmap;
  __le32 bg_inode_table;
  __le16 bg_free_blocks_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 bg_free_inodes_count;
  __le16 bg_used_dirs_count;
  __le16 bg_pad;
  __le32 bg_reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define EXT2_BLOCKS_PER_GROUP(s) ((s)->s_blocks_per_group)
 #define EXT2_DESC_PER_BLOCK(s) (EXT2_BLOCK_SIZE(s) / sizeof (struct ext2_group_desc))
 #define EXT2_INODES_PER_GROUP(s) ((s)->s_inodes_per_group)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_NDIR_BLOCKS 12
 #define EXT2_IND_BLOCK EXT2_NDIR_BLOCKS
 #define EXT2_DIND_BLOCK (EXT2_IND_BLOCK + 1)
 #define EXT2_TIND_BLOCK (EXT2_DIND_BLOCK + 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_N_BLOCKS (EXT2_TIND_BLOCK + 1)
-
 #define EXT2_SECRM_FL 0x00000001  
 #define EXT2_UNRM_FL 0x00000002  
 #define EXT2_COMPR_FL 0x00000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_SYNC_FL 0x00000008  
 #define EXT2_IMMUTABLE_FL 0x00000010  
 #define EXT2_APPEND_FL 0x00000020  
 #define EXT2_NODUMP_FL 0x00000040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_NOATIME_FL 0x00000080  
-
 #define EXT2_DIRTY_FL 0x00000100
 #define EXT2_COMPRBLK_FL 0x00000200  
 #define EXT2_NOCOMP_FL 0x00000400  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_ECOMPR_FL 0x00000800  
-
 #define EXT2_BTREE_FL 0x00001000  
 #define EXT2_INDEX_FL 0x00001000  
 #define EXT2_IMAGIC_FL 0x00002000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_JOURNAL_DATA_FL 0x00004000  
 #define EXT2_NOTAIL_FL 0x00008000  
 #define EXT2_DIRSYNC_FL 0x00010000  
 #define EXT2_TOPDIR_FL 0x00020000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_RESERVED_FL 0x80000000  
-
 #define EXT2_FL_USER_VISIBLE 0x0003DFFF  
 #define EXT2_FL_USER_MODIFIABLE 0x000380FF  
-
 #define EXT2_IOC_GETFLAGS _IOR('f', 1, long)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_IOC_SETFLAGS _IOW('f', 2, long)
 #define EXT2_IOC_GETVERSION _IOR('v', 1, long)
 #define EXT2_IOC_SETVERSION _IOW('v', 2, long)
-
 struct ext2_inode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 i_mode;
  __le16 i_uid;
  __le32 i_size;
  __le32 i_atime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 i_ctime;
  __le32 i_mtime;
  __le32 i_dtime;
  __le16 i_gid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 i_links_count;
  __le32 i_blocks;
  __le32 i_flags;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  __le32 l_i_reserved1;
  } linux1;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 h_i_translator;
  } hurd1;
  struct {
  __le32 m_i_reserved1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } masix1;
  } osd1;
  __le32 i_block[EXT2_N_BLOCKS];
  __le32 i_generation;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 i_file_acl;
  __le32 i_dir_acl;
  __le32 i_faddr;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  __u8 l_i_frag;
  __u8 l_i_fsize;
  __u16 i_pad1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 l_i_uid_high;
  __le16 l_i_gid_high;
  __u32 l_i_reserved2;
  } linux2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  __u8 h_i_frag;
  __u8 h_i_fsize;
  __le16 h_i_mode_high;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 h_i_uid_high;
  __le16 h_i_gid_high;
  __le32 h_i_author;
  } hurd2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  __u8 m_i_frag;
  __u8 m_i_fsize;
  __u16 m_pad1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 m_i_reserved2[2];
  } masix2;
  } osd2;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_size_high i_dir_acl
-
 #ifdef __linux__
 #define i_reserved1 osd1.linux1.l_i_reserved1
 #define i_frag osd2.linux2.l_i_frag
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_fsize osd2.linux2.l_i_fsize
 #define i_uid_low i_uid
 #define i_gid_low i_gid
 #define i_uid_high osd2.linux2.l_i_uid_high
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_gid_high osd2.linux2.l_i_gid_high
 #define i_reserved2 osd2.linux2.l_i_reserved2
 #endif
-
 #ifdef __hurd__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_translator osd1.hurd1.h_i_translator
 #define i_frag osd2.hurd2.h_i_frag;
 #define i_fsize osd2.hurd2.h_i_fsize;
 #define i_uid_high osd2.hurd2.h_i_uid_high
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_gid_high osd2.hurd2.h_i_gid_high
 #define i_author osd2.hurd2.h_i_author
 #endif
-
 #ifdef __masix__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_reserved1 osd1.masix1.m_i_reserved1
 #define i_frag osd2.masix2.m_i_frag
 #define i_fsize osd2.masix2.m_i_fsize
 #define i_reserved2 osd2.masix2.m_i_reserved2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define EXT2_VALID_FS 0x0001  
 #define EXT2_ERROR_FS 0x0002  
-
 #define EXT2_MOUNT_CHECK 0x000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_MOUNT_OLDALLOC 0x000002  
 #define EXT2_MOUNT_GRPID 0x000004  
 #define EXT2_MOUNT_DEBUG 0x000008  
 #define EXT2_MOUNT_ERRORS_CONT 0x000010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_MOUNT_ERRORS_RO 0x000020  
 #define EXT2_MOUNT_ERRORS_PANIC 0x000040  
 #define EXT2_MOUNT_MINIX_DF 0x000080  
 #define EXT2_MOUNT_NOBH 0x000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_MOUNT_NO_UID32 0x000200  
 #define EXT2_MOUNT_XATTR_USER 0x004000  
 #define EXT2_MOUNT_POSIX_ACL 0x008000  
 #define EXT2_MOUNT_XIP 0x010000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_MOUNT_USRQUOTA 0x020000  
 #define EXT2_MOUNT_GRPQUOTA 0x040000  
-
 #define clear_opt(o, opt) o &= ~EXT2_MOUNT_##opt
 #define set_opt(o, opt) o |= EXT2_MOUNT_##opt
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define test_opt(sb, opt) (EXT2_SB(sb)->s_mount_opt &   EXT2_MOUNT_##opt)
-
 #define EXT2_DFL_MAX_MNT_COUNT 20  
 #define EXT2_DFL_CHECKINTERVAL 0  
-
 #define EXT2_ERRORS_CONTINUE 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_ERRORS_RO 2  
 #define EXT2_ERRORS_PANIC 3  
 #define EXT2_ERRORS_DEFAULT EXT2_ERRORS_CONTINUE
-
 struct ext2_super_block {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 s_inodes_count;
  __le32 s_blocks_count;
  __le32 s_r_blocks_count;
  __le32 s_free_blocks_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 s_free_inodes_count;
  __le32 s_first_data_block;
  __le32 s_log_block_size;
  __le32 s_log_frag_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 s_blocks_per_group;
  __le32 s_frags_per_group;
  __le32 s_inodes_per_group;
  __le32 s_mtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 s_wtime;
  __le16 s_mnt_count;
  __le16 s_max_mnt_count;
  __le16 s_magic;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 s_state;
  __le16 s_errors;
  __le16 s_minor_rev_level;
  __le32 s_lastcheck;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 s_checkinterval;
  __le32 s_creator_os;
  __le32 s_rev_level;
  __le16 s_def_resuid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 s_def_resgid;
-
  __le32 s_first_ino;
  __le16 s_inode_size;
  __le16 s_block_group_nr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 s_feature_compat;
  __le32 s_feature_incompat;
  __le32 s_feature_ro_compat;
  __u8 s_uuid[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char s_volume_name[16];
  char s_last_mounted[64];
  __le32 s_algorithm_usage_bitmap;
-
  __u8 s_prealloc_blocks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 s_prealloc_dir_blocks;
  __u16 s_padding1;
-
  __u8 s_journal_uuid[16];
  __u32 s_journal_inum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 s_journal_dev;
  __u32 s_last_orphan;
  __u32 s_hash_seed[4];
  __u8 s_def_hash_version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 s_reserved_char_pad;
  __u16 s_reserved_word_pad;
  __le32 s_default_mount_opts;
  __le32 s_first_meta_bg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 s_reserved[190];
 };
-
 #define EXT2_OS_LINUX 0
 #define EXT2_OS_HURD 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_OS_MASIX 2
 #define EXT2_OS_FREEBSD 3
 #define EXT2_OS_LITES 4
-
 #define EXT2_GOOD_OLD_REV 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_DYNAMIC_REV 1  
-
 #define EXT2_CURRENT_REV EXT2_GOOD_OLD_REV
 #define EXT2_MAX_SUPP_REV EXT2_DYNAMIC_REV
-
 #define EXT2_GOOD_OLD_INODE_SIZE 128
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_HAS_COMPAT_FEATURE(sb,mask)   ( EXT2_SB(sb)->s_es->s_feature_compat & cpu_to_le32(mask) )
 #define EXT2_HAS_RO_COMPAT_FEATURE(sb,mask)   ( EXT2_SB(sb)->s_es->s_feature_ro_compat & cpu_to_le32(mask) )
 #define EXT2_HAS_INCOMPAT_FEATURE(sb,mask)   ( EXT2_SB(sb)->s_es->s_feature_incompat & cpu_to_le32(mask) )
 #define EXT2_SET_COMPAT_FEATURE(sb,mask)   EXT2_SB(sb)->s_es->s_feature_compat |= cpu_to_le32(mask)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_SET_RO_COMPAT_FEATURE(sb,mask)   EXT2_SB(sb)->s_es->s_feature_ro_compat |= cpu_to_le32(mask)
 #define EXT2_SET_INCOMPAT_FEATURE(sb,mask)   EXT2_SB(sb)->s_es->s_feature_incompat |= cpu_to_le32(mask)
 #define EXT2_CLEAR_COMPAT_FEATURE(sb,mask)   EXT2_SB(sb)->s_es->s_feature_compat &= ~cpu_to_le32(mask)
 #define EXT2_CLEAR_RO_COMPAT_FEATURE(sb,mask)   EXT2_SB(sb)->s_es->s_feature_ro_compat &= ~cpu_to_le32(mask)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_CLEAR_INCOMPAT_FEATURE(sb,mask)   EXT2_SB(sb)->s_es->s_feature_incompat &= ~cpu_to_le32(mask)
-
 #define EXT2_FEATURE_COMPAT_DIR_PREALLOC 0x0001
 #define EXT2_FEATURE_COMPAT_IMAGIC_INODES 0x0002
 #define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_FEATURE_COMPAT_EXT_ATTR 0x0008
 #define EXT2_FEATURE_COMPAT_RESIZE_INO 0x0010
 #define EXT2_FEATURE_COMPAT_DIR_INDEX 0x0020
 #define EXT2_FEATURE_COMPAT_ANY 0xffffffff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001
 #define EXT2_FEATURE_RO_COMPAT_LARGE_FILE 0x0002
 #define EXT2_FEATURE_RO_COMPAT_BTREE_DIR 0x0004
 #define EXT2_FEATURE_RO_COMPAT_ANY 0xffffffff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_FEATURE_INCOMPAT_COMPRESSION 0x0001
 #define EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002
 #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004
 #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_FEATURE_INCOMPAT_META_BG 0x0010
 #define EXT2_FEATURE_INCOMPAT_ANY 0xffffffff
-
 #define EXT2_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR
 #define EXT2_FEATURE_INCOMPAT_SUPP (EXT2_FEATURE_INCOMPAT_FILETYPE|   EXT2_FEATURE_INCOMPAT_META_BG)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_FEATURE_RO_COMPAT_SUPP (EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER|   EXT2_FEATURE_RO_COMPAT_LARGE_FILE|   EXT2_FEATURE_RO_COMPAT_BTREE_DIR)
 #define EXT2_FEATURE_RO_COMPAT_UNSUPPORTED ~EXT2_FEATURE_RO_COMPAT_SUPP
 #define EXT2_FEATURE_INCOMPAT_UNSUPPORTED ~EXT2_FEATURE_INCOMPAT_SUPP
-
 #define EXT2_DEF_RESUID 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_DEF_RESGID 0
-
 #define EXT2_DEFM_DEBUG 0x0001
 #define EXT2_DEFM_BSDGROUPS 0x0002
 #define EXT2_DEFM_XATTR_USER 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_DEFM_ACL 0x0008
 #define EXT2_DEFM_UID16 0x0010
-
 #define EXT3_DEFM_JMODE 0x0060 
 #define EXT3_DEFM_JMODE_DATA 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_DEFM_JMODE_ORDERED 0x0040
 #define EXT3_DEFM_JMODE_WBACK 0x0060
-
 #define EXT2_NAME_LEN 255
-
 struct ext2_dir_entry {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 inode;
  __le16 rec_len;
  __le16 name_len;
  char name[EXT2_NAME_LEN];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ext2_dir_entry_2 {
  __le32 inode;
  __le16 rec_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 name_len;
  __u8 file_type;
  char name[EXT2_NAME_LEN];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  EXT2_FT_UNKNOWN,
  EXT2_FT_REG_FILE,
  EXT2_FT_DIR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  EXT2_FT_CHRDEV,
  EXT2_FT_BLKDEV,
  EXT2_FT_FIFO,
  EXT2_FT_SOCK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  EXT2_FT_SYMLINK,
  EXT2_FT_MAX
 };
-
 #define EXT2_DIR_PAD 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_DIR_ROUND (EXT2_DIR_PAD - 1)
 #define EXT2_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT2_DIR_ROUND) &   ~EXT2_DIR_ROUND)
-
 #endif
diff --git a/libc/kernel/common/linux/ext3_fs.h b/libc/kernel/common/linux/ext3_fs.h
index 8016fd1..9a70d4a 100644
--- a/libc/kernel/common/linux/ext3_fs.h
+++ b/libc/kernel/common/linux/ext3_fs.h
@@ -7,442 +7,478 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_EXT3_FS_H
 #define _LINUX_EXT3_FS_H
-
 #include <linux/types.h>
-
 #undef EXT3FS_DEBUG
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_DEFAULT_RESERVE_BLOCKS 8
-
 #define EXT3_MAX_RESERVE_BLOCKS 1027
 #define EXT3_RESERVE_WINDOW_NOT_ALLOCATED 0
-
 #define CONFIG_EXT3_INDEX
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef EXT3FS_DEBUG
 #define ext3_debug(f, a...)   do {   printk (KERN_DEBUG "EXT3-fs DEBUG (%s, %d): %s:",   __FILE__, __LINE__, __FUNCTION__);   printk (KERN_DEBUG f, ## a);   } while (0)
 #else
 #define ext3_debug(f, a...) do {} while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define EXT3_BAD_INO 1  
 #define EXT3_ROOT_INO 2  
 #define EXT3_BOOT_LOADER_INO 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_UNDEL_DIR_INO 6  
 #define EXT3_RESIZE_INO 7  
 #define EXT3_JOURNAL_INO 8  
-
 #define EXT3_GOOD_OLD_FIRST_INO 11
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_SUPER_MAGIC 0xEF53
-
 #define EXT3_LINK_MAX 32000
-
 #define EXT3_MIN_BLOCK_SIZE 1024
 #define EXT3_MAX_BLOCK_SIZE 4096
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_MIN_BLOCK_LOG_SIZE 10
 #define EXT3_BLOCK_SIZE(s) (EXT3_MIN_BLOCK_SIZE << (s)->s_log_block_size)
 #define EXT3_ADDR_PER_BLOCK(s) (EXT3_BLOCK_SIZE(s) / sizeof (__u32))
 #define EXT3_BLOCK_SIZE_BITS(s) ((s)->s_log_block_size + 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_INODE_SIZE(s) (((s)->s_rev_level == EXT3_GOOD_OLD_REV) ?   EXT3_GOOD_OLD_INODE_SIZE :   (s)->s_inode_size)
 #define EXT3_FIRST_INO(s) (((s)->s_rev_level == EXT3_GOOD_OLD_REV) ?   EXT3_GOOD_OLD_FIRST_INO :   (s)->s_first_ino)
-
 #define EXT3_MIN_FRAG_SIZE 1024
 #define EXT3_MAX_FRAG_SIZE 4096
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_MIN_FRAG_LOG_SIZE 10
 #define EXT3_FRAG_SIZE(s) (EXT3_MIN_FRAG_SIZE << (s)->s_log_frag_size)
 #define EXT3_FRAGS_PER_BLOCK(s) (EXT3_BLOCK_SIZE(s) / EXT3_FRAG_SIZE(s))
-
 struct ext3_group_desc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __le32 bg_block_bitmap;
  __le32 bg_inode_bitmap;
  __le32 bg_inode_table;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 bg_free_blocks_count;
  __le16 bg_free_inodes_count;
  __le16 bg_used_dirs_count;
  __u16 bg_pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 bg_reserved[3];
 };
-
 #define EXT3_BLOCKS_PER_GROUP(s) ((s)->s_blocks_per_group)
 #define EXT3_DESC_PER_BLOCK(s) (EXT3_BLOCK_SIZE(s) / sizeof (struct ext3_group_desc))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_INODES_PER_GROUP(s) ((s)->s_inodes_per_group)
-
 #define EXT3_NDIR_BLOCKS 12
 #define EXT3_IND_BLOCK EXT3_NDIR_BLOCKS
 #define EXT3_DIND_BLOCK (EXT3_IND_BLOCK + 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_TIND_BLOCK (EXT3_DIND_BLOCK + 1)
 #define EXT3_N_BLOCKS (EXT3_TIND_BLOCK + 1)
-
 #define EXT3_SECRM_FL 0x00000001  
 #define EXT3_UNRM_FL 0x00000002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_COMPR_FL 0x00000004  
 #define EXT3_SYNC_FL 0x00000008  
 #define EXT3_IMMUTABLE_FL 0x00000010  
 #define EXT3_APPEND_FL 0x00000020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_NODUMP_FL 0x00000040  
 #define EXT3_NOATIME_FL 0x00000080  
-
 #define EXT3_DIRTY_FL 0x00000100
 #define EXT3_COMPRBLK_FL 0x00000200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_NOCOMPR_FL 0x00000400  
 #define EXT3_ECOMPR_FL 0x00000800  
-
 #define EXT3_INDEX_FL 0x00001000  
 #define EXT3_IMAGIC_FL 0x00002000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_JOURNAL_DATA_FL 0x00004000  
 #define EXT3_NOTAIL_FL 0x00008000  
 #define EXT3_DIRSYNC_FL 0x00010000  
 #define EXT3_TOPDIR_FL 0x00020000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_RESERVED_FL 0x80000000  
-
 #define EXT3_FL_USER_VISIBLE 0x0003DFFF  
 #define EXT3_FL_USER_MODIFIABLE 0x000380FF  
-
 #define EXT3_STATE_JDATA 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_STATE_NEW 0x00000002  
 #define EXT3_STATE_XATTR 0x00000004  
-
 struct ext3_new_group_input {
  __u32 group;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 block_bitmap;
  __u32 inode_bitmap;
  __u32 inode_table;
  __u32 blocks_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 reserved_blocks;
  __u16 unused;
 };
-
 struct ext3_new_group_data {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 group;
  __u32 block_bitmap;
  __u32 inode_bitmap;
  __u32 inode_table;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 blocks_count;
  __u16 reserved_blocks;
  __u16 unused;
  __u32 free_blocks_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define EXT3_IOC_GETFLAGS _IOR('f', 1, long)
 #define EXT3_IOC_SETFLAGS _IOW('f', 2, long)
 #define EXT3_IOC_GETVERSION _IOR('f', 3, long)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_IOC_SETVERSION _IOW('f', 4, long)
 #define EXT3_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long)
 #define EXT3_IOC_GROUP_ADD _IOW('f', 8,struct ext3_new_group_input)
 #define EXT3_IOC_GETVERSION_OLD _IOR('v', 1, long)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_IOC_SETVERSION_OLD _IOW('v', 2, long)
 #define EXT3_IOC_GETRSVSZ _IOR('f', 5, long)
 #define EXT3_IOC_SETRSVSZ _IOW('f', 6, long)
-
 struct ext3_mount_options {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long s_mount_opt;
  uid_t s_resuid;
  gid_t s_resgid;
  unsigned long s_commit_interval;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ext3_inode {
  __le16 i_mode;
  __le16 i_uid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 i_size;
  __le32 i_atime;
  __le32 i_ctime;
  __le32 i_mtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 i_dtime;
  __le16 i_gid;
  __le16 i_links_count;
  __le32 i_blocks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 i_flags;
  union {
  struct {
  __u32 l_i_reserved1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } linux1;
  struct {
  __u32 h_i_translator;
  } hurd1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  __u32 m_i_reserved1;
  } masix1;
  } osd1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 i_block[EXT3_N_BLOCKS];
  __le32 i_generation;
  __le32 i_file_acl;
  __le32 i_dir_acl;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 i_faddr;
  union {
  struct {
  __u8 l_i_frag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 l_i_fsize;
  __u16 i_pad1;
  __le16 l_i_uid_high;
  __le16 l_i_gid_high;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 l_i_reserved2;
  } linux2;
  struct {
  __u8 h_i_frag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 h_i_fsize;
  __u16 h_i_mode_high;
  __u16 h_i_uid_high;
  __u16 h_i_gid_high;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 h_i_author;
  } hurd2;
  struct {
  __u8 m_i_frag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 m_i_fsize;
  __u16 m_pad1;
  __u32 m_i_reserved2[2];
  } masix2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } osd2;
  __le16 i_extra_isize;
  __le16 i_pad1;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_size_high i_dir_acl
-
 #ifdef __linux__
 #define i_reserved1 osd1.linux1.l_i_reserved1
 #define i_frag osd2.linux2.l_i_frag
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_fsize osd2.linux2.l_i_fsize
 #define i_uid_low i_uid
 #define i_gid_low i_gid
 #define i_uid_high osd2.linux2.l_i_uid_high
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_gid_high osd2.linux2.l_i_gid_high
 #define i_reserved2 osd2.linux2.l_i_reserved2
-
 #elif defined(__GNU__)
-
 #define i_translator osd1.hurd1.h_i_translator
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_frag osd2.hurd2.h_i_frag;
 #define i_fsize osd2.hurd2.h_i_fsize;
 #define i_uid_high osd2.hurd2.h_i_uid_high
 #define i_gid_high osd2.hurd2.h_i_gid_high
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_author osd2.hurd2.h_i_author
-
 #elif defined(__masix__)
-
 #define i_reserved1 osd1.masix1.m_i_reserved1
 #define i_frag osd2.masix2.m_i_frag
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define i_fsize osd2.masix2.m_i_fsize
 #define i_reserved2 osd2.masix2.m_i_reserved2
-
 #endif
-
 #define EXT3_VALID_FS 0x0001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_ERROR_FS 0x0002  
 #define EXT3_ORPHAN_FS 0x0004  
-
 #define EXT3_MOUNT_CHECK 0x00001  
 #define EXT3_MOUNT_OLDALLOC 0x00002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_MOUNT_GRPID 0x00004  
 #define EXT3_MOUNT_DEBUG 0x00008  
 #define EXT3_MOUNT_ERRORS_CONT 0x00010  
 #define EXT3_MOUNT_ERRORS_RO 0x00020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_MOUNT_ERRORS_PANIC 0x00040  
 #define EXT3_MOUNT_MINIX_DF 0x00080  
 #define EXT3_MOUNT_NOLOAD 0x00100  
 #define EXT3_MOUNT_ABORT 0x00200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_MOUNT_DATA_FLAGS 0x00C00  
 #define EXT3_MOUNT_JOURNAL_DATA 0x00400  
 #define EXT3_MOUNT_ORDERED_DATA 0x00800  
 #define EXT3_MOUNT_WRITEBACK_DATA 0x00C00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_MOUNT_UPDATE_JOURNAL 0x01000  
 #define EXT3_MOUNT_NO_UID32 0x02000  
 #define EXT3_MOUNT_XATTR_USER 0x04000  
 #define EXT3_MOUNT_POSIX_ACL 0x08000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_MOUNT_RESERVATION 0x10000  
 #define EXT3_MOUNT_BARRIER 0x20000  
 #define EXT3_MOUNT_NOBH 0x40000  
 #define EXT3_MOUNT_QUOTA 0x80000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_MOUNT_USRQUOTA 0x100000  
 #define EXT3_MOUNT_GRPQUOTA 0x200000  
-
 #ifndef _LINUX_EXT2_FS_H
 #define clear_opt(o, opt) o &= ~EXT3_MOUNT_##opt
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define set_opt(o, opt) o |= EXT3_MOUNT_##opt
 #define test_opt(sb, opt) (EXT3_SB(sb)->s_mount_opt &   EXT3_MOUNT_##opt)
 #else
 #define EXT2_MOUNT_NOLOAD EXT3_MOUNT_NOLOAD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_MOUNT_ABORT EXT3_MOUNT_ABORT
 #define EXT2_MOUNT_DATA_FLAGS EXT3_MOUNT_DATA_FLAGS
 #endif
-
 #define ext3_set_bit ext2_set_bit
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ext3_set_bit_atomic ext2_set_bit_atomic
 #define ext3_clear_bit ext2_clear_bit
 #define ext3_clear_bit_atomic ext2_clear_bit_atomic
 #define ext3_test_bit ext2_test_bit
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ext3_find_first_zero_bit ext2_find_first_zero_bit
 #define ext3_find_next_zero_bit ext2_find_next_zero_bit
-
 #define EXT3_DFL_MAX_MNT_COUNT 20  
 #define EXT3_DFL_CHECKINTERVAL 0  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_ERRORS_CONTINUE 1  
 #define EXT3_ERRORS_RO 2  
 #define EXT3_ERRORS_PANIC 3  
 #define EXT3_ERRORS_DEFAULT EXT3_ERRORS_CONTINUE
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ext3_super_block {
   __le32 s_inodes_count;
  __le32 s_blocks_count;
  __le32 s_r_blocks_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 s_free_blocks_count;
   __le32 s_free_inodes_count;
  __le32 s_first_data_block;
  __le32 s_log_block_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 s_log_frag_size;
   __le32 s_blocks_per_group;
  __le32 s_frags_per_group;
  __le32 s_inodes_per_group;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 s_mtime;
   __le32 s_wtime;
  __le16 s_mnt_count;
  __le16 s_max_mnt_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 s_magic;
  __le16 s_state;
  __le16 s_errors;
  __le16 s_minor_rev_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   __le32 s_lastcheck;
  __le32 s_checkinterval;
  __le32 s_creator_os;
  __le32 s_rev_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   __le16 s_def_resuid;
  __le16 s_def_resgid;
-
  __le32 s_first_ino;
  __le16 s_inode_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 s_block_group_nr;
  __le32 s_feature_compat;
   __le32 s_feature_incompat;
  __le32 s_feature_ro_compat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   __u8 s_uuid[16];
   char s_volume_name[16];
   char s_last_mounted[64];
   __le32 s_algorithm_usage_bitmap;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 s_prealloc_blocks;
  __u8 s_prealloc_dir_blocks;
  __u16 s_reserved_gdt_blocks;
-
   __u8 s_journal_uuid[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   __le32 s_journal_inum;
  __le32 s_journal_dev;
  __le32 s_last_orphan;
  __le32 s_hash_seed[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 s_def_hash_version;
  __u8 s_reserved_char_pad;
  __u16 s_reserved_word_pad;
  __le32 s_default_mount_opts;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 s_first_meta_bg;
  __u32 s_reserved[190];
 };
-
 #define EXT3_SB(sb) (sb)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NEXT_ORPHAN(inode) EXT3_I(inode)->i_dtime
-
 #define EXT3_OS_LINUX 0
 #define EXT3_OS_HURD 1
 #define EXT3_OS_MASIX 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_OS_FREEBSD 3
 #define EXT3_OS_LITES 4
-
 #define EXT3_GOOD_OLD_REV 0  
 #define EXT3_DYNAMIC_REV 1  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_CURRENT_REV EXT3_GOOD_OLD_REV
 #define EXT3_MAX_SUPP_REV EXT3_DYNAMIC_REV
-
 #define EXT3_GOOD_OLD_INODE_SIZE 128
-
 #define EXT3_HAS_COMPAT_FEATURE(sb,mask)   ( EXT3_SB(sb)->s_es->s_feature_compat & cpu_to_le32(mask) )
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_HAS_RO_COMPAT_FEATURE(sb,mask)   ( EXT3_SB(sb)->s_es->s_feature_ro_compat & cpu_to_le32(mask) )
 #define EXT3_HAS_INCOMPAT_FEATURE(sb,mask)   ( EXT3_SB(sb)->s_es->s_feature_incompat & cpu_to_le32(mask) )
 #define EXT3_SET_COMPAT_FEATURE(sb,mask)   EXT3_SB(sb)->s_es->s_feature_compat |= cpu_to_le32(mask)
 #define EXT3_SET_RO_COMPAT_FEATURE(sb,mask)   EXT3_SB(sb)->s_es->s_feature_ro_compat |= cpu_to_le32(mask)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_SET_INCOMPAT_FEATURE(sb,mask)   EXT3_SB(sb)->s_es->s_feature_incompat |= cpu_to_le32(mask)
 #define EXT3_CLEAR_COMPAT_FEATURE(sb,mask)   EXT3_SB(sb)->s_es->s_feature_compat &= ~cpu_to_le32(mask)
 #define EXT3_CLEAR_RO_COMPAT_FEATURE(sb,mask)   EXT3_SB(sb)->s_es->s_feature_ro_compat &= ~cpu_to_le32(mask)
 #define EXT3_CLEAR_INCOMPAT_FEATURE(sb,mask)   EXT3_SB(sb)->s_es->s_feature_incompat &= ~cpu_to_le32(mask)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_FEATURE_COMPAT_DIR_PREALLOC 0x0001
 #define EXT3_FEATURE_COMPAT_IMAGIC_INODES 0x0002
 #define EXT3_FEATURE_COMPAT_HAS_JOURNAL 0x0004
 #define EXT3_FEATURE_COMPAT_EXT_ATTR 0x0008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_FEATURE_COMPAT_RESIZE_INODE 0x0010
 #define EXT3_FEATURE_COMPAT_DIR_INDEX 0x0020
-
 #define EXT3_FEATURE_RO_COMPAT_SPARSE_SUPER 0x0001
 #define EXT3_FEATURE_RO_COMPAT_LARGE_FILE 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_FEATURE_RO_COMPAT_BTREE_DIR 0x0004
-
 #define EXT3_FEATURE_INCOMPAT_COMPRESSION 0x0001
 #define EXT3_FEATURE_INCOMPAT_FILETYPE 0x0002
 #define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_FEATURE_INCOMPAT_JOURNAL_DEV 0x0008  
 #define EXT3_FEATURE_INCOMPAT_META_BG 0x0010
-
 #define EXT3_FEATURE_COMPAT_SUPP EXT2_FEATURE_COMPAT_EXT_ATTR
 #define EXT3_FEATURE_INCOMPAT_SUPP (EXT3_FEATURE_INCOMPAT_FILETYPE|   EXT3_FEATURE_INCOMPAT_RECOVER|   EXT3_FEATURE_INCOMPAT_META_BG)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_FEATURE_RO_COMPAT_SUPP (EXT3_FEATURE_RO_COMPAT_SPARSE_SUPER|   EXT3_FEATURE_RO_COMPAT_LARGE_FILE|   EXT3_FEATURE_RO_COMPAT_BTREE_DIR)
-
 #define EXT3_DEF_RESUID 0
 #define EXT3_DEF_RESGID 0
-
 #define EXT3_DEFM_DEBUG 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_DEFM_BSDGROUPS 0x0002
 #define EXT3_DEFM_XATTR_USER 0x0004
 #define EXT3_DEFM_ACL 0x0008
 #define EXT3_DEFM_UID16 0x0010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_DEFM_JMODE 0x0060
 #define EXT3_DEFM_JMODE_DATA 0x0020
 #define EXT3_DEFM_JMODE_ORDERED 0x0040
 #define EXT3_DEFM_JMODE_WBACK 0x0060
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_NAME_LEN 255
-
 struct ext3_dir_entry {
  __le32 inode;
  __le16 rec_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 name_len;
  char name[EXT3_NAME_LEN];
 };
-
 struct ext3_dir_entry_2 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 inode;
  __le16 rec_len;
  __u8 name_len;
  __u8 file_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[EXT3_NAME_LEN];
 };
-
 #define EXT3_FT_UNKNOWN 0
 #define EXT3_FT_REG_FILE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_FT_DIR 2
 #define EXT3_FT_CHRDEV 3
 #define EXT3_FT_BLKDEV 4
 #define EXT3_FT_FIFO 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_FT_SOCK 6
 #define EXT3_FT_SYMLINK 7
-
 #define EXT3_FT_MAX 8
-
 #define EXT3_DIR_PAD 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_DIR_ROUND (EXT3_DIR_PAD - 1)
 #define EXT3_DIR_REC_LEN(name_len) (((name_len) + 8 + EXT3_DIR_ROUND) &   ~EXT3_DIR_ROUND)
-
 #define is_dx(dir) 0
 #define EXT3_DIR_LINK_MAX(dir) ((dir)->i_nlink >= EXT3_LINK_MAX)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT3_DIR_LINK_EMPTY(dir) ((dir)->i_nlink == 2)
-
 #define DX_HASH_LEGACY 0
 #define DX_HASH_HALF_MD4 1
 #define DX_HASH_TEA 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/fadvise.h b/libc/kernel/common/linux/fadvise.h
index 25a0a4c..efa9e55 100644
--- a/libc/kernel/common/linux/fadvise.h
+++ b/libc/kernel/common/linux/fadvise.h
@@ -7,22 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef FADVISE_H_INCLUDED
 #define FADVISE_H_INCLUDED
-
 #define POSIX_FADV_NORMAL 0  
 #define POSIX_FADV_RANDOM 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POSIX_FADV_SEQUENTIAL 2  
 #define POSIX_FADV_WILLNEED 3  
-
 #ifdef __s390x__
 #define POSIX_FADV_DONTNEED 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define POSIX_FADV_NOREUSE 7  
 #else
 #define POSIX_FADV_DONTNEED 4  
 #define POSIX_FADV_NOREUSE 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #endif
diff --git a/libc/kernel/common/linux/fb.h b/libc/kernel/common/linux/fb.h
index 6fd3468..18e43f0 100644
--- a/libc/kernel/common/linux/fb.h
+++ b/libc/kernel/common/linux/fb.h
@@ -394,4 +394,3 @@
  struct fb_image image;
 };
 #endif
-
diff --git a/libc/kernel/common/linux/fcntl.h b/libc/kernel/common/linux/fcntl.h
index 323e87a..5e3fcd6 100644
--- a/libc/kernel/common/linux/fcntl.h
+++ b/libc/kernel/common/linux/fcntl.h
@@ -7,29 +7,34 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_FCNTL_H
 #define _LINUX_FCNTL_H
-
 #include <asm/fcntl.h>
-
 #define F_SETLEASE (F_LINUX_SPECIFIC_BASE+0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define F_GETLEASE (F_LINUX_SPECIFIC_BASE+1)
-
 #define F_NOTIFY (F_LINUX_SPECIFIC_BASE+2)
-
 #define DN_ACCESS 0x00000001  
 #define DN_MODIFY 0x00000002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DN_CREATE 0x00000004  
 #define DN_DELETE 0x00000008  
 #define DN_RENAME 0x00000010  
 #define DN_ATTRIB 0x00000020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DN_MULTISHOT 0x80000000  
-
 #define AT_FDCWD -100  
 #define AT_SYMLINK_NOFOLLOW 0x100  
 #define AT_REMOVEDIR 0x200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AT_SYMLINK_FOLLOW 0x400  
-
 #endif
diff --git a/libc/kernel/common/linux/fd.h b/libc/kernel/common/linux/fd.h
index f3bedd1..d4f38ab 100644
--- a/libc/kernel/common/linux/fd.h
+++ b/libc/kernel/common/linux/fd.h
@@ -7,252 +7,243 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_FD_H
 #define _LINUX_FD_H
-
 #include <linux/ioctl.h>
 #include <linux/compiler.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct floppy_struct {
  unsigned int size,
  sect,
  head,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  track,
  stretch;
 #define FD_STRETCH 1
 #define FD_SWAPSIDES 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_ZEROBASED 4
-
  unsigned char gap,
-
  rate,
 #define FD_2M 0x4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_SIZECODEMASK 0x38
 #define FD_SIZECODE(floppy) (((((floppy)->rate&FD_SIZECODEMASK)>> 3)+ 2) %8)
 #define FD_SECTSIZE(floppy) ( (floppy)->rate & FD_2M ?   512 : 128 << FD_SIZECODE(floppy) )
 #define FD_PERP 0x40
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  spec1,
  fmt_gap;
  const char * name;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDCLRPRM _IO(2, 0x41)
-
 #define FDSETPRM _IOW(2, 0x42, struct floppy_struct) 
 #define FDSETMEDIAPRM FDSETPRM
-
 #define FDDEFPRM _IOW(2, 0x43, struct floppy_struct) 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDGETPRM _IOR(2, 0x04, struct floppy_struct)
 #define FDDEFMEDIAPRM FDDEFPRM
 #define FDGETMEDIAPRM FDGETPRM
-
 #define FDMSGON _IO(2,0x45)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDMSGOFF _IO(2,0x46)
-
 #define FD_FILL_BYTE 0xF6  
-
 struct format_descr {
  unsigned int device,head,track;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define FDFMTBEG _IO(2,0x47)
-
 #define FDFMTTRK _IOW(2,0x48, struct format_descr)
-
 #define FDFMTEND _IO(2,0x49)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct floppy_max_errors {
  unsigned int
  abort,
  read_track,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  reset,
  recal,
-
  reporting;
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDSETEMSGTRESH _IO(2,0x4a)
-
 #define FDFLUSH _IO(2,0x4b)
-
 #define FDSETMAXERRS _IOW(2, 0x4c, struct floppy_max_errors)
 #define FDGETMAXERRS _IOR(2, 0x0e, struct floppy_max_errors)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef char floppy_drive_name[16];
 #define FDGETDRVTYP _IOR(2, 0x0f, floppy_drive_name)
-
 struct floppy_drive_params {
  signed char cmos;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long max_dtr;
  unsigned long hlt;
  unsigned long hut;
  unsigned long srt;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long spinup;
  unsigned long spindown;
  unsigned char spindown_offset;
  unsigned char select_delay;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char rps;
  unsigned char tracks;
  unsigned long timeout;
-
  unsigned char interleave_sect;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct floppy_max_errors max_errors;
-
  char flags;
-
 #define FTD_MSG 0x10
 #define FD_BROKEN_DCL 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_DEBUG 0x02
 #define FD_SILENT_DCL_CLEAR 0x4
 #define FD_INVERTED_DCL 0x80  
-
  char read_track;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  short autodetect[8];
-
  int checkfreq;
  int native_format;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  FD_NEED_TWADDLE_BIT,
  FD_VERIFY_BIT,
  FD_DISK_NEWCHANGE_BIT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FD_UNUSED_BIT,
  FD_DISK_CHANGED_BIT,
  FD_DISK_WRITABLE_BIT
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDSETDRVPRM _IOW(2, 0x90, struct floppy_drive_params)
 #define FDGETDRVPRM _IOR(2, 0x11, struct floppy_drive_params)
-
 struct floppy_drive_struct {
  unsigned long flags;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_NEED_TWADDLE (1 << FD_NEED_TWADDLE_BIT)
 #define FD_VERIFY (1 << FD_VERIFY_BIT)
 #define FD_DISK_NEWCHANGE (1 << FD_DISK_NEWCHANGE_BIT)
 #define FD_DISK_CHANGED (1 << FD_DISK_CHANGED_BIT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_DISK_WRITABLE (1 << FD_DISK_WRITABLE_BIT)
-
  unsigned long spinup_date;
  unsigned long select_date;
  unsigned long first_read_date;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  short probed_format;
  short track;
  short maxblock;
  short maxtrack;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int generation;
-
  int keep_data;
-
  int fd_ref;
  int fd_device;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long last_checked;
-
  char *dmabuf;
  int bufblocks;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDGETDRVSTAT _IOR(2, 0x12, struct floppy_drive_struct)
 #define FDPOLLDRVSTAT _IOR(2, 0x13, struct floppy_drive_struct)
-
 enum reset_mode {
  FD_RESET_IF_NEEDED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FD_RESET_IF_RAWCMD,
  FD_RESET_ALWAYS
 };
 #define FDRESET _IO(2, 0x54)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct floppy_fdc_state {
  int spec1;
  int spec2;
  int dtr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char version;
  unsigned char dor;
  unsigned long address;
  unsigned int rawcmd:2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int reset:1;
  unsigned int need_configure:1;
  unsigned int perp_mode:2;
  unsigned int has_fifo:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int driver_version;
 #define FD_DRIVER_VERSION 0x100
-
  unsigned char track[4];
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDGETFDCSTAT _IOR(2, 0x15, struct floppy_fdc_state)
-
 struct floppy_write_errors {
-
  unsigned int write_errors;
-
  unsigned long first_error_sector;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int first_error_generation;
  unsigned long last_error_sector;
  int last_error_generation;
-
  unsigned int badness;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define FDWERRORCLR _IO(2, 0x56)
-
 #define FDWERRORGET _IOR(2, 0x17, struct floppy_write_errors)
-
 #define FDHAVEBATCHEDRAWCMD
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct floppy_raw_cmd {
  unsigned int flags;
 #define FD_RAW_READ 1
 #define FD_RAW_WRITE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_RAW_NO_MOTOR 4
 #define FD_RAW_DISK_CHANGE 4  
 #define FD_RAW_INTR 8  
 #define FD_RAW_SPIN 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_RAW_NO_MOTOR_AFTER 0x20  
 #define FD_RAW_NEED_DISK 0x40  
 #define FD_RAW_NEED_SEEK 0x80  
-
 #define FD_RAW_MORE 0x100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_RAW_STOP_IF_FAILURE 0x200  
 #define FD_RAW_STOP_IF_SUCCESS 0x400  
 #define FD_RAW_SOFTFAILURE 0x800  
-
 #define FD_RAW_FAILURE 0x10000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_RAW_HARDFAILURE 0x20000  
-
  void __user *data;
  char *kernel_data;
  struct floppy_raw_cmd *next;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long length;
  long phys_length;
  int buffer_length;
-
  unsigned char rate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char cmd_count;
  unsigned char cmd[16];
  unsigned char reply_count;
  unsigned char reply[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int track;
  int resultcode;
-
  int reserved1;
  int reserved2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define FDRAWCMD _IO(2, 0x58)
-
 #define FDTWADDLE _IO(2, 0x59)
-
 #define FDEJECT _IO(2, 0x5a)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/file.h b/libc/kernel/common/linux/file.h
index 87e570b..552768e 100644
--- a/libc/kernel/common/linux/file.h
+++ b/libc/kernel/common/linux/file.h
@@ -7,58 +7,60 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_FILE_H
 #define __LINUX_FILE_H
-
 #include <asm/atomic.h>
 #include <linux/posix_types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/compiler.h>
 #include <linux/spinlock.h>
 #include <linux/rcupdate.h>
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NR_OPEN_DEFAULT BITS_PER_LONG
-
 struct embedded_fd_set {
  unsigned long fds_bits[1];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EMBEDDED_FD_SET_SIZE (BITS_PER_BYTE * sizeof(struct embedded_fd_set))
-
 struct fdtable {
  unsigned int max_fds;
  int max_fdset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct file ** fd;
  fd_set *close_on_exec;
  fd_set *open_fds;
  struct rcu_head rcu;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct files_struct *free_files;
  struct fdtable *next;
 };
-
 struct files_struct {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t count;
  struct fdtable *fdt;
  struct fdtable fdtab;
-
  spinlock_t file_lock ____cacheline_aligned_in_smp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int next_fd;
  struct embedded_fd_set close_on_exec_init;
  struct embedded_fd_set open_fds_init;
  struct file * fd_array[NR_OPEN_DEFAULT];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define files_fdtable(files) (rcu_dereference((files)->fdt))
-
 struct kmem_cache;
-
 #define fcheck(fd) fcheck_files(current->files, fd)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct task_struct;
-
 struct files_struct *get_files_struct(struct task_struct *);
-
 #endif
diff --git a/libc/kernel/common/linux/filter.h b/libc/kernel/common/linux/filter.h
index e858a0f..613ee67 100644
--- a/libc/kernel/common/linux/filter.h
+++ b/libc/kernel/common/linux/filter.h
@@ -7,98 +7,110 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_FILTER_H__
 #define __LINUX_FILTER_H__
-
 #include <linux/compiler.h>
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_MAJOR_VERSION 1
 #define BPF_MINOR_VERSION 1
-
 struct sock_filter
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 code;
  __u8 jt;
  __u8 jf;
  __u32 k;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct sock_fprog
 {
  unsigned short len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sock_filter __user *filter;
 };
-
 #define BPF_CLASS(code) ((code) & 0x07)
 #define BPF_LD 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_LDX 0x01
 #define BPF_ST 0x02
 #define BPF_STX 0x03
 #define BPF_ALU 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_JMP 0x05
 #define BPF_RET 0x06
 #define BPF_MISC 0x07
-
 #define BPF_SIZE(code) ((code) & 0x18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_W 0x00
 #define BPF_H 0x08
 #define BPF_B 0x10
 #define BPF_MODE(code) ((code) & 0xe0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_IMM 0x00
 #define BPF_ABS 0x20
 #define BPF_IND 0x40
 #define BPF_MEM 0x60
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_LEN 0x80
 #define BPF_MSH 0xa0
-
 #define BPF_OP(code) ((code) & 0xf0)
 #define BPF_ADD 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_SUB 0x10
 #define BPF_MUL 0x20
 #define BPF_DIV 0x30
 #define BPF_OR 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_AND 0x50
 #define BPF_LSH 0x60
 #define BPF_RSH 0x70
 #define BPF_NEG 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_JA 0x00
 #define BPF_JEQ 0x10
 #define BPF_JGT 0x20
 #define BPF_JGE 0x30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_JSET 0x40
 #define BPF_SRC(code) ((code) & 0x08)
 #define BPF_K 0x00
 #define BPF_X 0x08
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_RVAL(code) ((code) & 0x18)
 #define BPF_A 0x10
-
 #define BPF_MISCOP(code) ((code) & 0xf8)
 #define BPF_TAX 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_TXA 0x80
-
 #ifndef BPF_MAXINSNS
 #define BPF_MAXINSNS 4096
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef BPF_STMT
 #define BPF_STMT(code, k) { (unsigned short)(code), 0, 0, k }
 #endif
 #ifndef BPF_JUMP
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BPF_JUMP(code, k, jt, jf) { (unsigned short)(code), jt, jf, k }
 #endif
-
 #define BPF_MEMWORDS 16
-
 #define SKF_AD_OFF (-0x1000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SKF_AD_PROTOCOL 0
 #define SKF_AD_PKTTYPE 4
 #define SKF_AD_IFINDEX 8
 #define SKF_AD_MAX 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SKF_NET_OFF (-0x100000)
 #define SKF_LL_OFF (-0x200000)
-
 #endif
diff --git a/libc/kernel/common/linux/fs.h b/libc/kernel/common/linux/fs.h
index 8d375b5..5d7b365 100644
--- a/libc/kernel/common/linux/fs.h
+++ b/libc/kernel/common/linux/fs.h
@@ -7,156 +7,167 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_FS_H
 #define _LINUX_FS_H
-
 #include <linux/limits.h>
 #include <linux/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #undef NR_OPEN
 #define NR_OPEN (1024*1024)  
 #define INR_OPEN 1024  
-
 #define BLOCK_SIZE_BITS 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLOCK_SIZE (1<<BLOCK_SIZE_BITS)
-
 #define SEEK_SET 0  
 #define SEEK_CUR 1  
 #define SEEK_END 2  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct files_stat_struct {
  int nr_files;
  int nr_free_files;
  int max_files;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct inodes_stat_t {
  int nr_inodes;
  int nr_unused;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int dummy[5];
 };
-
 #define NR_FILE 8192  
-
 #define MAY_EXEC 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAY_WRITE 2
 #define MAY_READ 4
 #define MAY_APPEND 8
-
 #define FMODE_READ 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FMODE_WRITE 2
-
 #define FMODE_LSEEK 4
 #define FMODE_PREAD 8
 #define FMODE_PWRITE FMODE_PREAD  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FMODE_EXEC 16
-
 #define RW_MASK 1
 #define RWA_MASK 2
 #define READ 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WRITE 1
 #define READA 2  
 #define SWRITE 3  
 #define SPECIAL 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define READ_SYNC (READ | (1 << BIO_RW_SYNC))
 #define WRITE_SYNC (WRITE | (1 << BIO_RW_SYNC))
 #define WRITE_BARRIER ((1 << BIO_RW) | (1 << BIO_RW_BARRIER))
-
 #define SEL_IN 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEL_OUT 2
 #define SEL_EX 4
-
 #define FS_REQUIRES_DEV 1 
 #define FS_BINARY_MOUNTDATA 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FS_REVAL_DOT 16384  
 #define FS_ODD_RENAME 32768  
-
 #define MS_RDONLY 1  
 #define MS_NOSUID 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_NODEV 4  
 #define MS_NOEXEC 8  
 #define MS_SYNCHRONOUS 16  
 #define MS_REMOUNT 32  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_MANDLOCK 64  
 #define MS_DIRSYNC 128  
 #define MS_NOATIME 1024  
 #define MS_NODIRATIME 2048  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_BIND 4096
 #define MS_MOVE 8192
 #define MS_REC 16384
 #define MS_VERBOSE 32768  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_SILENT 32768
 #define MS_POSIXACL (1<<16)  
 #define MS_UNBINDABLE (1<<17)  
 #define MS_PRIVATE (1<<18)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_SLAVE (1<<19)  
 #define MS_SHARED (1<<20)  
 #define MS_ACTIVE (1<<30)
 #define MS_NOUSER (1<<31)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK)
-
 #define MS_MGC_VAL 0xC0ED0000
 #define MS_MGC_MSK 0xffff0000
-
 #define S_SYNC 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_NOATIME 2  
 #define S_APPEND 4  
 #define S_IMMUTABLE 8  
 #define S_DEAD 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_NOQUOTA 32  
 #define S_DIRSYNC 64  
 #define S_NOCMTIME 128  
 #define S_SWAPFILE 256  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_PRIVATE 512  
-
 #define __IS_FLG(inode,flg) ((inode)->i_sb->s_flags & (flg))
-
 #define IS_RDONLY(inode) ((inode)->i_sb->s_flags & MS_RDONLY)
 #define IS_SYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS) ||   ((inode)->i_flags & S_SYNC))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IS_DIRSYNC(inode) (__IS_FLG(inode, MS_SYNCHRONOUS|MS_DIRSYNC) ||   ((inode)->i_flags & (S_SYNC|S_DIRSYNC)))
 #define IS_MANDLOCK(inode) __IS_FLG(inode, MS_MANDLOCK)
-
 #define IS_NOQUOTA(inode) ((inode)->i_flags & S_NOQUOTA)
 #define IS_APPEND(inode) ((inode)->i_flags & S_APPEND)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IS_IMMUTABLE(inode) ((inode)->i_flags & S_IMMUTABLE)
 #define IS_POSIXACL(inode) __IS_FLG(inode, MS_POSIXACL)
-
 #define IS_DEADDIR(inode) ((inode)->i_flags & S_DEAD)
 #define IS_NOCMTIME(inode) ((inode)->i_flags & S_NOCMTIME)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IS_SWAPFILE(inode) ((inode)->i_flags & S_SWAPFILE)
 #define IS_PRIVATE(inode) ((inode)->i_flags & S_PRIVATE)
-
 #define BLKROSET _IO(0x12,93)  
 #define BLKROGET _IO(0x12,94)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLKRRPART _IO(0x12,95)  
 #define BLKGETSIZE _IO(0x12,96)  
 #define BLKFLSBUF _IO(0x12,97)  
 #define BLKRASET _IO(0x12,98)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLKRAGET _IO(0x12,99)  
 #define BLKFRASET _IO(0x12,100) 
 #define BLKFRAGET _IO(0x12,101) 
 #define BLKSECTSET _IO(0x12,102) 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLKSECTGET _IO(0x12,103) 
 #define BLKSSZGET _IO(0x12,104) 
-
 #define BLKBSZGET _IOR(0x12,112,size_t)
 #define BLKBSZSET _IOW(0x12,113,size_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLKGETSIZE64 _IOR(0x12,114,size_t)  
 #define BLKTRACESETUP _IOWR(0x12,115,struct blk_user_trace_setup)
 #define BLKTRACESTART _IO(0x12,116)
 #define BLKTRACESTOP _IO(0x12,117)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLKTRACETEARDOWN _IO(0x12,118)
-
 #define BMAP_IOCTL 1  
 #define FIBMAP _IO(0x00,1)  
 #define FIGETBSZ _IO(0x00,2)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYNC_FILE_RANGE_WAIT_BEFORE 1
 #define SYNC_FILE_RANGE_WRITE 2
 #define SYNC_FILE_RANGE_WAIT_AFTER 4
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/ftape.h b/libc/kernel/common/linux/ftape.h
index bb1527c..105a5f3 100644
--- a/libc/kernel/common/linux/ftape.h
+++ b/libc/kernel/common/linux/ftape.h
@@ -7,45 +7,54 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _FTAPE_H
 #define _FTAPE_H
-
 #define FTAPE_VERSION "ftape v3.04d 25/11/97"
-
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/mtio.h>
-
 #define FT_SECTOR(x) (x+1)  
 #define FT_SECTOR_SIZE 1024
 #define FT_SECTORS_PER_SEGMENT 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FT_ECC_SECTORS 3
 #define FT_SEGMENT_SIZE ((FT_SECTORS_PER_SEGMENT - FT_ECC_SECTORS) * FT_SECTOR_SIZE)
 #define FT_BUFF_SIZE (FT_SECTORS_PER_SEGMENT * FT_SECTOR_SIZE)
-
 #define FTAPE_SEL_A 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FTAPE_SEL_B 1
 #define FTAPE_SEL_C 2
 #define FTAPE_SEL_D 3
 #define FTAPE_SEL_MASK 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FTAPE_SEL(unit) ((unit) & FTAPE_SEL_MASK)
 #define FTAPE_NO_REWIND 4  
-
 typedef union {
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 error;
  __u8 command;
  } error;
  long space;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } ft_drive_error;
 typedef union {
  struct {
  __u8 drive_status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 drive_config;
  __u8 tape_status;
  } status;
  long space;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } ft_drive_status;
-
 #endif
diff --git a/libc/kernel/common/linux/futex.h b/libc/kernel/common/linux/futex.h
index 30f9e59..7630654 100644
--- a/libc/kernel/common/linux/futex.h
+++ b/libc/kernel/common/linux/futex.h
@@ -7,55 +7,59 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_FUTEX_H
 #define _LINUX_FUTEX_H
-
 #include <linux/sched.h>
-
 #define FUTEX_WAIT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUTEX_WAKE 1
 #define FUTEX_FD 2
 #define FUTEX_REQUEUE 3
 #define FUTEX_CMP_REQUEUE 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUTEX_WAKE_OP 5
 #define FUTEX_LOCK_PI 6
 #define FUTEX_UNLOCK_PI 7
 #define FUTEX_TRYLOCK_PI 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct robust_list {
  struct robust_list __user *next;
 };
-
 struct robust_list_head {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct robust_list list;
-
  long futex_offset;
-
  struct robust_list __user *list_op_pending;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUTEX_WAITERS 0x80000000
-
 #define FUTEX_OWNER_DIED 0x40000000
-
 #define FUTEX_TID_MASK 0x3fffffff
-
 #define ROBUST_LIST_LIMIT 2048
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUTEX_OP_SET 0  
 #define FUTEX_OP_ADD 1  
 #define FUTEX_OP_OR 2  
 #define FUTEX_OP_ANDN 3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUTEX_OP_XOR 4  
 #define FUTEX_OP_OPARG_SHIFT 8  
 #define FUTEX_OP_CMP_EQ 0  
 #define FUTEX_OP_CMP_NE 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUTEX_OP_CMP_LT 2  
 #define FUTEX_OP_CMP_LE 3  
 #define FUTEX_OP_CMP_GT 4  
 #define FUTEX_OP_CMP_GE 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FUTEX_OP(op, oparg, cmp, cmparg)   (((op & 0xf) << 28) | ((cmp & 0xf) << 24)   | ((oparg & 0xfff) << 12) | (cmparg & 0xfff))
 #endif
diff --git a/libc/kernel/common/linux/genetlink.h b/libc/kernel/common/linux/genetlink.h
index bc6042c..10b6504 100644
--- a/libc/kernel/common/linux/genetlink.h
+++ b/libc/kernel/common/linux/genetlink.h
@@ -91,4 +91,3 @@
 #define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
 #endif
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
-
diff --git a/libc/kernel/common/linux/genhd.h b/libc/kernel/common/linux/genhd.h
index a3a3924..e7326d4 100644
--- a/libc/kernel/common/linux/genhd.h
+++ b/libc/kernel/common/linux/genhd.h
@@ -7,49 +7,55 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_GENHD_H
 #define _LINUX_GENHD_H
-
 #include <linux/types.h>
-
 enum {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DOS_EXTENDED_PARTITION = 5,
  LINUX_EXTENDED_PARTITION = 0x85,
  WIN98_EXTENDED_PARTITION = 0x0f,
-
  LINUX_SWAP_PARTITION = 0x82,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  LINUX_RAID_PARTITION = 0xfd,
-
  SOLARIS_X86_PARTITION = LINUX_SWAP_PARTITION,
  NEW_SOLARIS_X86_PARTITION = 0xbf,
-
  DM6_AUX1PARTITION = 0x51,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DM6_AUX3PARTITION = 0x53,
  DM6_PARTITION = 0x54,
  EZD_PARTITION = 0x55,
-
  FREEBSD_PARTITION = 0xa5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  OPENBSD_PARTITION = 0xa6,
  NETBSD_PARTITION = 0xa9,
  BSDI_PARTITION = 0xb7,
  MINIX_PARTITION = 0x81,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  UNIXWARE_PARTITION = 0x63,
 };
-
 struct partition {
  unsigned char boot_ind;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char head;
  unsigned char sector;
  unsigned char cyl;
  unsigned char sys_ind;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char end_head;
  unsigned char end_sector;
  unsigned char end_cyl;
  unsigned int start_sect;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int nr_sects;
 } __attribute__((packed));
-
 #endif
diff --git a/libc/kernel/common/linux/gfp.h b/libc/kernel/common/linux/gfp.h
index 0a59fe9..258ec08 100644
--- a/libc/kernel/common/linux/gfp.h
+++ b/libc/kernel/common/linux/gfp.h
@@ -7,70 +7,73 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_GFP_H
 #define __LINUX_GFP_H
-
 #include <linux/mmzone.h>
 #include <linux/stddef.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/linkage.h>
-
 struct vm_area_struct;
-
 #define __GFP_DMA ((__force gfp_t)0x01u)
 #define __GFP_HIGHMEM ((__force gfp_t)0x02u)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if BITS_PER_LONG < 64
 #define __GFP_DMA32 ((__force gfp_t)0x00)  
 #else
 #define __GFP_DMA32 ((__force gfp_t)0x04)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define __GFP_WAIT ((__force gfp_t)0x10u)  
 #define __GFP_HIGH ((__force gfp_t)0x20u)  
 #define __GFP_IO ((__force gfp_t)0x40u)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __GFP_FS ((__force gfp_t)0x80u)  
 #define __GFP_COLD ((__force gfp_t)0x100u)  
 #define __GFP_NOWARN ((__force gfp_t)0x200u)  
 #define __GFP_REPEAT ((__force gfp_t)0x400u)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __GFP_NOFAIL ((__force gfp_t)0x800u)  
 #define __GFP_NORETRY ((__force gfp_t)0x1000u) 
 #define __GFP_NO_GROW ((__force gfp_t)0x2000u) 
 #define __GFP_COMP ((__force gfp_t)0x4000u) 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __GFP_ZERO ((__force gfp_t)0x8000u) 
 #define __GFP_NOMEMALLOC ((__force gfp_t)0x10000u)  
 #define __GFP_HARDWALL ((__force gfp_t)0x20000u)  
-
 #define __GFP_BITS_SHIFT 20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1))
-
 #define GFP_LEVEL_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS|   __GFP_COLD|__GFP_NOWARN|__GFP_REPEAT|   __GFP_NOFAIL|__GFP_NORETRY|__GFP_NO_GROW|__GFP_COMP|   __GFP_NOMEMALLOC|__GFP_HARDWALL)
-
 #define GFP_NOWAIT (GFP_ATOMIC & ~__GFP_HIGH)
-
 #define GFP_ATOMIC (__GFP_HIGH)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFP_NOIO (__GFP_WAIT)
 #define GFP_NOFS (__GFP_WAIT | __GFP_IO)
 #define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS)
 #define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HARDWALL |   __GFP_HIGHMEM)
-
 #define GFP_DMA __GFP_DMA
-
 #define GFP_DMA32 __GFP_DMA32
-
 #ifndef HAVE_ARCH_FREE_PAGE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define alloc_pages(gfp_mask, order)   alloc_pages_node(numa_node_id(), gfp_mask, order)
 #define alloc_page_vma(gfp_mask, vma, addr) alloc_pages(gfp_mask, 0)
 #define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __get_free_page(gfp_mask)   __get_free_pages((gfp_mask),0)
-
 #define __get_dma_pages(gfp_mask, order)   __get_free_pages((gfp_mask) | GFP_DMA,(order))
-
 #define __free_page(page) __free_pages((page), 0)
 #define free_page(addr) free_pages((addr),0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/hardirq.h b/libc/kernel/common/linux/hardirq.h
index c0566b0..90ad99b 100644
--- a/libc/kernel/common/linux/hardirq.h
+++ b/libc/kernel/common/linux/hardirq.h
@@ -7,67 +7,67 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_HARDIRQ_H
 #define LINUX_HARDIRQ_H
-
 #include <linux/preempt.h>
 #include <linux/smp_lock.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/lockdep.h>
 #include <asm/hardirq.h>
 #include <asm/system.h>
-
 #define PREEMPT_BITS 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOFTIRQ_BITS 8
-
 #ifndef HARDIRQ_BITS
 #define HARDIRQ_BITS 12
-
 #if 1 << HARDIRQ_BITS < NR_IRQS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error HARDIRQ_BITS is too low!
 #endif
 #endif
-
 #define PREEMPT_SHIFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOFTIRQ_SHIFT (PREEMPT_SHIFT + PREEMPT_BITS)
 #define HARDIRQ_SHIFT (SOFTIRQ_SHIFT + SOFTIRQ_BITS)
-
 #define __IRQ_MASK(x) ((1UL << (x))-1)
-
 #define PREEMPT_MASK (__IRQ_MASK(PREEMPT_BITS) << PREEMPT_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOFTIRQ_MASK (__IRQ_MASK(SOFTIRQ_BITS) << SOFTIRQ_SHIFT)
 #define HARDIRQ_MASK (__IRQ_MASK(HARDIRQ_BITS) << HARDIRQ_SHIFT)
-
 #define PREEMPT_OFFSET (1UL << PREEMPT_SHIFT)
 #define SOFTIRQ_OFFSET (1UL << SOFTIRQ_SHIFT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT)
-
 #if PREEMPT_ACTIVE < 1 << HARDIRQ_SHIFT + HARDIRQ_BITS
 #error PREEMPT_ACTIVE is too low!
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define hardirq_count() (preempt_count() & HARDIRQ_MASK)
 #define softirq_count() (preempt_count() & SOFTIRQ_MASK)
 #define irq_count() (preempt_count() & (HARDIRQ_MASK | SOFTIRQ_MASK))
-
 #define in_irq() (hardirq_count())
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define in_softirq() (softirq_count())
 #define in_interrupt() (irq_count())
-
 #define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != 0)
-
 #define preemptible() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQ_EXIT_OFFSET HARDIRQ_OFFSET
-
 #define synchronize_irq(irq) barrier()
-
 struct task_struct;
-
 #define irq_enter()   do {   account_system_vtime(current);   add_preempt_count(HARDIRQ_OFFSET);   trace_hardirq_enter();   } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __irq_exit()   do {   trace_hardirq_exit();   account_system_vtime(current);   sub_preempt_count(HARDIRQ_OFFSET);   } while (0)
-
 #define nmi_enter() do { lockdep_off(); irq_enter(); } while (0)
 #define nmi_exit() do { __irq_exit(); lockdep_on(); } while (0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/hdlc/ioctl.h b/libc/kernel/common/linux/hdlc/ioctl.h
index c15a67f..ad1442c 100644
--- a/libc/kernel/common/linux/hdlc/ioctl.h
+++ b/libc/kernel/common/linux/hdlc/ioctl.h
@@ -7,51 +7,59 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __HDLC_IOCTL_H__
 #define __HDLC_IOCTL_H__
-
 typedef struct {
  unsigned int clock_rate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int clock_type;
  unsigned short loopback;
 } sync_serial_settings;
-
 typedef struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int clock_rate;
  unsigned int clock_type;
  unsigned short loopback;
  unsigned int slot_map;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } te1_settings;
-
 typedef struct {
  unsigned short encoding;
  unsigned short parity;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } raw_hdlc_proto;
-
 typedef struct {
  unsigned int t391;
  unsigned int t392;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int n391;
  unsigned int n392;
  unsigned int n393;
  unsigned short lmi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short dce;
 } fr_proto;
-
 typedef struct {
  unsigned int dlci;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } fr_proto_pvc;
-
 typedef struct {
  unsigned int dlci;
  char master[IFNAMSIZ];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 }fr_proto_pvc_info;
-
 typedef struct {
  unsigned int interval;
  unsigned int timeout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } cisco_proto;
-
 #endif
diff --git a/libc/kernel/common/linux/hdreg.h b/libc/kernel/common/linux/hdreg.h
index a684ee9..155de99 100644
--- a/libc/kernel/common/linux/hdreg.h
+++ b/libc/kernel/common/linux/hdreg.h
@@ -7,426 +7,475 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_HDREG_H
 #define _LINUX_HDREG_H
-
 #define HDIO_DRIVE_CMD_HDR_SIZE (4 * sizeof(u8))
 #define HDIO_DRIVE_HOB_HDR_SIZE (8 * sizeof(u8))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HDIO_DRIVE_TASK_HDR_SIZE (8 * sizeof(u8))
-
 #define IDE_DRIVE_TASK_INVALID -1
 #define IDE_DRIVE_TASK_NO_DATA 0
 #define IDE_DRIVE_TASK_SET_XFER 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDE_DRIVE_TASK_IN 2
-
 #define IDE_DRIVE_TASK_OUT 3
 #define IDE_DRIVE_TASK_RAW_WRITE 4
-
 #define IDE_TASKFILE_STD_IN_FLAGS 0xFE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDE_HOB_STD_IN_FLAGS 0x3C
 #define IDE_TASKFILE_STD_OUT_FLAGS 0xFE
 #define IDE_HOB_STD_OUT_FLAGS 0x3C
-
 typedef unsigned char task_ioreg_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned long sata_ioreg_t;
-
 typedef union ide_reg_valid_s {
  unsigned all : 16;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned data : 1;
  unsigned error_feature : 1;
  unsigned sector : 1;
  unsigned nsector : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned lcyl : 1;
  unsigned hcyl : 1;
  unsigned select : 1;
  unsigned status_command : 1;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned data_hob : 1;
  unsigned error_feature_hob : 1;
  unsigned sector_hob : 1;
  unsigned nsector_hob : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned lcyl_hob : 1;
  unsigned hcyl_hob : 1;
  unsigned select_hob : 1;
  unsigned control_hob : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } b;
 } ide_reg_valid_t;
-
 typedef struct ide_task_request_s {
  task_ioreg_t io_ports[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  task_ioreg_t hob_ports[8];
  ide_reg_valid_t out_flags;
  ide_reg_valid_t in_flags;
  int data_phase;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int req_cmd;
  unsigned long out_size;
  unsigned long in_size;
 } ide_task_request_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct ide_ioctl_request_s {
  ide_task_request_t *task_request;
  unsigned char *out_buffer;
  unsigned char *in_buffer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } ide_ioctl_request_t;
-
 struct hd_drive_cmd_hdr {
  task_ioreg_t command;
  task_ioreg_t sector_number;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  task_ioreg_t feature;
  task_ioreg_t sector_count;
 };
-
 typedef struct hd_drive_task_hdr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  task_ioreg_t data;
  task_ioreg_t feature;
  task_ioreg_t sector_count;
  task_ioreg_t sector_number;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  task_ioreg_t low_cylinder;
  task_ioreg_t high_cylinder;
  task_ioreg_t device_head;
  task_ioreg_t command;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } task_struct_t;
-
 typedef struct hd_drive_hob_hdr {
  task_ioreg_t data;
  task_ioreg_t feature;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  task_ioreg_t sector_count;
  task_ioreg_t sector_number;
  task_ioreg_t low_cylinder;
  task_ioreg_t high_cylinder;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  task_ioreg_t device_head;
  task_ioreg_t control;
 } hob_struct_t;
-
 #define TASKFILE_INVALID 0x7fff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TASKFILE_48 0x8000
-
 #define TASKFILE_NO_DATA 0x0000
-
 #define TASKFILE_IN 0x0001
 #define TASKFILE_MULTI_IN 0x0002
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TASKFILE_OUT 0x0004
 #define TASKFILE_MULTI_OUT 0x0008
 #define TASKFILE_IN_OUT 0x0010
-
 #define TASKFILE_IN_DMA 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TASKFILE_OUT_DMA 0x0040
 #define TASKFILE_IN_DMAQ 0x0080
 #define TASKFILE_OUT_DMAQ 0x0100
-
 #define TASKFILE_P_IN 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TASKFILE_P_OUT 0x0400
 #define TASKFILE_P_IN_DMA 0x0800
 #define TASKFILE_P_OUT_DMA 0x1000
 #define TASKFILE_P_IN_DMAQ 0x2000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TASKFILE_P_OUT_DMAQ 0x4000
-
 #define WIN_NOP 0x00
-
 #define CFA_REQ_EXT_ERROR_CODE 0x03  
-
 #define WIN_SRST 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_DEVICE_RESET 0x08
-
 #define WIN_RECAL 0x10
 #define WIN_RESTORE WIN_RECAL
-
 #define WIN_READ 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_READ_ONCE 0x21  
 #define WIN_READ_LONG 0x22  
 #define WIN_READ_LONG_ONCE 0x23  
 #define WIN_READ_EXT 0x24  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_READDMA_EXT 0x25  
 #define WIN_READDMA_QUEUED_EXT 0x26  
 #define WIN_READ_NATIVE_MAX_EXT 0x27  
-
 #define WIN_MULTREAD_EXT 0x29  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_WRITE 0x30  
 #define WIN_WRITE_ONCE 0x31  
 #define WIN_WRITE_LONG 0x32  
 #define WIN_WRITE_LONG_ONCE 0x33  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_WRITE_EXT 0x34  
 #define WIN_WRITEDMA_EXT 0x35  
 #define WIN_WRITEDMA_QUEUED_EXT 0x36  
 #define WIN_SET_MAX_EXT 0x37  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFA_WRITE_SECT_WO_ERASE 0x38  
 #define WIN_MULTWRITE_EXT 0x39  
-
 #define WIN_WRITE_VERIFY 0x3C  
-
 #define WIN_VERIFY 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_VERIFY_ONCE 0x41  
 #define WIN_VERIFY_EXT 0x42  
-
 #define WIN_FORMAT 0x50
-
 #define WIN_INIT 0x60
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_SEEK 0x70  
-
 #define CFA_TRANSLATE_SECTOR 0x87  
 #define WIN_DIAGNOSE 0x90
 #define WIN_SPECIFY 0x91  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_DOWNLOAD_MICROCODE 0x92
 #define WIN_STANDBYNOW2 0x94
 #define WIN_STANDBY2 0x96
 #define WIN_SETIDLE2 0x97
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_CHECKPOWERMODE2 0x98
 #define WIN_SLEEPNOW2 0x99
-
 #define WIN_PACKETCMD 0xA0  
 #define WIN_PIDENTIFY 0xA1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_QUEUED_SERVICE 0xA2
 #define WIN_SMART 0xB0  
 #define CFA_ERASE_SECTORS 0xC0
 #define WIN_MULTREAD 0xC4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_MULTWRITE 0xC5  
 #define WIN_SETMULT 0xC6  
 #define WIN_READDMA_QUEUED 0xC7  
 #define WIN_READDMA 0xC8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_READDMA_ONCE 0xC9  
 #define WIN_WRITEDMA 0xCA  
 #define WIN_WRITEDMA_ONCE 0xCB  
 #define WIN_WRITEDMA_QUEUED 0xCC  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFA_WRITE_MULTI_WO_ERASE 0xCD  
 #define WIN_GETMEDIASTATUS 0xDA
 #define WIN_ACKMEDIACHANGE 0xDB  
 #define WIN_POSTBOOT 0xDC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_PREBOOT 0xDD
 #define WIN_DOORLOCK 0xDE  
 #define WIN_DOORUNLOCK 0xDF  
 #define WIN_STANDBYNOW1 0xE0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_IDLEIMMEDIATE 0xE1  
 #define WIN_STANDBY 0xE2  
 #define WIN_SETIDLE1 0xE3
 #define WIN_READ_BUFFER 0xE4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_CHECKPOWERMODE1 0xE5
 #define WIN_SLEEPNOW1 0xE6
 #define WIN_FLUSH_CACHE 0xE7
 #define WIN_WRITE_BUFFER 0xE8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_WRITE_SAME 0xE9  
-
 #define WIN_FLUSH_CACHE_EXT 0xEA  
 #define WIN_IDENTIFY 0xEC  
 #define WIN_MEDIAEJECT 0xED
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_IDENTIFY_DMA 0xEE  
 #define WIN_SETFEATURES 0xEF  
 #define EXABYTE_ENABLE_NEST 0xF0
 #define WIN_SECURITY_SET_PASS 0xF1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_SECURITY_UNLOCK 0xF2
 #define WIN_SECURITY_ERASE_PREPARE 0xF3
 #define WIN_SECURITY_ERASE_UNIT 0xF4
 #define WIN_SECURITY_FREEZE_LOCK 0xF5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WIN_SECURITY_DISABLE 0xF6
 #define WIN_READ_NATIVE_MAX 0xF8  
 #define WIN_SET_MAX 0xF9
 #define DISABLE_SEAGATE 0xFB
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SMART_READ_VALUES 0xD0
 #define SMART_READ_THRESHOLDS 0xD1
 #define SMART_AUTOSAVE 0xD2
 #define SMART_SAVE 0xD3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SMART_IMMEDIATE_OFFLINE 0xD4
 #define SMART_READ_LOG_SECTOR 0xD5
 #define SMART_WRITE_LOG_SECTOR 0xD6
 #define SMART_WRITE_THRESHOLDS 0xD7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SMART_ENABLE 0xD8
 #define SMART_DISABLE 0xD9
 #define SMART_STATUS 0xDA
 #define SMART_AUTO_OFFLINE 0xDB
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SMART_LCYL_PASS 0x4F
 #define SMART_HCYL_PASS 0xC2
-
 #define SETFEATURES_EN_8BIT 0x01  
 #define SETFEATURES_EN_WCACHE 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SETFEATURES_DIS_DEFECT 0x04  
 #define SETFEATURES_EN_APM 0x05  
 #define SETFEATURES_EN_SAME_R 0x22  
 #define SETFEATURES_DIS_MSN 0x31  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SETFEATURES_DIS_RETRY 0x33  
 #define SETFEATURES_EN_AAM 0x42  
 #define SETFEATURES_RW_LONG 0x44  
 #define SETFEATURES_SET_CACHE 0x54  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SETFEATURES_DIS_RLA 0x55  
 #define SETFEATURES_EN_RI 0x5D  
 #define SETFEATURES_EN_SI 0x5E  
 #define SETFEATURES_DIS_RPOD 0x66  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SETFEATURES_DIS_ECC 0x77  
 #define SETFEATURES_DIS_8BIT 0x81  
 #define SETFEATURES_DIS_WCACHE 0x82  
 #define SETFEATURES_EN_DEFECT 0x84  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SETFEATURES_DIS_APM 0x85  
 #define SETFEATURES_EN_ECC 0x88  
 #define SETFEATURES_EN_MSN 0x95  
 #define SETFEATURES_EN_RETRY 0x99  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SETFEATURES_EN_RLA 0xAA  
 #define SETFEATURES_PREFETCH 0xAB  
 #define SETFEATURES_EN_REST 0xAC  
 #define SETFEATURES_4B_RW_LONG 0xBB  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SETFEATURES_DIS_AAM 0xC2  
 #define SETFEATURES_EN_RPOD 0xCC  
 #define SETFEATURES_DIS_RI 0xDD  
 #define SETFEATURES_EN_SAME_M 0xDD  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SETFEATURES_DIS_SI 0xDE  
-
 #define SECURITY_SET_PASSWORD 0xBA
 #define SECURITY_UNLOCK 0xBB
 #define SECURITY_ERASE_PREPARE 0xBC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SECURITY_ERASE_UNIT 0xBD
 #define SECURITY_FREEZE_LOCK 0xBE
 #define SECURITY_DISABLE_PASSWORD 0xBF
-
 struct hd_geometry {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char heads;
  unsigned char sectors;
  unsigned short cylinders;
  unsigned long start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define HDIO_GETGEO 0x0301  
 #define HDIO_GET_UNMASKINTR 0x0302  
 #define HDIO_GET_MULTCOUNT 0x0304  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HDIO_GET_QDMA 0x0305  
-
 #define HDIO_SET_XFER 0x0306  
-
 #define HDIO_OBSOLETE_IDENTITY 0x0307  
 #define HDIO_GET_KEEPSETTINGS 0x0308  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HDIO_GET_32BIT 0x0309  
 #define HDIO_GET_NOWERR 0x030a  
 #define HDIO_GET_DMA 0x030b  
 #define HDIO_GET_NICE 0x030c  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HDIO_GET_IDENTITY 0x030d  
 #define HDIO_GET_WCACHE 0x030e  
 #define HDIO_GET_ACOUSTIC 0x030f  
 #define HDIO_GET_ADDRESS 0x0310  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HDIO_GET_BUSSTATE 0x031a  
 #define HDIO_TRISTATE_HWIF 0x031b  
 #define HDIO_DRIVE_RESET 0x031c  
 #define HDIO_DRIVE_TASKFILE 0x031d  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HDIO_DRIVE_TASK 0x031e  
 #define HDIO_DRIVE_CMD 0x031f  
 #define HDIO_DRIVE_CMD_AEB HDIO_DRIVE_TASK
-
 #define HDIO_SET_MULTCOUNT 0x0321  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HDIO_SET_UNMASKINTR 0x0322  
 #define HDIO_SET_KEEPSETTINGS 0x0323  
 #define HDIO_SET_32BIT 0x0324  
 #define HDIO_SET_NOWERR 0x0325  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HDIO_SET_DMA 0x0326  
 #define HDIO_SET_PIO_MODE 0x0327  
 #define HDIO_SCAN_HWIF 0x0328  
 #define HDIO_SET_NICE 0x0329  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HDIO_UNREGISTER_HWIF 0x032a  
 #define HDIO_SET_WCACHE 0x032b  
 #define HDIO_SET_ACOUSTIC 0x032c  
 #define HDIO_SET_BUSSTATE 0x032d  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HDIO_SET_QDMA 0x032e  
 #define HDIO_SET_ADDRESS 0x032f  
-
 enum {
  BUSSTATE_OFF = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BUSSTATE_ON,
  BUSSTATE_TRISTATE
 };
-
 #define __NEW_HD_DRIVE_ID
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hd_driveid {
  unsigned short config;
  unsigned short cyls;
  unsigned short reserved2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short heads;
  unsigned short track_bytes;
  unsigned short sector_bytes;
  unsigned short sectors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short vendor0;
  unsigned short vendor1;
  unsigned short vendor2;
  unsigned char serial_no[20];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short buf_type;
  unsigned short buf_size;
  unsigned short ecc_bytes;
  unsigned char fw_rev[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char model[40];
  unsigned char max_multsect;
  unsigned char vendor3;
  unsigned short dword_io;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char vendor4;
  unsigned char capability;
  unsigned short reserved50;
  unsigned char vendor5;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char tPIO;
  unsigned char vendor6;
  unsigned char tDMA;
  unsigned short field_valid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short cur_cyls;
  unsigned short cur_heads;
  unsigned short cur_sectors;
  unsigned short cur_capacity0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short cur_capacity1;
  unsigned char multsect;
  unsigned char multsect_valid;
  unsigned int lba_capacity;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short dma_1word;
  unsigned short dma_mword;
  unsigned short eide_pio_modes;
  unsigned short eide_dma_min;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short eide_dma_time;
  unsigned short eide_pio;
  unsigned short eide_pio_iordy;
  unsigned short words69_70[2];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short words71_74[4];
  unsigned short queue_depth;
  unsigned short words76_79[4];
  unsigned short major_rev_num;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short minor_rev_num;
  unsigned short command_set_1;
  unsigned short command_set_2;
  unsigned short cfsse;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short cfs_enable_1;
  unsigned short cfs_enable_2;
  unsigned short csf_default;
  unsigned short dma_ultra;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short trseuc;
  unsigned short trsEuc;
  unsigned short CurAPMvalues;
  unsigned short mprc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short hw_config;
  unsigned short acoustic;
  unsigned short msrqs;
  unsigned short sxfert;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short sal;
  unsigned int spg;
  unsigned long long lba_capacity_2;
  unsigned short words104_125[22];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short last_lun;
  unsigned short word127;
  unsigned short dlf;
  unsigned short csfo;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short words130_155[26];
  unsigned short word156;
  unsigned short words157_159[3];
  unsigned short cfa_power;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short words161_175[15];
  unsigned short words176_205[30];
  unsigned short words206_254[49];
  unsigned short integrity_word;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IDE_NICE_DSC_OVERLAP (0)  
 #define IDE_NICE_ATAPI_OVERLAP (1)  
 #define IDE_NICE_0 (2)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDE_NICE_1 (3)  
 #define IDE_NICE_2 (4)  
-
 #endif
diff --git a/libc/kernel/common/linux/hdsmart.h b/libc/kernel/common/linux/hdsmart.h
index 6cbc653..d7f6de7 100644
--- a/libc/kernel/common/linux/hdsmart.h
+++ b/libc/kernel/common/linux/hdsmart.h
@@ -7,108 +7,125 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_HDSMART_H
 #define _LINUX_HDSMART_H
-
 #define OFFLINE_FULL_SCAN 0
 #define SHORT_SELF_TEST 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXTEND_SELF_TEST 2
 #define SHORT_CAPTIVE_SELF_TEST 129
 #define EXTEND_CAPTIVE_SELF_TEST 130
-
 typedef struct ata_smart_attribute_s {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char id;
  unsigned short status_flag;
  unsigned char normalized;
  unsigned char worse_normal;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char raw[6];
  unsigned char reserv;
 } __attribute__ ((packed)) ata_smart_attribute_t;
-
 typedef struct ata_smart_values_s {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short revnumber;
  ata_smart_attribute_t vendor_attributes [30];
  unsigned char offline_data_collection_status;
  unsigned char self_test_exec_status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short total_time_to_complete_off_line;
  unsigned char vendor_specific_366;
  unsigned char offline_data_collection_capability;
  unsigned short smart_capability;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char errorlog_capability;
  unsigned char vendor_specific_371;
  unsigned char short_test_completion_time;
  unsigned char extend_test_completion_time;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char reserved_374_385 [12];
  unsigned char vendor_specific_386_509 [125];
  unsigned char chksum;
 } __attribute__ ((packed)) ata_smart_values_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct ata_smart_threshold_entry_s {
  unsigned char id;
  unsigned char normalized_threshold;
  unsigned char reserved[10];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__ ((packed)) ata_smart_threshold_entry_t;
-
 typedef struct ata_smart_thresholds_s {
  unsigned short revnumber;
  ata_smart_threshold_entry_t thres_entries[30];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char reserved[149];
  unsigned char chksum;
 } __attribute__ ((packed)) ata_smart_thresholds_t;
-
 typedef struct ata_smart_errorlog_command_struct_s {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char devicecontrolreg;
  unsigned char featuresreg;
  unsigned char sector_count;
  unsigned char sector_number;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char cylinder_low;
  unsigned char cylinder_high;
  unsigned char drive_head;
  unsigned char commandreg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int timestamp;
 } __attribute__ ((packed)) ata_smart_errorlog_command_struct_t;
-
 typedef struct ata_smart_errorlog_error_struct_s {
  unsigned char error_condition;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char extended_error[14];
  unsigned char state;
  unsigned short timestamp;
 } __attribute__ ((packed)) ata_smart_errorlog_error_struct_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct ata_smart_errorlog_struct_s {
  ata_smart_errorlog_command_struct_t commands[6];
  ata_smart_errorlog_error_struct_t error_struct;
 } __attribute__ ((packed)) ata_smart_errorlog_struct_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct ata_smart_errorlog_s {
  unsigned char revnumber;
  unsigned char error_log_pointer;
  ata_smart_errorlog_struct_t errorlog_struct[5];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ata_error_count;
  unsigned short non_fatal_count;
  unsigned short drive_timeout_count;
  unsigned char reserved[53];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char chksum;
 } __attribute__ ((packed)) ata_smart_errorlog_t;
-
 typedef struct ata_smart_selftestlog_struct_s {
  unsigned char selftestnumber;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char selfteststatus;
  unsigned short timestamp;
  unsigned char selftestfailurecheckpoint;
  unsigned int lbafirstfailure;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char vendorspecific[15];
 } __attribute__ ((packed)) ata_smart_selftestlog_struct_t;
-
 typedef struct ata_smart_selftestlog_s {
  unsigned short revnumber;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ata_smart_selftestlog_struct_t selftest_struct[21];
  unsigned char vendorspecific[2];
  unsigned char mostrecenttest;
  unsigned char resevered[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char chksum;
 } __attribute__ ((packed)) ata_smart_selftestlog_t;
-
 #endif
diff --git a/libc/kernel/common/linux/hid.h b/libc/kernel/common/linux/hid.h
index 450db19..dfd6acb 100644
--- a/libc/kernel/common/linux/hid.h
+++ b/libc/kernel/common/linux/hid.h
@@ -7,30 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __HID_H
 #define __HID_H
-
 #define USB_INTERFACE_CLASS_HID 3
-
 #define USB_INTERFACE_SUBCLASS_BOOT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_INTERFACE_PROTOCOL_KEYBOARD 1
 #define USB_INTERFACE_PROTOCOL_MOUSE 2
-
 #define HID_REQ_GET_REPORT 0x01
 #define HID_REQ_GET_IDLE 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HID_REQ_GET_PROTOCOL 0x03
 #define HID_REQ_SET_REPORT 0x09
 #define HID_REQ_SET_IDLE 0x0A
 #define HID_REQ_SET_PROTOCOL 0x0B
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HID_DT_HID (USB_TYPE_CLASS | 0x01)
 #define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
 #define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
-
 #define HID_MAX_DESCRIPTOR_SIZE 4096
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
-
diff --git a/libc/kernel/common/linux/hidraw.h b/libc/kernel/common/linux/hidraw.h
index 0681ece..c776ce5 100644
--- a/libc/kernel/common/linux/hidraw.h
+++ b/libc/kernel/common/linux/hidraw.h
@@ -7,35 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _HIDRAW_H
 #define _HIDRAW_H
-
 #include <linux/hid.h>
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hidraw_report_descriptor {
  __u32 size;
  __u8 value[HID_MAX_DESCRIPTOR_SIZE];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hidraw_devinfo {
  __u32 bustype;
  __s16 vendor;
  __s16 product;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define HIDIOCGRDESCSIZE _IOR('H', 0x01, int)
 #define HIDIOCGRDESC _IOR('H', 0x02, struct hidraw_report_descriptor)
 #define HIDIOCGRAWINFO _IOR('H', 0x03, struct hidraw_devinfo)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIDIOCGRAWNAME(len) _IOC(_IOC_READ, 'H', 0x04, len)
 #define HIDIOCGRAWPHYS(len) _IOC(_IOC_READ, 'H', 0x05, len)
-
 #define HIDRAW_FIRST_MINOR 0
 #define HIDRAW_MAX_DEVICES 64
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIDRAW_BUFFER_SIZE 64
-
 #endif
-
diff --git a/libc/kernel/common/linux/highmem.h b/libc/kernel/common/linux/highmem.h
index d4a34ca..88435c8 100644
--- a/libc/kernel/common/linux/highmem.h
+++ b/libc/kernel/common/linux/highmem.h
@@ -7,25 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_HIGHMEM_H
 #define _LINUX_HIGHMEM_H
-
 #include <linux/fs.h>
 #include <linux/mm.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/cacheflush.h>
-
 #ifndef ARCH_HAS_FLUSH_ANON_PAGE
 #endif
 #ifndef ARCH_HAS_FLUSH_KERNEL_DCACHE_PAGE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define kunmap(page) do { (void) (page); } while (0)
 #define kmap_atomic(page, idx) page_address(page)
 #define kunmap_atomic(addr, idx) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define kmap_atomic_pfn(pfn, idx) page_address(pfn_to_page(pfn))
 #define kmap_atomic_to_page(ptr) virt_to_page(ptr)
 #ifndef __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/hil.h b/libc/kernel/common/linux/hil.h
index a0b3b97..f6017a3 100644
--- a/libc/kernel/common/linux/hil.h
+++ b/libc/kernel/common/linux/hil.h
@@ -7,250 +7,270 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _HIL_H_
 #define _HIL_H_
-
 #include <asm/types.h>
-
 #define HIL_CLOCK 8MHZ
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_EK1_CLOCK 30HZ
 #define HIL_EK2_CLOCK 60HZ
-
 #define HIL_TIMEOUT_DEV 5  
 #define HIL_TIMEOUT_DEVS 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_TIMEOUT_NORESP 10  
 #define HIL_TIMEOUT_DEVS_DATA 16  
 #define HIL_TIMEOUT_SELFTEST 200  
-
 #define HIL_WIRE_PACKET_LEN 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum hil_wire_bitpos {
  HIL_WIRE_START = 0,
  HIL_WIRE_ADDR2,
  HIL_WIRE_ADDR1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_WIRE_ADDR0,
  HIL_WIRE_COMMAND,
  HIL_WIRE_DATA7,
  HIL_WIRE_DATA6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_WIRE_DATA5,
  HIL_WIRE_DATA4,
  HIL_WIRE_DATA3,
  HIL_WIRE_DATA2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_WIRE_DATA1,
  HIL_WIRE_DATA0,
  HIL_WIRE_PARITY,
  HIL_WIRE_STOP
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum hil_pkt_bitpos {
  HIL_PKT_CMD = 0x00000800,
  HIL_PKT_ADDR2 = 0x00000400,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_PKT_ADDR1 = 0x00000200,
  HIL_PKT_ADDR0 = 0x00000100,
  HIL_PKT_ADDR_MASK = 0x00000700,
  HIL_PKT_ADDR_SHIFT = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_PKT_DATA7 = 0x00000080,
  HIL_PKT_DATA6 = 0x00000040,
  HIL_PKT_DATA5 = 0x00000020,
  HIL_PKT_DATA4 = 0x00000010,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_PKT_DATA3 = 0x00000008,
  HIL_PKT_DATA2 = 0x00000004,
  HIL_PKT_DATA1 = 0x00000002,
  HIL_PKT_DATA0 = 0x00000001,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_PKT_DATA_MASK = 0x000000FF,
  HIL_PKT_DATA_SHIFT = 0
 };
-
 enum hil_error_bitpos {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_ERR_OB = 0x00000800,
  HIL_ERR_INT = 0x00010000,
  HIL_ERR_NMI = 0x00020000,
  HIL_ERR_LERR = 0x00040000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_ERR_PERR = 0x01000000,
  HIL_ERR_FERR = 0x02000000,
  HIL_ERR_FOF = 0x04000000
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum hil_control_bitpos {
  HIL_CTRL_TEST = 0x00010000,
  HIL_CTRL_IPF = 0x00040000,
  HIL_CTRL_APE = 0x02000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define HIL_DO_ALTER_CTRL 0x40000000  
 #define HIL_CTRL_ONLY 0xc0000000  
-
 typedef u32 hil_packet;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum hil_command {
  HIL_CMD_IFC = 0x00,
  HIL_CMD_EPT = 0x01,
  HIL_CMD_ELB = 0x02,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_CMD_IDD = 0x03,
  HIL_CMD_DSR = 0x04,
  HIL_CMD_PST = 0x05,
  HIL_CMD_RRG = 0x06,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_CMD_WRG = 0x07,
  HIL_CMD_ACF = 0x08,
  HIL_CMDID_ACF = 0x07,
  HIL_CMD_POL = 0x10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_CMDCT_POL = 0x0f,
  HIL_CMD_RPL = 0x20,
  HIL_CMDCT_RPL = 0x0f,
  HIL_CMD_RNM = 0x30,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_CMD_RST = 0x31,
  HIL_CMD_EXD = 0x32,
  HIL_CMD_RSC = 0x33,
-
  HIL_CMD_DKA = 0x3d,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_CMD_EK1 = 0x3e,
  HIL_CMD_EK2 = 0x3f,
  HIL_CMD_PR1 = 0x40,
  HIL_CMD_PR2 = 0x41,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_CMD_PR3 = 0x42,
  HIL_CMD_PR4 = 0x43,
  HIL_CMD_PR5 = 0x44,
  HIL_CMD_PR6 = 0x45,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_CMD_PR7 = 0x46,
  HIL_CMD_PRM = 0x47,
  HIL_CMD_AK1 = 0x48,
  HIL_CMD_AK2 = 0x49,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_CMD_AK3 = 0x4a,
  HIL_CMD_AK4 = 0x4b,
  HIL_CMD_AK5 = 0x4c,
  HIL_CMD_AK6 = 0x4d,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_CMD_AK7 = 0x4e,
  HIL_CMD_ACK = 0x4f,
-
  HIL_CMD_RIO = 0xfa,
  HIL_CMD_SHR = 0xfb,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HIL_CMD_TER = 0xfc,
  HIL_CMD_CAE = 0xfd,
  HIL_CMD_DHR = 0xfe,
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_TYPE_MASK 0xe0  
 #define HIL_IDD_DID_TYPE_KB_INTEGRAL 0xa0  
 #define HIL_IDD_DID_TYPE_KB_ITF 0xc0  
 #define HIL_IDD_DID_TYPE_KB_RSVD 0xe0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_TYPE_KB_LANG_MASK 0x1f  
 #define HIL_IDD_DID_KBLANG_USE_ESD 0x00  
 #define HIL_IDD_DID_TYPE_ABS 0x80  
 #define HIL_IDD_DID_ABS_RSVD1_MASK 0xf8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_ABS_RSVD1 0x98
 #define HIL_IDD_DID_ABS_TABLET_MASK 0xf8  
 #define HIL_IDD_DID_ABS_TABLET 0x90
 #define HIL_IDD_DID_ABS_TSCREEN_MASK 0xfc  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_ABS_TSCREEN 0x8c
 #define HIL_IDD_DID_ABS_RSVD2_MASK 0xfc  
 #define HIL_IDD_DID_ABS_RSVD2 0x88
 #define HIL_IDD_DID_ABS_RSVD3_MASK 0xfc  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_ABS_RSVD3 0x80
 #define HIL_IDD_DID_TYPE_REL 0x60  
 #define HIL_IDD_DID_REL_RSVD1_MASK 0xf0  
 #define HIL_IDD_DID_REL_RSVD1 0x70
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_REL_RSVD2_MASK 0xfc  
 #define HIL_IDD_DID_REL_RSVD2 0x6c
 #define HIL_IDD_DID_REL_MOUSE_MASK 0xfc  
 #define HIL_IDD_DID_REL_MOUSE 0x68
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_REL_QUAD_MASK 0xf8  
 #define HIL_IDD_DID_REL_QUAD 0x60
 #define HIL_IDD_DID_TYPE_CHAR 0x40  
 #define HIL_IDD_DID_CHAR_BARCODE_MASK 0xfc  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_CHAR_BARCODE 0x5c
 #define HIL_IDD_DID_CHAR_RSVD1_MASK 0xfc  
 #define HIL_IDD_DID_CHAR_RSVD1 0x58
 #define HIL_IDD_DID_CHAR_RSVD2_MASK 0xf8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_CHAR_RSVD2 0x50
 #define HIL_IDD_DID_CHAR_RSVD3_MASK 0xf0  
 #define HIL_IDD_DID_CHAR_RSVD3 0x40
 #define HIL_IDD_DID_TYPE_OTHER 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_OTHER_RSVD1_MASK 0xf0  
 #define HIL_IDD_DID_OTHER_RSVD1 0x30
 #define HIL_IDD_DID_OTHER_BARCODE_MASK 0xfc  
 #define HIL_IDD_DID_OTHER_BARCODE 0x2c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_OTHER_RSVD2_MASK 0xfc  
 #define HIL_IDD_DID_OTHER_RSVD2 0x28
 #define HIL_IDD_DID_OTHER_RSVD3_MASK 0xf8  
 #define HIL_IDD_DID_OTHER_RSVD3 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_DID_TYPE_KEYPAD 0x00  
-
 #define HIL_IDD_HEADER_AXSET_MASK 0x03  
 #define HIL_IDD_HEADER_RSC 0x04  
 #define HIL_IDD_HEADER_EXD 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_HEADER_IOD 0x10  
 #define HIL_IDD_HEADER_16BIT 0x20  
 #define HIL_IDD_HEADER_ABS 0x40  
 #define HIL_IDD_HEADER_2X_AXIS 0x80  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_IOD_NBUTTON_MASK 0x07  
 #define HIL_IDD_IOD_PROXIMITY 0x08  
 #define HIL_IDD_IOD_PROMPT_MASK 0x70  
 #define HIL_IDD_IOD_PROMPT_SHIFT 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_IOD_PROMPT 0x80  
-
 #define HIL_IDD_NUM_AXES_PER_SET(header_packet)  ((header_packet) & HIL_IDD_HEADER_AXSET_MASK)
-
 #define HIL_IDD_NUM_AXSETS(header_packet)  (2 - !((header_packet) & HIL_IDD_HEADER_2X_AXIS))
-
 #define HIL_IDD_LEN(header_packet)  ((4 - !(header_packet & HIL_IDD_HEADER_IOD) -   2 * !(HIL_IDD_NUM_AXES_PER_SET(header_packet))) +   2 * HIL_IDD_NUM_AXES_PER_SET(header_packet) *   !!((header_packet) & HIL_IDD_HEADER_ABS))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_AXIS_COUNTS_PER_M(header_ptr)  (!(HIL_IDD_NUM_AXSETS(*(header_ptr))) ? -1 :  (((*(header_ptr + 1) & HIL_PKT_DATA_MASK) +   ((*(header_ptr + 2) & HIL_PKT_DATA_MASK)) << 8)  * ((*(header_ptr) & HIL_IDD_HEADER_16BIT) ? 100 : 1)))
-
 #define HIL_IDD_AXIS_MAX(header_ptr, __axnum)  ((!(*(header_ptr) & HIL_IDD_HEADER_ABS) ||   (HIL_IDD_NUM_AXES_PER_SET(*(header_ptr)) <= __axnum)) ? 0 :   ((HIL_PKT_DATA_MASK & *((header_ptr) + 3 + 2 * __axnum)) +   ((HIL_PKT_DATA_MASK & *((header_ptr) + 4 + 2 * __axnum)) << 8)))
-
 #define HIL_IDD_IOD(header_ptr)  (*(header_ptr + HIL_IDD_LEN((*header_ptr)) - 1))
-
 #define HIL_IDD_HAS_GEN_PROMPT(header_ptr)  ((*header_ptr & HIL_IDD_HEADER_IOD) &&   (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROMPT))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_IDD_HAS_GEN_PROXIMITY(header_ptr)  ((*header_ptr & HIL_IDD_HEADER_IOD) &&   (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_PROXIMITY))
-
 #define HIL_IDD_NUM_BUTTONS(header_ptr)  ((*header_ptr & HIL_IDD_HEADER_IOD) ?   (HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NBUTTON_MASK) : 0)
-
 #define HIL_IDD_NUM_PROMPTS(header_ptr)  ((*header_ptr & HIL_IDD_HEADER_IOD) ?   ((HIL_IDD_IOD(header_ptr) & HIL_IDD_IOD_NPROMPT_MASK)   >> HIL_IDD_IOD_PROMPT_SHIFT) : 0)
-
 #define HIL_EXD_HEADER_WRG 0x03  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_EXD_HEADER_WRG_TYPE1 0x01  
 #define HIL_EXD_HEADER_WRG_TYPE2 0x02  
 #define HIL_EXD_HEADER_RRG 0x04  
 #define HIL_EXD_HEADER_RNM 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_EXD_HEADER_RST 0x20  
 #define HIL_EXD_HEADER_LOCALE 0x40  
-
 #define HIL_EXD_NUM_RRG(header_ptr)  ((*header_ptr & HIL_EXD_HEADER_RRG) ?   (*(header_ptr + 1) & HIL_PKT_DATA_MASK) : 0)
-
 #define HIL_EXD_NUM_WWG(header_ptr)  ((*header_ptr & HIL_EXD_HEADER_WRG) ?   (*(header_ptr + 2 - !(*header_ptr & HIL_EXD_HEADER_RRG)) &   HIL_PKT_DATA_MASK) : 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_EXD_LEN(header_ptr)  (!!(*header_ptr & HIL_EXD_HEADER_RRG) +   !!(*header_ptr & HIL_EXD_HEADER_WRG) +   !!(*header_ptr & HIL_EXD_HEADER_LOCALE) +   2 * !!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) + 1)
-
 #define HIL_EXD_LOCALE(header_ptr)  (!(*header_ptr & HIL_EXD_HEADER_LOCALE) ? -1 :   (*(header_ptr + HIL_EXD_LEN(header_ptr) - 1) & HIL_PKT_DATA_MASK))
-
 #define HIL_EXD_WRG_TYPE2_LEN(header_ptr)  (!(*header_ptr & HIL_EXD_HEADER_WRG_TYPE2) ? -1 :   (*(header_ptr + HIL_EXD_LEN(header_ptr) - 2 -   !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) +   ((*(header_ptr + HIL_EXD_LEN(header_ptr) - 1 -   !!(*header_ptr & HIL_EXD_HEADER_LOCALE)) & HIL_PKT_DATA_MASK) << 8))
-
 #define HIL_LOCALE_MAX 0x1f
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_LOCALE_MAP  "",    "",    "",    "swiss.french",    "portuguese",    "arabic",    "hebrew",    "english.canadian",    "turkish",    "greek",    "thai",    "italian",    "korean",    "dutch",    "swedish",    "german",    "chinese",    "chinese",    "swiss.french",    "spanish",    "swiss.german",    "flemish",    "finnish",    "english.uk",    "french.canadian",    "swiss.german",    "norwegian",    "french",    "danish",    "japanese",    "spanish",   "english.us"    
-
 #define HIL_KEYCODES_SET1_TBLSIZE 128
 #define HIL_KEYCODES_SET1   KEY_5, KEY_RESERVED, KEY_RIGHTALT, KEY_LEFTALT,   KEY_RIGHTSHIFT, KEY_LEFTSHIFT, KEY_LEFTCTRL, KEY_SYSRQ,   KEY_KP4, KEY_KP8, KEY_KP5, KEY_KP9,   KEY_KP6, KEY_KP7, KEY_KPCOMMA, KEY_KPENTER,   KEY_KP1, KEY_KPSLASH, KEY_KP2, KEY_KPPLUS,   KEY_KP3, KEY_KPASTERISK, KEY_KP0, KEY_KPMINUS,   KEY_B, KEY_V, KEY_C, KEY_X,   KEY_Z, KEY_RESERVED, KEY_RESERVED, KEY_ESC,   KEY_6, KEY_F10, KEY_3, KEY_F11,   KEY_KPDOT, KEY_F9, KEY_TAB  , KEY_F12,   KEY_H, KEY_G, KEY_F, KEY_D,   KEY_S, KEY_A, KEY_RESERVED, KEY_CAPSLOCK,   KEY_U, KEY_Y, KEY_T, KEY_R,   KEY_E, KEY_W, KEY_Q, KEY_TAB,   KEY_7, KEY_6, KEY_5, KEY_4,   KEY_3, KEY_2, KEY_1, KEY_GRAVE,   KEY_F13, KEY_F14, KEY_F15, KEY_F16,   KEY_F17, KEY_F18, KEY_F19, KEY_F20,   KEY_MENU, KEY_F4, KEY_F3, KEY_F2,   KEY_F1, KEY_VOLUMEUP, KEY_STOP, KEY_SENDFILE,   KEY_SYSRQ, KEY_F5, KEY_F6, KEY_F7,   KEY_F8, KEY_VOLUMEDOWN, KEY_DEL_EOL, KEY_DEL_EOS,   KEY_8, KEY_9, KEY_0, KEY_MINUS,   KEY_EQUAL, KEY_BACKSPACE, KEY_INS_LINE, KEY_DEL_LINE,   KEY_I, KEY_O, KEY_P, KEY_LEFTBRACE,   KEY_RIGHTBRACE, KEY_BACKSLASH, KEY_INSERT, KEY_DELETE,   KEY_J, KEY_K, KEY_L, KEY_SEMICOLON,   KEY_APOSTROPHE, KEY_ENTER, KEY_HOME, KEY_PAGEUP,   KEY_M, KEY_COMMA, KEY_DOT, KEY_SLASH,   KEY_BACKSLASH, KEY_SELECT, KEY_102ND, KEY_PAGEDOWN,   KEY_N, KEY_SPACE, KEY_NEXT, KEY_RESERVED,   KEY_LEFT, KEY_DOWN, KEY_UP, KEY_RIGHT
-
 #define HIL_KEYCODES_SET3_TBLSIZE 128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_KEYCODES_SET3   KEY_RESERVED, KEY_ESC, KEY_1, KEY_2,   KEY_3, KEY_4, KEY_5, KEY_6,   KEY_7, KEY_8, KEY_9, KEY_0,   KEY_MINUS, KEY_EQUAL, KEY_BACKSPACE, KEY_TAB,   KEY_Q, KEY_W, KEY_E, KEY_R,   KEY_T, KEY_Y, KEY_U, KEY_I,   KEY_O, KEY_P, KEY_LEFTBRACE, KEY_RIGHTBRACE,   KEY_ENTER, KEY_LEFTCTRL, KEY_A, KEY_S,   KEY_D, KEY_F, KEY_G, KEY_H,   KEY_J, KEY_K, KEY_L, KEY_SEMICOLON,   KEY_APOSTROPHE,KEY_GRAVE, KEY_LEFTSHIFT, KEY_BACKSLASH,   KEY_Z, KEY_X, KEY_C, KEY_V,   KEY_B, KEY_N, KEY_M, KEY_COMMA,   KEY_DOT, KEY_SLASH, KEY_RIGHTSHIFT, KEY_KPASTERISK,   KEY_LEFTALT, KEY_SPACE, KEY_CAPSLOCK, KEY_F1,   KEY_F2, KEY_F3, KEY_F4, KEY_F5,   KEY_F6, KEY_F7, KEY_F8, KEY_F9,   KEY_F10, KEY_NUMLOCK, KEY_SCROLLLOCK, KEY_KP7,   KEY_KP8, KEY_KP9, KEY_KPMINUS, KEY_KP4,   KEY_KP5, KEY_KP6, KEY_KPPLUS, KEY_KP1,   KEY_KP2, KEY_KP3, KEY_KP0, KEY_KPDOT,   KEY_SYSRQ, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,   KEY_UP, KEY_LEFT, KEY_DOWN, KEY_RIGHT,   KEY_HOME, KEY_PAGEUP, KEY_END, KEY_PAGEDOWN,   KEY_INSERT, KEY_DELETE, KEY_102ND, KEY_RESERVED,   KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,   KEY_F1, KEY_F2, KEY_F3, KEY_F4,   KEY_F5, KEY_F6, KEY_F7, KEY_F8,   KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,   KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED
-
 #define HIL_POL_NUM_AXES_MASK 0x03  
 #define HIL_POL_CTS 0x04  
 #define HIL_POL_STATUS_PENDING 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_POL_CHARTYPE_MASK 0x70  
 #define HIL_POL_CHARTYPE_NONE 0x00  
 #define HIL_POL_CHARTYPE_RSVD1 0x10  
 #define HIL_POL_CHARTYPE_ASCII 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_POL_CHARTYPE_BINARY 0x30  
 #define HIL_POL_CHARTYPE_SET1 0x40  
 #define HIL_POL_CHARTYPE_RSVD2 0x50  
 #define HIL_POL_CHARTYPE_SET2 0x60  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIL_POL_CHARTYPE_SET3 0x70  
 #define HIL_POL_AXIS_ALT 0x80  
-
 #endif
diff --git a/libc/kernel/common/linux/i2c.h b/libc/kernel/common/linux/i2c.h
index 9513fc6..f266a97 100644
--- a/libc/kernel/common/linux/i2c.h
+++ b/libc/kernel/common/linux/i2c.h
@@ -7,89 +7,95 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_I2C_H
 #define _LINUX_I2C_H
-
 #include <linux/types.h>
-
 struct i2c_msg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 addr;
  __u16 flags;
 #define I2C_M_TEN 0x10  
 #define I2C_M_RD 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_M_NOSTART 0x4000
 #define I2C_M_REV_DIR_ADDR 0x2000
 #define I2C_M_IGNORE_NAK 0x1000
 #define I2C_M_NO_RD_ACK 0x0800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 len;
  __u8 *buf;
 };
-
 #define I2C_FUNC_I2C 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_FUNC_10BIT_ADDR 0x00000002
 #define I2C_FUNC_PROTOCOL_MANGLING 0x00000004  
 #define I2C_FUNC_SMBUS_HWPEC_CALC 0x00000008  
 #define I2C_FUNC_SMBUS_BLOCK_PROC_CALL 0x00008000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_FUNC_SMBUS_QUICK 0x00010000 
 #define I2C_FUNC_SMBUS_READ_BYTE 0x00020000 
 #define I2C_FUNC_SMBUS_WRITE_BYTE 0x00040000 
 #define I2C_FUNC_SMBUS_READ_BYTE_DATA 0x00080000 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_FUNC_SMBUS_WRITE_BYTE_DATA 0x00100000 
 #define I2C_FUNC_SMBUS_READ_WORD_DATA 0x00200000 
 #define I2C_FUNC_SMBUS_WRITE_WORD_DATA 0x00400000 
 #define I2C_FUNC_SMBUS_PROC_CALL 0x00800000 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_FUNC_SMBUS_READ_BLOCK_DATA 0x01000000 
 #define I2C_FUNC_SMBUS_WRITE_BLOCK_DATA 0x02000000 
 #define I2C_FUNC_SMBUS_READ_I2C_BLOCK 0x04000000  
 #define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK 0x08000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_FUNC_SMBUS_READ_I2C_BLOCK_2 0x10000000  
 #define I2C_FUNC_SMBUS_WRITE_I2C_BLOCK_2 0x20000000  
-
 #define I2C_FUNC_SMBUS_BYTE (I2C_FUNC_SMBUS_READ_BYTE |   I2C_FUNC_SMBUS_WRITE_BYTE)
 #define I2C_FUNC_SMBUS_BYTE_DATA (I2C_FUNC_SMBUS_READ_BYTE_DATA |   I2C_FUNC_SMBUS_WRITE_BYTE_DATA)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_FUNC_SMBUS_WORD_DATA (I2C_FUNC_SMBUS_READ_WORD_DATA |   I2C_FUNC_SMBUS_WRITE_WORD_DATA)
 #define I2C_FUNC_SMBUS_BLOCK_DATA (I2C_FUNC_SMBUS_READ_BLOCK_DATA |   I2C_FUNC_SMBUS_WRITE_BLOCK_DATA)
 #define I2C_FUNC_SMBUS_I2C_BLOCK (I2C_FUNC_SMBUS_READ_I2C_BLOCK |   I2C_FUNC_SMBUS_WRITE_I2C_BLOCK)
 #define I2C_FUNC_SMBUS_I2C_BLOCK_2 (I2C_FUNC_SMBUS_READ_I2C_BLOCK_2 |   I2C_FUNC_SMBUS_WRITE_I2C_BLOCK_2)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_FUNC_SMBUS_EMUL (I2C_FUNC_SMBUS_QUICK |   I2C_FUNC_SMBUS_BYTE |   I2C_FUNC_SMBUS_BYTE_DATA |   I2C_FUNC_SMBUS_WORD_DATA |   I2C_FUNC_SMBUS_PROC_CALL |   I2C_FUNC_SMBUS_WRITE_BLOCK_DATA |   I2C_FUNC_SMBUS_I2C_BLOCK)
-
 #define I2C_SMBUS_BLOCK_MAX 32   
 union i2c_smbus_data {
  __u8 byte;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 word;
  __u8 block[I2C_SMBUS_BLOCK_MAX + 2];
-
 };
-
 #define I2C_SMBUS_READ 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_SMBUS_WRITE 0
-
 #define I2C_SMBUS_QUICK 0
 #define I2C_SMBUS_BYTE 1
 #define I2C_SMBUS_BYTE_DATA 2 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_SMBUS_WORD_DATA 3
 #define I2C_SMBUS_PROC_CALL 4
 #define I2C_SMBUS_BLOCK_DATA 5
 #define I2C_SMBUS_I2C_BLOCK_DATA 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_SMBUS_BLOCK_PROC_CALL 7  
-
 #define I2C_RETRIES 0x0701  
-
 #define I2C_TIMEOUT 0x0702  
-
 #define I2C_SLAVE 0x0703  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_SLAVE_FORCE 0x0706  
-
 #define I2C_TENBIT 0x0704  
-
 #define I2C_FUNCS 0x0705  
 #define I2C_RDWR 0x0707  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2C_PEC 0x0708  
-
 #define I2C_SMBUS 0x0720  
-
 #endif
diff --git a/libc/kernel/common/linux/icmp.h b/libc/kernel/common/linux/icmp.h
index c5b58bb..3a2580e 100644
--- a/libc/kernel/common/linux/icmp.h
+++ b/libc/kernel/common/linux/icmp.h
@@ -7,75 +7,88 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ICMP_H
 #define _LINUX_ICMP_H
-
 #include <linux/types.h>
-
 #define ICMP_ECHOREPLY 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMP_DEST_UNREACH 3  
 #define ICMP_SOURCE_QUENCH 4  
 #define ICMP_REDIRECT 5  
 #define ICMP_ECHO 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMP_TIME_EXCEEDED 11  
 #define ICMP_PARAMETERPROB 12  
 #define ICMP_TIMESTAMP 13  
 #define ICMP_TIMESTAMPREPLY 14  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMP_INFO_REQUEST 15  
 #define ICMP_INFO_REPLY 16  
 #define ICMP_ADDRESS 17  
 #define ICMP_ADDRESSREPLY 18  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NR_ICMP_TYPES 18
-
 #define ICMP_NET_UNREACH 0  
 #define ICMP_HOST_UNREACH 1  
 #define ICMP_PROT_UNREACH 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMP_PORT_UNREACH 3  
 #define ICMP_FRAG_NEEDED 4  
 #define ICMP_SR_FAILED 5  
 #define ICMP_NET_UNKNOWN 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMP_HOST_UNKNOWN 7
 #define ICMP_HOST_ISOLATED 8
 #define ICMP_NET_ANO 9
 #define ICMP_HOST_ANO 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMP_NET_UNR_TOS 11
 #define ICMP_HOST_UNR_TOS 12
 #define ICMP_PKT_FILTERED 13  
 #define ICMP_PREC_VIOLATION 14  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMP_PREC_CUTOFF 15  
 #define NR_ICMP_UNREACH 15  
-
 #define ICMP_REDIR_NET 0  
 #define ICMP_REDIR_HOST 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMP_REDIR_NETTOS 2  
 #define ICMP_REDIR_HOSTTOS 3  
-
 #define ICMP_EXC_TTL 0  
 #define ICMP_EXC_FRAGTIME 1  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct icmphdr {
  __u8 type;
  __u8 code;
  __u16 checksum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  struct {
  __u16 id;
  __u16 sequence;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } echo;
  __u32 gateway;
  struct {
  __u16 __unused_field;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 mtu;
  } frag;
  } un;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMP_FILTER 1
-
 struct icmp_filter {
  __u32 data;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/icmpv6.h b/libc/kernel/common/linux/icmpv6.h
index d1be8cd..f827554 100644
--- a/libc/kernel/common/linux/icmpv6.h
+++ b/libc/kernel/common/linux/icmpv6.h
@@ -7,146 +7,155 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ICMPV6_H
 #define _LINUX_ICMPV6_H
-
 #include <linux/types.h>
 #include <asm/byteorder.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct icmp6hdr {
-
  __u8 icmp6_type;
  __u8 icmp6_code;
  __sum16 icmp6_cksum;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  __be32 un_data32[1];
  __be16 un_data16[2];
  __u8 un_data8[4];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct icmpv6_echo {
  __be16 identifier;
  __be16 sequence;
  } u_echo;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct icmpv6_nd_advt {
 #ifdef __LITTLE_ENDIAN_BITFIELD
  __u32 reserved:5,
  override:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  solicited:1,
  router:1,
  reserved2:24;
 #elif defined(__BIG_ENDIAN_BITFIELD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 router:1,
  solicited:1,
  override:1,
  reserved:29;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #error "Please fix <asm/byteorder.h>"
 #endif
  } u_nd_advt;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct icmpv6_nd_ra {
  __u8 hop_limit;
 #ifdef __LITTLE_ENDIAN_BITFIELD
  __u8 reserved:3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  router_pref:2,
  home_agent:1,
  other:1,
  managed:1;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif defined(__BIG_ENDIAN_BITFIELD)
  __u8 managed:1,
  other:1,
  home_agent:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  router_pref:2,
  reserved:3;
 #else
 #error "Please fix <asm/byteorder.h>"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __be16 rt_lifetime;
  } u_nd_ra;
-
  } icmp6_dataun;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define icmp6_identifier icmp6_dataun.u_echo.identifier
 #define icmp6_sequence icmp6_dataun.u_echo.sequence
 #define icmp6_pointer icmp6_dataun.un_data32[0]
 #define icmp6_mtu icmp6_dataun.un_data32[0]
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define icmp6_unused icmp6_dataun.un_data32[0]
 #define icmp6_maxdelay icmp6_dataun.un_data16[0]
 #define icmp6_router icmp6_dataun.u_nd_advt.router
 #define icmp6_solicited icmp6_dataun.u_nd_advt.solicited
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define icmp6_override icmp6_dataun.u_nd_advt.override
 #define icmp6_ndiscreserved icmp6_dataun.u_nd_advt.reserved
 #define icmp6_hop_limit icmp6_dataun.u_nd_ra.hop_limit
 #define icmp6_addrconf_managed icmp6_dataun.u_nd_ra.managed
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define icmp6_addrconf_other icmp6_dataun.u_nd_ra.other
 #define icmp6_rt_lifetime icmp6_dataun.u_nd_ra.rt_lifetime
 #define icmp6_router_pref icmp6_dataun.u_nd_ra.router_pref
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMPV6_ROUTER_PREF_LOW 0x3
 #define ICMPV6_ROUTER_PREF_MEDIUM 0x0
 #define ICMPV6_ROUTER_PREF_HIGH 0x1
 #define ICMPV6_ROUTER_PREF_INVALID 0x2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMPV6_DEST_UNREACH 1
 #define ICMPV6_PKT_TOOBIG 2
 #define ICMPV6_TIME_EXCEED 3
 #define ICMPV6_PARAMPROB 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMPV6_INFOMSG_MASK 0x80
-
 #define ICMPV6_ECHO_REQUEST 128
 #define ICMPV6_ECHO_REPLY 129
 #define ICMPV6_MGM_QUERY 130
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMPV6_MGM_REPORT 131
 #define ICMPV6_MGM_REDUCTION 132
-
 #define ICMPV6_NI_QUERY 139
 #define ICMPV6_NI_REPLY 140
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMPV6_MLD2_REPORT 143
-
 #define ICMPV6_DHAAD_REQUEST 144
 #define ICMPV6_DHAAD_REPLY 145
 #define ICMPV6_MOBILE_PREFIX_SOL 146
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMPV6_MOBILE_PREFIX_ADV 147
-
 #define ICMPV6_NOROUTE 0
 #define ICMPV6_ADM_PROHIBITED 1
 #define ICMPV6_NOT_NEIGHBOUR 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMPV6_ADDR_UNREACH 3
 #define ICMPV6_PORT_UNREACH 4
-
 #define ICMPV6_EXC_HOPLIMIT 0
 #define ICMPV6_EXC_FRAGTIME 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMPV6_HDR_FIELD 0
 #define ICMPV6_UNK_NEXTHDR 1
 #define ICMPV6_UNK_OPTION 2
-
 #define ICMPV6_FILTER 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ICMPV6_FILTER_BLOCK 1
 #define ICMPV6_FILTER_PASS 2
 #define ICMPV6_FILTER_BLOCKOTHERS 3
 #define ICMPV6_FILTER_PASSONLY 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct icmp6_filter {
  __u32 data[8];
 };
-
 #define MLD2_MODE_IS_INCLUDE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MLD2_MODE_IS_EXCLUDE 2
 #define MLD2_CHANGE_TO_INCLUDE 3
 #define MLD2_CHANGE_TO_EXCLUDE 4
 #define MLD2_ALLOW_NEW_SOURCES 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MLD2_BLOCK_OLD_SOURCES 6
-
 #define MLD2_ALL_MCR_INIT { { { 0xff,0x02,0,0,0,0,0,0,0,0,0,0,0,0,0,0x16 } } }
-
 #endif
diff --git a/libc/kernel/common/linux/if.h b/libc/kernel/common/linux/if.h
index 7db4888..87f02e1 100644
--- a/libc/kernel/common/linux/if.h
+++ b/libc/kernel/common/linux/if.h
@@ -7,178 +7,195 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_H
 #define _LINUX_IF_H
-
 #include <linux/types.h>  
 #include <linux/socket.h>  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/compiler.h>  
-
 #define IFNAMSIZ 16
 #define IFALIASZ 256
 #include <linux/hdlc/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_UP 0x1  
 #define IFF_BROADCAST 0x2  
 #define IFF_DEBUG 0x4  
 #define IFF_LOOPBACK 0x8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_POINTOPOINT 0x10  
 #define IFF_NOTRAILERS 0x20  
 #define IFF_RUNNING 0x40  
 #define IFF_NOARP 0x80  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_PROMISC 0x100  
 #define IFF_ALLMULTI 0x200  
-
 #define IFF_MASTER 0x400  
 #define IFF_SLAVE 0x800  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_MULTICAST 0x1000  
-
 #define IFF_PORTSEL 0x2000  
 #define IFF_AUTOMEDIA 0x4000  
 #define IFF_DYNAMIC 0x8000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_LOWER_UP 0x10000  
 #define IFF_DORMANT 0x20000  
-
 #define IFF_ECHO 0x40000  
-
 #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_ECHO|  IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_802_1Q_VLAN 0x1  
 #define IFF_EBRIDGE 0x2  
 #define IFF_SLAVE_INACTIVE 0x4  
 #define IFF_MASTER_8023AD 0x8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_MASTER_ALB 0x10  
 #define IFF_BONDING 0x20  
 #define IFF_SLAVE_NEEDARP 0x40  
 #define IFF_ISATAP 0x80  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_MASTER_ARPMON 0x100  
 #define IFF_WAN_HDLC 0x200  
 #define IFF_XMIT_DST_RELEASE 0x400  
 #define IFF_DONT_BRIDGE 0x800  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_IN_NETPOLL 0x1000  
 #define IFF_DISABLE_NETPOLL 0x2000  
-
 #define IF_GET_IFACE 0x0001  
 #define IF_GET_PROTO 0x0002
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_IFACE_V35 0x1000  
 #define IF_IFACE_V24 0x1001  
 #define IF_IFACE_X21 0x1002  
 #define IF_IFACE_T1 0x1003  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_IFACE_E1 0x1004  
 #define IF_IFACE_SYNC_SERIAL 0x1005  
 #define IF_IFACE_X21D 0x1006  
-
 #define IF_PROTO_HDLC 0x2000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_PPP 0x2001  
 #define IF_PROTO_CISCO 0x2002  
 #define IF_PROTO_FR 0x2003  
 #define IF_PROTO_FR_ADD_PVC 0x2004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_FR_DEL_PVC 0x2005  
 #define IF_PROTO_X25 0x2006  
 #define IF_PROTO_HDLC_ETH 0x2007  
 #define IF_PROTO_FR_ADD_ETH_PVC 0x2008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_PROTO_FR_DEL_ETH_PVC 0x2009  
 #define IF_PROTO_FR_PVC 0x200A  
 #define IF_PROTO_FR_ETH_PVC 0x200B
 #define IF_PROTO_RAW 0x200C  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  IF_OPER_UNKNOWN,
  IF_OPER_NOTPRESENT,
  IF_OPER_DOWN,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IF_OPER_LOWERLAYERDOWN,
  IF_OPER_TESTING,
  IF_OPER_DORMANT,
  IF_OPER_UP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  IF_LINK_MODE_DEFAULT,
  IF_LINK_MODE_DORMANT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ifmap {
  unsigned long mem_start;
  unsigned long mem_end;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short base_addr;
  unsigned char irq;
  unsigned char dma;
  unsigned char port;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct if_settings {
  unsigned int type;
  unsigned int size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
-
  raw_hdlc_proto __user *raw_hdlc;
  cisco_proto __user *cisco;
  fr_proto __user *fr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  fr_proto_pvc __user *fr_pvc;
  fr_proto_pvc_info __user *fr_pvc_info;
-
  sync_serial_settings __user *sync;
  te1_settings __user *te1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } ifs_ifsu;
 };
-
 struct ifreq {
 #define IFHWADDRLEN 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union
  {
  char ifrn_name[IFNAMSIZ];
  } ifr_ifrn;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  struct sockaddr ifru_addr;
  struct sockaddr ifru_dstaddr;
  struct sockaddr ifru_broadaddr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sockaddr ifru_netmask;
  struct sockaddr ifru_hwaddr;
  short ifru_flags;
  int ifru_ivalue;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ifru_mtu;
  struct ifmap ifru_map;
  char ifru_slave[IFNAMSIZ];
  char ifru_newname[IFNAMSIZ];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __user * ifru_data;
  struct if_settings ifru_settings;
  } ifr_ifru;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_name ifr_ifrn.ifrn_name  
 #define ifr_hwaddr ifr_ifru.ifru_hwaddr  
 #define ifr_addr ifr_ifru.ifru_addr  
 #define ifr_dstaddr ifr_ifru.ifru_dstaddr  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_broadaddr ifr_ifru.ifru_broadaddr  
 #define ifr_netmask ifr_ifru.ifru_netmask  
 #define ifr_flags ifr_ifru.ifru_flags  
 #define ifr_metric ifr_ifru.ifru_ivalue  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_mtu ifr_ifru.ifru_mtu  
 #define ifr_map ifr_ifru.ifru_map  
 #define ifr_slave ifr_ifru.ifru_slave  
 #define ifr_data ifr_ifru.ifru_data  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_ifindex ifr_ifru.ifru_ivalue  
 #define ifr_bandwidth ifr_ifru.ifru_ivalue  
 #define ifr_qlen ifr_ifru.ifru_ivalue  
 #define ifr_newname ifr_ifru.ifru_newname  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifr_settings ifr_ifru.ifru_settings  
-
 struct ifconf {
  int ifc_len;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char __user *ifcu_buf;
  struct ifreq __user *ifcu_req;
  } ifc_ifcu;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ifc_buf ifc_ifcu.ifcu_buf  
 #define ifc_req ifc_ifcu.ifcu_req  
-
 #endif
-
diff --git a/libc/kernel/common/linux/if_addr.h b/libc/kernel/common/linux/if_addr.h
index 9c1fa15..05517a2 100644
--- a/libc/kernel/common/linux/if_addr.h
+++ b/libc/kernel/common/linux/if_addr.h
@@ -7,58 +7,67 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_IF_ADDR_H
 #define __LINUX_IF_ADDR_H
-
 #include <linux/types.h>
 #include <linux/netlink.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ifaddrmsg
 {
  __u8 ifa_family;
  __u8 ifa_prefixlen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ifa_flags;
  __u8 ifa_scope;
  __u32 ifa_index;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  IFA_UNSPEC,
  IFA_ADDRESS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFA_LOCAL,
  IFA_LABEL,
  IFA_BROADCAST,
  IFA_ANYCAST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFA_CACHEINFO,
  IFA_MULTICAST,
  __IFA_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFA_MAX (__IFA_MAX - 1)
-
 #define IFA_F_SECONDARY 0x01
 #define IFA_F_TEMPORARY IFA_F_SECONDARY
-
 #define IFA_F_NODAD 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFA_F_OPTIMISTIC 0x04
 #define IFA_F_DADFAILED 0x08
 #define IFA_F_HOMEADDRESS 0x10
 #define IFA_F_DEPRECATED 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFA_F_TENTATIVE 0x40
 #define IFA_F_PERMANENT 0x80
-
 struct ifa_cacheinfo
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ifa_prefered;
  __u32 ifa_valid;
  __u32 cstamp;
  __u32 tstamp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IFA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifaddrmsg))))
 #define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/if_arcnet.h b/libc/kernel/common/linux/if_arcnet.h
index a1ad877..ef16fda 100644
--- a/libc/kernel/common/linux/if_arcnet.h
+++ b/libc/kernel/common/linux/if_arcnet.h
@@ -7,88 +7,97 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_ARCNET_H
 #define _LINUX_IF_ARCNET_H
-
 #include <linux/if_ether.h>
-
 #define ARC_P_IP 212  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARC_P_IPV6 196  
 #define ARC_P_ARP 213  
 #define ARC_P_RARP 214  
 #define ARC_P_IPX 250  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARC_P_NOVELL_EC 236  
-
 #define ARC_P_IP_RFC1051 240  
 #define ARC_P_ARP_RFC1051 241  
-
 #define ARC_P_ETHER 232  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARC_P_DATAPOINT_BOOT 0  
 #define ARC_P_DATAPOINT_MOUNT 1
 #define ARC_P_POWERLAN_BEACON 8  
 #define ARC_P_POWERLAN_BEACON2 243  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARC_P_LANSOFT 251  
 #define ARC_P_ATALK 0xDD
-
 #define ARCNET_ALEN 1
-
 struct arc_rfc1201
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  uint8_t proto;
  uint8_t split_flag;
  uint16_t sequence;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t payload[0];
 };
 #define RFC1201_HDR_SIZE 4
-
 struct arc_rfc1051
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  uint8_t proto;
  uint8_t payload[0];
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RFC1051_HDR_SIZE 1
-
 struct arc_eth_encap
 {
  uint8_t proto;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ethhdr eth;
  uint8_t payload[0];
 };
 #define ETH_ENCAP_HDR_SIZE 14
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct arc_cap
 {
  uint8_t proto;
  uint8_t cookie[sizeof(int)];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  uint8_t ack;
  uint8_t raw[0];
  } mes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct arc_hardware
 {
  uint8_t source,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  dest,
  offset[2];
 };
 #define ARC_HDR_SIZE 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct archdr
 {
-
  struct arc_hardware hard;
-
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct arc_rfc1201 rfc1201;
  struct arc_rfc1051 rfc1051;
  struct arc_eth_encap eth_encap;
  struct arc_cap cap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t raw[0];
  } soft;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/if_arp.h b/libc/kernel/common/linux/if_arp.h
index d8a4001..37d20c7 100644
--- a/libc/kernel/common/linux/if_arp.h
+++ b/libc/kernel/common/linux/if_arp.h
@@ -7,119 +7,134 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_ARP_H
 #define _LINUX_IF_ARP_H
-
 #include <linux/netdevice.h>
-
 #define ARPHRD_NETROM 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_ETHER 1  
 #define ARPHRD_EETHER 2  
 #define ARPHRD_AX25 3  
 #define ARPHRD_PRONET 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_CHAOS 5  
 #define ARPHRD_IEEE802 6  
 #define ARPHRD_ARCNET 7  
 #define ARPHRD_APPLETLK 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_DLCI 15  
 #define ARPHRD_ATM 19  
 #define ARPHRD_METRICOM 23  
 #define ARPHRD_IEEE1394 24  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_EUI64 27  
 #define ARPHRD_INFINIBAND 32  
-
 #define ARPHRD_SLIP 256
 #define ARPHRD_CSLIP 257
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_SLIP6 258
 #define ARPHRD_CSLIP6 259
 #define ARPHRD_RSRVD 260  
 #define ARPHRD_ADAPT 264
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_ROSE 270
 #define ARPHRD_X25 271  
 #define ARPHRD_HWX25 272  
 #define ARPHRD_CAN 280  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_PPP 512
 #define ARPHRD_CISCO 513  
 #define ARPHRD_HDLC ARPHRD_CISCO
 #define ARPHRD_LAPB 516  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_DDCMP 517  
 #define ARPHRD_RAWHDLC 518  
-
 #define ARPHRD_TUNNEL 768  
 #define ARPHRD_TUNNEL6 769  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_FRAD 770  
 #define ARPHRD_SKIP 771  
 #define ARPHRD_LOOPBACK 772  
 #define ARPHRD_LOCALTLK 773  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_FDDI 774  
 #define ARPHRD_BIF 775  
 #define ARPHRD_SIT 776  
 #define ARPHRD_IPDDP 777  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_IPGRE 778  
 #define ARPHRD_PIMREG 779  
 #define ARPHRD_HIPPI 780  
 #define ARPHRD_ASH 781  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_ECONET 782  
 #define ARPHRD_IRDA 783  
-
 #define ARPHRD_FCPP 784  
 #define ARPHRD_FCAL 785  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_FCPL 786  
 #define ARPHRD_FCFABRIC 787  
-
 #define ARPHRD_IEEE802_TR 800  
 #define ARPHRD_IEEE80211 801  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_IEEE80211_PRISM 802  
 #define ARPHRD_IEEE80211_RADIOTAP 803  
 #define ARPHRD_IEEE802154 804
-
 #define ARPHRD_PHONET 820  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPHRD_PHONET_PIPE 821  
 #define ARPHRD_CAIF 822  
-
 #define ARPHRD_VOID 0xFFFF  
 #define ARPHRD_NONE 0xFFFE  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPOP_REQUEST 1  
 #define ARPOP_REPLY 2  
 #define ARPOP_RREQUEST 3  
 #define ARPOP_RREPLY 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPOP_InREQUEST 8  
 #define ARPOP_InREPLY 9  
 #define ARPOP_NAK 10  
-
 struct arpreq {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sockaddr arp_pa;
  struct sockaddr arp_ha;
  int arp_flags;
  struct sockaddr arp_netmask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char arp_dev[16];
 };
-
 struct arpreq_old {
  struct sockaddr arp_pa;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sockaddr arp_ha;
  int arp_flags;
  struct sockaddr arp_netmask;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATF_COM 0x02  
 #define ATF_PERM 0x04  
 #define ATF_PUBL 0x08  
 #define ATF_USETRAILERS 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATF_NETMASK 0x20  
 #define ATF_DONTPUB 0x40  
-
 struct arphdr {
  __be16 ar_hrd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 ar_pro;
  unsigned char ar_hln;
  unsigned char ar_pln;
  __be16 ar_op;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/if_bridge.h b/libc/kernel/common/linux/if_bridge.h
index 93f9494..a771fd7 100644
--- a/libc/kernel/common/linux/if_bridge.h
+++ b/libc/kernel/common/linux/if_bridge.h
@@ -7,94 +7,112 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_BRIDGE_H
 #define _LINUX_IF_BRIDGE_H
-
 #include <linux/types.h>
-
 #define SYSFS_BRIDGE_ATTR "bridge"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYSFS_BRIDGE_FDB "brforward"
 #define SYSFS_BRIDGE_PORT_SUBDIR "brif"
 #define SYSFS_BRIDGE_PORT_ATTR "brport"
 #define SYSFS_BRIDGE_PORT_LINK "bridge"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BRCTL_VERSION 1
-
 #define BRCTL_GET_VERSION 0
 #define BRCTL_GET_BRIDGES 1
 #define BRCTL_ADD_BRIDGE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BRCTL_DEL_BRIDGE 3
 #define BRCTL_ADD_IF 4
 #define BRCTL_DEL_IF 5
 #define BRCTL_GET_BRIDGE_INFO 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BRCTL_GET_PORT_LIST 7
 #define BRCTL_SET_BRIDGE_FORWARD_DELAY 8
 #define BRCTL_SET_BRIDGE_HELLO_TIME 9
 #define BRCTL_SET_BRIDGE_MAX_AGE 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BRCTL_SET_AGEING_TIME 11
 #define BRCTL_SET_GC_INTERVAL 12
 #define BRCTL_GET_PORT_INFO 13
 #define BRCTL_SET_BRIDGE_STP_STATE 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BRCTL_SET_BRIDGE_PRIORITY 15
 #define BRCTL_SET_PORT_PRIORITY 16
 #define BRCTL_SET_PATH_COST 17
 #define BRCTL_GET_FDB_ENTRIES 18
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BR_STATE_DISABLED 0
 #define BR_STATE_LISTENING 1
 #define BR_STATE_LEARNING 2
 #define BR_STATE_FORWARDING 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BR_STATE_BLOCKING 4
-
 struct __bridge_info
 {
  __u64 designated_root;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 bridge_id;
  __u32 root_path_cost;
  __u32 max_age;
  __u32 hello_time;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 forward_delay;
  __u32 bridge_max_age;
  __u32 bridge_hello_time;
  __u32 bridge_forward_delay;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 topology_change;
  __u8 topology_change_detected;
  __u8 root_port;
  __u8 stp_enabled;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ageing_time;
  __u32 gc_interval;
  __u32 hello_timer_value;
  __u32 tcn_timer_value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 topology_change_timer_value;
  __u32 gc_timer_value;
 };
-
 struct __port_info
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u64 designated_root;
  __u64 designated_bridge;
  __u16 port_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 designated_port;
  __u32 path_cost;
  __u32 designated_cost;
  __u8 state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 top_change_ack;
  __u8 config_pending;
  __u8 unused0;
  __u32 message_age_timer_value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 forward_delay_timer_value;
  __u32 hold_timer_value;
 };
-
 struct __fdb_entry
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u8 mac_addr[6];
  __u8 port_no;
  __u8 is_local;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ageing_timer_value;
  __u32 unused;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/if_ether.h b/libc/kernel/common/linux/if_ether.h
index 7e235a5..a82414f 100644
--- a/libc/kernel/common/linux/if_ether.h
+++ b/libc/kernel/common/linux/if_ether.h
@@ -7,89 +7,109 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_ETHER_H
 #define _LINUX_IF_ETHER_H
-
 #include <linux/types.h>
-
 #define ETH_ALEN 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_HLEN 14  
 #define ETH_ZLEN 60  
 #define ETH_DATA_LEN 1500  
 #define ETH_FRAME_LEN 1514  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_FCS_LEN 4  
-
 #define ETH_P_LOOP 0x0060  
 #define ETH_P_PUP 0x0200  
 #define ETH_P_PUPAT 0x0201  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_IP 0x0800  
 #define ETH_P_X25 0x0805  
 #define ETH_P_ARP 0x0806  
 #define ETH_P_BPQ 0x08FF  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_IEEEPUP 0x0a00  
 #define ETH_P_IEEEPUPAT 0x0a01  
 #define ETH_P_DEC 0x6000  
 #define ETH_P_DNA_DL 0x6001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_DNA_RC 0x6002  
 #define ETH_P_DNA_RT 0x6003  
 #define ETH_P_LAT 0x6004  
 #define ETH_P_DIAG 0x6005  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_CUST 0x6006  
 #define ETH_P_SCA 0x6007  
 #define ETH_P_TEB 0x6558  
 #define ETH_P_RARP 0x8035  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_ATALK 0x809B  
 #define ETH_P_AARP 0x80F3  
 #define ETH_P_8021Q 0x8100  
 #define ETH_P_IPX 0x8137  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_IPV6 0x86DD  
 #define ETH_P_PAUSE 0x8808  
 #define ETH_P_SLOW 0x8809  
 #define ETH_P_WCCP 0x883E  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_PPP_DISC 0x8863  
 #define ETH_P_PPP_SES 0x8864  
 #define ETH_P_MPLS_UC 0x8847  
 #define ETH_P_MPLS_MC 0x8848  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_ATMMPOA 0x884c  
 #define ETH_P_ATMFATE 0x8884  
 #define ETH_P_PAE 0x888E  
 #define ETH_P_AOE 0x88A2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_TIPC 0x88CA  
 #define ETH_P_1588 0x88F7  
 #define ETH_P_FCOE 0x8906  
 #define ETH_P_FIP 0x8914  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_EDSA 0xDADA  
-
 #define ETH_P_802_3 0x0001  
 #define ETH_P_AX25 0x0002  
 #define ETH_P_ALL 0x0003  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_802_2 0x0004  
 #define ETH_P_SNAP 0x0005  
 #define ETH_P_DDCMP 0x0006  
 #define ETH_P_WAN_PPP 0x0007  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_PPP_MP 0x0008  
 #define ETH_P_LOCALTALK 0x0009  
 #define ETH_P_CAN 0x000C  
 #define ETH_P_PPPTALK 0x0010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_TR_802_2 0x0011  
 #define ETH_P_MOBITEX 0x0015  
 #define ETH_P_CONTROL 0x0016  
 #define ETH_P_IRDA 0x0017  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_ECONET 0x0018  
 #define ETH_P_HDLC 0x0019  
 #define ETH_P_ARCNET 0x001A  
 #define ETH_P_DSA 0x001B  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ETH_P_TRAILER 0x001C  
 #define ETH_P_PHONET 0x00F5  
 #define ETH_P_IEEE802154 0x00F6  
 #define ETH_P_CAIF 0x00F7  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ethhdr {
  unsigned char h_dest[ETH_ALEN];
  unsigned char h_source[ETH_ALEN];
  __be16 h_proto;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 #endif
diff --git a/libc/kernel/common/linux/if_fc.h b/libc/kernel/common/linux/if_fc.h
index a6a47b4..8c4152b 100644
--- a/libc/kernel/common/linux/if_fc.h
+++ b/libc/kernel/common/linux/if_fc.h
@@ -7,29 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_FC_H
 #define _LINUX_IF_FC_H
-
 #define FC_ALEN 6  
 #define FC_HLEN (sizeof(struct fch_hdr)+sizeof(struct fcllc))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FC_ID_LEN 3  
-
 #define EXTENDED_SAP 0xAA
 #define UI_CMD 0x03
-
 struct fch_hdr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 daddr[FC_ALEN];
  __u8 saddr[FC_ALEN];
 };
-
 struct fcllc {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 dsap;
  __u8 ssap;
  __u8 llc;
  __u8 protid[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 ethertype;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/if_fddi.h b/libc/kernel/common/linux/if_fddi.h
index f59492f..e03e519 100644
--- a/libc/kernel/common/linux/if_fddi.h
+++ b/libc/kernel/common/linux/if_fddi.h
@@ -7,77 +7,92 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_FDDI_H
 #define _LINUX_IF_FDDI_H
-
 #define FDDI_K_ALEN 6  
 #define FDDI_K_8022_HLEN 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDDI_K_SNAP_HLEN 21  
 #define FDDI_K_8022_ZLEN 16  
 #define FDDI_K_SNAP_ZLEN 21  
 #define FDDI_K_8022_DLEN 4475  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDDI_K_SNAP_DLEN 4470  
 #define FDDI_K_LLC_ZLEN 13  
 #define FDDI_K_LLC_LEN 4491  
-
 #define FDDI_FC_K_VOID 0x00 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDDI_FC_K_NON_RESTRICTED_TOKEN 0x80 
 #define FDDI_FC_K_RESTRICTED_TOKEN 0xC0 
 #define FDDI_FC_K_SMT_MIN 0x41
 #define FDDI_FC_K_SMT_MAX 0x4F
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDDI_FC_K_MAC_MIN 0xC1
 #define FDDI_FC_K_MAC_MAX 0xCF 
 #define FDDI_FC_K_ASYNC_LLC_MIN 0x50
 #define FDDI_FC_K_ASYNC_LLC_DEF 0x54
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDDI_FC_K_ASYNC_LLC_MAX 0x5F
 #define FDDI_FC_K_SYNC_LLC_MIN 0xD0
 #define FDDI_FC_K_SYNC_LLC_MAX 0xD7
 #define FDDI_FC_K_IMPLEMENTOR_MIN 0x60
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDDI_FC_K_IMPLEMENTOR_MAX 0x6F
 #define FDDI_FC_K_RESERVED_MIN 0x70
 #define FDDI_FC_K_RESERVED_MAX 0x7F
-
 #define FDDI_EXTENDED_SAP 0xAA
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FDDI_UI_CMD 0x03
-
 struct fddi_8022_1_hdr
  {
  __u8 dsap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ssap;
  __u8 ctrl;
  } __attribute__ ((packed));
-
 struct fddi_8022_2_hdr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  {
  __u8 dsap;
  __u8 ssap;
  __u8 ctrl_1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ctrl_2;
  } __attribute__ ((packed));
-
 #define FDDI_K_OUI_LEN 3
 struct fddi_snap_hdr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  {
  __u8 dsap;
  __u8 ssap;
  __u8 ctrl;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 oui[FDDI_K_OUI_LEN];
  __be16 ethertype;
  } __attribute__ ((packed));
-
 struct fddihdr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  {
  __u8 fc;
  __u8 daddr[FDDI_K_ALEN];
  __u8 saddr[FDDI_K_ALEN];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union
  {
  struct fddi_8022_1_hdr llc_8022_1;
  struct fddi_8022_2_hdr llc_8022_2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct fddi_snap_hdr llc_snap;
  } hdr;
  } __attribute__ ((packed));
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/if_hippi.h b/libc/kernel/common/linux/if_hippi.h
index 52d36f6..a25e972 100644
--- a/libc/kernel/common/linux/if_hippi.h
+++ b/libc/kernel/common/linux/if_hippi.h
@@ -7,93 +7,107 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_HIPPI_H
 #define _LINUX_IF_HIPPI_H
-
 #include <asm/byteorder.h>
-
 #define HIPPI_ALEN 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIPPI_HLEN sizeof(struct hippi_hdr)
 #define HIPPI_ZLEN 0  
 #define HIPPI_DATA_LEN 65280  
 #define HIPPI_FRAME_LEN (HIPPI_DATA_LEN + HIPPI_HLEN)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIPPI_EXTENDED_SAP 0xAA
 #define HIPPI_UI_CMD 0x03
-
 struct hipnet_statistics
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int rx_packets;
  int tx_packets;
  int rx_errors;
  int tx_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int rx_dropped;
  int tx_dropped;
-
  int rx_length_errors;
  int rx_over_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int rx_crc_errors;
  int rx_frame_errors;
  int rx_fifo_errors;
  int rx_missed_errors;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int tx_aborted_errors;
  int tx_carrier_errors;
  int tx_fifo_errors;
  int tx_heartbeat_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int tx_window_errors;
 };
-
 struct hippi_fp_hdr
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 fixed;
  __be32 d2_size;
 } __attribute__ ((packed));
-
 struct hippi_le_hdr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
 #ifdef __BIG_ENDIAN_BITFIELD
  __u8 fc:3;
  __u8 double_wide:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 message_type:4;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
  __u8 message_type:4;
  __u8 double_wide:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 fc:3;
 #endif
  __u8 dest_switch_addr[3];
 #ifdef __BIG_ENDIAN_BITFIELD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 dest_addr_type:4,
  src_addr_type:4;
 #elif defined(__LITTLE_ENDIAN_BITFIELD)
  __u8 src_addr_type:4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  dest_addr_type:4;
 #endif
  __u8 src_switch_addr[3];
  __u16 reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 daddr[HIPPI_ALEN];
  __u16 locally_administered;
  __u8 saddr[HIPPI_ALEN];
 } __attribute__ ((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HIPPI_OUI_LEN 3
-
 struct hippi_snap_hdr
 {
  __u8 dsap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ssap;
  __u8 ctrl;
  __u8 oui[HIPPI_OUI_LEN];
  __be16 ethertype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__ ((packed));
-
 struct hippi_hdr
 {
  struct hippi_fp_hdr fp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct hippi_le_hdr le;
  struct hippi_snap_hdr snap;
 } __attribute__ ((packed));
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/if_link.h b/libc/kernel/common/linux/if_link.h
index 4b83760..df85b2a 100644
--- a/libc/kernel/common/linux/if_link.h
+++ b/libc/kernel/common/linux/if_link.h
@@ -7,296 +7,318 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_LINK_H
 #define _LINUX_IF_LINK_H
-
 #include <linux/types.h>
 #include <linux/netlink.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rtnl_link_stats {
  __u32 rx_packets;
  __u32 tx_packets;
  __u32 rx_bytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tx_bytes;
  __u32 rx_errors;
  __u32 tx_errors;
  __u32 rx_dropped;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tx_dropped;
  __u32 multicast;
  __u32 collisions;
-
  __u32 rx_length_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 rx_over_errors;
  __u32 rx_crc_errors;
  __u32 rx_frame_errors;
  __u32 rx_fifo_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 rx_missed_errors;
-
  __u32 tx_aborted_errors;
  __u32 tx_carrier_errors;
  __u32 tx_fifo_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tx_heartbeat_errors;
  __u32 tx_window_errors;
-
  __u32 rx_compressed;
  __u32 tx_compressed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct rtnl_link_stats64 {
  __u64 rx_packets;
  __u64 tx_packets;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 rx_bytes;
  __u64 tx_bytes;
  __u64 rx_errors;
  __u64 tx_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 rx_dropped;
  __u64 tx_dropped;
  __u64 multicast;
  __u64 collisions;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 rx_length_errors;
  __u64 rx_over_errors;
  __u64 rx_crc_errors;
  __u64 rx_frame_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 rx_fifo_errors;
  __u64 rx_missed_errors;
-
  __u64 tx_aborted_errors;
  __u64 tx_carrier_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 tx_fifo_errors;
  __u64 tx_heartbeat_errors;
  __u64 tx_window_errors;
-
  __u64 rx_compressed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 tx_compressed;
 };
-
 struct rtnl_link_ifmap {
  __u64 mem_start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 mem_end;
  __u64 base_addr;
  __u16 irq;
  __u8 dma;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 port;
 };
-
 enum {
  IFLA_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_ADDRESS,
  IFLA_BROADCAST,
  IFLA_IFNAME,
  IFLA_MTU,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_LINK,
  IFLA_QDISC,
  IFLA_STATS,
  IFLA_COST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_COST IFLA_COST
  IFLA_PRIORITY,
 #define IFLA_PRIORITY IFLA_PRIORITY
  IFLA_MASTER,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_MASTER IFLA_MASTER
  IFLA_WIRELESS,
 #define IFLA_WIRELESS IFLA_WIRELESS
  IFLA_PROTINFO,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_PROTINFO IFLA_PROTINFO
  IFLA_TXQLEN,
 #define IFLA_TXQLEN IFLA_TXQLEN
  IFLA_MAP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_MAP IFLA_MAP
  IFLA_WEIGHT,
 #define IFLA_WEIGHT IFLA_WEIGHT
  IFLA_OPERSTATE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_LINKMODE,
  IFLA_LINKINFO,
 #define IFLA_LINKINFO IFLA_LINKINFO
  IFLA_NET_NS_PID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_IFALIAS,
  IFLA_NUM_VF,
  IFLA_VFINFO_LIST,
  IFLA_STATS64,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_VF_PORTS,
  IFLA_PORT_SELF,
  __IFLA_MAX
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_MAX (__IFLA_MAX - 1)
-
 #define IFLA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct ifinfomsg))))
 #define IFLA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifinfomsg))
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_INET6_UNSPEC,
  IFLA_INET6_FLAGS,
  IFLA_INET6_CONF,
  IFLA_INET6_STATS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_INET6_MCAST,
  IFLA_INET6_CACHEINFO,
  IFLA_INET6_ICMP6STATS,
  __IFLA_INET6_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IFLA_INET6_MAX (__IFLA_INET6_MAX - 1)
-
 struct ifla_cacheinfo {
  __u32 max_reasm_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tstamp;
  __u32 reachable_time;
  __u32 retrans_time;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  IFLA_INFO_UNSPEC,
  IFLA_INFO_KIND,
  IFLA_INFO_DATA,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_INFO_XSTATS,
  __IFLA_INFO_MAX,
 };
-
 #define IFLA_INFO_MAX (__IFLA_INFO_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  IFLA_VLAN_UNSPEC,
  IFLA_VLAN_ID,
  IFLA_VLAN_FLAGS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_VLAN_EGRESS_QOS,
  IFLA_VLAN_INGRESS_QOS,
  __IFLA_VLAN_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1)
-
 struct ifla_vlan_flags {
  __u32 flags;
  __u32 mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  IFLA_VLAN_QOS_UNSPEC,
  IFLA_VLAN_QOS_MAPPING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __IFLA_VLAN_QOS_MAX
 };
-
 #define IFLA_VLAN_QOS_MAX (__IFLA_VLAN_QOS_MAX - 1)
-
 struct ifla_vlan_qos_mapping {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 from;
  __u32 to;
 };
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_MACVLAN_UNSPEC,
  IFLA_MACVLAN_MODE,
  __IFLA_MACVLAN_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
-
 enum macvlan_mode {
  MACVLAN_MODE_PRIVATE = 1,
  MACVLAN_MODE_VEPA = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MACVLAN_MODE_BRIDGE = 4,
 };
-
 enum {
  IFLA_VF_INFO_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_VF_INFO,
  __IFLA_VF_INFO_MAX,
 };
-
 #define IFLA_VF_INFO_MAX (__IFLA_VF_INFO_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  IFLA_VF_UNSPEC,
  IFLA_VF_MAC,
  IFLA_VF_VLAN,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_VF_TX_RATE,
  __IFLA_VF_MAX,
 };
-
 #define IFLA_VF_MAX (__IFLA_VF_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ifla_vf_mac {
  __u32 vf;
  __u8 mac[32];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ifla_vf_vlan {
  __u32 vf;
  __u32 vlan;
  __u32 qos;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ifla_vf_tx_rate {
  __u32 vf;
  __u32 rate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ifla_vf_info {
  __u32 vf;
  __u8 mac[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 vlan;
  __u32 qos;
  __u32 tx_rate;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  IFLA_VF_PORT_UNSPEC,
  IFLA_VF_PORT,
  __IFLA_VF_PORT_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IFLA_VF_PORT_MAX (__IFLA_VF_PORT_MAX - 1)
-
 enum {
  IFLA_PORT_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_PORT_VF,
  IFLA_PORT_PROFILE,
  IFLA_PORT_VSI_TYPE,
  IFLA_PORT_INSTANCE_UUID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IFLA_PORT_HOST_UUID,
  IFLA_PORT_REQUEST,
  IFLA_PORT_RESPONSE,
  __IFLA_PORT_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IFLA_PORT_MAX (__IFLA_PORT_MAX - 1)
-
 #define PORT_PROFILE_MAX 40
 #define PORT_UUID_MAX 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_SELF_VF -1
-
 enum {
  PORT_REQUEST_PREASSOCIATE = 0,
  PORT_REQUEST_PREASSOCIATE_RR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PORT_REQUEST_ASSOCIATE,
  PORT_REQUEST_DISASSOCIATE,
 };
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PORT_VDP_RESPONSE_SUCCESS = 0,
  PORT_VDP_RESPONSE_INVALID_FORMAT,
  PORT_VDP_RESPONSE_INSUFFICIENT_RESOURCES,
  PORT_VDP_RESPONSE_UNUSED_VTID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PORT_VDP_RESPONSE_VTID_VIOLATION,
  PORT_VDP_RESPONSE_VTID_VERSION_VIOALTION,
  PORT_VDP_RESPONSE_OUT_OF_SYNC,
-
  PORT_PROFILE_RESPONSE_SUCCESS = 0x100,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PORT_PROFILE_RESPONSE_INPROGRESS,
  PORT_PROFILE_RESPONSE_INVALID,
  PORT_PROFILE_RESPONSE_BADSTATE,
  PORT_PROFILE_RESPONSE_INSUFFICIENT_RESOURCES,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PORT_PROFILE_RESPONSE_ERROR,
 };
-
 struct ifla_port_vsi {
  __u8 vsi_mgr_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 vsi_type_id[3];
  __u8 vsi_type_version;
  __u8 pad[3];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/if_packet.h b/libc/kernel/common/linux/if_packet.h
index 1aa3bea..387c59c 100644
--- a/libc/kernel/common/linux/if_packet.h
+++ b/libc/kernel/common/linux/if_packet.h
@@ -7,90 +7,102 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_IF_PACKET_H
 #define __LINUX_IF_PACKET_H
-
 struct sockaddr_pkt
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short spkt_family;
  unsigned char spkt_device[14];
  unsigned short spkt_protocol;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sockaddr_ll
 {
  unsigned short sll_family;
  unsigned short sll_protocol;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int sll_ifindex;
  unsigned short sll_hatype;
  unsigned char sll_pkttype;
  unsigned char sll_halen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char sll_addr[8];
 };
-
 #define PACKET_HOST 0  
 #define PACKET_BROADCAST 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PACKET_MULTICAST 2  
 #define PACKET_OTHERHOST 3  
 #define PACKET_OUTGOING 4  
-
 #define PACKET_LOOPBACK 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PACKET_FASTROUTE 6  
-
 #define PACKET_ADD_MEMBERSHIP 1
 #define PACKET_DROP_MEMBERSHIP 2
 #define PACKET_RECV_OUTPUT 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PACKET_RX_RING 5
 #define PACKET_STATISTICS 6
 #define PACKET_COPY_THRESH 7
-
 struct tpacket_stats
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned int tp_packets;
  unsigned int tp_drops;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tpacket_hdr
 {
  unsigned long tp_status;
 #define TP_STATUS_KERNEL 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TP_STATUS_USER 1
 #define TP_STATUS_COPY 2
 #define TP_STATUS_LOSING 4
 #define TP_STATUS_CSUMNOTREADY 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int tp_len;
  unsigned int tp_snaplen;
  unsigned short tp_mac;
  unsigned short tp_net;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int tp_sec;
  unsigned int tp_usec;
 };
-
 #define TPACKET_ALIGNMENT 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TPACKET_ALIGN(x) (((x)+TPACKET_ALIGNMENT-1)&~(TPACKET_ALIGNMENT-1))
 #define TPACKET_HDRLEN (TPACKET_ALIGN(sizeof(struct tpacket_hdr)) + sizeof(struct sockaddr_ll))
-
 struct tpacket_req
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int tp_block_size;
  unsigned int tp_block_nr;
  unsigned int tp_frame_size;
  unsigned int tp_frame_nr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct packet_mreq
 {
  int mr_ifindex;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short mr_type;
  unsigned short mr_alen;
  unsigned char mr_address[8];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PACKET_MR_MULTICAST 0
 #define PACKET_MR_PROMISC 1
 #define PACKET_MR_ALLMULTI 2
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/if_ppp.h b/libc/kernel/common/linux/if_ppp.h
index 9f35c97..7237a40 100644
--- a/libc/kernel/common/linux/if_ppp.h
+++ b/libc/kernel/common/linux/if_ppp.h
@@ -7,110 +7,127 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IF_PPP_H_
 #define _IF_PPP_H_
-
 #include <linux/compiler.h>
-
 #define PPP_MTU 1500  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_MAXMRU 65000  
 #define PROTO_IPX 0x002b  
 #define PROTO_DNA_RT 0x0027  
-
 #define SC_COMP_PROT 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_COMP_AC 0x00000002  
 #define SC_COMP_TCP 0x00000004  
 #define SC_NO_TCP_CCID 0x00000008  
 #define SC_REJ_COMP_AC 0x00000010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_REJ_COMP_TCP 0x00000020  
 #define SC_CCP_OPEN 0x00000040  
 #define SC_CCP_UP 0x00000080  
 #define SC_ENABLE_IP 0x00000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_LOOP_TRAFFIC 0x00000200  
 #define SC_MULTILINK 0x00000400  
 #define SC_MP_SHORTSEQ 0x00000800  
 #define SC_COMP_RUN 0x00001000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_DECOMP_RUN 0x00002000  
 #define SC_MP_XSHORTSEQ 0x00004000  
 #define SC_DEBUG 0x00010000  
 #define SC_LOG_INPKT 0x00020000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_LOG_OUTPKT 0x00040000  
 #define SC_LOG_RAWIN 0x00080000  
 #define SC_LOG_FLUSH 0x00100000  
 #define SC_SYNC 0x00200000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_MUST_COMP 0x00400000  
 #define SC_MASK 0x0f600fff  
-
 #define SC_XMIT_BUSY 0x10000000  
 #define SC_RCV_ODDP 0x08000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_RCV_EVNP 0x04000000  
 #define SC_RCV_B7_1 0x02000000  
 #define SC_RCV_B7_0 0x01000000  
 #define SC_DC_FERROR 0x00800000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SC_DC_ERROR 0x00400000  
-
 struct npioctl {
  int protocol;
  enum NPmode mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ppp_option_data {
  __u8 __user *ptr;
  __u32 length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int transmit;
 };
-
 struct ifpppstatsreq {
  struct ifreq b;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ppp_stats stats;
 };
-
 struct ifpppcstatsreq {
  struct ifreq b;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ppp_comp_stats stats;
 };
-
 #define ifr__name b.ifr_ifrn.ifrn_name
 #define stats_ptr b.ifr_ifru.ifru_data
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPPIOCGFLAGS _IOR('t', 90, int)  
 #define PPPIOCSFLAGS _IOW('t', 89, int)  
 #define PPPIOCGASYNCMAP _IOR('t', 88, int)  
 #define PPPIOCSASYNCMAP _IOW('t', 87, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPPIOCGUNIT _IOR('t', 86, int)  
 #define PPPIOCGRASYNCMAP _IOR('t', 85, int)  
 #define PPPIOCSRASYNCMAP _IOW('t', 84, int)  
 #define PPPIOCGMRU _IOR('t', 83, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPPIOCSMRU _IOW('t', 82, int)  
 #define PPPIOCSMAXCID _IOW('t', 81, int)  
 #define PPPIOCGXASYNCMAP _IOR('t', 80, ext_accm)  
 #define PPPIOCSXASYNCMAP _IOW('t', 79, ext_accm)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPPIOCXFERUNIT _IO('t', 78)  
 #define PPPIOCSCOMPRESS _IOW('t', 77, struct ppp_option_data)
 #define PPPIOCGNPMODE _IOWR('t', 76, struct npioctl)  
 #define PPPIOCSNPMODE _IOW('t', 75, struct npioctl)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPPIOCSPASS _IOW('t', 71, struct sock_fprog)  
 #define PPPIOCSACTIVE _IOW('t', 70, struct sock_fprog)  
 #define PPPIOCGDEBUG _IOR('t', 65, int)  
 #define PPPIOCSDEBUG _IOW('t', 64, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPPIOCGIDLE _IOR('t', 63, struct ppp_idle)  
 #define PPPIOCNEWUNIT _IOWR('t', 62, int)  
 #define PPPIOCATTACH _IOW('t', 61, int)  
 #define PPPIOCDETACH _IOW('t', 60, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPPIOCSMRRU _IOW('t', 59, int)  
 #define PPPIOCCONNECT _IOW('t', 58, int)  
 #define PPPIOCDISCONN _IO('t', 57)  
 #define PPPIOCATTCHAN _IOW('t', 56, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPPIOCGCHAN _IOR('t', 55, int)  
-
 #define SIOCGPPPSTATS (SIOCDEVPRIVATE + 0)
 #define SIOCGPPPVER (SIOCDEVPRIVATE + 1)  
 #define SIOCGPPPCSTATS (SIOCDEVPRIVATE + 2)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef ifr_mtu
 #define ifr_mtu ifr_ifru.ifru_metric
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/if_tr.h b/libc/kernel/common/linux/if_tr.h
index 7d6319a..7e97d51 100644
--- a/libc/kernel/common/linux/if_tr.h
+++ b/libc/kernel/common/linux/if_tr.h
@@ -7,70 +7,82 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_TR_H
 #define _LINUX_IF_TR_H
-
 #include <asm/byteorder.h>  
-
 #define TR_ALEN 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TR_HLEN (sizeof(struct trh_hdr)+sizeof(struct trllc))
 #define AC 0x10
 #define LLC_FRAME 0x40
-
 #define EXTENDED_SAP 0xAA
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UI_CMD 0x03
-
 struct trh_hdr {
  __u8 ac;
  __u8 fc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 daddr[TR_ALEN];
  __u8 saddr[TR_ALEN];
  __be16 rcf;
  __be16 rseg[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct trllc {
  __u8 dsap;
  __u8 ssap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 llc;
  __u8 protid[3];
  __be16 ethertype;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tr_statistics {
  unsigned long rx_packets;
  unsigned long tx_packets;
  unsigned long rx_bytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long tx_bytes;
  unsigned long rx_errors;
  unsigned long tx_errors;
  unsigned long rx_dropped;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long tx_dropped;
  unsigned long multicast;
  unsigned long transmit_collision;
-
  unsigned long line_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long internal_errors;
  unsigned long burst_errors;
  unsigned long A_C_errors;
  unsigned long abort_delimiters;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long lost_frames;
  unsigned long recv_congest_count;
  unsigned long frame_copied_errors;
  unsigned long frequency_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long token_errors;
  unsigned long dummy1;
 };
-
 #define TR_RII 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TR_RCF_DIR_BIT 0x80
 #define TR_RCF_LEN_MASK 0x1f00
 #define TR_RCF_BROADCAST 0x8000  
 #define TR_RCF_LIMITED_BROADCAST 0xC000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TR_RCF_FRAME2K 0x20
 #define TR_RCF_BROADCAST_MASK 0xC000
 #define TR_MAXRIFLEN 18
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/if_tun.h b/libc/kernel/common/linux/if_tun.h
index 9ed49f1..c3ee0c0 100644
--- a/libc/kernel/common/linux/if_tun.h
+++ b/libc/kernel/common/linux/if_tun.h
@@ -7,71 +7,80 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __IF_TUN_H
 #define __IF_TUN_H
-
 #include <linux/types.h>
 #include <linux/if_ether.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/filter.h>
-
 #define TUN_READQ_SIZE 500
-
 #define TUN_TUN_DEV 0x0001 
 #define TUN_TAP_DEV 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TUN_TYPE_MASK 0x000f
-
 #define TUN_FASYNC 0x0010
 #define TUN_NOCHECKSUM 0x0020
 #define TUN_NO_PI 0x0040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TUN_ONE_QUEUE 0x0080
 #define TUN_PERSIST 0x0100 
 #define TUN_VNET_HDR 0x0200
-
 #define TUNSETNOCSUM _IOW('T', 200, int) 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TUNSETDEBUG _IOW('T', 201, int) 
 #define TUNSETIFF _IOW('T', 202, int) 
 #define TUNSETPERSIST _IOW('T', 203, int) 
 #define TUNSETOWNER _IOW('T', 204, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TUNSETLINK _IOW('T', 205, int)
 #define TUNSETGROUP _IOW('T', 206, int)
 #define TUNGETFEATURES _IOR('T', 207, unsigned int)
 #define TUNSETOFFLOAD _IOW('T', 208, unsigned int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TUNSETTXFILTER _IOW('T', 209, unsigned int)
 #define TUNGETIFF _IOR('T', 210, unsigned int)
 #define TUNGETSNDBUF _IOR('T', 211, int)
 #define TUNSETSNDBUF _IOW('T', 212, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TUNATTACHFILTER _IOW('T', 213, struct sock_fprog)
 #define TUNDETACHFILTER _IOW('T', 214, struct sock_fprog)
 #define TUNGETVNETHDRSZ _IOR('T', 215, int)
 #define TUNSETVNETHDRSZ _IOW('T', 216, int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_TUN 0x0001
 #define IFF_TAP 0x0002
 #define IFF_NO_PI 0x1000
 #define IFF_ONE_QUEUE 0x2000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IFF_VNET_HDR 0x4000
 #define IFF_TUN_EXCL 0x8000
-
 #define TUN_F_CSUM 0x01  
 #define TUN_F_TSO4 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TUN_F_TSO6 0x04  
 #define TUN_F_TSO_ECN 0x08  
 #define TUN_F_UFO 0x10  
-
 #define TUN_PKT_STRIP 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tun_pi {
  __u16 flags;
  __be16 proto;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TUN_FLT_ALLMULTI 0x0001  
 struct tun_filter {
  __u16 flags;
  __u16 count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 addr[0][ETH_ALEN];
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/if_vlan.h b/libc/kernel/common/linux/if_vlan.h
index ab3b174..c604b81 100644
--- a/libc/kernel/common/linux/if_vlan.h
+++ b/libc/kernel/common/linux/if_vlan.h
@@ -7,53 +7,62 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IF_VLAN_H_
 #define _LINUX_IF_VLAN_H_
-
 enum vlan_ioctl_cmds {
  ADD_VLAN_CMD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEL_VLAN_CMD,
  SET_VLAN_INGRESS_PRIORITY_CMD,
  SET_VLAN_EGRESS_PRIORITY_CMD,
  GET_VLAN_INGRESS_PRIORITY_CMD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  GET_VLAN_EGRESS_PRIORITY_CMD,
  SET_VLAN_NAME_TYPE_CMD,
  SET_VLAN_FLAG_CMD,
  GET_VLAN_REALDEV_NAME_CMD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  GET_VLAN_VID_CMD
 };
-
 enum vlan_flags {
  VLAN_FLAG_REORDER_HDR = 0x1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VLAN_FLAG_GVRP = 0x2,
  VLAN_FLAG_LOOSE_BINDING = 0x4,
 };
-
 enum vlan_name_types {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VLAN_NAME_TYPE_PLUS_VID,
  VLAN_NAME_TYPE_RAW_PLUS_VID,
  VLAN_NAME_TYPE_PLUS_VID_NO_PAD,
  VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VLAN_NAME_TYPE_HIGHEST
 };
-
 struct vlan_ioctl_args {
  int cmd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char device1[24];
-
  union {
  char device2[24];
  int VID;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int skb_priority;
  unsigned int name_type;
  unsigned int bind_type;
  unsigned int flag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } u;
-
  short vlan_qos;
 };
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/in.h b/libc/kernel/common/linux/in.h
index 894e2da..7fb0cad 100644
--- a/libc/kernel/common/linux/in.h
+++ b/libc/kernel/common/linux/in.h
@@ -7,205 +7,214 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IN_H
 #define _LINUX_IN_H
-
 #include <linux/types.h>
 #include <linux/socket.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  IPPROTO_IP = 0,
  IPPROTO_ICMP = 1,
  IPPROTO_IGMP = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPPROTO_IPIP = 4,
  IPPROTO_TCP = 6,
  IPPROTO_EGP = 8,
  IPPROTO_PUP = 12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPPROTO_UDP = 17,
  IPPROTO_IDP = 22,
  IPPROTO_DCCP = 33,
  IPPROTO_RSVP = 46,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPPROTO_GRE = 47,
-
  IPPROTO_IPV6 = 41,
-
  IPPROTO_ESP = 50,
  IPPROTO_AH = 51,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPPROTO_PIM = 103,
-
  IPPROTO_COMP = 108,
  IPPROTO_SCTP = 132,
-
  IPPROTO_RAW = 255,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPPROTO_MAX
 };
-
 struct in_addr {
  __u32 s_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IP_TOS 1
 #define IP_TTL 2
 #define IP_HDRINCL 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_OPTIONS 4
 #define IP_ROUTER_ALERT 5
 #define IP_RECVOPTS 6
 #define IP_RETOPTS 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_PKTINFO 8
 #define IP_PKTOPTIONS 9
 #define IP_MTU_DISCOVER 10
 #define IP_RECVERR 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_RECVTTL 12
 #define IP_RECVTOS 13
 #define IP_MTU 14
 #define IP_FREEBIND 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_IPSEC_POLICY 16
 #define IP_XFRM_POLICY 17
 #define IP_PASSSEC 18
-
 #define IP_RECVRETOPTS IP_RETOPTS
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_PMTUDISC_DONT 0  
 #define IP_PMTUDISC_WANT 1  
 #define IP_PMTUDISC_DO 2  
-
 #define IP_MULTICAST_IF 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_MULTICAST_TTL 33
 #define IP_MULTICAST_LOOP 34
 #define IP_ADD_MEMBERSHIP 35
 #define IP_DROP_MEMBERSHIP 36
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_UNBLOCK_SOURCE 37
 #define IP_BLOCK_SOURCE 38
 #define IP_ADD_SOURCE_MEMBERSHIP 39
 #define IP_DROP_SOURCE_MEMBERSHIP 40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_MSFILTER 41
 #define MCAST_JOIN_GROUP 42
 #define MCAST_BLOCK_SOURCE 43
 #define MCAST_UNBLOCK_SOURCE 44
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MCAST_LEAVE_GROUP 45
 #define MCAST_JOIN_SOURCE_GROUP 46
 #define MCAST_LEAVE_SOURCE_GROUP 47
 #define MCAST_MSFILTER 48
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MCAST_EXCLUDE 0
 #define MCAST_INCLUDE 1
-
 #define IP_DEFAULT_MULTICAST_TTL 1
 #define IP_DEFAULT_MULTICAST_LOOP 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_mreq
 {
  struct in_addr imr_multiaddr;
  struct in_addr imr_interface;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ip_mreqn
 {
  struct in_addr imr_multiaddr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct in_addr imr_address;
  int imr_ifindex;
 };
-
 struct ip_mreq_source {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 imr_multiaddr;
  __u32 imr_interface;
  __u32 imr_sourceaddr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_msfilter {
  __u32 imsf_multiaddr;
  __u32 imsf_interface;
  __u32 imsf_fmode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 imsf_numsrc;
  __u32 imsf_slist[1];
 };
-
 #define IP_MSFILTER_SIZE(numsrc)   (sizeof(struct ip_msfilter) - sizeof(__u32)   + (numsrc) * sizeof(__u32))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct group_req
 {
  __u32 gr_interface;
  struct __kernel_sockaddr_storage gr_group;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct group_source_req
 {
  __u32 gsr_interface;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct __kernel_sockaddr_storage gsr_group;
  struct __kernel_sockaddr_storage gsr_source;
 };
-
 struct group_filter
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u32 gf_interface;
  struct __kernel_sockaddr_storage gf_group;
  __u32 gf_fmode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 gf_numsrc;
  struct __kernel_sockaddr_storage gf_slist[1];
 };
-
 #define GROUP_FILTER_SIZE(numsrc)   (sizeof(struct group_filter) - sizeof(struct __kernel_sockaddr_storage)   + (numsrc) * sizeof(struct __kernel_sockaddr_storage))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct in_pktinfo
 {
  int ipi_ifindex;
  struct in_addr ipi_spec_dst;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct in_addr ipi_addr;
 };
-
 #define __SOCK_SIZE__ 16  
 struct sockaddr_in {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sa_family_t sin_family;
  unsigned short int sin_port;
  struct in_addr sin_addr;
-
  unsigned char __pad[__SOCK_SIZE__ - sizeof(short int) -
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sizeof(unsigned short int) - sizeof(struct in_addr)];
 };
 #define sin_zero __pad  
-
 #define IN_CLASSA(a) ((((long int) (a)) & 0x80000000) == 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_CLASSA_NET 0xff000000
 #define IN_CLASSA_NSHIFT 24
 #define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
 #define IN_CLASSA_MAX 128
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_CLASSB(a) ((((long int) (a)) & 0xc0000000) == 0x80000000)
 #define IN_CLASSB_NET 0xffff0000
 #define IN_CLASSB_NSHIFT 16
 #define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_CLASSB_MAX 65536
-
 #define IN_CLASSC(a) ((((long int) (a)) & 0xe0000000) == 0xc0000000)
 #define IN_CLASSC_NET 0xffffff00
 #define IN_CLASSC_NSHIFT 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
-
 #define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000)
 #define IN_MULTICAST(a) IN_CLASSD(a)
 #define IN_MULTICAST_NET 0xF0000000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_EXPERIMENTAL(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
 #define IN_BADCLASS(a) IN_EXPERIMENTAL((a))
-
 #define INADDR_ANY ((unsigned long int) 0x00000000)
-
 #define INADDR_BROADCAST ((unsigned long int) 0xffffffff)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INADDR_NONE ((unsigned long int) 0xffffffff)
-
 #define IN_LOOPBACKNET 127
-
 #define INADDR_LOOPBACK 0x7f000001  
 #define IN_LOOPBACK(a) ((((long int) (a)) & 0xff000000) == 0x7f000000)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INADDR_UNSPEC_GROUP 0xe0000000U  
 #define INADDR_ALLHOSTS_GROUP 0xe0000001U  
 #define INADDR_ALLRTRS_GROUP 0xe0000002U  
 #define INADDR_MAX_LOCAL_GROUP 0xe00000ffU  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/byteorder.h> 
-
 #endif
diff --git a/libc/kernel/common/linux/in6.h b/libc/kernel/common/linux/in6.h
index d148dfd..a876669 100644
--- a/libc/kernel/common/linux/in6.h
+++ b/libc/kernel/common/linux/in6.h
@@ -7,169 +7,182 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IN6_H
 #define _LINUX_IN6_H
-
 #include <linux/types.h>
-
 struct in6_addr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  __u8 u6_addr8[16];
  __be16 u6_addr16[8];
  __be32 u6_addr32[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } in6_u;
 #define s6_addr in6_u.u6_addr8
 #define s6_addr16 in6_u.u6_addr16
 #define s6_addr32 in6_u.u6_addr32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct sockaddr_in6 {
  unsigned short int sin6_family;
  __be16 sin6_port;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 sin6_flowinfo;
  struct in6_addr sin6_addr;
  __u32 sin6_scope_id;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipv6_mreq {
-
  struct in6_addr ipv6mr_multiaddr;
-
  int ipv6mr_ifindex;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ipv6mr_acaddr ipv6mr_multiaddr
-
 struct in6_flowlabel_req {
  struct in6_addr flr_dst;
  __be32 flr_label;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 flr_action;
  __u8 flr_share;
  __u16 flr_flags;
  __u16 flr_expires;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 flr_linger;
  __u32 __flr_pad;
-
 };
-
 #define IPV6_FL_A_GET 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_FL_A_PUT 1
 #define IPV6_FL_A_RENEW 2
-
 #define IPV6_FL_F_CREATE 1
 #define IPV6_FL_F_EXCL 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_FL_S_NONE 0
 #define IPV6_FL_S_EXCL 1
 #define IPV6_FL_S_PROCESS 2
 #define IPV6_FL_S_USER 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_FL_S_ANY 255
-
 #define IPV6_FLOWINFO_FLOWLABEL 0x000fffff
 #define IPV6_FLOWINFO_PRIORITY 0x0ff00000
-
 #define IPV6_PRIORITY_UNCHARACTERIZED 0x0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PRIORITY_FILLER 0x0100
 #define IPV6_PRIORITY_UNATTENDED 0x0200
 #define IPV6_PRIORITY_RESERVED1 0x0300
 #define IPV6_PRIORITY_BULK 0x0400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PRIORITY_RESERVED2 0x0500
 #define IPV6_PRIORITY_INTERACTIVE 0x0600
 #define IPV6_PRIORITY_CONTROL 0x0700
 #define IPV6_PRIORITY_8 0x0800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PRIORITY_9 0x0900
 #define IPV6_PRIORITY_10 0x0a00
 #define IPV6_PRIORITY_11 0x0b00
 #define IPV6_PRIORITY_12 0x0c00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PRIORITY_13 0x0d00
 #define IPV6_PRIORITY_14 0x0e00
 #define IPV6_PRIORITY_15 0x0f00
-
 #define IPPROTO_HOPOPTS 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_ROUTING 43  
 #define IPPROTO_FRAGMENT 44  
 #define IPPROTO_ICMPV6 58  
 #define IPPROTO_NONE 59  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPPROTO_DSTOPTS 60  
 #define IPPROTO_MH 135  
-
 #define IPV6_TLV_PAD0 0
 #define IPV6_TLV_PADN 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_TLV_ROUTERALERT 5
 #define IPV6_TLV_JUMBO 194
 #define IPV6_TLV_HAO 201  
-
 #define IPV6_ADDRFORM 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_2292PKTINFO 2
 #define IPV6_2292HOPOPTS 3
 #define IPV6_2292DSTOPTS 4
 #define IPV6_2292RTHDR 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_2292PKTOPTIONS 6
 #define IPV6_CHECKSUM 7
 #define IPV6_2292HOPLIMIT 8
 #define IPV6_NEXTHOP 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_AUTHHDR 10  
 #define IPV6_FLOWINFO 11
-
 #define IPV6_UNICAST_HOPS 16
 #define IPV6_MULTICAST_IF 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_MULTICAST_HOPS 18
 #define IPV6_MULTICAST_LOOP 19
 #define IPV6_ADD_MEMBERSHIP 20
 #define IPV6_DROP_MEMBERSHIP 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_ROUTER_ALERT 22
 #define IPV6_MTU_DISCOVER 23
 #define IPV6_MTU 24
 #define IPV6_RECVERR 25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_V6ONLY 26
 #define IPV6_JOIN_ANYCAST 27
 #define IPV6_LEAVE_ANYCAST 28
-
 #define IPV6_PMTUDISC_DONT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PMTUDISC_WANT 1
 #define IPV6_PMTUDISC_DO 2
 #define IPV6_PMTUDISC_PROBE 3
-
 #define IPV6_FLOWLABEL_MGR 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_FLOWINFO_SEND 33
-
 #define IPV6_IPSEC_POLICY 34
 #define IPV6_XFRM_POLICY 35
-
 #define IPV6_RECVPKTINFO 49
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PKTINFO 50
 #define IPV6_RECVHOPLIMIT 51
 #define IPV6_HOPLIMIT 52
 #define IPV6_RECVHOPOPTS 53
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_HOPOPTS 54
 #define IPV6_RTHDRDSTOPTS 55
 #define IPV6_RECVRTHDR 56
 #define IPV6_RTHDR 57
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_RECVDSTOPTS 58
 #define IPV6_DSTOPTS 59
 #define IPV6_RECVPATHMTU 60
 #define IPV6_PATHMTU 61
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_DONTFRAG 62
-
 #define IPV6_RECVTCLASS 66
 #define IPV6_TCLASS 67
-
 #define IPV6_ADDR_PREFERENCES 72
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PREFER_SRC_TMP 0x0001
 #define IPV6_PREFER_SRC_PUBLIC 0x0002
 #define IPV6_PREFER_SRC_PUBTMP_DEFAULT 0x0100
 #define IPV6_PREFER_SRC_COA 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_PREFER_SRC_HOME 0x0400
 #define IPV6_PREFER_SRC_CGA 0x0008
 #define IPV6_PREFER_SRC_NONCGA 0x0800
-
 #define IPV6_MINHOPCOUNT 73
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_ORIGDSTADDR 74
 #define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR
 #define IPV6_TRANSPARENT 75
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/in_route.h b/libc/kernel/common/linux/in_route.h
index 34e14d6..0c8ca25 100644
--- a/libc/kernel/common/linux/in_route.h
+++ b/libc/kernel/common/linux/in_route.h
@@ -7,35 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IN_ROUTE_H
 #define _LINUX_IN_ROUTE_H
-
 #define RTCF_DEAD RTNH_F_DEAD
 #define RTCF_ONLINK RTNH_F_ONLINK
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTCF_NOPMTUDISC RTM_F_NOPMTUDISC
-
 #define RTCF_NOTIFY 0x00010000
 #define RTCF_DIRECTDST 0x00020000  
 #define RTCF_REDIRECTED 0x00040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTCF_TPROXY 0x00080000  
-
 #define RTCF_FAST 0x00200000  
 #define RTCF_MASQ 0x00400000  
 #define RTCF_SNAT 0x00800000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTCF_DOREDIRECT 0x01000000
 #define RTCF_DIRECTSRC 0x04000000
 #define RTCF_DNAT 0x08000000
 #define RTCF_BROADCAST 0x10000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTCF_MULTICAST 0x20000000
 #define RTCF_REJECT 0x40000000  
 #define RTCF_LOCAL 0x80000000
-
 #define RTCF_NAT (RTCF_DNAT|RTCF_SNAT)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RT_TOS(tos) ((tos)&IPTOS_TOS_MASK)
-
 #endif
-
diff --git a/libc/kernel/common/linux/init.h b/libc/kernel/common/linux/init.h
index 846c4eb..1fc24e9 100644
--- a/libc/kernel/common/linux/init.h
+++ b/libc/kernel/common/linux/init.h
@@ -7,131 +7,122 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_INIT_H
 #define _LINUX_INIT_H
-
 #include <linux/compiler.h>
-
 #define __init __attribute__ ((__section__ (".init.text")))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __initdata __attribute__ ((__section__ (".init.data")))
 #define __exitdata __attribute__ ((__section__(".exit.data")))
 #define __exit_call __attribute_used__ __attribute__ ((__section__ (".exitcall.exit")))
-
 #ifdef MODULE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __exit __attribute__ ((__section__(".exit.text")))
 #else
 #define __exit __attribute_used__ __attribute__ ((__section__(".exit.text")))
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __INIT .section ".init.text","ax"
 #define __FINIT .previous
 #define __INITDATA .section ".init.data","aw"
-
 #ifndef __ASSEMBLY__
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int (*initcall_t)(void);
 typedef void (*exitcall_t)(void);
-
 #endif
-
 #ifndef MODULE
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef __ASSEMBLY__
-
 #define __define_initcall(level,fn)   static initcall_t __initcall_##fn __attribute_used__   __attribute__((__section__(".initcall" level ".init"))) = fn
-
 #define core_initcall(fn) __define_initcall("1",fn)
 #define postcore_initcall(fn) __define_initcall("2",fn)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define arch_initcall(fn) __define_initcall("3",fn)
 #define subsys_initcall(fn) __define_initcall("4",fn)
 #define fs_initcall(fn) __define_initcall("5",fn)
 #define device_initcall(fn) __define_initcall("6",fn)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define late_initcall(fn) __define_initcall("7",fn)
-
 #define __initcall(fn) device_initcall(fn)
-
 #define __exitcall(fn)   static exitcall_t __exitcall_##fn __exit_call = fn
-
 #define console_initcall(fn)   static initcall_t __initcall_##fn   __attribute_used__ __attribute__((__section__(".con_initcall.init")))=fn
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define security_initcall(fn)   static initcall_t __initcall_##fn   __attribute_used__ __attribute__((__section__(".security_initcall.init"))) = fn
-
 struct obs_kernel_param {
  const char *str;
  int (*setup_func)(char *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int early;
 };
-
 #define __setup_param(str, unique_id, fn, early)   static char __setup_str_##unique_id[] __initdata = str;   static struct obs_kernel_param __setup_##unique_id   __attribute_used__   __attribute__((__section__(".init.setup")))   __attribute__((aligned((sizeof(long)))))   = { __setup_str_##unique_id, fn, early }
-
 #define __setup_null_param(str, unique_id)   __setup_param(str, unique_id, NULL, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __setup(str, fn)   __setup_param(str, fn, fn, 0)
-
 #define __obsolete_setup(str)   __setup_null_param(str, __LINE__)
-
 #define early_param(str, fn)   __setup_param(str, fn, fn, 1)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define module_init(x) __initcall(x);
-
 #define module_exit(x) __exitcall(x);
-
 #else
-
 #define core_initcall(fn) module_init(fn)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define postcore_initcall(fn) module_init(fn)
 #define arch_initcall(fn) module_init(fn)
 #define subsys_initcall(fn) module_init(fn)
 #define fs_initcall(fn) module_init(fn)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define device_initcall(fn) module_init(fn)
 #define late_initcall(fn) module_init(fn)
-
 #define security_initcall(fn) module_init(fn)
-
 #define module_init(initfn)   static inline initcall_t __inittest(void)   { return initfn; }   int init_module(void) __attribute__((alias(#initfn)));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define module_exit(exitfn)   static inline exitcall_t __exittest(void)   { return exitfn; }   void cleanup_module(void) __attribute__((alias(#exitfn)));
-
 #define __setup_param(str, unique_id, fn)  
 #define __setup_null_param(str, unique_id)  
 #define __setup(str, func)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __obsolete_setup(str)  
 #endif
-
 #define __nosavedata __attribute__ ((__section__ (".data.nosave")))
-
 #define __init_or_module __init
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __initdata_or_module __initdata
-
 #define __devinit __init
 #define __devinitdata __initdata
 #define __devexit __exit
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __devexitdata __exitdata
-
 #define __cpuinit __init
 #define __cpuinitdata __initdata
 #define __cpuexit __exit
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __cpuexitdata __exitdata
-
 #define __meminit __init
 #define __meminitdata __initdata
 #define __memexit __exit
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __memexitdata __exitdata
-
 #ifdef MODULE
 #define __devexit_p(x) x
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __devexit_p(x) NULL
 #endif
-
 #ifdef MODULE
 #define __exit_p(x) x
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #define __exit_p(x) NULL
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/inotify.h b/libc/kernel/common/linux/inotify.h
index db53417..860f743 100644
--- a/libc/kernel/common/linux/inotify.h
+++ b/libc/kernel/common/linux/inotify.h
@@ -7,47 +7,54 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_INOTIFY_H
 #define _LINUX_INOTIFY_H
-
 #include <linux/types.h>
-
 struct inotify_event {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 wd;
  __u32 mask;
  __u32 cookie;
  __u32 len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[0];
 };
-
 #define IN_ACCESS 0x00000001  
 #define IN_MODIFY 0x00000002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_ATTRIB 0x00000004  
 #define IN_CLOSE_WRITE 0x00000008  
 #define IN_CLOSE_NOWRITE 0x00000010  
 #define IN_OPEN 0x00000020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_MOVED_FROM 0x00000040  
 #define IN_MOVED_TO 0x00000080  
 #define IN_CREATE 0x00000100  
 #define IN_DELETE 0x00000200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_DELETE_SELF 0x00000400  
 #define IN_MOVE_SELF 0x00000800  
-
 #define IN_UNMOUNT 0x00002000  
 #define IN_Q_OVERFLOW 0x00004000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_IGNORED 0x00008000  
-
 #define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)  
 #define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO)  
-
 #define IN_ONLYDIR 0x01000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_DONT_FOLLOW 0x02000000  
 #define IN_MASK_ADD 0x20000000  
 #define IN_ISDIR 0x40000000  
 #define IN_ONESHOT 0x80000000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE |   IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM |   IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF |   IN_MOVE_SELF)
-
 #endif
diff --git a/libc/kernel/common/linux/input.h b/libc/kernel/common/linux/input.h
index 4045eb0..8167f29 100644
--- a/libc/kernel/common/linux/input.h
+++ b/libc/kernel/common/linux/input.h
@@ -20,796 +20,996 @@
 #define _INPUT_H
 #include <sys/time.h>
 #include <sys/ioctl.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <sys/types.h>
 #include <linux/types.h>
 struct input_event {
  struct timeval time;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 type;
  __u16 code;
  __s32 value;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_VERSION 0x010001
 struct input_id {
  __u16 bustype;
  __u16 vendor;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 product;
  __u16 version;
 };
 struct input_absinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 value;
  __s32 minimum;
  __s32 maximum;
  __s32 fuzz;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 flat;
  __s32 resolution;
 };
 struct input_keymap_entry {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPUT_KEYMAP_BY_INDEX (1 << 0)
  __u8 flags;
  __u8 len;
  __u16 index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 keycode;
  __u8 scancode[32];
 };
-#define EVIOCGVERSION _IOR('E', 0x01, int)
-#define EVIOCGID _IOR('E', 0x02, struct input_id)
-#define EVIOCGREP _IOR('E', 0x03, unsigned int[2])
-#define EVIOCSREP _IOW('E', 0x03, unsigned int[2])
-#define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2])
+#define EVIOCGVERSION _IOR('E', 0x01, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EVIOCGID _IOR('E', 0x02, struct input_id)  
+#define EVIOCGREP _IOR('E', 0x03, unsigned int[2])  
+#define EVIOCSREP _IOW('E', 0x03, unsigned int[2])  
+#define EVIOCGKEYCODE _IOR('E', 0x04, unsigned int[2])  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EVIOCGKEYCODE_V2 _IOR('E', 0x04, struct input_keymap_entry)
-#define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2])
+#define EVIOCSKEYCODE _IOW('E', 0x04, unsigned int[2])  
 #define EVIOCSKEYCODE_V2 _IOW('E', 0x04, struct input_keymap_entry)
-#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len)
-#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len)
-#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len)
-#define EVIOCGPROP(len) _IOC(_IOC_READ, 'E', 0x09, len)
-#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len)
-#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len)
-#define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len)
-#define EVIOCGSW(len) _IOC(_IOC_READ, 'E', 0x1b, len)
-#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + ev, len)
-#define EVIOCGABS(abs) _IOR('E', 0x40 + abs, struct input_absinfo)
-#define EVIOCSABS(abs) _IOW('E', 0xc0 + abs, struct input_absinfo)
-#define EVIOCSFF _IOC(_IOC_WRITE, 'E', 0x80, sizeof(struct ff_effect))
-#define EVIOCRMFF _IOW('E', 0x81, int)
-#define EVIOCGEFFECTS _IOR('E', 0x84, int)
-#define EVIOCGRAB _IOW('E', 0x90, int)
-#define INPUT_PROP_POINTER 0x00
-#define INPUT_PROP_DIRECT 0x01
-#define INPUT_PROP_BUTTONPAD 0x02
-#define INPUT_PROP_SEMI_MT 0x03
+#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len)  
+#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len)  
+#define EVIOCGPROP(len) _IOC(_IOC_READ, 'E', 0x09, len)  
+#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len)  
+#define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len)  
+#define EVIOCGSW(len) _IOC(_IOC_READ, 'E', 0x1b, len)  
+#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + ev, len)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EVIOCGABS(abs) _IOR('E', 0x40 + abs, struct input_absinfo)  
+#define EVIOCSABS(abs) _IOW('E', 0xc0 + abs, struct input_absinfo)  
+#define EVIOCSFF _IOC(_IOC_WRITE, 'E', 0x80, sizeof(struct ff_effect))  
+#define EVIOCRMFF _IOW('E', 0x81, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define EVIOCGEFFECTS _IOR('E', 0x84, int)  
+#define EVIOCGRAB _IOW('E', 0x90, int)  
+#define EVIOCGSUSPENDBLOCK _IOR('E', 0x91, int)  
+#define EVIOCSSUSPENDBLOCK _IOW('E', 0x91, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define INPUT_PROP_POINTER 0x00  
+#define INPUT_PROP_DIRECT 0x01  
+#define INPUT_PROP_BUTTONPAD 0x02  
+#define INPUT_PROP_SEMI_MT 0x03  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPUT_PROP_MAX 0x1f
 #define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
 #define EV_SYN 0x00
 #define EV_KEY 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_REL 0x02
 #define EV_ABS 0x03
 #define EV_MSC 0x04
 #define EV_SW 0x05
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_LED 0x11
 #define EV_SND 0x12
 #define EV_REP 0x14
 #define EV_FF 0x15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_PWR 0x16
 #define EV_FF_STATUS 0x17
 #define EV_MAX 0x1f
 #define EV_CNT (EV_MAX+1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYN_REPORT 0
 #define SYN_CONFIG 1
 #define SYN_MT_REPORT 2
 #define SYN_DROPPED 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_RESERVED 0
 #define KEY_ESC 1
 #define KEY_1 2
 #define KEY_2 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_3 4
 #define KEY_4 5
 #define KEY_5 6
 #define KEY_6 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_7 8
 #define KEY_8 9
 #define KEY_9 10
 #define KEY_0 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_MINUS 12
 #define KEY_EQUAL 13
 #define KEY_BACKSPACE 14
 #define KEY_TAB 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_Q 16
 #define KEY_W 17
 #define KEY_E 18
 #define KEY_R 19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_T 20
 #define KEY_Y 21
 #define KEY_U 22
 #define KEY_I 23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_O 24
 #define KEY_P 25
 #define KEY_LEFTBRACE 26
 #define KEY_RIGHTBRACE 27
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_ENTER 28
 #define KEY_LEFTCTRL 29
 #define KEY_A 30
 #define KEY_S 31
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_D 32
 #define KEY_F 33
 #define KEY_G 34
 #define KEY_H 35
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_J 36
 #define KEY_K 37
 #define KEY_L 38
 #define KEY_SEMICOLON 39
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_APOSTROPHE 40
 #define KEY_GRAVE 41
 #define KEY_LEFTSHIFT 42
 #define KEY_BACKSLASH 43
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_Z 44
 #define KEY_X 45
 #define KEY_C 46
 #define KEY_V 47
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_B 48
 #define KEY_N 49
 #define KEY_M 50
 #define KEY_COMMA 51
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_DOT 52
 #define KEY_SLASH 53
 #define KEY_RIGHTSHIFT 54
 #define KEY_KPASTERISK 55
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_LEFTALT 56
 #define KEY_SPACE 57
 #define KEY_CAPSLOCK 58
 #define KEY_F1 59
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_F2 60
 #define KEY_F3 61
 #define KEY_F4 62
 #define KEY_F5 63
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_F6 64
 #define KEY_F7 65
 #define KEY_F8 66
 #define KEY_F9 67
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_F10 68
 #define KEY_NUMLOCK 69
 #define KEY_SCROLLLOCK 70
 #define KEY_KP7 71
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_KP8 72
 #define KEY_KP9 73
 #define KEY_KPMINUS 74
 #define KEY_KP4 75
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_KP5 76
 #define KEY_KP6 77
 #define KEY_KPPLUS 78
 #define KEY_KP1 79
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_KP2 80
 #define KEY_KP3 81
 #define KEY_KP0 82
 #define KEY_KPDOT 83
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_ZENKAKUHANKAKU 85
 #define KEY_102ND 86
 #define KEY_F11 87
 #define KEY_F12 88
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_RO 89
 #define KEY_KATAKANA 90
 #define KEY_HIRAGANA 91
 #define KEY_HENKAN 92
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_KATAKANAHIRAGANA 93
 #define KEY_MUHENKAN 94
 #define KEY_KPJPCOMMA 95
 #define KEY_KPENTER 96
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_RIGHTCTRL 97
 #define KEY_KPSLASH 98
 #define KEY_SYSRQ 99
 #define KEY_RIGHTALT 100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_LINEFEED 101
 #define KEY_HOME 102
 #define KEY_UP 103
 #define KEY_PAGEUP 104
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_LEFT 105
 #define KEY_RIGHT 106
 #define KEY_END 107
 #define KEY_DOWN 108
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_PAGEDOWN 109
 #define KEY_INSERT 110
 #define KEY_DELETE 111
 #define KEY_MACRO 112
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_MUTE 113
 #define KEY_VOLUMEDOWN 114
 #define KEY_VOLUMEUP 115
-#define KEY_POWER 116
+#define KEY_POWER 116  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_KPEQUAL 117
 #define KEY_KPPLUSMINUS 118
 #define KEY_PAUSE 119
-#define KEY_SCALE 120
+#define KEY_SCALE 120  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_KPCOMMA 121
 #define KEY_HANGEUL 122
 #define KEY_HANGUEL KEY_HANGEUL
 #define KEY_HANJA 123
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_YEN 124
 #define KEY_LEFTMETA 125
 #define KEY_RIGHTMETA 126
 #define KEY_COMPOSE 127
-#define KEY_STOP 128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_STOP 128  
 #define KEY_AGAIN 129
-#define KEY_PROPS 130
-#define KEY_UNDO 131
+#define KEY_PROPS 130  
+#define KEY_UNDO 131  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_FRONT 132
-#define KEY_COPY 133
-#define KEY_OPEN 134
-#define KEY_PASTE 135
-#define KEY_FIND 136
-#define KEY_CUT 137
-#define KEY_HELP 138
-#define KEY_MENU 139
-#define KEY_CALC 140
+#define KEY_COPY 133  
+#define KEY_OPEN 134  
+#define KEY_PASTE 135  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_FIND 136  
+#define KEY_CUT 137  
+#define KEY_HELP 138  
+#define KEY_MENU 139  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CALC 140  
 #define KEY_SETUP 141
-#define KEY_SLEEP 142
-#define KEY_WAKEUP 143
-#define KEY_FILE 144
+#define KEY_SLEEP 142  
+#define KEY_WAKEUP 143  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_FILE 144  
 #define KEY_SENDFILE 145
 #define KEY_DELETEFILE 146
 #define KEY_XFER 147
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_PROG1 148
 #define KEY_PROG2 149
-#define KEY_WWW 150
+#define KEY_WWW 150  
 #define KEY_MSDOS 151
-#define KEY_COFFEE 152
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_COFFEE 152  
 #define KEY_SCREENLOCK KEY_COFFEE
 #define KEY_DIRECTION 153
 #define KEY_CYCLEWINDOWS 154
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_MAIL 155
-#define KEY_BOOKMARKS 156
+#define KEY_BOOKMARKS 156  
 #define KEY_COMPUTER 157
-#define KEY_BACK 158
-#define KEY_FORWARD 159
+#define KEY_BACK 158  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_FORWARD 159  
 #define KEY_CLOSECD 160
 #define KEY_EJECTCD 161
 #define KEY_EJECTCLOSECD 162
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_NEXTSONG 163
 #define KEY_PLAYPAUSE 164
 #define KEY_PREVIOUSSONG 165
 #define KEY_STOPCD 166
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_RECORD 167
 #define KEY_REWIND 168
-#define KEY_PHONE 169
+#define KEY_PHONE 169  
 #define KEY_ISO 170
-#define KEY_CONFIG 171
-#define KEY_HOMEPAGE 172
-#define KEY_REFRESH 173
-#define KEY_EXIT 174
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_CONFIG 171  
+#define KEY_HOMEPAGE 172  
+#define KEY_REFRESH 173  
+#define KEY_EXIT 174  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_MOVE 175
 #define KEY_EDIT 176
 #define KEY_SCROLLUP 177
 #define KEY_SCROLLDOWN 178
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_KPLEFTPAREN 179
 #define KEY_KPRIGHTPAREN 180
-#define KEY_NEW 181
-#define KEY_REDO 182
+#define KEY_NEW 181  
+#define KEY_REDO 182  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_F13 183
 #define KEY_F14 184
 #define KEY_F15 185
 #define KEY_F16 186
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_F17 187
 #define KEY_F18 188
 #define KEY_F19 189
 #define KEY_F20 190
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_F21 191
 #define KEY_F22 192
 #define KEY_F23 193
 #define KEY_F24 194
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_PLAYCD 200
 #define KEY_PAUSECD 201
 #define KEY_PROG3 202
 #define KEY_PROG4 203
-#define KEY_DASHBOARD 204
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_DASHBOARD 204  
 #define KEY_SUSPEND 205
-#define KEY_CLOSE 206
+#define KEY_CLOSE 206  
 #define KEY_PLAY 207
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_FASTFORWARD 208
 #define KEY_BASSBOOST 209
-#define KEY_PRINT 210
+#define KEY_PRINT 210  
 #define KEY_HP 211
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_CAMERA 212
 #define KEY_SOUND 213
 #define KEY_QUESTION 214
 #define KEY_EMAIL 215
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_CHAT 216
 #define KEY_SEARCH 217
 #define KEY_CONNECT 218
-#define KEY_FINANCE 219
+#define KEY_FINANCE 219  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_SPORT 220
 #define KEY_SHOP 221
 #define KEY_ALTERASE 222
-#define KEY_CANCEL 223
+#define KEY_CANCEL 223  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_BRIGHTNESSDOWN 224
 #define KEY_BRIGHTNESSUP 225
 #define KEY_MEDIA 226
-#define KEY_SWITCHVIDEOMODE 227
+#define KEY_SWITCHVIDEOMODE 227  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_KBDILLUMTOGGLE 228
 #define KEY_KBDILLUMDOWN 229
 #define KEY_KBDILLUMUP 230
-#define KEY_SEND 231
-#define KEY_REPLY 232
-#define KEY_FORWARDMAIL 233
-#define KEY_SAVE 234
+#define KEY_SEND 231  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_REPLY 232  
+#define KEY_FORWARDMAIL 233  
+#define KEY_SAVE 234  
 #define KEY_DOCUMENTS 235
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_BATTERY 236
 #define KEY_BLUETOOTH 237
 #define KEY_WLAN 238
 #define KEY_UWB 239
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_UNKNOWN 240
-#define KEY_VIDEO_NEXT 241
-#define KEY_VIDEO_PREV 242
-#define KEY_BRIGHTNESS_CYCLE 243
-#define KEY_BRIGHTNESS_ZERO 244
-#define KEY_DISPLAY_OFF 245
+#define KEY_VIDEO_NEXT 241  
+#define KEY_VIDEO_PREV 242  
+#define KEY_BRIGHTNESS_CYCLE 243  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_BRIGHTNESS_ZERO 244  
+#define KEY_DISPLAY_OFF 245  
 #define KEY_WIMAX 246
-#define KEY_RFKILL 247
+#define KEY_RFKILL 247  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_MISC 0x100
 #define BTN_0 0x100
 #define BTN_1 0x101
 #define BTN_2 0x102
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_3 0x103
 #define BTN_4 0x104
 #define BTN_5 0x105
 #define BTN_6 0x106
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_7 0x107
 #define BTN_8 0x108
 #define BTN_9 0x109
 #define BTN_MOUSE 0x110
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_LEFT 0x110
 #define BTN_RIGHT 0x111
 #define BTN_MIDDLE 0x112
 #define BTN_SIDE 0x113
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_EXTRA 0x114
 #define BTN_FORWARD 0x115
 #define BTN_BACK 0x116
 #define BTN_TASK 0x117
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_JOYSTICK 0x120
 #define BTN_TRIGGER 0x120
 #define BTN_THUMB 0x121
 #define BTN_THUMB2 0x122
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TOP 0x123
 #define BTN_TOP2 0x124
 #define BTN_PINKIE 0x125
 #define BTN_BASE 0x126
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_BASE2 0x127
 #define BTN_BASE3 0x128
 #define BTN_BASE4 0x129
 #define BTN_BASE5 0x12a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_BASE6 0x12b
 #define BTN_DEAD 0x12f
 #define BTN_GAMEPAD 0x130
 #define BTN_A 0x130
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_B 0x131
 #define BTN_C 0x132
 #define BTN_X 0x133
 #define BTN_Y 0x134
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_Z 0x135
 #define BTN_TL 0x136
 #define BTN_TR 0x137
 #define BTN_TL2 0x138
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TR2 0x139
 #define BTN_SELECT 0x13a
 #define BTN_START 0x13b
 #define BTN_MODE 0x13c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_THUMBL 0x13d
 #define BTN_THUMBR 0x13e
 #define BTN_DIGI 0x140
 #define BTN_TOOL_PEN 0x140
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TOOL_RUBBER 0x141
 #define BTN_TOOL_BRUSH 0x142
 #define BTN_TOOL_PENCIL 0x143
 #define BTN_TOOL_AIRBRUSH 0x144
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TOOL_FINGER 0x145
 #define BTN_TOOL_MOUSE 0x146
 #define BTN_TOOL_LENS 0x147
 #define BTN_TOUCH 0x14a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_STYLUS 0x14b
 #define BTN_STYLUS2 0x14c
 #define BTN_TOOL_DOUBLETAP 0x14d
 #define BTN_TOOL_TRIPLETAP 0x14e
-#define BTN_TOOL_QUADTAP 0x14f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define BTN_TOOL_QUADTAP 0x14f  
 #define BTN_WHEEL 0x150
 #define BTN_GEAR_DOWN 0x150
 #define BTN_GEAR_UP 0x151
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_OK 0x160
 #define KEY_SELECT 0x161
 #define KEY_GOTO 0x162
 #define KEY_CLEAR 0x163
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_POWER2 0x164
 #define KEY_OPTION 0x165
-#define KEY_INFO 0x166
+#define KEY_INFO 0x166  
 #define KEY_TIME 0x167
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_VENDOR 0x168
 #define KEY_ARCHIVE 0x169
-#define KEY_PROGRAM 0x16a
+#define KEY_PROGRAM 0x16a  
 #define KEY_CHANNEL 0x16b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_FAVORITES 0x16c
 #define KEY_EPG 0x16d
-#define KEY_PVR 0x16e
+#define KEY_PVR 0x16e  
 #define KEY_MHP 0x16f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_LANGUAGE 0x170
 #define KEY_TITLE 0x171
 #define KEY_SUBTITLE 0x172
 #define KEY_ANGLE 0x173
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_ZOOM 0x174
 #define KEY_MODE 0x175
 #define KEY_KEYBOARD 0x176
 #define KEY_SCREEN 0x177
-#define KEY_PC 0x178
-#define KEY_TV 0x179
-#define KEY_TV2 0x17a
-#define KEY_VCR 0x17b
-#define KEY_VCR2 0x17c
-#define KEY_SAT 0x17d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_PC 0x178  
+#define KEY_TV 0x179  
+#define KEY_TV2 0x17a  
+#define KEY_VCR 0x17b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_VCR2 0x17c  
+#define KEY_SAT 0x17d  
 #define KEY_SAT2 0x17e
-#define KEY_CD 0x17f
-#define KEY_TAPE 0x180
+#define KEY_CD 0x17f  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_TAPE 0x180  
 #define KEY_RADIO 0x181
-#define KEY_TUNER 0x182
+#define KEY_TUNER 0x182  
 #define KEY_PLAYER 0x183
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_TEXT 0x184
-#define KEY_DVD 0x185
+#define KEY_DVD 0x185  
 #define KEY_AUX 0x186
 #define KEY_MP3 0x187
-#define KEY_AUDIO 0x188
-#define KEY_VIDEO 0x189
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_AUDIO 0x188  
+#define KEY_VIDEO 0x189  
 #define KEY_DIRECTORY 0x18a
 #define KEY_LIST 0x18b
-#define KEY_MEMO 0x18c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_MEMO 0x18c  
 #define KEY_CALENDAR 0x18d
 #define KEY_RED 0x18e
 #define KEY_GREEN 0x18f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_YELLOW 0x190
 #define KEY_BLUE 0x191
-#define KEY_CHANNELUP 0x192
-#define KEY_CHANNELDOWN 0x193
+#define KEY_CHANNELUP 0x192  
+#define KEY_CHANNELDOWN 0x193  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_FIRST 0x194
-#define KEY_LAST 0x195
+#define KEY_LAST 0x195  
 #define KEY_AB 0x196
 #define KEY_NEXT 0x197
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_RESTART 0x198
 #define KEY_SLOW 0x199
 #define KEY_SHUFFLE 0x19a
 #define KEY_BREAK 0x19b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_PREVIOUS 0x19c
 #define KEY_DIGITS 0x19d
 #define KEY_TEEN 0x19e
 #define KEY_TWEN 0x19f
-#define KEY_VIDEOPHONE 0x1a0
-#define KEY_GAMES 0x1a1
-#define KEY_ZOOMIN 0x1a2
-#define KEY_ZOOMOUT 0x1a3
-#define KEY_ZOOMRESET 0x1a4
-#define KEY_WORDPROCESSOR 0x1a5
-#define KEY_EDITOR 0x1a6
-#define KEY_SPREADSHEET 0x1a7
-#define KEY_GRAPHICSEDITOR 0x1a8
-#define KEY_PRESENTATION 0x1a9
-#define KEY_DATABASE 0x1aa
-#define KEY_NEWS 0x1ab
-#define KEY_VOICEMAIL 0x1ac
-#define KEY_ADDRESSBOOK 0x1ad
-#define KEY_MESSENGER 0x1ae
-#define KEY_DISPLAYTOGGLE 0x1af
-#define KEY_SPELLCHECK 0x1b0
-#define KEY_LOGOFF 0x1b1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_VIDEOPHONE 0x1a0  
+#define KEY_GAMES 0x1a1  
+#define KEY_ZOOMIN 0x1a2  
+#define KEY_ZOOMOUT 0x1a3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_ZOOMRESET 0x1a4  
+#define KEY_WORDPROCESSOR 0x1a5  
+#define KEY_EDITOR 0x1a6  
+#define KEY_SPREADSHEET 0x1a7  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_GRAPHICSEDITOR 0x1a8  
+#define KEY_PRESENTATION 0x1a9  
+#define KEY_DATABASE 0x1aa  
+#define KEY_NEWS 0x1ab  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_VOICEMAIL 0x1ac  
+#define KEY_ADDRESSBOOK 0x1ad  
+#define KEY_MESSENGER 0x1ae  
+#define KEY_DISPLAYTOGGLE 0x1af  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_SPELLCHECK 0x1b0  
+#define KEY_LOGOFF 0x1b1  
 #define KEY_DOLLAR 0x1b2
 #define KEY_EURO 0x1b3
-#define KEY_FRAMEBACK 0x1b4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_FRAMEBACK 0x1b4  
 #define KEY_FRAMEFORWARD 0x1b5
-#define KEY_CONTEXT_MENU 0x1b6
-#define KEY_MEDIA_REPEAT 0x1b7
-#define KEY_10CHANNELSUP 0x1b8
-#define KEY_10CHANNELSDOWN 0x1b9
-#define KEY_IMAGES 0x1ba
+#define KEY_CONTEXT_MENU 0x1b6  
+#define KEY_MEDIA_REPEAT 0x1b7  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_10CHANNELSUP 0x1b8  
+#define KEY_10CHANNELSDOWN 0x1b9  
+#define KEY_IMAGES 0x1ba  
 #define KEY_DEL_EOL 0x1c0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_DEL_EOS 0x1c1
 #define KEY_INS_LINE 0x1c2
 #define KEY_DEL_LINE 0x1c3
 #define KEY_FN 0x1d0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_FN_ESC 0x1d1
 #define KEY_FN_F1 0x1d2
 #define KEY_FN_F2 0x1d3
 #define KEY_FN_F3 0x1d4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_FN_F4 0x1d5
 #define KEY_FN_F5 0x1d6
 #define KEY_FN_F6 0x1d7
 #define KEY_FN_F7 0x1d8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_FN_F8 0x1d9
 #define KEY_FN_F9 0x1da
 #define KEY_FN_F10 0x1db
 #define KEY_FN_F11 0x1dc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_FN_F12 0x1dd
 #define KEY_FN_1 0x1de
 #define KEY_FN_2 0x1df
 #define KEY_FN_D 0x1e0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_FN_E 0x1e1
 #define KEY_FN_F 0x1e2
 #define KEY_FN_S 0x1e3
 #define KEY_FN_B 0x1e4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_BRL_DOT1 0x1f1
 #define KEY_BRL_DOT2 0x1f2
 #define KEY_BRL_DOT3 0x1f3
 #define KEY_BRL_DOT4 0x1f4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_BRL_DOT5 0x1f5
 #define KEY_BRL_DOT6 0x1f6
 #define KEY_BRL_DOT7 0x1f7
 #define KEY_BRL_DOT8 0x1f8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_BRL_DOT9 0x1f9
 #define KEY_BRL_DOT10 0x1fa
-#define KEY_NUMERIC_0 0x200
-#define KEY_NUMERIC_1 0x201
+#define KEY_NUMERIC_0 0x200  
+#define KEY_NUMERIC_1 0x201  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_NUMERIC_2 0x202
 #define KEY_NUMERIC_3 0x203
 #define KEY_NUMERIC_4 0x204
 #define KEY_NUMERIC_5 0x205
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_NUMERIC_6 0x206
 #define KEY_NUMERIC_7 0x207
 #define KEY_NUMERIC_8 0x208
 #define KEY_NUMERIC_9 0x209
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_NUMERIC_STAR 0x20a
 #define KEY_NUMERIC_POUND 0x20b
 #define KEY_CAMERA_FOCUS 0x210
-#define KEY_WPS_BUTTON 0x211
-#define KEY_TOUCHPAD_TOGGLE 0x212
+#define KEY_WPS_BUTTON 0x211  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define KEY_TOUCHPAD_TOGGLE 0x212  
 #define KEY_TOUCHPAD_ON 0x213
 #define KEY_TOUCHPAD_OFF 0x214
 #define KEY_CAMERA_ZOOMIN 0x215
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_CAMERA_ZOOMOUT 0x216
 #define KEY_CAMERA_UP 0x217
 #define KEY_CAMERA_DOWN 0x218
 #define KEY_CAMERA_LEFT 0x219
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_CAMERA_RIGHT 0x21a
 #define BTN_TRIGGER_HAPPY 0x2c0
 #define BTN_TRIGGER_HAPPY1 0x2c0
 #define BTN_TRIGGER_HAPPY2 0x2c1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY3 0x2c2
 #define BTN_TRIGGER_HAPPY4 0x2c3
 #define BTN_TRIGGER_HAPPY5 0x2c4
 #define BTN_TRIGGER_HAPPY6 0x2c5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY7 0x2c6
 #define BTN_TRIGGER_HAPPY8 0x2c7
 #define BTN_TRIGGER_HAPPY9 0x2c8
 #define BTN_TRIGGER_HAPPY10 0x2c9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY11 0x2ca
 #define BTN_TRIGGER_HAPPY12 0x2cb
 #define BTN_TRIGGER_HAPPY13 0x2cc
 #define BTN_TRIGGER_HAPPY14 0x2cd
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY15 0x2ce
 #define BTN_TRIGGER_HAPPY16 0x2cf
 #define BTN_TRIGGER_HAPPY17 0x2d0
 #define BTN_TRIGGER_HAPPY18 0x2d1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY19 0x2d2
 #define BTN_TRIGGER_HAPPY20 0x2d3
 #define BTN_TRIGGER_HAPPY21 0x2d4
 #define BTN_TRIGGER_HAPPY22 0x2d5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY23 0x2d6
 #define BTN_TRIGGER_HAPPY24 0x2d7
 #define BTN_TRIGGER_HAPPY25 0x2d8
 #define BTN_TRIGGER_HAPPY26 0x2d9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY27 0x2da
 #define BTN_TRIGGER_HAPPY28 0x2db
 #define BTN_TRIGGER_HAPPY29 0x2dc
 #define BTN_TRIGGER_HAPPY30 0x2dd
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY31 0x2de
 #define BTN_TRIGGER_HAPPY32 0x2df
 #define BTN_TRIGGER_HAPPY33 0x2e0
 #define BTN_TRIGGER_HAPPY34 0x2e1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY35 0x2e2
 #define BTN_TRIGGER_HAPPY36 0x2e3
 #define BTN_TRIGGER_HAPPY37 0x2e4
 #define BTN_TRIGGER_HAPPY38 0x2e5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BTN_TRIGGER_HAPPY39 0x2e6
 #define BTN_TRIGGER_HAPPY40 0x2e7
 #define KEY_MIN_INTERESTING KEY_MUTE
 #define KEY_MAX 0x2ff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KEY_CNT (KEY_MAX+1)
 #define REL_X 0x00
 #define REL_Y 0x01
 #define REL_Z 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REL_RX 0x03
 #define REL_RY 0x04
 #define REL_RZ 0x05
 #define REL_HWHEEL 0x06
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REL_DIAL 0x07
 #define REL_WHEEL 0x08
 #define REL_MISC 0x09
 #define REL_MAX 0x0f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REL_CNT (REL_MAX+1)
 #define ABS_X 0x00
 #define ABS_Y 0x01
 #define ABS_Z 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_RX 0x03
 #define ABS_RY 0x04
 #define ABS_RZ 0x05
 #define ABS_THROTTLE 0x06
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_RUDDER 0x07
 #define ABS_WHEEL 0x08
 #define ABS_GAS 0x09
 #define ABS_BRAKE 0x0a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_HAT0X 0x10
 #define ABS_HAT0Y 0x11
 #define ABS_HAT1X 0x12
 #define ABS_HAT1Y 0x13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_HAT2X 0x14
 #define ABS_HAT2Y 0x15
 #define ABS_HAT3X 0x16
 #define ABS_HAT3Y 0x17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_PRESSURE 0x18
 #define ABS_DISTANCE 0x19
 #define ABS_TILT_X 0x1a
 #define ABS_TILT_Y 0x1b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_TOOL_WIDTH 0x1c
 #define ABS_VOLUME 0x20
 #define ABS_MISC 0x28
-#define ABS_MT_SLOT 0x2f
-#define ABS_MT_TOUCH_MAJOR 0x30
-#define ABS_MT_TOUCH_MINOR 0x31
-#define ABS_MT_WIDTH_MAJOR 0x32
-#define ABS_MT_WIDTH_MINOR 0x33
-#define ABS_MT_ORIENTATION 0x34
-#define ABS_MT_POSITION_X 0x35
-#define ABS_MT_POSITION_Y 0x36
-#define ABS_MT_TOOL_TYPE 0x37
-#define ABS_MT_BLOB_ID 0x38
-#define ABS_MT_TRACKING_ID 0x39
-#define ABS_MT_PRESSURE 0x3a
-#define ABS_MT_DISTANCE 0x3b
+#define ABS_MT_SLOT 0x2f  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ABS_MT_TOUCH_MAJOR 0x30  
+#define ABS_MT_TOUCH_MINOR 0x31  
+#define ABS_MT_WIDTH_MAJOR 0x32  
+#define ABS_MT_WIDTH_MINOR 0x33  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ABS_MT_ORIENTATION 0x34  
+#define ABS_MT_POSITION_X 0x35  
+#define ABS_MT_POSITION_Y 0x36  
+#define ABS_MT_TOOL_TYPE 0x37  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ABS_MT_BLOB_ID 0x38  
+#define ABS_MT_TRACKING_ID 0x39  
+#define ABS_MT_PRESSURE 0x3a  
+#define ABS_MT_DISTANCE 0x3b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ABS_MAX 0x3f
 #define ABS_CNT (ABS_MAX+1)
-#define SW_LID 0x00
-#define SW_TABLET_MODE 0x01
-#define SW_HEADPHONE_INSERT 0x02
-#define SW_RFKILL_ALL 0x03
-#define SW_RADIO SW_RFKILL_ALL
-#define SW_MICROPHONE_INSERT 0x04
-#define SW_DOCK 0x05
-#define SW_LINEOUT_INSERT 0x06
-#define SW_JACK_PHYSICAL_INSERT 0x07
-#define SW_VIDEOOUT_INSERT 0x08
-#define SW_CAMERA_LENS_COVER 0x09
-#define SW_KEYPAD_SLIDE 0x0a
-#define SW_FRONT_PROXIMITY 0x0b
-#define SW_ROTATE_LOCK 0x0c
+#define SW_LID 0x00  
+#define SW_TABLET_MODE 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SW_HEADPHONE_INSERT 0x02  
+#define SW_RFKILL_ALL 0x03  
+#define SW_RADIO SW_RFKILL_ALL  
+#define SW_MICROPHONE_INSERT 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SW_DOCK 0x05  
+#define SW_LINEOUT_INSERT 0x06  
+#define SW_JACK_PHYSICAL_INSERT 0x07  
+#define SW_VIDEOOUT_INSERT 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define SW_CAMERA_LENS_COVER 0x09  
+#define SW_KEYPAD_SLIDE 0x0a  
+#define SW_FRONT_PROXIMITY 0x0b  
+#define SW_ROTATE_LOCK 0x0c  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SW_MAX 0x0f
 #define SW_CNT (SW_MAX+1)
 #define MSC_SERIAL 0x00
 #define MSC_PULSELED 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSC_GESTURE 0x02
 #define MSC_RAW 0x03
 #define MSC_SCAN 0x04
 #define MSC_MAX 0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSC_CNT (MSC_MAX+1)
 #define LED_NUML 0x00
 #define LED_CAPSL 0x01
 #define LED_SCROLLL 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LED_COMPOSE 0x03
 #define LED_KANA 0x04
 #define LED_SLEEP 0x05
 #define LED_SUSPEND 0x06
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LED_MUTE 0x07
 #define LED_MISC 0x08
 #define LED_MAIL 0x09
 #define LED_CHARGING 0x0a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LED_MAX 0x0f
 #define LED_CNT (LED_MAX+1)
 #define REP_DELAY 0x00
 #define REP_PERIOD 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REP_MAX 0x01
 #define REP_CNT (REP_MAX+1)
 #define SND_CLICK 0x00
 #define SND_BELL 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SND_TONE 0x02
 #define SND_MAX 0x07
 #define SND_CNT (SND_MAX+1)
 #define ID_BUS 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ID_VENDOR 1
 #define ID_PRODUCT 2
 #define ID_VERSION 3
 #define BUS_PCI 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_ISAPNP 0x02
 #define BUS_USB 0x03
 #define BUS_HIL 0x04
 #define BUS_BLUETOOTH 0x05
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_VIRTUAL 0x06
 #define BUS_ISA 0x10
 #define BUS_I8042 0x11
 #define BUS_XTKBD 0x12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_RS232 0x13
 #define BUS_GAMEPORT 0x14
 #define BUS_PARPORT 0x15
 #define BUS_AMIGA 0x16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_ADB 0x17
 #define BUS_I2C 0x18
 #define BUS_HOST 0x19
 #define BUS_GSC 0x1A
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUS_ATARI 0x1B
 #define BUS_SPI 0x1C
 #define MT_TOOL_FINGER 0
 #define MT_TOOL_PEN 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_TOOL_MAX 1
 #define FF_STATUS_STOPPED 0x00
 #define FF_STATUS_PLAYING 0x01
 #define FF_STATUS_MAX 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ff_replay {
  __u16 length;
  __u16 delay;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ff_trigger {
  __u16 button;
  __u16 interval;
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ff_envelope {
  __u16 attack_length;
  __u16 attack_level;
  __u16 fade_length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 fade_level;
 };
 struct ff_constant_effect {
  __s16 level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ff_envelope envelope;
 };
 struct ff_ramp_effect {
  __s16 start_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s16 end_level;
  struct ff_envelope envelope;
 };
 struct ff_condition_effect {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 right_saturation;
  __u16 left_saturation;
  __s16 right_coeff;
  __s16 left_coeff;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 deadband;
  __s16 center;
 };
 struct ff_periodic_effect {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 waveform;
  __u16 period;
  __s16 magnitude;
  __s16 offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 phase;
  struct ff_envelope envelope;
  __u32 custom_len;
- __s16 *custom_data;
+ __s16 __user *custom_data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ff_rumble_effect {
  __u16 strong_magnitude;
  __u16 weak_magnitude;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct ff_effect {
  __u16 type;
  __s16 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 direction;
  struct ff_trigger trigger;
  struct ff_replay replay;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ff_constant_effect constant;
  struct ff_ramp_effect ramp;
  struct ff_periodic_effect periodic;
  struct ff_condition_effect condition[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ff_rumble_effect rumble;
  } u;
 };
 #define FF_RUMBLE 0x50
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_PERIODIC 0x51
 #define FF_CONSTANT 0x52
 #define FF_SPRING 0x53
 #define FF_FRICTION 0x54
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_DAMPER 0x55
 #define FF_INERTIA 0x56
 #define FF_RAMP 0x57
 #define FF_EFFECT_MIN FF_RUMBLE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_EFFECT_MAX FF_RAMP
 #define FF_SQUARE 0x58
 #define FF_TRIANGLE 0x59
 #define FF_SINE 0x5a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_SAW_UP 0x5b
 #define FF_SAW_DOWN 0x5c
 #define FF_CUSTOM 0x5d
 #define FF_WAVEFORM_MIN FF_SQUARE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_WAVEFORM_MAX FF_CUSTOM
 #define FF_GAIN 0x60
 #define FF_AUTOCENTER 0x61
 #define FF_MAX 0x7f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FF_CNT (FF_MAX+1)
 #endif
-
diff --git a/libc/kernel/common/linux/interrupt.h b/libc/kernel/common/linux/interrupt.h
index f48592f..7ac8d5d 100644
--- a/libc/kernel/common/linux/interrupt.h
+++ b/libc/kernel/common/linux/interrupt.h
@@ -7,115 +7,125 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_INTERRUPT_H
 #define _LINUX_INTERRUPT_H
-
 #include <linux/kernel.h>
 #include <linux/linkage.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/bitops.h>
 #include <linux/preempt.h>
 #include <linux/cpumask.h>
 #include <linux/irqreturn.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/hardirq.h>
 #include <linux/sched.h>
 #include <linux/irqflags.h>
 #include <asm/atomic.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/ptrace.h>
 #include <asm/system.h>
-
 #define IRQF_TRIGGER_NONE 0x00000000
 #define IRQF_TRIGGER_RISING 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQF_TRIGGER_FALLING 0x00000002
 #define IRQF_TRIGGER_HIGH 0x00000004
 #define IRQF_TRIGGER_LOW 0x00000008
 #define IRQF_TRIGGER_MASK (IRQF_TRIGGER_HIGH | IRQF_TRIGGER_LOW |   IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQF_TRIGGER_PROBE 0x00000010
-
 #define IRQF_DISABLED 0x00000020
 #define IRQF_SAMPLE_RANDOM 0x00000040
 #define IRQF_SHARED 0x00000080
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQF_PROBE_SHARED 0x00000100
 #define IRQF_TIMER 0x00000200
 #define IRQF_PERCPU 0x00000400
-
 #define SA_INTERRUPT IRQF_DISABLED
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SA_SAMPLE_RANDOM IRQF_SAMPLE_RANDOM
 #define SA_SHIRQ IRQF_SHARED
 #define SA_PROBEIRQ IRQF_PROBE_SHARED
 #define SA_PERCPU IRQF_PERCPU
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SA_TRIGGER_LOW IRQF_TRIGGER_LOW
 #define SA_TRIGGER_HIGH IRQF_TRIGGER_HIGH
 #define SA_TRIGGER_FALLING IRQF_TRIGGER_FALLING
 #define SA_TRIGGER_RISING IRQF_TRIGGER_RISING
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SA_TRIGGER_MASK IRQF_TRIGGER_MASK
-
 struct irqaction {
  irqreturn_t (*handler)(int, void *, struct pt_regs *);
  unsigned long flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cpumask_t mask;
  const char *name;
  void *dev_id;
  struct irqaction *next;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int irq;
  struct proc_dir_entry *dir;
 };
-
 #define local_irq_enable_in_hardirq() local_irq_enable()
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define disable_irq_nosync_lockdep(irq) disable_irq_nosync(irq)
 #define disable_irq_lockdep(irq) disable_irq(irq)
 #define enable_irq_lockdep(irq) enable_irq(irq)
-
 #ifndef __ARCH_SET_SOFTIRQ_PENDING
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define set_softirq_pending(x) (local_softirq_pending() = (x))
 #define or_softirq_pending(x) (local_softirq_pending() |= (x))
 #endif
-
 #define save_flags(x) save_flags(&x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define save_and_cli(x) save_and_cli(&x)
-
 enum
 {
  HI_SOFTIRQ=0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TIMER_SOFTIRQ,
  NET_TX_SOFTIRQ,
  NET_RX_SOFTIRQ,
  BLOCK_SOFTIRQ,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TASKLET_SOFTIRQ
 };
-
 struct softirq_action
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*action)(struct softirq_action *);
  void *data;
 };
-
 #define __raise_softirq_irqoff(nr) do { or_softirq_pending(1UL << (nr)); } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tasklet_struct
 {
  struct tasklet_struct *next;
  unsigned long state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t count;
  void (*func)(unsigned long);
  unsigned long data;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DECLARE_TASKLET(name, func, data)  struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data }
-
 #define DECLARE_TASKLET_DISABLED(name, func, data)  struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data }
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TASKLET_STATE_SCHED,
  TASKLET_STATE_RUN
 };
-
 #define tasklet_trylock(t) 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define tasklet_unlock_wait(t) do { } while (0)
 #define tasklet_unlock(t) do { } while (0)
-
 #endif
diff --git a/libc/kernel/common/linux/ioctl.h b/libc/kernel/common/linux/ioctl.h
index 9efbeab..337d909 100644
--- a/libc/kernel/common/linux/ioctl.h
+++ b/libc/kernel/common/linux/ioctl.h
@@ -7,12 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IOCTL_H
 #define _LINUX_IOCTL_H
-
 #include <asm/ioctl.h>
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/ion.h b/libc/kernel/common/linux/ion.h
index ac8b264..b8715a3 100644
--- a/libc/kernel/common/linux/ion.h
+++ b/libc/kernel/common/linux/ion.h
@@ -64,4 +64,3 @@
 #define ION_IOC_IMPORT _IOWR(ION_IOC_MAGIC, 5, int)
 #define ION_IOC_CUSTOM _IOWR(ION_IOC_MAGIC, 6, struct ion_custom_data)
 #endif
-
diff --git a/libc/kernel/common/linux/ioport.h b/libc/kernel/common/linux/ioport.h
index b2081fc..cc9006c 100644
--- a/libc/kernel/common/linux/ioport.h
+++ b/libc/kernel/common/linux/ioport.h
@@ -7,89 +7,97 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IOPORT_H
 #define _LINUX_IOPORT_H
-
 #include <linux/compiler.h>
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct resource {
  resource_size_t start;
  resource_size_t end;
  const char *name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long flags;
  struct resource *parent, *sibling, *child;
 };
-
 struct resource_list {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct resource_list *next;
  struct resource *res;
  struct pci_dev *dev;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_BITS 0x000000ff  
-
 #define IORESOURCE_IO 0x00000100  
 #define IORESOURCE_MEM 0x00000200
 #define IORESOURCE_IRQ 0x00000400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_DMA 0x00000800
-
 #define IORESOURCE_PREFETCH 0x00001000  
 #define IORESOURCE_READONLY 0x00002000
 #define IORESOURCE_CACHEABLE 0x00004000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_RANGELENGTH 0x00008000
 #define IORESOURCE_SHADOWABLE 0x00010000
 #define IORESOURCE_BUS_HAS_VGA 0x00080000
-
 #define IORESOURCE_DISABLED 0x10000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_UNSET 0x20000000
 #define IORESOURCE_AUTO 0x40000000
 #define IORESOURCE_BUSY 0x80000000  
-
 #define IORESOURCE_IRQ_HIGHEDGE (1<<0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_IRQ_LOWEDGE (1<<1)
 #define IORESOURCE_IRQ_HIGHLEVEL (1<<2)
 #define IORESOURCE_IRQ_LOWLEVEL (1<<3)
 #define IORESOURCE_IRQ_SHAREABLE (1<<4)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_DMA_TYPE_MASK (3<<0)
 #define IORESOURCE_DMA_8BIT (0<<0)
 #define IORESOURCE_DMA_8AND16BIT (1<<0)
 #define IORESOURCE_DMA_16BIT (2<<0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_DMA_MASTER (1<<2)
 #define IORESOURCE_DMA_BYTE (1<<3)
 #define IORESOURCE_DMA_WORD (1<<4)
-
 #define IORESOURCE_DMA_SPEED_MASK (3<<6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_DMA_COMPATIBLE (0<<6)
 #define IORESOURCE_DMA_TYPEA (1<<6)
 #define IORESOURCE_DMA_TYPEB (2<<6)
 #define IORESOURCE_DMA_TYPEF (3<<6)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_MEM_WRITEABLE (1<<0)  
 #define IORESOURCE_MEM_CACHEABLE (1<<1)  
 #define IORESOURCE_MEM_RANGELENGTH (1<<2)  
 #define IORESOURCE_MEM_TYPE_MASK (3<<3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_MEM_8BIT (0<<3)
 #define IORESOURCE_MEM_16BIT (1<<3)
 #define IORESOURCE_MEM_8AND16BIT (2<<3)
 #define IORESOURCE_MEM_32BIT (3<<3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_MEM_SHADOWABLE (1<<5)  
 #define IORESOURCE_MEM_EXPANSIONROM (1<<6)
-
 #define IORESOURCE_ROM_ENABLE (1<<0)  
 #define IORESOURCE_ROM_SHADOW (1<<1)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IORESOURCE_ROM_COPY (1<<2)  
-
 #define request_region(start,n,name) __request_region(&ioport_resource, (start), (n), (name))
 #define request_mem_region(start,n,name) __request_region(&iomem_resource, (start), (n), (name))
 #define rename_region(region, newname) do { (region)->name = (newname); } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define release_region(start,n) __release_region(&ioport_resource, (start), (n))
 #define check_mem_region(start,n) __check_region(&iomem_resource, (start), (n))
 #define release_mem_region(start,n) __release_region(&iomem_resource, (start), (n))
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/ioprio.h b/libc/kernel/common/linux/ioprio.h
index a0a5d48..c7f9310 100644
--- a/libc/kernel/common/linux/ioprio.h
+++ b/libc/kernel/common/linux/ioprio.h
@@ -7,38 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef IOPRIO_H
 #define IOPRIO_H
-
 #include <linux/sched.h>
-
 #define IOPRIO_BITS (16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOPRIO_CLASS_SHIFT (13)
 #define IOPRIO_PRIO_MASK ((1UL << IOPRIO_CLASS_SHIFT) - 1)
-
 #define IOPRIO_PRIO_CLASS(mask) ((mask) >> IOPRIO_CLASS_SHIFT)
 #define IOPRIO_PRIO_DATA(mask) ((mask) & IOPRIO_PRIO_MASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOPRIO_PRIO_VALUE(class, data) (((class) << IOPRIO_CLASS_SHIFT) | data)
-
 #define ioprio_valid(mask) (IOPRIO_PRIO_CLASS((mask)) != IOPRIO_CLASS_NONE)
-
 enum {
  IOPRIO_CLASS_NONE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IOPRIO_CLASS_RT,
  IOPRIO_CLASS_BE,
  IOPRIO_CLASS_IDLE,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOPRIO_BE_NR (8)
-
 enum {
  IOPRIO_WHO_PROCESS = 1,
  IOPRIO_WHO_PGRP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IOPRIO_WHO_USER,
 };
-
 #define IOPRIO_NORM (4)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/ip.h b/libc/kernel/common/linux/ip.h
index 040789d..14c3464 100644
--- a/libc/kernel/common/linux/ip.h
+++ b/libc/kernel/common/linux/ip.h
@@ -7,112 +7,127 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IP_H
 #define _LINUX_IP_H
 #include <linux/types.h>
 #include <asm/byteorder.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPTOS_TOS_MASK 0x1E
 #define IPTOS_TOS(tos) ((tos)&IPTOS_TOS_MASK)
 #define IPTOS_LOWDELAY 0x10
 #define IPTOS_THROUGHPUT 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPTOS_RELIABILITY 0x04
 #define IPTOS_MINCOST 0x02
-
 #define IPTOS_PREC_MASK 0xE0
 #define IPTOS_PREC(tos) ((tos)&IPTOS_PREC_MASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPTOS_PREC_NETCONTROL 0xe0
 #define IPTOS_PREC_INTERNETCONTROL 0xc0
 #define IPTOS_PREC_CRITIC_ECP 0xa0
 #define IPTOS_PREC_FLASHOVERRIDE 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPTOS_PREC_FLASH 0x60
 #define IPTOS_PREC_IMMEDIATE 0x40
 #define IPTOS_PREC_PRIORITY 0x20
 #define IPTOS_PREC_ROUTINE 0x00
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPOPT_COPY 0x80
 #define IPOPT_CLASS_MASK 0x60
 #define IPOPT_NUMBER_MASK 0x1f
-
 #define IPOPT_COPIED(o) ((o)&IPOPT_COPY)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPOPT_CLASS(o) ((o)&IPOPT_CLASS_MASK)
 #define IPOPT_NUMBER(o) ((o)&IPOPT_NUMBER_MASK)
-
 #define IPOPT_CONTROL 0x00
 #define IPOPT_RESERVED1 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPOPT_MEASUREMENT 0x40
 #define IPOPT_RESERVED2 0x60
-
 #define IPOPT_END (0 |IPOPT_CONTROL)
 #define IPOPT_NOOP (1 |IPOPT_CONTROL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPOPT_SEC (2 |IPOPT_CONTROL|IPOPT_COPY)
 #define IPOPT_LSRR (3 |IPOPT_CONTROL|IPOPT_COPY)
 #define IPOPT_TIMESTAMP (4 |IPOPT_MEASUREMENT)
 #define IPOPT_RR (7 |IPOPT_CONTROL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPOPT_SID (8 |IPOPT_CONTROL|IPOPT_COPY)
 #define IPOPT_SSRR (9 |IPOPT_CONTROL|IPOPT_COPY)
 #define IPOPT_RA (20|IPOPT_CONTROL|IPOPT_COPY)
-
 #define IPVERSION 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAXTTL 255
 #define IPDEFTTL 64
-
 #define IPOPT_OPTVAL 0
 #define IPOPT_OLEN 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPOPT_OFFSET 2
 #define IPOPT_MINOFF 4
 #define MAX_IPOPTLEN 40
 #define IPOPT_NOP IPOPT_NOOP
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPOPT_EOL IPOPT_END
 #define IPOPT_TS IPOPT_TIMESTAMP
-
 #define IPOPT_TS_TSONLY 0  
 #define IPOPT_TS_TSANDADDR 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPOPT_TS_PRESPEC 3  
-
 struct iphdr {
 #ifdef __LITTLE_ENDIAN_BITFIELD
  __u8 ihl:4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  version:4;
 #elif defined (__BIG_ENDIAN_BITFIELD)
  __u8 version:4,
  ihl:4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #error "Please fix <asm/byteorder.h>"
 #endif
  __u8 tos;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 tot_len;
  __be16 id;
  __be16 frag_off;
  __u8 ttl;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 protocol;
  __u16 check;
  __be32 saddr;
  __be32 daddr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ip_auth_hdr {
  __u8 nexthdr;
  __u8 hdrlen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 reserved;
  __u32 spi;
  __u32 seq_no;
  __u8 auth_data[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ip_esp_hdr {
  __u32 spi;
  __u32 seq_no;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 enc_data[0];
 };
-
 struct ip_comp_hdr {
  __u8 nexthdr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 flags;
  __u16 cpi;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/ipc.h b/libc/kernel/common/linux/ipc.h
index 54766d5..290189c 100644
--- a/libc/kernel/common/linux/ipc.h
+++ b/libc/kernel/common/linux/ipc.h
@@ -7,42 +7,45 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IPC_H
 #define _LINUX_IPC_H
-
 #include <linux/types.h>
-
 #define IPC_PRIVATE ((__kernel_key_t) 0) 
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipc_perm
 {
  __kernel_key_t key;
  __kernel_uid_t uid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_gid_t gid;
  __kernel_uid_t cuid;
  __kernel_gid_t cgid;
  __kernel_mode_t mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short seq;
 };
-
 #include <asm/ipcbuf.h>
-
 #define IPC_CREAT 00001000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPC_EXCL 00002000  
 #define IPC_NOWAIT 00004000  
-
 #define IPC_DIPC 00010000  
 #define IPC_OWN 00020000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPC_RMID 0  
 #define IPC_SET 1  
 #define IPC_STAT 2  
 #define IPC_INFO 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPC_OLD 0  
 #define IPC_64 0x0100  
-
 #endif
-
diff --git a/libc/kernel/common/linux/ipmi_msgdefs.h b/libc/kernel/common/linux/ipmi_msgdefs.h
index 247d563..33a372c 100644
--- a/libc/kernel/common/linux/ipmi_msgdefs.h
+++ b/libc/kernel/common/linux/ipmi_msgdefs.h
@@ -7,63 +7,73 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_IPMI_MSGDEFS_H
 #define __LINUX_IPMI_MSGDEFS_H
-
 #define IPMI_NETFN_SENSOR_EVENT_REQUEST 0x04
 #define IPMI_NETFN_SENSOR_EVENT_RESPONSE 0x05
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_GET_EVENT_RECEIVER_CMD 0x01
-
 #define IPMI_NETFN_APP_REQUEST 0x06
 #define IPMI_NETFN_APP_RESPONSE 0x07
 #define IPMI_GET_DEVICE_ID_CMD 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_CLEAR_MSG_FLAGS_CMD 0x30
 #define IPMI_GET_DEVICE_GUID_CMD 0x08
 #define IPMI_GET_MSG_FLAGS_CMD 0x31
 #define IPMI_SEND_MSG_CMD 0x34
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_GET_MSG_CMD 0x33
 #define IPMI_SET_BMC_GLOBAL_ENABLES_CMD 0x2e
 #define IPMI_GET_BMC_GLOBAL_ENABLES_CMD 0x2f
 #define IPMI_READ_EVENT_MSG_BUFFER_CMD 0x35
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_GET_CHANNEL_INFO_CMD 0x42
-
 #define IPMI_NETFN_STORAGE_REQUEST 0x0a
 #define IPMI_NETFN_STORAGE_RESPONSE 0x0b
 #define IPMI_ADD_SEL_ENTRY_CMD 0x44
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_BMC_SLAVE_ADDR 0x20
-
 #define IPMI_MAX_MSG_LENGTH 272  
-
 #define IPMI_CC_NO_ERROR 0x00
 #define IPMI_NODE_BUSY_ERR 0xc0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_INVALID_COMMAND_ERR 0xc1
 #define IPMI_ERR_MSG_TRUNCATED 0xc6
 #define IPMI_LOST_ARBITRATION_ERR 0x81
 #define IPMI_ERR_UNSPECIFIED 0xff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_CHANNEL_PROTOCOL_IPMB 1
 #define IPMI_CHANNEL_PROTOCOL_ICMB 2
 #define IPMI_CHANNEL_PROTOCOL_SMBUS 4
 #define IPMI_CHANNEL_PROTOCOL_KCS 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_CHANNEL_PROTOCOL_SMIC 6
 #define IPMI_CHANNEL_PROTOCOL_BT10 7
 #define IPMI_CHANNEL_PROTOCOL_BT15 8
 #define IPMI_CHANNEL_PROTOCOL_TMODE 9
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_CHANNEL_MEDIUM_IPMB 1
 #define IPMI_CHANNEL_MEDIUM_ICMB10 2
 #define IPMI_CHANNEL_MEDIUM_ICMB09 3
 #define IPMI_CHANNEL_MEDIUM_8023LAN 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_CHANNEL_MEDIUM_ASYNC 5
 #define IPMI_CHANNEL_MEDIUM_OTHER_LAN 6
 #define IPMI_CHANNEL_MEDIUM_PCI_SMBUS 7
 #define IPMI_CHANNEL_MEDIUM_SMBUS1 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPMI_CHANNEL_MEDIUM_SMBUS2 9
 #define IPMI_CHANNEL_MEDIUM_USB1 10
 #define IPMI_CHANNEL_MEDIUM_USB2 11
 #define IPMI_CHANNEL_MEDIUM_SYSINTF 12
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/ipmi_smi.h b/libc/kernel/common/linux/ipmi_smi.h
index 56cc210..8335d53 100644
--- a/libc/kernel/common/linux/ipmi_smi.h
+++ b/libc/kernel/common/linux/ipmi_smi.h
@@ -7,73 +7,74 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_IPMI_SMI_H
 #define __LINUX_IPMI_SMI_H
-
 #include <linux/ipmi_msgdefs.h>
 #include <linux/proc_fs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/module.h>
 #include <linux/device.h>
 #include <linux/platform_device.h>
 #include <linux/ipmi_smi.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct ipmi_smi *ipmi_smi_t;
-
 struct ipmi_smi_msg
 {
  struct list_head link;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long msgid;
  void *user_data;
-
  int data_size;
  unsigned char data[IPMI_MAX_MSG_LENGTH];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int rsp_size;
  unsigned char rsp[IPMI_MAX_MSG_LENGTH];
-
  void (*done)(struct ipmi_smi_msg *msg);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipmi_smi_handlers
 {
  struct module *owner;
-
  int (*start_processing)(void *send_info,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ipmi_smi_t new_intf);
-
  void (*sender)(void *send_info,
  struct ipmi_smi_msg *msg,
  int priority);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*request_events)(void *send_info);
-
  void (*set_run_to_completion)(void *send_info, int run_to_completion);
-
  void (*poll)(void *send_info);
-
  int (*inc_usecount)(void *send_info);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*dec_usecount)(void *send_info);
 };
-
 struct ipmi_device_id {
  unsigned char device_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char device_revision;
  unsigned char firmware_revision_1;
  unsigned char firmware_revision_2;
  unsigned char ipmi_version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char additional_device_support;
  unsigned int manufacturer_id;
  unsigned int product_id;
  unsigned char aux_firmware_revision[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int aux_firmware_revision_set : 1;
 };
-
 #define ipmi_version_major(v) ((v)->ipmi_version & 0xf)
 #define ipmi_version_minor(v) ((v)->ipmi_version >> 4)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipmi_smi_msg *ipmi_alloc_smi_msg(void);
-
 #endif
diff --git a/libc/kernel/common/linux/ipsec.h b/libc/kernel/common/linux/ipsec.h
index 56acafa..e9758eb 100644
--- a/libc/kernel/common/linux/ipsec.h
+++ b/libc/kernel/common/linux/ipsec.h
@@ -7,50 +7,57 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IPSEC_H
 #define _LINUX_IPSEC_H
-
 #include <linux/pfkeyv2.h>
-
 #define IPSEC_PORT_ANY 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPSEC_ULPROTO_ANY 255
 #define IPSEC_PROTO_ANY 255
-
 enum {
  IPSEC_MODE_ANY = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPSEC_MODE_TRANSPORT = 1,
  IPSEC_MODE_TUNNEL = 2,
  IPSEC_MODE_BEET = 3
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  IPSEC_DIR_ANY = 0,
  IPSEC_DIR_INBOUND = 1,
  IPSEC_DIR_OUTBOUND = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPSEC_DIR_FWD = 3,
  IPSEC_DIR_MAX = 4,
  IPSEC_DIR_INVALID = 5
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  IPSEC_POLICY_DISCARD = 0,
  IPSEC_POLICY_NONE = 1,
  IPSEC_POLICY_IPSEC = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPSEC_POLICY_ENTRUST = 3,
  IPSEC_POLICY_BYPASS = 4
 };
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPSEC_LEVEL_DEFAULT = 0,
  IPSEC_LEVEL_USE = 1,
  IPSEC_LEVEL_REQUIRE = 2,
  IPSEC_LEVEL_UNIQUE = 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IPSEC_MANUAL_REQID_MAX 0x3fff
-
 #define IPSEC_REPLAYWSIZE 32
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/ipv6.h b/libc/kernel/common/linux/ipv6.h
index f4ee9a1..80d8c80 100644
--- a/libc/kernel/common/linux/ipv6.h
+++ b/libc/kernel/common/linux/ipv6.h
@@ -7,127 +7,138 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPV6_H
 #define _IPV6_H
-
 #include <linux/types.h>
 #include <linux/in6.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/byteorder.h>
-
 #define IPV6_MIN_MTU 1280
-
 struct in6_pktinfo {
  struct in6_addr ipi6_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ipi6_ifindex;
 };
-
 struct ip6_mtuinfo {
  struct sockaddr_in6 ip6m_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ip6m_mtu;
 };
-
 struct in6_ifreq {
  struct in6_addr ifr6_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ifr6_prefixlen;
  int ifr6_ifindex;
 };
-
 #define IPV6_SRCRT_STRICT 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPV6_SRCRT_TYPE_0 0  
 #define IPV6_SRCRT_TYPE_2 2  
-
 struct ipv6_rt_hdr {
  __u8 nexthdr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 hdrlen;
  __u8 type;
  __u8 segments_left;
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipv6_opt_hdr {
  __u8 nexthdr;
  __u8 hdrlen;
-
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ipv6_destopt_hdr ipv6_opt_hdr
 #define ipv6_hopopt_hdr ipv6_opt_hdr
-
 struct rt0_hdr {
  struct ipv6_rt_hdr rt_hdr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 reserved;
  struct in6_addr addr[0];
-
 #define rt0_type rt_hdr.type
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rt2_hdr {
  struct ipv6_rt_hdr rt_hdr;
  __u32 reserved;
  struct in6_addr addr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rt2_type rt_hdr.type
 };
-
 struct ipv6_destopt_hao {
  __u8 type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 length;
  struct in6_addr addr;
 } __attribute__((packed));
-
 struct ipv6hdr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __LITTLE_ENDIAN_BITFIELD
  __u8 priority:4,
  version:4;
 #elif defined(__BIG_ENDIAN_BITFIELD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 version:4,
  priority:4;
 #else
 #error "Please fix <asm/byteorder.h>"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __u8 flow_lbl[3];
-
  __be16 payload_len;
  __u8 nexthdr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 hop_limit;
-
  struct in6_addr saddr;
  struct in6_addr daddr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  DEVCONF_FORWARDING = 0,
  DEVCONF_HOPLIMIT,
  DEVCONF_MTU6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEVCONF_ACCEPT_RA,
  DEVCONF_ACCEPT_REDIRECTS,
  DEVCONF_AUTOCONF,
  DEVCONF_DAD_TRANSMITS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEVCONF_RTR_SOLICITS,
  DEVCONF_RTR_SOLICIT_INTERVAL,
  DEVCONF_RTR_SOLICIT_DELAY,
  DEVCONF_USE_TEMPADDR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEVCONF_TEMP_VALID_LFT,
  DEVCONF_TEMP_PREFERED_LFT,
  DEVCONF_REGEN_MAX_RETRY,
  DEVCONF_MAX_DESYNC_FACTOR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEVCONF_MAX_ADDRESSES,
  DEVCONF_FORCE_MLD_VERSION,
  DEVCONF_ACCEPT_RA_DEFRTR,
  DEVCONF_ACCEPT_RA_PINFO,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEVCONF_ACCEPT_RA_RTR_PREF,
  DEVCONF_RTR_PROBE_INTERVAL,
  DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN,
  DEVCONF_PROXY_NDP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEVCONF_OPTIMISTIC_DAD,
  DEVCONF_ACCEPT_SOURCE_ROUTE,
  DEVCONF_MC_FORWARDING,
  DEVCONF_DISABLE_IPV6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEVCONF_ACCEPT_DAD,
  DEVCONF_FORCE_TLLAO,
  DEVCONF_MAX
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/ipv6_route.h b/libc/kernel/common/linux/ipv6_route.h
index 3791e87..b6749dc 100644
--- a/libc/kernel/common/linux/ipv6_route.h
+++ b/libc/kernel/common/linux/ipv6_route.h
@@ -7,49 +7,54 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IPV6_ROUTE_H
 #define _LINUX_IPV6_ROUTE_H
-
 #include <linux/types.h>
-
 #define RTF_DEFAULT 0x00010000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTF_ALLONLINK 0x00020000  
 #define RTF_ADDRCONF 0x00040000  
 #define RTF_PREFIX_RT 0x00080000  
 #define RTF_ANYCAST 0x00100000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTF_NONEXTHOP 0x00200000  
 #define RTF_EXPIRES 0x00400000
-
 #define RTF_ROUTEINFO 0x00800000  
-
 #define RTF_CACHE 0x01000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTF_FLOW 0x02000000  
 #define RTF_POLICY 0x04000000  
-
 #define RTF_PREF(pref) ((pref) << 27)
 #define RTF_PREF_MASK 0x18000000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTF_LOCAL 0x80000000
-
 struct in6_rtmsg {
  struct in6_addr rtmsg_dst;
  struct in6_addr rtmsg_src;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct in6_addr rtmsg_gateway;
  __u32 rtmsg_type;
  __u16 rtmsg_dst_len;
  __u16 rtmsg_src_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 rtmsg_metric;
  unsigned long rtmsg_info;
  __u32 rtmsg_flags;
  int rtmsg_ifindex;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define RTMSG_NEWDEVICE 0x11
 #define RTMSG_DELDEVICE 0x12
 #define RTMSG_NEWROUTE 0x21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMSG_DELROUTE 0x22
-
 #endif
diff --git a/libc/kernel/common/linux/ipx.h b/libc/kernel/common/linux/ipx.h
index ff675e9..1396988 100644
--- a/libc/kernel/common/linux/ipx.h
+++ b/libc/kernel/common/linux/ipx.h
@@ -7,72 +7,87 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPX_H_
 #define _IPX_H_
 #include <linux/sockios.h>
 #include <linux/socket.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPX_NODE_LEN 6
 #define IPX_MTU 576
-
 struct sockaddr_ipx {
  sa_family_t sipx_family;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 sipx_port;
  __u32 sipx_network;
  unsigned char sipx_node[IPX_NODE_LEN];
  __u8 sipx_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char sipx_zero;
 };
-
 #define sipx_special sipx_port
 #define sipx_action sipx_zero
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPX_DLTITF 0
 #define IPX_CRTITF 1
-
 struct ipx_route_definition {
  __u32 ipx_network;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ipx_router_network;
  unsigned char ipx_router_node[IPX_NODE_LEN];
 };
-
 struct ipx_interface_definition {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ipx_network;
  unsigned char ipx_device[16];
  unsigned char ipx_dlink_type;
 #define IPX_FRAME_NONE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPX_FRAME_SNAP 1
 #define IPX_FRAME_8022 2
 #define IPX_FRAME_ETHERII 3
 #define IPX_FRAME_8023 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPX_FRAME_TR_8022 5  
  unsigned char ipx_special;
 #define IPX_SPECIAL_NONE 0
 #define IPX_PRIMARY 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPX_INTERNAL 2
  unsigned char ipx_node[IPX_NODE_LEN];
 };
-
 struct ipx_config_data {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char ipxcfg_auto_select_primary;
  unsigned char ipxcfg_auto_create_interfaces;
 };
-
 struct ipx_route_def {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ipx_network;
  __u32 ipx_router_network;
 #define IPX_ROUTE_NO_ROUTER 0
  unsigned char ipx_router_node[IPX_NODE_LEN];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char ipx_device[16];
  unsigned short ipx_flags;
 #define IPX_RT_SNAP 8
 #define IPX_RT_8022 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPX_RT_BLUEBOOK 2
 #define IPX_RT_ROUTED 1
 };
-
 #define SIOCAIPXITFCRT (SIOCPROTOPRIVATE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCAIPXPRISLT (SIOCPROTOPRIVATE + 1)
 #define SIOCIPXCFGDATA (SIOCPROTOPRIVATE + 2)
 #define SIOCIPXNCPCONN (SIOCPROTOPRIVATE + 3)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/irq.h b/libc/kernel/common/linux/irq.h
index 38f5db7..f56a628 100644
--- a/libc/kernel/common/linux/irq.h
+++ b/libc/kernel/common/linux/irq.h
@@ -7,94 +7,103 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IRQ_H
 #define _LINUX_IRQ_H
-
 #include <linux/smp.h>
-
 #include <linux/linkage.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/cache.h>
 #include <linux/spinlock.h>
 #include <linux/cpumask.h>
 #include <linux/irqreturn.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/irq.h>
 #include <asm/ptrace.h>
-
 #define IRQ_TYPE_NONE 0x00000000  
 #define IRQ_TYPE_EDGE_RISING 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQ_TYPE_EDGE_FALLING 0x00000002  
 #define IRQ_TYPE_EDGE_BOTH (IRQ_TYPE_EDGE_FALLING | IRQ_TYPE_EDGE_RISING)
 #define IRQ_TYPE_LEVEL_HIGH 0x00000004  
 #define IRQ_TYPE_LEVEL_LOW 0x00000008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQ_TYPE_SENSE_MASK 0x0000000f  
 #define IRQ_TYPE_PROBE 0x00000010  
-
 #define IRQ_INPROGRESS 0x00010000  
 #define IRQ_DISABLED 0x00020000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQ_PENDING 0x00040000  
 #define IRQ_REPLAY 0x00080000  
 #define IRQ_AUTODETECT 0x00100000  
 #define IRQ_WAITING 0x00200000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQ_LEVEL 0x00400000  
 #define IRQ_MASKED 0x00800000  
 #define IRQ_PER_CPU 0x01000000  
 #define CHECK_IRQ_PER_CPU(var) 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQ_NOPROBE 0x02000000  
 #define IRQ_NOREQUEST 0x04000000  
 #define IRQ_NOAUTOEN 0x08000000  
 #define IRQ_DELAYED_DISABLE 0x10000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQ_WAKEUP 0x20000000  
-
 struct proc_dir_entry;
-
 struct irq_chip {
  const char *name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int (*startup)(unsigned int irq);
  void (*shutdown)(unsigned int irq);
  void (*enable)(unsigned int irq);
  void (*disable)(unsigned int irq);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*ack)(unsigned int irq);
  void (*mask)(unsigned int irq);
  void (*mask_ack)(unsigned int irq);
  void (*unmask)(unsigned int irq);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*eoi)(unsigned int irq);
-
  void (*end)(unsigned int irq);
  void (*set_affinity)(unsigned int irq, cpumask_t dest);
  int (*retrigger)(unsigned int irq);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*set_type)(unsigned int irq, unsigned int flow_type);
  int (*set_wake)(unsigned int irq, unsigned int on);
-
  const char *typename;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct irq_desc {
  void fastcall (*handle_irq)(unsigned int irq,
  struct irq_desc *desc,
  struct pt_regs *regs);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct irq_chip *chip;
  void *handler_data;
  void *chip_data;
  struct irqaction *action;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int status;
-
  unsigned int depth;
  unsigned int wake_depth;
  unsigned int irq_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int irqs_unhandled;
  spinlock_t lock;
 } ____cacheline_aligned;
-
 #define hw_interrupt_type irq_chip
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct irq_chip hw_irq_controller;
 #define no_irq_type no_irq_chip
 typedef struct irq_desc irq_desc_t;
-
 #include <asm/hw_irq.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/irq_cpustat.h b/libc/kernel/common/linux/irq_cpustat.h
index 3540a4a..2a568cc 100644
--- a/libc/kernel/common/linux/irq_cpustat.h
+++ b/libc/kernel/common/linux/irq_cpustat.h
@@ -7,18 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __irq_cpustat_h
 #define __irq_cpustat_h
-
 #ifndef __ARCH_IRQ_STAT
-
 #define __IRQ_STAT(cpu, member) (irq_stat[cpu].member)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define local_softirq_pending()   __IRQ_STAT(smp_processor_id(), __softirq_pending)
-
 #define nmi_count(cpu) __IRQ_STAT((cpu), __nmi_count)  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/irqflags.h b/libc/kernel/common/linux/irqflags.h
index 1bf3f90..af3aee9 100644
--- a/libc/kernel/common/linux/irqflags.h
+++ b/libc/kernel/common/linux/irqflags.h
@@ -7,28 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TRACE_IRQFLAGS_H
 #define _LINUX_TRACE_IRQFLAGS_H
-
 #define trace_hardirqs_on() do { } while (0)
 #define trace_hardirqs_off() do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define trace_softirqs_on(ip) do { } while (0)
 #define trace_softirqs_off(ip) do { } while (0)
 #define trace_hardirq_context(p) 0
 #define trace_softirq_context(p) 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define trace_hardirqs_enabled(p) 0
 #define trace_softirqs_enabled(p) 0
 #define trace_hardirq_enter() do { } while (0)
 #define trace_hardirq_exit() do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define trace_softirq_enter() do { } while (0)
 #define trace_softirq_exit() do { } while (0)
 #define INIT_TRACE_IRQFLAGS
-
 #define raw_local_irq_disable() local_irq_disable()
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define raw_local_irq_enable() local_irq_enable()
 #define raw_local_irq_save(flags) local_irq_save(flags)
 #define raw_local_irq_restore(flags) local_irq_restore(flags)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/irqreturn.h b/libc/kernel/common/linux/irqreturn.h
index e37f430..14201bf 100644
--- a/libc/kernel/common/linux/irqreturn.h
+++ b/libc/kernel/common/linux/irqreturn.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_IRQRETURN_H
 #define _LINUX_IRQRETURN_H
-
 typedef int irqreturn_t;
-
 #define IRQ_NONE (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IRQ_HANDLED (1)
 #define IRQ_RETVAL(x) ((x) != 0)
-
 #endif
diff --git a/libc/kernel/common/linux/jbd.h b/libc/kernel/common/linux/jbd.h
index 7ba766c..89956d7 100644
--- a/libc/kernel/common/linux/jbd.h
+++ b/libc/kernel/common/linux/jbd.h
@@ -7,112 +7,107 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_JBD_H
 #define _LINUX_JBD_H
-
 #include "jfs_compat.h"
 #define JFS_DEBUG
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define jfs_debug jbd_debug
-
 #define journal_oom_retry 1
-
 #undef JBD_PARANOID_IOFAIL
-
 #define JBD_DEFAULT_MAX_COMMIT_AGE 5
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define jbd_debug(f, a...)  
-
 #define jbd_kmalloc(size, flags)   __jbd_kmalloc(__FUNCTION__, (size), (flags), journal_oom_retry)
 #define jbd_rep_kmalloc(size, flags)   __jbd_kmalloc(__FUNCTION__, (size), (flags), 1)
-
 #define JFS_MIN_JOURNAL_BLOCKS 1024
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define JFS_MAGIC_NUMBER 0xc03b3998U  
-
 #define JFS_DESCRIPTOR_BLOCK 1
 #define JFS_COMMIT_BLOCK 2
 #define JFS_SUPERBLOCK_V1 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define JFS_SUPERBLOCK_V2 4
 #define JFS_REVOKE_BLOCK 5
-
 typedef struct journal_header_s
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 h_magic;
  __be32 h_blocktype;
  __be32 h_sequence;
 } journal_header_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct journal_block_tag_s
 {
  __be32 t_blocknr;
  __be32 t_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } journal_block_tag_t;
-
 typedef struct journal_revoke_header_s
 {
  journal_header_t r_header;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 r_count;
 } journal_revoke_header_t;
-
 #define JFS_FLAG_ESCAPE 1  
 #define JFS_FLAG_SAME_UUID 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define JFS_FLAG_DELETED 4  
 #define JFS_FLAG_LAST_TAG 8  
-
 typedef struct journal_superblock_s
 {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  journal_header_t s_header;
-
  __be32 s_blocksize;
  __be32 s_maxlen;
  __be32 s_first;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 s_sequence;
  __be32 s_start;
-
  __be32 s_errno;
-
  __be32 s_feature_compat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 s_feature_incompat;
  __be32 s_feature_ro_compat;
-
  __u8 s_uuid[16];
-
  __be32 s_nr_users;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 s_dynsuper;
-
  __be32 s_max_transaction;
  __be32 s_max_trans_data;
-
  __u32 s_padding[44];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 s_users[16*48];
-
 } journal_superblock_t;
-
 #define JFS_HAS_COMPAT_FEATURE(j,mask)   ((j)->j_format_version >= 2 &&   ((j)->j_superblock->s_feature_compat & cpu_to_be32((mask))))
 #define JFS_HAS_RO_COMPAT_FEATURE(j,mask)   ((j)->j_format_version >= 2 &&   ((j)->j_superblock->s_feature_ro_compat & cpu_to_be32((mask))))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define JFS_HAS_INCOMPAT_FEATURE(j,mask)   ((j)->j_format_version >= 2 &&   ((j)->j_superblock->s_feature_incompat & cpu_to_be32((mask))))
-
 #define JFS_FEATURE_INCOMPAT_REVOKE 0x00000001
-
 #define JFS_KNOWN_COMPAT_FEATURES 0
 #define JFS_KNOWN_ROCOMPAT_FEATURES 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define JFS_KNOWN_INCOMPAT_FEATURES JFS_FEATURE_INCOMPAT_REVOKE
-
 #define BJ_None 0  
 #define BJ_SyncData 1  
 #define BJ_Metadata 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BJ_Forget 3  
 #define BJ_IO 4  
 #define BJ_Shadow 5  
 #define BJ_LogCtl 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BJ_Reserved 7  
 #define BJ_Locked 8  
 #define BJ_Types 9
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/jiffies.h b/libc/kernel/common/linux/jiffies.h
index 86b705b..cdfefcb 100644
--- a/libc/kernel/common/linux/jiffies.h
+++ b/libc/kernel/common/linux/jiffies.h
@@ -7,109 +7,124 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_JIFFIES_H
 #define _LINUX_JIFFIES_H
-
 #include <linux/calc64.h>
 #include <linux/kernel.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>
 #include <linux/time.h>
 #include <linux/timex.h>
 #include <asm/param.h>  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if HZ >= (12 && HZ < 24)
 #define SHIFT_HZ 4
 #elif HZ >= 24 && HZ < 48
 #define SHIFT_HZ 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif HZ >= 48 && HZ < 96
 #define SHIFT_HZ 6
 #elif HZ >= 96 && HZ < 192
 #define SHIFT_HZ 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif HZ >= 192 && HZ < 384
 #define SHIFT_HZ 8
 #elif HZ >= 384 && HZ < 768
 #define SHIFT_HZ 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif HZ >= 768 && HZ < 1536
 #define SHIFT_HZ 10
 #else
 #error You lose.
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ)  
-
 #define LATCH_HPET ((HPET_TICK_RATE + HZ/2) / HZ)
-
 #define SH_DIV(NOM,DEN,LSH) ( (((NOM) / (DEN)) << (LSH))   + ((((NOM) % (DEN)) << (LSH)) + (DEN) / 2) / (DEN))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ACTHZ (SH_DIV (CLOCK_TICK_RATE, LATCH, 8))
-
 #define ACTHZ_HPET (SH_DIV (HPET_TICK_RATE, LATCH_HPET, 8))
-
 #define TICK_NSEC (SH_DIV (1000000UL * 1000, ACTHZ, 8))
-
 #define TICK_NSEC_HPET (SH_DIV(1000000UL * 1000, ACTHZ_HPET, 8))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TICK_USEC ((1000000UL + USER_HZ/2) / USER_HZ)
-
 #define TICK_USEC_TO_NSEC(TUSEC) (SH_DIV (TUSEC * USER_HZ * 1000, ACTHZ, 8))
-
 #define __jiffy_data __attribute__((section(".data")))
-
 #if BITS_PER_LONG < 64
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #endif
 #define time_after(a,b)   (typecheck(unsigned long, a) &&   typecheck(unsigned long, b) &&   ((long)(b) - (long)(a) < 0))
 #define time_before(a,b) time_after(b,a)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define time_after_eq(a,b)   (typecheck(unsigned long, a) &&   typecheck(unsigned long, b) &&   ((long)(a) - (long)(b) >= 0))
 #define time_before_eq(a,b) time_after_eq(b,a)
 #define INITIAL_JIFFIES ((unsigned long)(unsigned int) (-300*HZ))
 #define MAX_JIFFY_OFFSET ((~0UL >> 1)-1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEC_JIFFIE_SC (31 - SHIFT_HZ)
 #if !((NSEC_PER_SEC << 2) / TICK_NSEC << SEC_JIFFIE_SC - 2 & 0x80000000)
 #undef SEC_JIFFIE_SC
 #define SEC_JIFFIE_SC (32 - SHIFT_HZ)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define NSEC_JIFFIE_SC (SEC_JIFFIE_SC + 29)
 #define USEC_JIFFIE_SC (SEC_JIFFIE_SC + 19)
 #define SEC_CONVERSION ((unsigned long)((((u64)NSEC_PER_SEC << SEC_JIFFIE_SC) +  TICK_NSEC -1) / (u64)TICK_NSEC))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NSEC_CONVERSION ((unsigned long)((((u64)1 << NSEC_JIFFIE_SC) +  TICK_NSEC -1) / (u64)TICK_NSEC))
 #define USEC_CONVERSION   ((unsigned long)((((u64)NSEC_PER_USEC << USEC_JIFFIE_SC) +  TICK_NSEC -1) / (u64)TICK_NSEC))
 #define USEC_ROUND (u64)(((u64)1 << USEC_JIFFIE_SC) - 1)
 #if BITS_PER_LONG < 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_SEC_IN_JIFFIES   (long)((u64)((u64)MAX_JIFFY_OFFSET * TICK_NSEC) / NSEC_PER_SEC)
 #else
 #define MAX_SEC_IN_JIFFIES   (SH_DIV((MAX_JIFFY_OFFSET >> SEC_JIFFIE_SC) * TICK_NSEC, NSEC_PER_SEC, 1) - 1)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if HZ <= (MSEC_PER_SEC && !(MSEC_PER_SEC % HZ))
 #elif HZ > MSEC_PER_SEC && !(HZ % MSEC_PER_SEC)
 #else
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if HZ <= (USEC_PER_SEC && !(USEC_PER_SEC % HZ))
 #elif HZ > USEC_PER_SEC && !(HZ % USEC_PER_SEC)
 #else
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if HZ <= (MSEC_PER_SEC && !(MSEC_PER_SEC % HZ))
 #elif HZ > MSEC_PER_SEC && !(HZ % MSEC_PER_SEC)
 #else
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if HZ <= (USEC_PER_SEC && !(USEC_PER_SEC % HZ))
 #elif HZ > USEC_PER_SEC && !(HZ % USEC_PER_SEC)
 #else
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if TICK_NSEC % NSEC_PER_SEC / USER_HZ == 0
 #else
 #endif
 #if HZ % USER_HZ == 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #endif
 #if TICK_NSEC % NSEC_PER_SEC / USER_HZ == 0
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #if NSEC_PER_SEC % USER_HZ == 0
 #elif (USER_HZ % 512) == 0
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
diff --git a/libc/kernel/common/linux/kd.h b/libc/kernel/common/linux/kd.h
index 1541ddf..9d6fea3 100644
--- a/libc/kernel/common/linux/kd.h
+++ b/libc/kernel/common/linux/kd.h
@@ -7,170 +7,179 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_KD_H
 #define _LINUX_KD_H
 #include <linux/types.h>
 #include <linux/compiler.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GIO_FONT 0x4B60  
 #define PIO_FONT 0x4B61  
-
 #define GIO_FONTX 0x4B6B  
 #define PIO_FONTX 0x4B6C  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct consolefontdesc {
  unsigned short charcount;
  unsigned short charheight;
  char __user *chardata;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define PIO_FONTRESET 0x4B6D  
-
 #define GIO_CMAP 0x4B70  
 #define PIO_CMAP 0x4B71  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KIOCSOUND 0x4B2F  
 #define KDMKTONE 0x4B30  
-
 #define KDGETLED 0x4B31  
 #define KDSETLED 0x4B32  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LED_SCR 0x01  
 #define LED_NUM 0x02  
 #define LED_CAP 0x04  
-
 #define KDGKBTYPE 0x4B33  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KB_84 0x01
 #define KB_101 0x02  
 #define KB_OTHER 0x03
-
 #define KDADDIO 0x4B34  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KDDELIO 0x4B35  
 #define KDENABIO 0x4B36  
 #define KDDISABIO 0x4B37  
-
 #define KDSETMODE 0x4B3A  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KD_TEXT 0x00
 #define KD_GRAPHICS 0x01
 #define KD_TEXT0 0x02  
 #define KD_TEXT1 0x03  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KDGETMODE 0x4B3B  
-
 #define KDMAPDISP 0x4B3C  
 #define KDUNMAPDISP 0x4B3D  
-
 typedef char scrnmap_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define E_TABSZ 256
 #define GIO_SCRNMAP 0x4B40  
 #define PIO_SCRNMAP 0x4B41  
 #define GIO_UNISCRNMAP 0x4B69  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PIO_UNISCRNMAP 0x4B6A  
-
 #define GIO_UNIMAP 0x4B66  
 struct unipair {
  unsigned short unicode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short fontpos;
 };
 struct unimapdesc {
  unsigned short entry_ct;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct unipair __user *entries;
 };
 #define PIO_UNIMAP 0x4B67  
 #define PIO_UNIMAPCLR 0x4B68  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct unimapinit {
  unsigned short advised_hashsize;
  unsigned short advised_hashstep;
  unsigned short advised_hashlevel;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define UNI_DIRECT_BASE 0xF000  
 #define UNI_DIRECT_MASK 0x01FF  
-
 #define K_RAW 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_XLATE 0x01
 #define K_MEDIUMRAW 0x02
 #define K_UNICODE 0x03
 #define KDGKBMODE 0x4B44  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KDSKBMODE 0x4B45  
-
 #define K_METABIT 0x03
 #define K_ESCPREFIX 0x04
 #define KDGKBMETA 0x4B62  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KDSKBMETA 0x4B63  
-
 #define K_SCROLLLOCK 0x01
 #define K_NUMLOCK 0x02
 #define K_CAPSLOCK 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KDGKBLED 0x4B64  
 #define KDSKBLED 0x4B65  
-
 struct kbentry {
  unsigned char kb_table;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char kb_index;
  unsigned short kb_value;
 };
 #define K_NORMTAB 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_SHIFTTAB 0x01
 #define K_ALTTAB 0x02
 #define K_ALTSHIFTTAB 0x03
-
 #define KDGKBENT 0x4B46  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KDSKBENT 0x4B47  
-
 struct kbsentry {
  unsigned char kb_func;
  unsigned char kb_string[512];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define KDGKBSENT 0x4B48  
 #define KDSKBSENT 0x4B49  
-
 struct kbdiacr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char diacr, base, result;
 };
 struct kbdiacrs {
  unsigned int kb_cnt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct kbdiacr kbdiacr[256];
 };
 #define KDGKBDIACR 0x4B4A  
 #define KDSKBDIACR 0x4B4B  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kbkeycode {
  unsigned int scancode, keycode;
 };
 #define KDGETKEYCODE 0x4B4C  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KDSETKEYCODE 0x4B4D  
-
 #define KDSIGACCEPT 0x4B4E  
-
 struct kbd_repeat {
  int delay;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int period;
-
 };
-
 #define KDKBDREP 0x4B52  
-
 #define KDFONTOP 0x4B72  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct console_font_op {
  unsigned int op;
  unsigned int flags;
  unsigned int width, height;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int charcount;
  unsigned char __user *data;
 };
-
 struct console_font {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int width, height;
  unsigned int charcount;
  unsigned char *data;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KD_FONT_OP_SET 0  
 #define KD_FONT_OP_GET 1  
 #define KD_FONT_OP_SET_DEFAULT 2  
 #define KD_FONT_OP_COPY 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KD_FONT_FLAG_DONT_RECALC 1  
-
 #endif
diff --git a/libc/kernel/common/linux/kdev_t.h b/libc/kernel/common/linux/kdev_t.h
index 517f9c3..1010b09 100644
--- a/libc/kernel/common/linux/kdev_t.h
+++ b/libc/kernel/common/linux/kdev_t.h
@@ -7,12 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_KDEV_T_H
 #define _LINUX_KDEV_T_H
-
 #define MAJOR(dev) ((dev)>>8)
 #define MINOR(dev) ((dev) & 0xff)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MKDEV(ma,mi) ((ma)<<8 | (mi))
 #endif
diff --git a/libc/kernel/common/linux/kernel.h b/libc/kernel/common/linux/kernel.h
index 9682e47..608f31e 100644
--- a/libc/kernel/common/linux/kernel.h
+++ b/libc/kernel/common/linux/kernel.h
@@ -7,33 +7,40 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_KERNEL_H
 #define _LINUX_KERNEL_H
-
 #define SI_LOAD_SHIFT 16
 struct sysinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long uptime;
  unsigned long loads[3];
  unsigned long totalram;
  unsigned long freeram;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long sharedram;
  unsigned long bufferram;
  unsigned long totalswap;
  unsigned long freeswap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short procs;
  unsigned short pad;
  unsigned long totalhigh;
  unsigned long freehigh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int mem_unit;
  char _f[20-2*sizeof(long)-sizeof(int)];
 };
-
 #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BUILD_BUG_ON_ZERO(e) (sizeof(char[1 - 2 * !!(e)]) - 1)
-
 #define __FUNCTION__ (__func__)
-
 #endif
diff --git a/libc/kernel/common/linux/kernel_stat.h b/libc/kernel/common/linux/kernel_stat.h
index f333736..c524e47 100644
--- a/libc/kernel/common/linux/kernel_stat.h
+++ b/libc/kernel/common/linux/kernel_stat.h
@@ -7,36 +7,43 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_KERNEL_STAT_H
 #define _LINUX_KERNEL_STAT_H
-
 #include <asm/irq.h>
 #include <linux/smp.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/threads.h>
 #include <linux/percpu.h>
 #include <linux/cpumask.h>
 #include <asm/cputime.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cpu_usage_stat {
  cputime64_t user;
  cputime64_t nice;
  cputime64_t system;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cputime64_t softirq;
  cputime64_t irq;
  cputime64_t idle;
  cputime64_t iowait;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cputime64_t steal;
 };
-
 struct kernel_stat {
  struct cpu_usage_stat cpustat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int irqs[NR_IRQS];
 };
-
 #define kstat_cpu(cpu) per_cpu(kstat, cpu)
-
 #define kstat_this_cpu __get_cpu_var(kstat)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/kernelcapi.h b/libc/kernel/common/linux/kernelcapi.h
index 4638b0a..0d48514 100644
--- a/libc/kernel/common/linux/kernelcapi.h
+++ b/libc/kernel/common/linux/kernelcapi.h
@@ -7,35 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __KERNELCAPI_H__
 #define __KERNELCAPI_H__
-
 #define CAPI_MAXAPPL 240  
 #define CAPI_MAXCONTR 32  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAPI_MAXDATAWINDOW 8
-
 typedef struct kcapi_flagdef {
  int contr;
  int flag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } kcapi_flagdef;
-
 typedef struct kcapi_carddef {
  char driver[32];
  unsigned int port;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned irq;
  unsigned int membase;
  int cardnr;
 } kcapi_carddef;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KCAPI_CMD_TRACE 10
 #define KCAPI_CMD_ADDCARD 11  
-
 #define KCAPI_TRACE_OFF 0
 #define KCAPI_TRACE_SHORT_NO_DATA 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KCAPI_TRACE_FULL_NO_DATA 2
 #define KCAPI_TRACE_SHORT 3
 #define KCAPI_TRACE_FULL 4
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/kexec.h b/libc/kernel/common/linux/kexec.h
index 4004646..1dfe07c 100644
--- a/libc/kernel/common/linux/kexec.h
+++ b/libc/kernel/common/linux/kexec.h
@@ -7,11 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_KEXEC_H
 #define LINUX_KEXEC_H
-
 struct pt_regs;
 struct task_struct;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/key.h b/libc/kernel/common/linux/key.h
index 5c485d7..930bd7e 100644
--- a/libc/kernel/common/linux/key.h
+++ b/libc/kernel/common/linux/key.h
@@ -7,15 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_KEY_H
 #define _LINUX_KEY_H
-
 #include <linux/types.h>
 #include <linux/list.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/rbtree.h>
 #include <linux/rcupdate.h>
 #include <asm/atomic.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/keyboard.h b/libc/kernel/common/linux/keyboard.h
index 25e0945..dac9983 100644
--- a/libc/kernel/common/linux/keyboard.h
+++ b/libc/kernel/common/linux/keyboard.h
@@ -7,440 +7,524 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_KEYBOARD_H
 #define __LINUX_KEYBOARD_H
-
 #include <linux/wait.h>
-
 #define KG_SHIFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KG_CTRL 2
 #define KG_ALT 3
 #define KG_ALTGR 1
 #define KG_SHIFTL 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KG_KANASHIFT 4
 #define KG_SHIFTR 5
 #define KG_CTRLL 6
 #define KG_CTRLR 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KG_CAPSSHIFT 8
-
 #define NR_SHIFT 9
-
 #define NR_KEYS 256
 #define MAX_NR_KEYMAPS 256
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_NR_OF_USER_KEYMAPS 256  
-
 #define MAX_NR_FUNC 256  
-
 #define KT_LATIN 0  
 #define KT_LETTER 11  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KT_FN 1
 #define KT_SPEC 2
 #define KT_PAD 3
 #define KT_DEAD 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KT_CONS 5
 #define KT_CUR 6
 #define KT_SHIFT 7
 #define KT_META 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KT_ASCII 9
 #define KT_LOCK 10
 #define KT_SLOCK 12
 #define KT_BRL 14
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K(t,v) (((t)<<8)|(v))
 #define KTYP(x) ((x) >> 8)
 #define KVAL(x) ((x) & 0xff)
-
 #define K_F1 K(KT_FN,0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F2 K(KT_FN,1)
 #define K_F3 K(KT_FN,2)
 #define K_F4 K(KT_FN,3)
 #define K_F5 K(KT_FN,4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F6 K(KT_FN,5)
 #define K_F7 K(KT_FN,6)
 #define K_F8 K(KT_FN,7)
 #define K_F9 K(KT_FN,8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F10 K(KT_FN,9)
 #define K_F11 K(KT_FN,10)
 #define K_F12 K(KT_FN,11)
 #define K_F13 K(KT_FN,12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F14 K(KT_FN,13)
 #define K_F15 K(KT_FN,14)
 #define K_F16 K(KT_FN,15)
 #define K_F17 K(KT_FN,16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F18 K(KT_FN,17)
 #define K_F19 K(KT_FN,18)
 #define K_F20 K(KT_FN,19)
 #define K_FIND K(KT_FN,20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_INSERT K(KT_FN,21)
 #define K_REMOVE K(KT_FN,22)
 #define K_SELECT K(KT_FN,23)
 #define K_PGUP K(KT_FN,24)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_PGDN K(KT_FN,25)  
 #define K_MACRO K(KT_FN,26)
 #define K_HELP K(KT_FN,27)
 #define K_DO K(KT_FN,28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_PAUSE K(KT_FN,29)
 #define K_F21 K(KT_FN,30)
 #define K_F22 K(KT_FN,31)
 #define K_F23 K(KT_FN,32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F24 K(KT_FN,33)
 #define K_F25 K(KT_FN,34)
 #define K_F26 K(KT_FN,35)
 #define K_F27 K(KT_FN,36)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F28 K(KT_FN,37)
 #define K_F29 K(KT_FN,38)
 #define K_F30 K(KT_FN,39)
 #define K_F31 K(KT_FN,40)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F32 K(KT_FN,41)
 #define K_F33 K(KT_FN,42)
 #define K_F34 K(KT_FN,43)
 #define K_F35 K(KT_FN,44)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F36 K(KT_FN,45)
 #define K_F37 K(KT_FN,46)
 #define K_F38 K(KT_FN,47)
 #define K_F39 K(KT_FN,48)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F40 K(KT_FN,49)
 #define K_F41 K(KT_FN,50)
 #define K_F42 K(KT_FN,51)
 #define K_F43 K(KT_FN,52)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F44 K(KT_FN,53)
 #define K_F45 K(KT_FN,54)
 #define K_F46 K(KT_FN,55)
 #define K_F47 K(KT_FN,56)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F48 K(KT_FN,57)
 #define K_F49 K(KT_FN,58)
 #define K_F50 K(KT_FN,59)
 #define K_F51 K(KT_FN,60)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F52 K(KT_FN,61)
 #define K_F53 K(KT_FN,62)
 #define K_F54 K(KT_FN,63)
 #define K_F55 K(KT_FN,64)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F56 K(KT_FN,65)
 #define K_F57 K(KT_FN,66)
 #define K_F58 K(KT_FN,67)
 #define K_F59 K(KT_FN,68)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F60 K(KT_FN,69)
 #define K_F61 K(KT_FN,70)
 #define K_F62 K(KT_FN,71)
 #define K_F63 K(KT_FN,72)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F64 K(KT_FN,73)
 #define K_F65 K(KT_FN,74)
 #define K_F66 K(KT_FN,75)
 #define K_F67 K(KT_FN,76)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F68 K(KT_FN,77)
 #define K_F69 K(KT_FN,78)
 #define K_F70 K(KT_FN,79)
 #define K_F71 K(KT_FN,80)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F72 K(KT_FN,81)
 #define K_F73 K(KT_FN,82)
 #define K_F74 K(KT_FN,83)
 #define K_F75 K(KT_FN,84)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F76 K(KT_FN,85)
 #define K_F77 K(KT_FN,86)
 #define K_F78 K(KT_FN,87)
 #define K_F79 K(KT_FN,88)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F80 K(KT_FN,89)
 #define K_F81 K(KT_FN,90)
 #define K_F82 K(KT_FN,91)
 #define K_F83 K(KT_FN,92)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F84 K(KT_FN,93)
 #define K_F85 K(KT_FN,94)
 #define K_F86 K(KT_FN,95)
 #define K_F87 K(KT_FN,96)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F88 K(KT_FN,97)
 #define K_F89 K(KT_FN,98)
 #define K_F90 K(KT_FN,99)
 #define K_F91 K(KT_FN,100)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F92 K(KT_FN,101)
 #define K_F93 K(KT_FN,102)
 #define K_F94 K(KT_FN,103)
 #define K_F95 K(KT_FN,104)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F96 K(KT_FN,105)
 #define K_F97 K(KT_FN,106)
 #define K_F98 K(KT_FN,107)
 #define K_F99 K(KT_FN,108)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F100 K(KT_FN,109)
 #define K_F101 K(KT_FN,110)
 #define K_F102 K(KT_FN,111)
 #define K_F103 K(KT_FN,112)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F104 K(KT_FN,113)
 #define K_F105 K(KT_FN,114)
 #define K_F106 K(KT_FN,115)
 #define K_F107 K(KT_FN,116)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F108 K(KT_FN,117)
 #define K_F109 K(KT_FN,118)
 #define K_F110 K(KT_FN,119)
 #define K_F111 K(KT_FN,120)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F112 K(KT_FN,121)
 #define K_F113 K(KT_FN,122)
 #define K_F114 K(KT_FN,123)
 #define K_F115 K(KT_FN,124)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F116 K(KT_FN,125)
 #define K_F117 K(KT_FN,126)
 #define K_F118 K(KT_FN,127)
 #define K_F119 K(KT_FN,128)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F120 K(KT_FN,129)
 #define K_F121 K(KT_FN,130)
 #define K_F122 K(KT_FN,131)
 #define K_F123 K(KT_FN,132)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F124 K(KT_FN,133)
 #define K_F125 K(KT_FN,134)
 #define K_F126 K(KT_FN,135)
 #define K_F127 K(KT_FN,136)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F128 K(KT_FN,137)
 #define K_F129 K(KT_FN,138)
 #define K_F130 K(KT_FN,139)
 #define K_F131 K(KT_FN,140)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F132 K(KT_FN,141)
 #define K_F133 K(KT_FN,142)
 #define K_F134 K(KT_FN,143)
 #define K_F135 K(KT_FN,144)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F136 K(KT_FN,145)
 #define K_F137 K(KT_FN,146)
 #define K_F138 K(KT_FN,147)
 #define K_F139 K(KT_FN,148)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F140 K(KT_FN,149)
 #define K_F141 K(KT_FN,150)
 #define K_F142 K(KT_FN,151)
 #define K_F143 K(KT_FN,152)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F144 K(KT_FN,153)
 #define K_F145 K(KT_FN,154)
 #define K_F146 K(KT_FN,155)
 #define K_F147 K(KT_FN,156)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F148 K(KT_FN,157)
 #define K_F149 K(KT_FN,158)
 #define K_F150 K(KT_FN,159)
 #define K_F151 K(KT_FN,160)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F152 K(KT_FN,161)
 #define K_F153 K(KT_FN,162)
 #define K_F154 K(KT_FN,163)
 #define K_F155 K(KT_FN,164)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F156 K(KT_FN,165)
 #define K_F157 K(KT_FN,166)
 #define K_F158 K(KT_FN,167)
 #define K_F159 K(KT_FN,168)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F160 K(KT_FN,169)
 #define K_F161 K(KT_FN,170)
 #define K_F162 K(KT_FN,171)
 #define K_F163 K(KT_FN,172)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F164 K(KT_FN,173)
 #define K_F165 K(KT_FN,174)
 #define K_F166 K(KT_FN,175)
 #define K_F167 K(KT_FN,176)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F168 K(KT_FN,177)
 #define K_F169 K(KT_FN,178)
 #define K_F170 K(KT_FN,179)
 #define K_F171 K(KT_FN,180)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F172 K(KT_FN,181)
 #define K_F173 K(KT_FN,182)
 #define K_F174 K(KT_FN,183)
 #define K_F175 K(KT_FN,184)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F176 K(KT_FN,185)
 #define K_F177 K(KT_FN,186)
 #define K_F178 K(KT_FN,187)
 #define K_F179 K(KT_FN,188)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F180 K(KT_FN,189)
 #define K_F181 K(KT_FN,190)
 #define K_F182 K(KT_FN,191)
 #define K_F183 K(KT_FN,192)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F184 K(KT_FN,193)
 #define K_F185 K(KT_FN,194)
 #define K_F186 K(KT_FN,195)
 #define K_F187 K(KT_FN,196)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F188 K(KT_FN,197)
 #define K_F189 K(KT_FN,198)
 #define K_F190 K(KT_FN,199)
 #define K_F191 K(KT_FN,200)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F192 K(KT_FN,201)
 #define K_F193 K(KT_FN,202)
 #define K_F194 K(KT_FN,203)
 #define K_F195 K(KT_FN,204)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F196 K(KT_FN,205)
 #define K_F197 K(KT_FN,206)
 #define K_F198 K(KT_FN,207)
 #define K_F199 K(KT_FN,208)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F200 K(KT_FN,209)
 #define K_F201 K(KT_FN,210)
 #define K_F202 K(KT_FN,211)
 #define K_F203 K(KT_FN,212)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F204 K(KT_FN,213)
 #define K_F205 K(KT_FN,214)
 #define K_F206 K(KT_FN,215)
 #define K_F207 K(KT_FN,216)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F208 K(KT_FN,217)
 #define K_F209 K(KT_FN,218)
 #define K_F210 K(KT_FN,219)
 #define K_F211 K(KT_FN,220)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F212 K(KT_FN,221)
 #define K_F213 K(KT_FN,222)
 #define K_F214 K(KT_FN,223)
 #define K_F215 K(KT_FN,224)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F216 K(KT_FN,225)
 #define K_F217 K(KT_FN,226)
 #define K_F218 K(KT_FN,227)
 #define K_F219 K(KT_FN,228)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F220 K(KT_FN,229)
 #define K_F221 K(KT_FN,230)
 #define K_F222 K(KT_FN,231)
 #define K_F223 K(KT_FN,232)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F224 K(KT_FN,233)
 #define K_F225 K(KT_FN,234)
 #define K_F226 K(KT_FN,235)
 #define K_F227 K(KT_FN,236)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F228 K(KT_FN,237)
 #define K_F229 K(KT_FN,238)
 #define K_F230 K(KT_FN,239)
 #define K_F231 K(KT_FN,240)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F232 K(KT_FN,241)
 #define K_F233 K(KT_FN,242)
 #define K_F234 K(KT_FN,243)
 #define K_F235 K(KT_FN,244)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F236 K(KT_FN,245)
 #define K_F237 K(KT_FN,246)
 #define K_F238 K(KT_FN,247)
 #define K_F239 K(KT_FN,248)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F240 K(KT_FN,249)
 #define K_F241 K(KT_FN,250)
 #define K_F242 K(KT_FN,251)
 #define K_F243 K(KT_FN,252)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_F244 K(KT_FN,253)
 #define K_F245 K(KT_FN,254)
 #define K_UNDO K(KT_FN,255)
-
 #define K_HOLE K(KT_SPEC,0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_ENTER K(KT_SPEC,1)
 #define K_SH_REGS K(KT_SPEC,2)
 #define K_SH_MEM K(KT_SPEC,3)
 #define K_SH_STAT K(KT_SPEC,4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_BREAK K(KT_SPEC,5)
 #define K_CONS K(KT_SPEC,6)
 #define K_CAPS K(KT_SPEC,7)
 #define K_NUM K(KT_SPEC,8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_HOLD K(KT_SPEC,9)
 #define K_SCROLLFORW K(KT_SPEC,10)
 #define K_SCROLLBACK K(KT_SPEC,11)
 #define K_BOOT K(KT_SPEC,12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_CAPSON K(KT_SPEC,13)
 #define K_COMPOSE K(KT_SPEC,14)
 #define K_SAK K(KT_SPEC,15)
 #define K_DECRCONSOLE K(KT_SPEC,16)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_INCRCONSOLE K(KT_SPEC,17)
 #define K_SPAWNCONSOLE K(KT_SPEC,18)
 #define K_BARENUMLOCK K(KT_SPEC,19)
-
 #define K_ALLOCATED K(KT_SPEC,126)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_NOSUCHMAP K(KT_SPEC,127)  
-
 #define K_P0 K(KT_PAD,0)
 #define K_P1 K(KT_PAD,1)
 #define K_P2 K(KT_PAD,2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_P3 K(KT_PAD,3)
 #define K_P4 K(KT_PAD,4)
 #define K_P5 K(KT_PAD,5)
 #define K_P6 K(KT_PAD,6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_P7 K(KT_PAD,7)
 #define K_P8 K(KT_PAD,8)
 #define K_P9 K(KT_PAD,9)
 #define K_PPLUS K(KT_PAD,10)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_PMINUS K(KT_PAD,11)  
 #define K_PSTAR K(KT_PAD,12)  
 #define K_PSLASH K(KT_PAD,13)  
 #define K_PENTER K(KT_PAD,14)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_PCOMMA K(KT_PAD,15)  
 #define K_PDOT K(KT_PAD,16)  
 #define K_PPLUSMINUS K(KT_PAD,17)  
 #define K_PPARENL K(KT_PAD,18)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_PPARENR K(KT_PAD,19)  
-
 #define NR_PAD 20
-
 #define K_DGRAVE K(KT_DEAD,0)
 #define K_DACUTE K(KT_DEAD,1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_DCIRCM K(KT_DEAD,2)
 #define K_DTILDE K(KT_DEAD,3)
 #define K_DDIERE K(KT_DEAD,4)
 #define K_DCEDIL K(KT_DEAD,5)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NR_DEAD 6
-
 #define K_DOWN K(KT_CUR,0)
 #define K_LEFT K(KT_CUR,1)
 #define K_RIGHT K(KT_CUR,2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_UP K(KT_CUR,3)
-
 #define K_SHIFT K(KT_SHIFT,KG_SHIFT)
 #define K_CTRL K(KT_SHIFT,KG_CTRL)
 #define K_ALT K(KT_SHIFT,KG_ALT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_ALTGR K(KT_SHIFT,KG_ALTGR)
 #define K_SHIFTL K(KT_SHIFT,KG_SHIFTL)
 #define K_SHIFTR K(KT_SHIFT,KG_SHIFTR)
 #define K_CTRLL K(KT_SHIFT,KG_CTRLL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_CTRLR K(KT_SHIFT,KG_CTRLR)
 #define K_CAPSSHIFT K(KT_SHIFT,KG_CAPSSHIFT)
-
 #define K_ASC0 K(KT_ASCII,0)
 #define K_ASC1 K(KT_ASCII,1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_ASC2 K(KT_ASCII,2)
 #define K_ASC3 K(KT_ASCII,3)
 #define K_ASC4 K(KT_ASCII,4)
 #define K_ASC5 K(KT_ASCII,5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_ASC6 K(KT_ASCII,6)
 #define K_ASC7 K(KT_ASCII,7)
 #define K_ASC8 K(KT_ASCII,8)
 #define K_ASC9 K(KT_ASCII,9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_HEX0 K(KT_ASCII,10)
 #define K_HEX1 K(KT_ASCII,11)
 #define K_HEX2 K(KT_ASCII,12)
 #define K_HEX3 K(KT_ASCII,13)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_HEX4 K(KT_ASCII,14)
 #define K_HEX5 K(KT_ASCII,15)
 #define K_HEX6 K(KT_ASCII,16)
 #define K_HEX7 K(KT_ASCII,17)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_HEX8 K(KT_ASCII,18)
 #define K_HEX9 K(KT_ASCII,19)
 #define K_HEXa K(KT_ASCII,20)
 #define K_HEXb K(KT_ASCII,21)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_HEXc K(KT_ASCII,22)
 #define K_HEXd K(KT_ASCII,23)
 #define K_HEXe K(KT_ASCII,24)
 #define K_HEXf K(KT_ASCII,25)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NR_ASCII 26
-
 #define K_SHIFTLOCK K(KT_LOCK,KG_SHIFT)
 #define K_CTRLLOCK K(KT_LOCK,KG_CTRL)
 #define K_ALTLOCK K(KT_LOCK,KG_ALT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_ALTGRLOCK K(KT_LOCK,KG_ALTGR)
 #define K_SHIFTLLOCK K(KT_LOCK,KG_SHIFTL)
 #define K_SHIFTRLOCK K(KT_LOCK,KG_SHIFTR)
 #define K_CTRLLLOCK K(KT_LOCK,KG_CTRLL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_CTRLRLOCK K(KT_LOCK,KG_CTRLR)
-
 #define K_SHIFT_SLOCK K(KT_SLOCK,KG_SHIFT)
 #define K_CTRL_SLOCK K(KT_SLOCK,KG_CTRL)
 #define K_ALT_SLOCK K(KT_SLOCK,KG_ALT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_ALTGR_SLOCK K(KT_SLOCK,KG_ALTGR)
 #define K_SHIFTL_SLOCK K(KT_SLOCK,KG_SHIFTL)
 #define K_SHIFTR_SLOCK K(KT_SLOCK,KG_SHIFTR)
 #define K_CTRLL_SLOCK K(KT_SLOCK,KG_CTRLL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_CTRLR_SLOCK K(KT_SLOCK,KG_CTRLR)
-
 #define NR_LOCK 8
-
 #define K_BRL_BLANK K(KT_BRL, 0)
 #define K_BRL_DOT1 K(KT_BRL, 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_BRL_DOT2 K(KT_BRL, 2)
 #define K_BRL_DOT3 K(KT_BRL, 3)
 #define K_BRL_DOT4 K(KT_BRL, 4)
 #define K_BRL_DOT5 K(KT_BRL, 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define K_BRL_DOT6 K(KT_BRL, 6)
 #define K_BRL_DOT7 K(KT_BRL, 7)
 #define K_BRL_DOT8 K(KT_BRL, 8)
-
 #define NR_BRL 9
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_DIACR 256
 #endif
diff --git a/libc/kernel/common/linux/keychord.h b/libc/kernel/common/linux/keychord.h
index 9148431..a56c622 100644
--- a/libc/kernel/common/linux/keychord.h
+++ b/libc/kernel/common/linux/keychord.h
@@ -7,24 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_KEYCHORD_H_
 #define __LINUX_KEYCHORD_H_
-
 #include <linux/input.h>
-
 #define KEYCHORD_VERSION 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct input_keychord {
-
  __u16 version;
-
  __u16 id;
-
  __u16 count;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 keycodes[];
 };
-
 #endif
diff --git a/libc/kernel/common/linux/klist.h b/libc/kernel/common/linux/klist.h
index 0df014f..3afbc21 100644
--- a/libc/kernel/common/linux/klist.h
+++ b/libc/kernel/common/linux/klist.h
@@ -7,35 +7,43 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_KLIST_H
 #define _LINUX_KLIST_H
-
 #include <linux/spinlock.h>
 #include <linux/completion.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/kref.h>
 #include <linux/list.h>
-
 struct klist_node;
 struct klist {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  spinlock_t k_lock;
  struct list_head k_list;
  void (*get)(struct klist_node *);
  void (*put)(struct klist_node *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct klist_node {
  struct klist * n_klist;
  struct list_head n_node;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct kref n_ref;
  struct completion n_removed;
 };
-
 struct klist_iter {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct klist * i_klist;
  struct list_head * i_head;
  struct klist_node * i_cur;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/kmod.h b/libc/kernel/common/linux/kmod.h
index d24456d..a561261 100644
--- a/libc/kernel/common/linux/kmod.h
+++ b/libc/kernel/common/linux/kmod.h
@@ -7,17 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_KMOD_H__
 #define __LINUX_KMOD_H__
-
 #include <linux/stddef.h>
 #include <linux/errno.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/compiler.h>
-
 #define KMOD_PATH_LEN 256
-
 #define try_then_request_module(x, mod...) ((x) ?: (request_module(mod), (x)))
-
+struct key;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/kobject.h b/libc/kernel/common/linux/kobject.h
index c61a950..93c606b 100644
--- a/libc/kernel/common/linux/kobject.h
+++ b/libc/kernel/common/linux/kobject.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _KOBJECT_H_
 #define _KOBJECT_H_
-
 #endif
diff --git a/libc/kernel/common/linux/kref.h b/libc/kernel/common/linux/kref.h
index ee02b7f..8c40493 100644
--- a/libc/kernel/common/linux/kref.h
+++ b/libc/kernel/common/linux/kref.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _KREF_H_
 #define _KREF_H_
-
 #endif
diff --git a/libc/kernel/common/linux/ktime.h b/libc/kernel/common/linux/ktime.h
index 34f8f0f..d3f167f 100644
--- a/libc/kernel/common/linux/ktime.h
+++ b/libc/kernel/common/linux/ktime.h
@@ -7,46 +7,53 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_KTIME_H
 #define _LINUX_KTIME_H
-
 #include <linux/time.h>
 #include <linux/jiffies.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef union {
  s64 tv64;
 #if BITS_PER_LONG != (64 && !defined(CONFIG_KTIME_SCALAR))
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __BIG_ENDIAN
  s32 sec, nsec;
 #else
  s32 nsec, sec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  } tv;
 #endif
 } ktime_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KTIME_MAX ((s64)~((u64)1 << 63))
 #define KTIME_SEC_MAX (KTIME_MAX / NSEC_PER_SEC)
-
 #if BITS_PER_LONG == 64
-
 #if BITS_PER_LONG == 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define ktime_sub(lhs, rhs)   ({ (ktime_t){ .tv64 = (lhs).tv64 - (rhs).tv64 }; })
 #define ktime_add(lhs, rhs)   ({ (ktime_t){ .tv64 = (lhs).tv64 + (rhs).tv64 }; })
 #define ktime_add_ns(kt, nsval)   ({ (ktime_t){ .tv64 = (kt).tv64 + (nsval) }; })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ktime_to_timespec(kt) ns_to_timespec((kt).tv64)
 #define ktime_to_timeval(kt) ns_to_timeval((kt).tv64)
 #define ktime_to_ns(kt) ((kt).tv64)
 #else
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define KTIME_REALTIME_RES (ktime_t){ .tv64 = TICK_NSEC }
 #define KTIME_MONOTONIC_RES (ktime_t){ .tv64 = TICK_NSEC }
-
 #define ktime_get_real_ts(ts) getnstimeofday(ts)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/kxtf9.h b/libc/kernel/common/linux/kxtf9.h
index 9141364..eb17df0 100644
--- a/libc/kernel/common/linux/kxtf9.h
+++ b/libc/kernel/common/linux/kxtf9.h
@@ -7,64 +7,70 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __KXTF9_H__
 #define __KXTF9_H__
-
 #include <linux/ioctl.h>  
-
 #define KXTF9_IOCTL_BASE 77
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KXTF9_IOCTL_SET_DELAY _IOW(KXTF9_IOCTL_BASE, 0, int)
 #define KXTF9_IOCTL_GET_DELAY _IOR(KXTF9_IOCTL_BASE, 1, int)
 #define KXTF9_IOCTL_SET_ENABLE _IOW(KXTF9_IOCTL_BASE, 2, int)
 #define KXTF9_IOCTL_GET_ENABLE _IOR(KXTF9_IOCTL_BASE, 3, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KXTF9_IOCTL_SET_G_RANGE _IOW(KXTF9_IOCTL_BASE, 4, int)
-
 #define KXTF9_IOCTL_SET_TILT_ENABLE _IOW(KXTF9_IOCTL_BASE, 5, int)
 #define KXTF9_IOCTL_SET_TAP_ENABLE _IOW(KXTF9_IOCTL_BASE, 6, int)
 #define KXTF9_IOCTL_SET_WAKE_ENABLE _IOW(KXTF9_IOCTL_BASE, 7, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KXTF9_IOCTL_SET_PM_MODE _IOW(KXTF9_IOCTL_BASE, 8, int)
 #define KXTF9_IOCTL_SELF_TEST _IOW(KXTF9_IOCTL_BASE, 9, int)
 #define KXTF9_IOCTL_SET_SENSITIVITY _IOW(KXTF9_IOCTL_BASE, 10, int)
-
 #define RES_12BIT 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KXTF9_G_2G 0x00
 #define KXTF9_G_4G 0x08
 #define KXTF9_G_8G 0x10
 #define TPE 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WUFE 0x02  
 #define TDTE 0x04  
-
 #define OTP1_6 0x00  
 #define OTP6_3 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OTP12_5 0x40
 #define OTP50 0x60
 #define OWUF25 0x00  
 #define OWUF50 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OWUF100 0x02
 #define OWUF200 0x03
 #define OTDT50 0x00  
 #define OTDT100 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OTDT200 0x08
 #define OTDT400 0x0C
-
 #define IEN 0x20  
 #define IEA 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IEL 0x08  
 #define IEU 0x04  
-
 #define ODR800 0x06  
 #define ODR400 0x05
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ODR200 0x04
 #define ODR100 0x03
 #define ODR50 0x02
 #define ODR25 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ODR12_5 0x00
-
 #define SENSITIVITY_REGS 0x07
-
 #endif
-
-
diff --git a/libc/kernel/common/linux/l3g4200d.h b/libc/kernel/common/linux/l3g4200d.h
index 0a0f8cd..210f50b 100644
--- a/libc/kernel/common/linux/l3g4200d.h
+++ b/libc/kernel/common/linux/l3g4200d.h
@@ -7,21 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __L3G4200D_H__
 #define __L3G4200D_H__
-
 #include <linux/ioctl.h>  
-
 #define L3G4200D_NAME "l3g4200d"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define L3G4200D_IOCTL_BASE 77
-
 #define L3G4200D_IOCTL_SET_DELAY _IOW(L3G4200D_IOCTL_BASE, 0, int)
 #define L3G4200D_IOCTL_GET_DELAY _IOR(L3G4200D_IOCTL_BASE, 1, int)
 #define L3G4200D_IOCTL_SET_ENABLE _IOW(L3G4200D_IOCTL_BASE, 2, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define L3G4200D_IOCTL_GET_ENABLE _IOR(L3G4200D_IOCTL_BASE, 3, int)
-
 #endif
-
diff --git a/libc/kernel/common/linux/lightsensor.h b/libc/kernel/common/linux/lightsensor.h
index 70257ed..f0f7170 100644
--- a/libc/kernel/common/linux/lightsensor.h
+++ b/libc/kernel/common/linux/lightsensor.h
@@ -7,18 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_LIGHTSENSOR_H
 #define __LINUX_LIGHTSENSOR_H
-
 #include <linux/types.h>
 #include <linux/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LIGHTSENSOR_IOCTL_MAGIC 'l'
-
 #define LIGHTSENSOR_IOCTL_GET_ENABLED _IOR(LIGHTSENSOR_IOCTL_MAGIC, 1, int *)
 #define LIGHTSENSOR_IOCTL_ENABLE _IOW(LIGHTSENSOR_IOCTL_MAGIC, 2, int *)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/limits.h b/libc/kernel/common/linux/limits.h
index 5565e30..1b17700 100644
--- a/libc/kernel/common/linux/limits.h
+++ b/libc/kernel/common/linux/limits.h
@@ -7,27 +7,34 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_LIMITS_H
 #define _LINUX_LIMITS_H
-
 #define NR_OPEN 1024
-
 #define NGROUPS_MAX 65536  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARG_MAX 131072  
 #define CHILD_MAX 999  
 #define OPEN_MAX 256  
 #define LINK_MAX 127  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_CANON 255  
 #define MAX_INPUT 255  
 #define NAME_MAX 255  
 #define PATH_MAX 4096  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PIPE_BUF 4096  
 #define XATTR_NAME_MAX 255  
 #define XATTR_SIZE_MAX 65536  
 #define XATTR_LIST_MAX 65536  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTSIG_MAX 32
-
 #endif
diff --git a/libc/kernel/common/linux/linkage.h b/libc/kernel/common/linux/linkage.h
index e0194bc..5f3a027 100644
--- a/libc/kernel/common/linux/linkage.h
+++ b/libc/kernel/common/linux/linkage.h
@@ -7,60 +7,62 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_LINKAGE_H
 #define _LINUX_LINKAGE_H
-
 #include <asm/linkage.h>
-
 #ifdef __cplusplus
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPP_ASMLINKAGE extern "C"
 #else
 #define CPP_ASMLINKAGE
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef asmlinkage
 #define asmlinkage CPP_ASMLINKAGE
 #endif
-
 #ifndef prevent_tail_call
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define prevent_tail_call(ret) do { } while (0)
 #endif
-
 #ifndef __ALIGN
 #define __ALIGN .align 4,0x90
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ALIGN_STR ".align 4,0x90"
 #endif
-
 #ifdef __ASSEMBLY__
-
 #define ALIGN __ALIGN
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ALIGN_STR __ALIGN_STR
-
 #ifndef ENTRY
 #define ENTRY(name)   .globl name;   ALIGN;   name:
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KPROBE_ENTRY(name)   .section .kprobes.text, "ax";   ENTRY(name)
-
 #ifndef END
 #define END(name)   .size name, .-name
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef ENDPROC
 #define ENDPROC(name)   .type name, @function;   END(name)
 #endif
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NORET_TYPE  
 #define ATTRIB_NORET __attribute__((noreturn))
 #define NORET_AND noreturn,
-
 #ifndef FASTCALL
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FASTCALL(x) x
 #define fastcall
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/lis331dlh.h b/libc/kernel/common/linux/lis331dlh.h
index 49d1b12..ad381ec 100644
--- a/libc/kernel/common/linux/lis331dlh.h
+++ b/libc/kernel/common/linux/lis331dlh.h
@@ -7,24 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LIS331DLH_H__
 #define __LIS331DLH_H__
-
 #include <linux/ioctl.h>  
-
 #define LIS331DLH_IOCTL_BASE 77
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LIS331DLH_IOCTL_SET_DELAY _IOW(LIS331DLH_IOCTL_BASE, 0, int)
 #define LIS331DLH_IOCTL_GET_DELAY _IOR(LIS331DLH_IOCTL_BASE, 1, int)
 #define LIS331DLH_IOCTL_SET_ENABLE _IOW(LIS331DLH_IOCTL_BASE, 2, int)
 #define LIS331DLH_IOCTL_GET_ENABLE _IOR(LIS331DLH_IOCTL_BASE, 3, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LIS331DLH_IOCTL_SET_G_RANGE _IOW(LIS331DLH_IOCTL_BASE, 4, int)
-
 #define LIS331DLH_G_2G 0x00
 #define LIS331DLH_G_4G 0x10
 #define LIS331DLH_G_8G 0x30
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/list.h b/libc/kernel/common/linux/list.h
index d17871d..03c523f 100644
--- a/libc/kernel/common/linux/list.h
+++ b/libc/kernel/common/linux/list.h
@@ -7,10 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_LIST_H
 #define _LINUX_LIST_H
-
 #warning "don't include kernel headers in userspace"
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/lockd/nlm.h b/libc/kernel/common/linux/lockd/nlm.h
index d5d44fe..62f0814 100644
--- a/libc/kernel/common/linux/lockd/nlm.h
+++ b/libc/kernel/common/linux/lockd/nlm.h
@@ -7,44 +7,54 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_LOCKD_NLM_H
 #define LINUX_LOCKD_NLM_H
-
 #define NLM_OFFSET_MAX ((s32) 0x7fffffff)
 #define NLM4_OFFSET_MAX ((s64) ((~(u64)0) >> 1))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NLM_LCK_GRANTED = 0,
  NLM_LCK_DENIED = 1,
  NLM_LCK_DENIED_NOLOCKS = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NLM_LCK_BLOCKED = 3,
  NLM_LCK_DENIED_GRACE_PERIOD = 4,
 };
-
 #define NLM_PROGRAM 100021
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMPROC_NULL 0
 #define NLMPROC_TEST 1
 #define NLMPROC_LOCK 2
 #define NLMPROC_CANCEL 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMPROC_UNLOCK 4
 #define NLMPROC_GRANTED 5
 #define NLMPROC_TEST_MSG 6
 #define NLMPROC_LOCK_MSG 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMPROC_CANCEL_MSG 8
 #define NLMPROC_UNLOCK_MSG 9
 #define NLMPROC_GRANTED_MSG 10
 #define NLMPROC_TEST_RES 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMPROC_LOCK_RES 12
 #define NLMPROC_CANCEL_RES 13
 #define NLMPROC_UNLOCK_RES 14
 #define NLMPROC_GRANTED_RES 15
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMPROC_NSM_NOTIFY 16  
 #define NLMPROC_SHARE 20
 #define NLMPROC_UNSHARE 21
 #define NLMPROC_NM_LOCK 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMPROC_FREE_ALL 23
-
 #endif
diff --git a/libc/kernel/common/linux/lockd/xdr.h b/libc/kernel/common/linux/lockd/xdr.h
index 75d0308..2bac58e 100644
--- a/libc/kernel/common/linux/lockd/xdr.h
+++ b/libc/kernel/common/linux/lockd/xdr.h
@@ -7,67 +7,75 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LOCKD_XDR_H
 #define LOCKD_XDR_H
-
 #include <linux/fs.h>
 #include <linux/nfs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/sunrpc/xdr.h>
-
 #define NLM_MAXCOOKIELEN 32
 #define NLM_MAXSTRLEN 1024
-
 #define nlm_granted __constant_htonl(NLM_LCK_GRANTED)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define nlm_lck_denied __constant_htonl(NLM_LCK_DENIED)
 #define nlm_lck_denied_nolocks __constant_htonl(NLM_LCK_DENIED_NOLOCKS)
 #define nlm_lck_blocked __constant_htonl(NLM_LCK_BLOCKED)
 #define nlm_lck_denied_grace_period __constant_htonl(NLM_LCK_DENIED_GRACE_PERIOD)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nlm_lock {
  char * caller;
  int len;
  struct nfs_fh fh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct xdr_netobj oh;
  u32 svid;
  struct file_lock fl;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nlm_cookie
 {
  unsigned char data[NLM_MAXCOOKIELEN];
  unsigned int len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nlm_args {
  struct nlm_cookie cookie;
  struct nlm_lock lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 block;
  u32 reclaim;
  u32 state;
  u32 monitor;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 fsm_access;
  u32 fsm_mode;
 };
-
 typedef struct nlm_args nlm_args;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nlm_res {
  struct nlm_cookie cookie;
  u32 status;
  struct nlm_lock lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nlm_reboot {
  char * mon;
  int len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 state;
  u32 addr;
  u32 vers;
  u32 proto;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define NLMSVC_XDRSIZE sizeof(struct nlm_args)
-
 #endif
diff --git a/libc/kernel/common/linux/lockdep.h b/libc/kernel/common/linux/lockdep.h
index f5e8634..c6d6e4f 100644
--- a/libc/kernel/common/linux/lockdep.h
+++ b/libc/kernel/common/linux/lockdep.h
@@ -7,46 +7,52 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_LOCKDEP_H
 #define __LINUX_LOCKDEP_H
-
 #include <linux/linkage.h>
 #include <linux/list.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/debug_locks.h>
 #include <linux/stacktrace.h>
-
 #define lock_acquire(l, s, t, r, c, i) do { } while (0)
 #define lock_release(l, n, i) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define lockdep_init() do { } while (0)
 #define lockdep_info() do { } while (0)
 #define lockdep_init_map(lock, name, key) do { (void)(key); } while (0)
 #define lockdep_set_class(lock, key) do { (void)(key); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define lockdep_set_class_and_name(lock, key, name)   do { (void)(key); } while (0)
 #define INIT_LOCKDEP
 #define lockdep_reset() do { debug_locks = 1; } while (0)
 #define lockdep_free_key_range(start, size) do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct lock_class_key { };
 #define early_init_irq_lock_class() do { } while (0)
-
 #define early_boot_irqs_off() do { } while (0)
 #define early_boot_irqs_on() do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SINGLE_DEPTH_NESTING 1
-
 #define spin_acquire(l, s, t, i) do { } while (0)
 #define spin_release(l, n, i) do { } while (0)
-
 #define rwlock_acquire(l, s, t, i) do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rwlock_acquire_read(l, s, t, i) do { } while (0)
 #define rwlock_release(l, n, i) do { } while (0)
-
 #define mutex_acquire(l, s, t, i) do { } while (0)
 #define mutex_release(l, n, i) do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rwsem_acquire(l, s, t, i) do { } while (0)
 #define rwsem_acquire_read(l, s, t, i) do { } while (0)
 #define rwsem_release(l, n, i) do { } while (0)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/loop.h b/libc/kernel/common/linux/loop.h
index 9cdfd38..94baeb2 100644
--- a/libc/kernel/common/linux/loop.h
+++ b/libc/kernel/common/linux/loop.h
@@ -7,71 +7,84 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_LOOP_H
 #define _LINUX_LOOP_H
-
 #define LO_NAME_SIZE 64
 #define LO_KEY_SIZE 32
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  LO_FLAGS_READ_ONLY = 1,
  LO_FLAGS_USE_AOPS = 2,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/posix_types.h>  
 #include <asm/types.h>  
-
 struct loop_info {
  int lo_number;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_old_dev_t lo_device;
  unsigned long lo_inode;
  __kernel_old_dev_t lo_rdevice;
  int lo_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int lo_encrypt_type;
  int lo_encrypt_key_size;
  int lo_flags;
  char lo_name[LO_NAME_SIZE];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char lo_encrypt_key[LO_KEY_SIZE];
  unsigned long lo_init[2];
  char reserved[4];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct loop_info64 {
  __u64 lo_device;
  __u64 lo_inode;
  __u64 lo_rdevice;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 lo_offset;
  __u64 lo_sizelimit;
  __u32 lo_number;
  __u32 lo_encrypt_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 lo_encrypt_key_size;
  __u32 lo_flags;
  __u8 lo_file_name[LO_NAME_SIZE];
  __u8 lo_crypt_name[LO_NAME_SIZE];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 lo_encrypt_key[LO_KEY_SIZE];
  __u64 lo_init[2];
 };
-
 #define LO_CRYPT_NONE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LO_CRYPT_XOR 1
 #define LO_CRYPT_DES 2
 #define LO_CRYPT_FISH2 3  
 #define LO_CRYPT_BLOW 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LO_CRYPT_CAST128 5
 #define LO_CRYPT_IDEA 6
 #define LO_CRYPT_DUMMY 9
 #define LO_CRYPT_SKIPJACK 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LO_CRYPT_CRYPTOAPI 18
 #define MAX_LO_CRYPT 20
-
 #define LOOP_SET_FD 0x4C00
 #define LOOP_CLR_FD 0x4C01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LOOP_SET_STATUS 0x4C02
 #define LOOP_GET_STATUS 0x4C03
 #define LOOP_SET_STATUS64 0x4C04
 #define LOOP_GET_STATUS64 0x4C05
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LOOP_CHANGE_FD 0x4C06
-
 #endif
diff --git a/libc/kernel/common/linux/magic.h b/libc/kernel/common/linux/magic.h
index c94f9ce..76f334c 100644
--- a/libc/kernel/common/linux/magic.h
+++ b/libc/kernel/common/linux/magic.h
@@ -7,49 +7,57 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MAGIC_H__
 #define __LINUX_MAGIC_H__
-
 #define ADFS_SUPER_MAGIC 0xadf5
 #define AFFS_SUPER_MAGIC 0xadff
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFS_SUPER_MAGIC 0x5346414F
 #define AUTOFS_SUPER_MAGIC 0x0187
 #define CODA_SUPER_MAGIC 0x73757245
 #define EFS_SUPER_MAGIC 0x414A53
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXT2_SUPER_MAGIC 0xEF53
 #define EXT3_SUPER_MAGIC 0xEF53
 #define EXT4_SUPER_MAGIC 0xEF53
 #define HPFS_SUPER_MAGIC 0xf995e849
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ISOFS_SUPER_MAGIC 0x9660
 #define JFFS2_SUPER_MAGIC 0x72b6
 #define ANON_INODE_FS_MAGIC 0x09041934
-
 #define MINIX_SUPER_MAGIC 0x137F  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MINIX_SUPER_MAGIC2 0x138F  
 #define MINIX2_SUPER_MAGIC 0x2468  
 #define MINIX2_SUPER_MAGIC2 0x2478  
 #define MINIX3_SUPER_MAGIC 0x4d5a  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSDOS_SUPER_MAGIC 0x4d44  
 #define NCP_SUPER_MAGIC 0x564c  
 #define NFS_SUPER_MAGIC 0x6969
 #define OPENPROM_SUPER_MAGIC 0x9fa1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PROC_SUPER_MAGIC 0x9fa0
 #define QNX4_SUPER_MAGIC 0x002f  
-
 #define REISERFS_SUPER_MAGIC 0x52654973  
-
 #define REISERFS_SUPER_MAGIC_STRING "ReIsErFs"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REISER2FS_SUPER_MAGIC_STRING "ReIsEr2Fs"
 #define REISER2FS_JR_SUPER_MAGIC_STRING "ReIsEr3Fs"
-
 #define SMB_SUPER_MAGIC 0x517B
 #define USBDEVICE_SUPER_MAGIC 0x9fa2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CGROUP_SUPER_MAGIC 0x27e0eb
-
 #define FUTEXFS_SUPER_MAGIC 0xBAD1DEA
 #define INOTIFYFS_SUPER_MAGIC 0x2BAD1DEA
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/major.h b/libc/kernel/common/linux/major.h
index e42d698..7cf511e 100644
--- a/libc/kernel/common/linux/major.h
+++ b/libc/kernel/common/linux/major.h
@@ -7,169 +7,183 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MAJOR_H
 #define _LINUX_MAJOR_H
-
 #define UNNAMED_MAJOR 0
 #define MEM_MAJOR 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RAMDISK_MAJOR 1
 #define FLOPPY_MAJOR 2
 #define PTY_MASTER_MAJOR 2
 #define IDE0_MAJOR 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HD_MAJOR IDE0_MAJOR
 #define PTY_SLAVE_MAJOR 3
 #define TTY_MAJOR 4
 #define TTYAUX_MAJOR 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LP_MAJOR 6
 #define VCS_MAJOR 7
 #define LOOP_MAJOR 7
 #define SCSI_DISK0_MAJOR 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCSI_TAPE_MAJOR 9
 #define MD_MAJOR 9
 #define MISC_MAJOR 10
 #define SCSI_CDROM_MAJOR 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MUX_MAJOR 11  
 #define XT_DISK_MAJOR 13
 #define INPUT_MAJOR 13
 #define SOUND_MAJOR 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CDU31A_CDROM_MAJOR 15
 #define JOYSTICK_MAJOR 15
 #define GOLDSTAR_CDROM_MAJOR 16
 #define OPTICS_CDROM_MAJOR 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SANYO_CDROM_MAJOR 18
 #define CYCLADES_MAJOR 19
 #define CYCLADESAUX_MAJOR 20
 #define MITSUMI_X_CDROM_MAJOR 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MFM_ACORN_MAJOR 21  
 #define SCSI_GENERIC_MAJOR 21
 #define IDE1_MAJOR 22
 #define DIGICU_MAJOR 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DIGI_MAJOR 23
 #define MITSUMI_CDROM_MAJOR 23
 #define CDU535_CDROM_MAJOR 24
 #define STL_SERIALMAJOR 24
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MATSUSHITA_CDROM_MAJOR 25
 #define STL_CALLOUTMAJOR 25
 #define MATSUSHITA_CDROM2_MAJOR 26
 #define QIC117_TAPE_MAJOR 27
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MATSUSHITA_CDROM3_MAJOR 27
 #define MATSUSHITA_CDROM4_MAJOR 28
 #define STL_SIOMEMMAJOR 28
 #define ACSI_MAJOR 28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AZTECH_CDROM_MAJOR 29
 #define GRAPHDEV_MAJOR 29  
 #define CM206_CDROM_MAJOR 32
 #define IDE2_MAJOR 33
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDE3_MAJOR 34
 #define Z8530_MAJOR 34
 #define XPRAM_MAJOR 35  
 #define NETLINK_MAJOR 36
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PS2ESDI_MAJOR 36
 #define IDETAPE_MAJOR 37
 #define Z2RAM_MAJOR 37
 #define APBLOCK_MAJOR 38  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DDV_MAJOR 39  
 #define NBD_MAJOR 43  
 #define RISCOM8_NORMAL_MAJOR 48
 #define DAC960_MAJOR 48  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RISCOM8_CALLOUT_MAJOR 49
 #define MKISS_MAJOR 55
 #define DSP56K_MAJOR 55  
-
 #define IDE4_MAJOR 56
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDE5_MAJOR 57
-
 #define SCSI_DISK1_MAJOR 65
 #define SCSI_DISK2_MAJOR 66
 #define SCSI_DISK3_MAJOR 67
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCSI_DISK4_MAJOR 68
 #define SCSI_DISK5_MAJOR 69
 #define SCSI_DISK6_MAJOR 70
 #define SCSI_DISK7_MAJOR 71
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COMPAQ_SMART2_MAJOR 72
 #define COMPAQ_SMART2_MAJOR1 73
 #define COMPAQ_SMART2_MAJOR2 74
 #define COMPAQ_SMART2_MAJOR3 75
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COMPAQ_SMART2_MAJOR4 76
 #define COMPAQ_SMART2_MAJOR5 77
 #define COMPAQ_SMART2_MAJOR6 78
 #define COMPAQ_SMART2_MAJOR7 79
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPECIALIX_NORMAL_MAJOR 75
 #define SPECIALIX_CALLOUT_MAJOR 76
-
 #define AURORA_MAJOR 79
-
 #define I2O_MAJOR 80  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHMIQ_MAJOR 85  
 #define SCSI_CHANGER_MAJOR 86
-
 #define IDE6_MAJOR 88
 #define IDE7_MAJOR 89
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IDE8_MAJOR 90
 #define IDE9_MAJOR 91
-
 #define DASD_MAJOR 94
-
 #define MDISK_MAJOR 95
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UBD_MAJOR 98
-
 #define PP_MAJOR 99
 #define JSFD_MAJOR 99
-
 #define PHONE_MAJOR 100
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COMPAQ_CISS_MAJOR 104
 #define COMPAQ_CISS_MAJOR1 105
 #define COMPAQ_CISS_MAJOR2 106
 #define COMPAQ_CISS_MAJOR3 107
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define COMPAQ_CISS_MAJOR4 108
 #define COMPAQ_CISS_MAJOR5 109
 #define COMPAQ_CISS_MAJOR6 110
 #define COMPAQ_CISS_MAJOR7 111
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIODASD_MAJOR 112
 #define VIOCD_MAJOR 113
-
 #define ATARAID_MAJOR 114
-
 #define SCSI_DISK8_MAJOR 128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCSI_DISK9_MAJOR 129
 #define SCSI_DISK10_MAJOR 130
 #define SCSI_DISK11_MAJOR 131
 #define SCSI_DISK12_MAJOR 132
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCSI_DISK13_MAJOR 133
 #define SCSI_DISK14_MAJOR 134
 #define SCSI_DISK15_MAJOR 135
-
 #define UNIX98_PTY_MASTER_MAJOR 128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UNIX98_PTY_MAJOR_COUNT 8
 #define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT)
-
 #define RTF_MAJOR 150
 #define RAW_MAJOR 162
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_ACM_MAJOR 166
 #define USB_ACM_AUX_MAJOR 167
 #define USB_CHAR_MAJOR 180
-
 #define VXVM_MAJOR 199  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VXSPEC_MAJOR 200  
 #define VXDMP_MAJOR 201  
-
 #define MSR_MAJOR 202
 #define CPUID_MAJOR 203
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OSST_MAJOR 206  
-
 #define IBM_TTY3270_MAJOR 227
 #define IBM_FS3270_MAJOR 228
-
 #define VIOTAPE_MAJOR 230
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/max9635.h b/libc/kernel/common/linux/max9635.h
index e696fa9..563100e 100644
--- a/libc/kernel/common/linux/max9635.h
+++ b/libc/kernel/common/linux/max9635.h
@@ -7,17 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MAX9635_H__
 #define _LINUX_MAX9635_H__
-
 #define MAX9635_NAME "MAX9635_als"
 #define FOPS_MAX9635_NAME "MAX9635"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX9635_IO 0xA3
-
 #define MAX9635_IOCTL_GET_ENABLE _IOR(MAX9635_IO, 0x00, char)
 #define MAX9635_IOCTL_SET_ENABLE _IOW(MAX9635_IO, 0x01, char)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mc146818rtc.h b/libc/kernel/common/linux/mc146818rtc.h
index 74436ea..d606489 100644
--- a/libc/kernel/common/linux/mc146818rtc.h
+++ b/libc/kernel/common/linux/mc146818rtc.h
@@ -7,73 +7,74 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MC146818RTC_H
 #define _MC146818RTC_H
-
 #include <asm/io.h>
 #include <linux/rtc.h>  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/mc146818rtc.h>  
-
 #define RTC_SECONDS 0
 #define RTC_SECONDS_ALARM 1
 #define RTC_MINUTES 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_MINUTES_ALARM 3
 #define RTC_HOURS 4
 #define RTC_HOURS_ALARM 5
-
 #define RTC_ALARM_DONT_CARE 0xC0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_DAY_OF_WEEK 6
 #define RTC_DAY_OF_MONTH 7
 #define RTC_MONTH 8
 #define RTC_YEAR 9
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_REG_A 10
 #define RTC_REG_B 11
 #define RTC_REG_C 12
 #define RTC_REG_D 13
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_FREQ_SELECT RTC_REG_A
-
 #define RTC_UIP 0x80
 #define RTC_DIV_CTL 0x70
-
 #define RTC_REF_CLCK_4MHZ 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_REF_CLCK_1MHZ 0x10
 #define RTC_REF_CLCK_32KHZ 0x20
-
 #define RTC_DIV_RESET1 0x60
 #define RTC_DIV_RESET2 0x70
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_RATE_SELECT 0x0F
-
 #define RTC_CONTROL RTC_REG_B
 #define RTC_SET 0x80  
 #define RTC_PIE 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_AIE 0x20  
 #define RTC_UIE 0x10  
 #define RTC_SQWE 0x08  
 #define RTC_DM_BINARY 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_24H 0x02  
 #define RTC_DST_EN 0x01  
-
 #define RTC_INTR_FLAGS RTC_REG_C
-
 #define RTC_IRQF 0x80  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_PF 0x40
 #define RTC_AF 0x20
 #define RTC_UF 0x10
-
 #define RTC_VALID RTC_REG_D
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_VRT 0x80  
-
 #ifndef ARCH_RTC_LOCATION
-
 #define RTC_IO_EXTENT 0x8
 #define RTC_IOMAPPED 1  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #endif
diff --git a/libc/kernel/common/linux/mca.h b/libc/kernel/common/linux/mca.h
index dfbfc2a..488603f 100644
--- a/libc/kernel/common/linux/mca.h
+++ b/libc/kernel/common/linux/mca.h
@@ -7,68 +7,73 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MCA_H
 #define _LINUX_MCA_H
-
 #include <linux/device.h>
-
 #define MCA_bus 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int (*MCA_ProcFn)(char* buf, int slot, void* dev);
-
 enum MCA_AdapterStatus {
  MCA_ADAPTER_NORMAL = 0,
  MCA_ADAPTER_NONE = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MCA_ADAPTER_DISABLED = 2,
  MCA_ADAPTER_ERROR = 3
 };
-
 struct mca_device {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u64 dma_mask;
  int pos_id;
  int slot;
-
  int index;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int driver_loaded;
-
  unsigned char pos[8];
-
  short pos_register;
-
  enum MCA_AdapterStatus status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct device dev;
  char name[32];
 };
 #define to_mca_device(mdev) container_of(mdev, struct mca_device, dev)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mca_bus_accessor_functions {
  unsigned char (*mca_read_pos)(struct mca_device *, int reg);
  void (*mca_write_pos)(struct mca_device *, int reg,
  unsigned char byte);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*mca_transform_irq)(struct mca_device *, int irq);
  int (*mca_transform_ioport)(struct mca_device *,
  int region);
  void * (*mca_transform_memory)(struct mca_device *,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *memory);
 };
-
 struct mca_bus {
  u64 default_dma_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int number;
  struct mca_bus_accessor_functions f;
  struct device dev;
  char name[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define to_mca_bus(mdev) container_of(mdev, struct mca_bus, dev)
-
 struct mca_driver {
  const short *id_table;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *driver_data;
  struct device_driver driver;
 };
 #define to_mca_driver(mdriver) container_of(mdriver, struct mca_driver, driver)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/mempolicy.h b/libc/kernel/common/linux/mempolicy.h
index 6b7b2d4..d2ff923 100644
--- a/libc/kernel/common/linux/mempolicy.h
+++ b/libc/kernel/common/linux/mempolicy.h
@@ -7,26 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MEMPOLICY_H
 #define _LINUX_MEMPOLICY_H 1
-
 #include <linux/errno.h>
-
 #define MPOL_DEFAULT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPOL_PREFERRED 1
 #define MPOL_BIND 2
 #define MPOL_INTERLEAVE 3
-
 #define MPOL_MAX MPOL_INTERLEAVE
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPOL_F_NODE (1<<0)  
 #define MPOL_F_ADDR (1<<1)  
-
 #define MPOL_MF_STRICT (1<<0)  
 #define MPOL_MF_MOVE (1<<1)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MPOL_MF_MOVE_ALL (1<<2)  
 #define MPOL_MF_INTERNAL (1<<3)  
-
 #endif
diff --git a/libc/kernel/common/linux/mempool.h b/libc/kernel/common/linux/mempool.h
index fa2432b..50dbad2 100644
--- a/libc/kernel/common/linux/mempool.h
+++ b/libc/kernel/common/linux/mempool.h
@@ -7,28 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MEMPOOL_H
 #define _LINUX_MEMPOOL_H
-
 #include <linux/wait.h>
-
 struct kmem_cache;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef void * (mempool_alloc_t)(gfp_t gfp_mask, void *pool_data);
 typedef void (mempool_free_t)(void *element, void *pool_data);
-
 typedef struct mempool_s {
  spinlock_t lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int min_nr;
  int curr_nr;
  void **elements;
-
  void *pool_data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  mempool_alloc_t *alloc;
  mempool_free_t *free;
  wait_queue_head_t wait;
 } mempool_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/miscdevice.h b/libc/kernel/common/linux/miscdevice.h
index 457960a..eb88387 100644
--- a/libc/kernel/common/linux/miscdevice.h
+++ b/libc/kernel/common/linux/miscdevice.h
@@ -7,51 +7,60 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MISCDEVICE_H
 #define _LINUX_MISCDEVICE_H
 #include <linux/module.h>
 #include <linux/major.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSMOUSE_MINOR 1
 #define MS_BUSMOUSE_MINOR 2
 #define ATIXL_BUSMOUSE_MINOR 3
-
 #define ATARIMOUSE_MINOR 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SUN_MOUSE_MINOR 6
 #define APOLLO_MOUSE_MINOR 7
 #define PC110PAD_MINOR 9
-
 #define WATCHDOG_MINOR 130  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEMP_MINOR 131  
 #define RTC_MINOR 135
 #define EFI_RTC_MINOR 136  
 #define SUN_OPENPROM_MINOR 139
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DMAPI_MINOR 140  
 #define NVRAM_MINOR 144
 #define SGI_MMTIMER 153
 #define STORE_QUEUE_MINOR 155
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define I2O_MINOR 166
 #define MICROCODE_MINOR 184
 #define MWAVE_MINOR 219  
 #define MPT_MINOR 220
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MISC_DYNAMIC_MINOR 255
-
 #define TUN_MINOR 200
 #define HPET_MINOR 228
-
 struct device;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct class_device;
-
 struct miscdevice {
  int minor;
  const char *name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const struct file_operations *fops;
  struct list_head list;
  struct device *dev;
  struct class_device *class;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define MODULE_ALIAS_MISCDEV(minor)   MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR)   "-" __stringify(minor))
 #endif
diff --git a/libc/kernel/common/linux/mm.h b/libc/kernel/common/linux/mm.h
index fea293b..638d11b 100644
--- a/libc/kernel/common/linux/mm.h
+++ b/libc/kernel/common/linux/mm.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MM_H
 #define _LINUX_MM_H
-
 #include <linux/sched.h>
 #include <linux/errno.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/capability.h>
-
 #endif
diff --git a/libc/kernel/common/linux/mmc/card.h b/libc/kernel/common/linux/mmc/card.h
index 94afe21..a09b71d 100644
--- a/libc/kernel/common/linux/mmc/card.h
+++ b/libc/kernel/common/linux/mmc/card.h
@@ -7,94 +7,108 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_MMC_CARD_H
 #define LINUX_MMC_CARD_H
-
 #include <linux/mmc/mmc.h>
-
 struct mmc_cid {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int manfid;
  char prod_name[8];
  unsigned int serial;
  unsigned short oemid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short year;
  unsigned char hwrev;
  unsigned char fwrev;
  unsigned char month;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct mmc_csd {
  unsigned char mmca_vsn;
  unsigned short cmdclass;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short tacc_clks;
  unsigned int tacc_ns;
  unsigned int r2w_factor;
  unsigned int max_dtr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int read_blkbits;
  unsigned int write_blkbits;
  unsigned int capacity;
  unsigned int read_partial:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  read_misalign:1,
  write_partial:1,
  write_misalign:1;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sd_scr {
  unsigned char sda_vsn;
  unsigned char bus_widths;
 #define SD_SCR_BUS_WIDTH_1 (1<<0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SD_SCR_BUS_WIDTH_4 (1<<2)
 };
-
 struct mmc_host;
-
 struct mmc_card {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct list_head node;
  struct mmc_host *host;
  struct device dev;
  unsigned int rca;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int state;
 #define MMC_STATE_PRESENT (1<<0)  
 #define MMC_STATE_DEAD (1<<1)  
 #define MMC_STATE_BAD (1<<2)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_STATE_SDCARD (1<<3)  
 #define MMC_STATE_READONLY (1<<4)  
  u32 raw_cid[4];
  u32 raw_csd[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 raw_scr[2];
  struct mmc_cid cid;
  struct mmc_csd csd;
  struct sd_scr scr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define mmc_card_present(c) ((c)->state & MMC_STATE_PRESENT)
 #define mmc_card_dead(c) ((c)->state & MMC_STATE_DEAD)
 #define mmc_card_bad(c) ((c)->state & MMC_STATE_BAD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define mmc_card_sd(c) ((c)->state & MMC_STATE_SDCARD)
 #define mmc_card_readonly(c) ((c)->state & MMC_STATE_READONLY)
-
 #define mmc_card_set_present(c) ((c)->state |= MMC_STATE_PRESENT)
 #define mmc_card_set_dead(c) ((c)->state |= MMC_STATE_DEAD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define mmc_card_set_bad(c) ((c)->state |= MMC_STATE_BAD)
 #define mmc_card_set_sd(c) ((c)->state |= MMC_STATE_SDCARD)
 #define mmc_card_set_readonly(c) ((c)->state |= MMC_STATE_READONLY)
-
 #define mmc_card_name(c) ((c)->cid.prod_name)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define mmc_card_id(c) ((c)->dev.bus_id)
-
 #define mmc_list_to_card(l) container_of(l, struct mmc_card, node)
 #define mmc_get_drvdata(c) dev_get_drvdata(&(c)->dev)
 #define mmc_set_drvdata(c,d) dev_set_drvdata(&(c)->dev, d)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mmc_driver {
  struct device_driver drv;
  int (*probe)(struct mmc_card *);
  void (*remove)(struct mmc_card *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*suspend)(struct mmc_card *, pm_message_t);
  int (*resume)(struct mmc_card *);
 };
-
 #define mmc_card_release_host(c) mmc_release_host((c)->host)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/mmc/host.h b/libc/kernel/common/linux/mmc/host.h
index 9433626..22f4262 100644
--- a/libc/kernel/common/linux/mmc/host.h
+++ b/libc/kernel/common/linux/mmc/host.h
@@ -7,114 +7,115 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_MMC_HOST_H
 #define LINUX_MMC_HOST_H
-
 #include <linux/mmc/mmc.h>
-
 struct mmc_ios {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int clock;
  unsigned short vdd;
-
 #define MMC_VDD_150 0
 #define MMC_VDD_155 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_160 2
 #define MMC_VDD_165 3
 #define MMC_VDD_170 4
 #define MMC_VDD_180 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_190 6
 #define MMC_VDD_200 7
 #define MMC_VDD_210 8
 #define MMC_VDD_220 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_230 10
 #define MMC_VDD_240 11
 #define MMC_VDD_250 12
 #define MMC_VDD_260 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_270 14
 #define MMC_VDD_280 15
 #define MMC_VDD_290 16
 #define MMC_VDD_300 17
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_310 18
 #define MMC_VDD_320 19
 #define MMC_VDD_330 20
 #define MMC_VDD_340 21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_VDD_350 22
 #define MMC_VDD_360 23
-
  unsigned char bus_mode;
-
 #define MMC_BUSMODE_OPENDRAIN 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_BUSMODE_PUSHPULL 2
-
  unsigned char chip_select;
-
 #define MMC_CS_DONTCARE 0
 #define MMC_CS_HIGH 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_CS_LOW 2
-
  unsigned char power_mode;
-
 #define MMC_POWER_OFF 0
 #define MMC_POWER_UP 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_POWER_ON 2
-
  unsigned char bus_width;
-
 #define MMC_BUS_WIDTH_1 0
 #define MMC_BUS_WIDTH_4 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct mmc_host_ops {
  void (*request)(struct mmc_host *host, struct mmc_request *req);
  void (*set_ios)(struct mmc_host *host, struct mmc_ios *ios);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*get_ro)(struct mmc_host *host);
 };
-
 struct mmc_card;
 struct device;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mmc_host {
  struct device *dev;
  struct class_device class_dev;
  int index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const struct mmc_host_ops *ops;
  unsigned int f_min;
  unsigned int f_max;
  u32 ocr_avail;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long caps;
-
 #define MMC_CAP_4_BIT_DATA (1 << 0)  
-
  unsigned int max_seg_size;
  unsigned short max_hw_segs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short max_phys_segs;
  unsigned short max_sectors;
  unsigned short unused;
-
  struct mmc_ios ios;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 ocr;
-
  unsigned int mode;
 #define MMC_MODE_MMC 0
 #define MMC_MODE_SD 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct list_head cards;
-
  wait_queue_head_t wq;
  spinlock_t lock;
  struct mmc_card *card_busy;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mmc_card *card_selected;
-
  struct work_struct detect;
-
  unsigned long private[0] ____cacheline_aligned;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define mmc_dev(x) ((x)->dev)
 #define mmc_hostname(x) ((x)->class_dev.class_id)
-
 #endif
-
diff --git a/libc/kernel/common/linux/mmc/mmc.h b/libc/kernel/common/linux/mmc/mmc.h
index 089714c..e99b443 100644
--- a/libc/kernel/common/linux/mmc/mmc.h
+++ b/libc/kernel/common/linux/mmc/mmc.h
@@ -7,93 +7,99 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef MMC_H
 #define MMC_H
-
 #include <linux/list.h>
 #include <linux/interrupt.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/device.h>
-
 struct request;
 struct mmc_data;
 struct mmc_request;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mmc_command {
  u32 opcode;
  u32 arg;
  u32 resp[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int flags;
 #define MMC_RSP_PRESENT (1 << 0)
 #define MMC_RSP_136 (1 << 1)  
 #define MMC_RSP_CRC (1 << 2)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_RSP_BUSY (1 << 3)  
 #define MMC_RSP_OPCODE (1 << 4)  
 #define MMC_CMD_MASK (3 << 5)  
 #define MMC_CMD_AC (0 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_CMD_ADTC (1 << 5)
 #define MMC_CMD_BC (2 << 5)
 #define MMC_CMD_BCR (3 << 5)
-
 #define MMC_RSP_NONE (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_RSP_R1 (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE)
 #define MMC_RSP_R1B (MMC_RSP_PRESENT|MMC_RSP_CRC|MMC_RSP_OPCODE|MMC_RSP_BUSY)
 #define MMC_RSP_R2 (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC)
 #define MMC_RSP_R3 (MMC_RSP_PRESENT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_RSP_R6 (MMC_RSP_PRESENT|MMC_RSP_CRC)
-
 #define mmc_resp_type(cmd) ((cmd)->flags & (MMC_RSP_PRESENT|MMC_RSP_136|MMC_RSP_CRC|MMC_RSP_BUSY|MMC_RSP_OPCODE))
-
 #define mmc_cmd_type(cmd) ((cmd)->flags & MMC_CMD_MASK)
-
  unsigned int retries;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int error;
-
 #define MMC_ERR_NONE 0
 #define MMC_ERR_TIMEOUT 1
 #define MMC_ERR_BADCRC 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_ERR_FIFO 3
 #define MMC_ERR_FAILED 4
 #define MMC_ERR_INVALID 5
-
  struct mmc_data *data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mmc_request *mrq;
 };
-
 struct mmc_data {
  unsigned int timeout_ns;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int timeout_clks;
  unsigned int blksz_bits;
  unsigned int blksz;
  unsigned int blocks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int error;
  unsigned int flags;
-
 #define MMC_DATA_WRITE (1 << 8)
 #define MMC_DATA_READ (1 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MMC_DATA_STREAM (1 << 10)
 #define MMC_DATA_MULTI (1 << 11)
-
  unsigned int bytes_xfered;
-
  struct mmc_command *stop;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mmc_request *mrq;
-
  unsigned int sg_len;
  struct scatterlist *sg;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mmc_request {
  struct mmc_command *cmd;
  struct mmc_data *data;
  struct mmc_command *stop;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *done_data;
  void (*done)(struct mmc_request *);
 };
-
 struct mmc_host;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mmc_card;
-
 #endif
diff --git a/libc/kernel/common/linux/mmzone.h b/libc/kernel/common/linux/mmzone.h
index a81382e..4296058 100644
--- a/libc/kernel/common/linux/mmzone.h
+++ b/libc/kernel/common/linux/mmzone.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MMZONE_H
 #define _LINUX_MMZONE_H
-
 #endif
diff --git a/libc/kernel/common/linux/mod_devicetable.h b/libc/kernel/common/linux/mod_devicetable.h
index a3c1de8..0470d88 100644
--- a/libc/kernel/common/linux/mod_devicetable.h
+++ b/libc/kernel/common/linux/mod_devicetable.h
@@ -7,203 +7,208 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_MOD_DEVICETABLE_H
 #define LINUX_MOD_DEVICETABLE_H
-
 #define PCI_ANY_ID (~0)
-
 struct pci_device_id {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 vendor, device;
  __u32 subvendor, subdevice;
  __u32 class, class_mask;
  kernel_ulong_t driver_data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IEEE1394_MATCH_VENDOR_ID 0x0001
 #define IEEE1394_MATCH_MODEL_ID 0x0002
 #define IEEE1394_MATCH_SPECIFIER_ID 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IEEE1394_MATCH_VERSION 0x0008
-
 struct ieee1394_device_id {
  __u32 match_flags;
  __u32 vendor_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 model_id;
  __u32 specifier_id;
  __u32 version;
  kernel_ulong_t driver_data
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __attribute__((aligned(sizeof(kernel_ulong_t))));
 };
-
 struct usb_device_id {
-
  __u16 match_flags;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 idVendor;
  __u16 idProduct;
  __u16 bcdDevice_lo;
  __u16 bcdDevice_hi;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bDeviceClass;
  __u8 bDeviceSubClass;
  __u8 bDeviceProtocol;
-
  __u8 bInterfaceClass;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bInterfaceSubClass;
  __u8 bInterfaceProtocol;
-
  kernel_ulong_t driver_info;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DEVICE_ID_MATCH_VENDOR 0x0001
 #define USB_DEVICE_ID_MATCH_PRODUCT 0x0002
 #define USB_DEVICE_ID_MATCH_DEV_LO 0x0004
 #define USB_DEVICE_ID_MATCH_DEV_HI 0x0008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DEVICE_ID_MATCH_DEV_CLASS 0x0010
 #define USB_DEVICE_ID_MATCH_DEV_SUBCLASS 0x0020
 #define USB_DEVICE_ID_MATCH_DEV_PROTOCOL 0x0040
 #define USB_DEVICE_ID_MATCH_INT_CLASS 0x0080
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DEVICE_ID_MATCH_INT_SUBCLASS 0x0100
 #define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200
-
 struct ccw_device_id {
  __u16 match_flags;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 cu_type;
  __u16 dev_type;
  __u8 cu_model;
  __u8 dev_model;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  kernel_ulong_t driver_info;
 };
-
 #define CCW_DEVICE_ID_MATCH_CU_TYPE 0x01
 #define CCW_DEVICE_ID_MATCH_CU_MODEL 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CCW_DEVICE_ID_MATCH_DEVICE_TYPE 0x04
 #define CCW_DEVICE_ID_MATCH_DEVICE_MODEL 0x08
-
 #define PNP_ID_LEN 8
 #define PNP_MAX_DEVICES 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct pnp_device_id {
  __u8 id[PNP_ID_LEN];
  kernel_ulong_t driver_data;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct pnp_card_device_id {
  __u8 id[PNP_ID_LEN];
  kernel_ulong_t driver_data;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 id[PNP_ID_LEN];
  } devs[PNP_MAX_DEVICES];
 };
-
 #define SERIO_ANY 0xff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct serio_device_id {
  __u8 type;
  __u8 extra;
  __u8 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 proto;
 };
-
 struct of_device_id
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[32];
  char type[32];
  char compatible[128];
  kernel_ulong_t data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct vio_device_id {
  char type[32];
  char compat[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct pcmcia_device_id {
  __u16 match_flags;
-
  __u16 manf_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 card_id;
-
  __u8 func_id;
-
  __u8 function;
-
  __u8 device_no;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 prod_id_hash[4]
  __attribute__((aligned(sizeof(__u32))));
-
  kernel_ulong_t prod_id[4]
  __attribute__((aligned(sizeof(kernel_ulong_t))));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  kernel_ulong_t driver_info;
  kernel_ulong_t cisfile;
 };
-
 #define PCMCIA_DEV_ID_MATCH_MANF_ID 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCMCIA_DEV_ID_MATCH_CARD_ID 0x0002
 #define PCMCIA_DEV_ID_MATCH_FUNC_ID 0x0004
 #define PCMCIA_DEV_ID_MATCH_FUNCTION 0x0008
 #define PCMCIA_DEV_ID_MATCH_PROD_ID1 0x0010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCMCIA_DEV_ID_MATCH_PROD_ID2 0x0020
 #define PCMCIA_DEV_ID_MATCH_PROD_ID3 0x0040
 #define PCMCIA_DEV_ID_MATCH_PROD_ID4 0x0080
 #define PCMCIA_DEV_ID_MATCH_DEVICE_NO 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCMCIA_DEV_ID_MATCH_FAKE_CIS 0x0200
 #define PCMCIA_DEV_ID_MATCH_ANONYMOUS 0x0400
-
 struct i2c_device_id {
  __u16 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define INPUT_DEVICE_ID_EV_MAX 0x1f
 #define INPUT_DEVICE_ID_KEY_MAX 0x1ff
 #define INPUT_DEVICE_ID_REL_MAX 0x0f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPUT_DEVICE_ID_ABS_MAX 0x3f
 #define INPUT_DEVICE_ID_MSC_MAX 0x07
 #define INPUT_DEVICE_ID_LED_MAX 0x0f
 #define INPUT_DEVICE_ID_SND_MAX 0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPUT_DEVICE_ID_FF_MAX 0x7f
 #define INPUT_DEVICE_ID_SW_MAX 0x0f
-
 #define INPUT_DEVICE_ID_MATCH_BUS 1
 #define INPUT_DEVICE_ID_MATCH_VENDOR 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPUT_DEVICE_ID_MATCH_PRODUCT 4
 #define INPUT_DEVICE_ID_MATCH_VERSION 8
-
 #define INPUT_DEVICE_ID_MATCH_EVBIT 0x0010
 #define INPUT_DEVICE_ID_MATCH_KEYBIT 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPUT_DEVICE_ID_MATCH_RELBIT 0x0040
 #define INPUT_DEVICE_ID_MATCH_ABSBIT 0x0080
 #define INPUT_DEVICE_ID_MATCH_MSCIT 0x0100
 #define INPUT_DEVICE_ID_MATCH_LEDBIT 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INPUT_DEVICE_ID_MATCH_SNDBIT 0x0400
 #define INPUT_DEVICE_ID_MATCH_FFBIT 0x0800
 #define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000
-
 struct input_device_id {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  kernel_ulong_t flags;
-
  __u16 bustype;
  __u16 vendor;
  __u16 product;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 version;
-
  kernel_ulong_t evbit[INPUT_DEVICE_ID_EV_MAX / BITS_PER_LONG + 1];
  kernel_ulong_t keybit[INPUT_DEVICE_ID_KEY_MAX / BITS_PER_LONG + 1];
  kernel_ulong_t relbit[INPUT_DEVICE_ID_REL_MAX / BITS_PER_LONG + 1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  kernel_ulong_t absbit[INPUT_DEVICE_ID_ABS_MAX / BITS_PER_LONG + 1];
  kernel_ulong_t mscbit[INPUT_DEVICE_ID_MSC_MAX / BITS_PER_LONG + 1];
  kernel_ulong_t ledbit[INPUT_DEVICE_ID_LED_MAX / BITS_PER_LONG + 1];
  kernel_ulong_t sndbit[INPUT_DEVICE_ID_SND_MAX / BITS_PER_LONG + 1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  kernel_ulong_t ffbit[INPUT_DEVICE_ID_FF_MAX / BITS_PER_LONG + 1];
  kernel_ulong_t swbit[INPUT_DEVICE_ID_SW_MAX / BITS_PER_LONG + 1];
-
  kernel_ulong_t driver_info;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/module.h b/libc/kernel/common/linux/module.h
index 3c449c6..00a41c2 100644
--- a/libc/kernel/common/linux/module.h
+++ b/libc/kernel/common/linux/module.h
@@ -7,108 +7,109 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MODULE_H
 #define _LINUX_MODULE_H
-
 #include <linux/sched.h>
 #include <linux/spinlock.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/list.h>
 #include <linux/stat.h>
 #include <linux/compiler.h>
 #include <linux/cache.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/kmod.h>
 #include <linux/elf.h>
 #include <linux/stringify.h>
 #include <linux/kobject.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/moduleparam.h>
 #include <asm/local.h>
-
 #include <asm/module.h>
-
 #define MODULE_SUPPORTED_DEVICE(name)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef MODULE_SYMBOL_PREFIX
 #define MODULE_SYMBOL_PREFIX ""
 #endif
-
 #define MODULE_NAME_LEN (64 - sizeof(unsigned long))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kernel_symbol
 {
  unsigned long value;
  const char *name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct modversion_info
 {
  unsigned long crc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[MODULE_NAME_LEN];
 };
-
 struct module;
-
 struct module_attribute {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct attribute attr;
  ssize_t (*show)(struct module_attribute *, struct module *, char *);
  ssize_t (*store)(struct module_attribute *, struct module *,
  const char *, size_t count);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*setup)(struct module *, const char *);
  int (*test)(struct module *);
  void (*free)(struct module *);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct module_kobject
 {
  struct kobject kobj;
  struct module *mod;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct exception_table_entry;
-
 #ifdef MODULE
 #define MODULE_GENERIC_TABLE(gtype,name)  extern const struct gtype##_id __mod_##gtype##_table   __attribute__ ((unused, alias(__stringify(name))))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define THIS_MODULE (&__this_module)
 #else
 #define MODULE_GENERIC_TABLE(gtype,name)
 #define THIS_MODULE ((struct module *)0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define MODULE_INFO(tag, info) __MODULE_INFO(tag, tag, info)
-
 #define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias)
-
 #define MODULE_LICENSE(_license) MODULE_INFO(license, _license)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MODULE_AUTHOR(_author) MODULE_INFO(author, _author)
-
 #define MODULE_DESCRIPTION(_description) MODULE_INFO(description, _description)
-
 #define MODULE_PARM_DESC(_parm, desc)   __MODULE_INFO(parm, _parm, #_parm ":" desc)
-
 #define MODULE_DEVICE_TABLE(type,name)   MODULE_GENERIC_TABLE(type##_device,name)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MODULE_VERSION(_version) MODULE_INFO(version, _version)
-
 struct notifier_block;
-
 #define EXPORT_SYMBOL(sym)
 #define EXPORT_SYMBOL_GPL(sym)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EXPORT_SYMBOL_GPL_FUTURE(sym)
 #define EXPORT_UNUSED_SYMBOL(sym)
 #define EXPORT_UNUSED_SYMBOL_GPL(sym)
-
 #define symbol_get(x) ({ extern typeof(x) x __attribute__((weak)); &(x); })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define symbol_put(x) do { } while(0)
 #define symbol_put_addr(x) do { } while(0)
 #define module_name(mod) "kernel"
 #define __unsafe(mod)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define module_put_and_exit(code) do_exit(code)
-
+struct device_driver;
 struct module;
-
 #define symbol_request(x) try_then_request_module(symbol_get(x), "symbol:" #x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __MODULE_STRING(x) __stringify(x)
 #endif
diff --git a/libc/kernel/common/linux/moduleparam.h b/libc/kernel/common/linux/moduleparam.h
index b46ddd6..b46cdd2 100644
--- a/libc/kernel/common/linux/moduleparam.h
+++ b/libc/kernel/common/linux/moduleparam.h
@@ -7,95 +7,88 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MODULE_PARAMS_H
 #define _LINUX_MODULE_PARAMS_H
-
 #include <linux/init.h>
 #include <linux/stringify.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/kernel.h>
-
 #ifdef MODULE
 #define MODULE_PARAM_PREFIX  
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MODULE_PARAM_PREFIX KBUILD_MODNAME "."
 #endif
-
 #ifdef MODULE
 #define ___module_cat(a,b) __mod_ ## a ## b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __module_cat(a,b) ___module_cat(a,b)
 #define __MODULE_INFO(tag, name, info)  static const char __module_cat(name,__LINE__)[]   __attribute_used__   __attribute__((section(".modinfo"),unused)) = __stringify(tag) "=" info
 #else
 #define __MODULE_INFO(tag, name, info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define __MODULE_PARM_TYPE(name, _type)   __MODULE_INFO(parmtype, name##type, #name ":" _type)
-
 struct kernel_param;
-
 typedef int (*param_set_fn)(const char *val, struct kernel_param *kp);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef int (*param_get_fn)(char *buffer, struct kernel_param *kp);
-
 struct kernel_param {
  const char *name;
  unsigned int perm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  param_set_fn set;
  param_get_fn get;
  void *arg;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kparam_string {
  unsigned int maxlen;
  char *string;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kparam_array
 {
  unsigned int max;
  unsigned int *num;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  param_set_fn set;
  param_get_fn get;
  unsigned int elemsize;
  void *elem;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define __module_param_call(prefix, name, set, get, arg, perm)   static char __param_str_##name[] = prefix #name;   static struct kernel_param const __param_##name   __attribute_used__   __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *))))   = { __param_str_##name, perm, set, get, arg }
-
 #define module_param_call(name, set, get, arg, perm)   __module_param_call(MODULE_PARAM_PREFIX, name, set, get, arg, perm)
-
 #define module_param_named(name, value, type, perm)   param_check_##type(name, &(value));   module_param_call(name, param_set_##type, param_get_##type, &value, perm);   __MODULE_PARM_TYPE(name, #type)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define module_param(name, type, perm)   module_param_named(name, name, type, perm)
-
 #define module_param_string(name, string, len, perm)   static struct kparam_string __param_string_##name   = { len, string };   module_param_call(name, param_set_copystring, param_get_string,   &__param_string_##name, perm);   __MODULE_PARM_TYPE(name, "string")
-
 #define __param_check(name, p, type)   static inline type *__check_##name(void) { return(p); }
-
 #define param_check_byte(name, p) __param_check(name, p, unsigned char)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define param_check_short(name, p) __param_check(name, p, short)
-
 #define param_check_ushort(name, p) __param_check(name, p, unsigned short)
-
 #define param_check_int(name, p) __param_check(name, p, int)
-
 #define param_check_uint(name, p) __param_check(name, p, unsigned int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define param_check_long(name, p) __param_check(name, p, long)
-
 #define param_check_ulong(name, p) __param_check(name, p, unsigned long)
-
 #define param_check_charp(name, p) __param_check(name, p, char *)
-
 #define param_check_bool(name, p) __param_check(name, p, int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define param_check_invbool(name, p) __param_check(name, p, int)
-
 #define module_param_array_named(name, array, type, nump, perm)   static struct kparam_array __param_arr_##name   = { ARRAY_SIZE(array), nump, param_set_##type, param_get_##type,  sizeof(array[0]), array };   module_param_call(name, param_array_set, param_array_get,   &__param_arr_##name, perm);   __MODULE_PARM_TYPE(name, "array of " #type)
-
 #define module_param_array(name, type, nump, perm)   module_param_array_named(name, name, type, nump, perm)
-
 struct module;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/mount.h b/libc/kernel/common/linux/mount.h
index ee476e0..2694c8c 100644
--- a/libc/kernel/common/linux/mount.h
+++ b/libc/kernel/common/linux/mount.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MOUNT_H
diff --git a/libc/kernel/common/linux/mroute6.h b/libc/kernel/common/linux/mroute6.h
index 2b151b9..3d701da 100644
--- a/libc/kernel/common/linux/mroute6.h
+++ b/libc/kernel/common/linux/mroute6.h
@@ -7,98 +7,108 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MROUTE6_H
 #define __LINUX_MROUTE6_H
-
 #include <linux/types.h>
 #include <linux/sockios.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MRT6_BASE 200
 #define MRT6_INIT (MRT6_BASE)  
 #define MRT6_DONE (MRT6_BASE+1)  
 #define MRT6_ADD_MIF (MRT6_BASE+2)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MRT6_DEL_MIF (MRT6_BASE+3)  
 #define MRT6_ADD_MFC (MRT6_BASE+4)  
 #define MRT6_DEL_MFC (MRT6_BASE+5)  
 #define MRT6_VERSION (MRT6_BASE+6)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MRT6_ASSERT (MRT6_BASE+7)  
 #define MRT6_PIM (MRT6_BASE+8)  
 #define MRT6_TABLE (MRT6_BASE+9)  
-
 #define SIOCGETMIFCNT_IN6 SIOCPROTOPRIVATE  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGETSGCNT_IN6 (SIOCPROTOPRIVATE+1)
 #define SIOCGETRPF (SIOCPROTOPRIVATE+2)
-
 #define MAXMIFS 32
 typedef unsigned long mifbitmap_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned short mifi_t;
 #define ALL_MIFS ((mifi_t)(-1))
-
 #ifndef IF_SETSIZE
 #define IF_SETSIZE 256
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 typedef __u32 if_mask;
 #define NIFBITS (sizeof(if_mask) * 8)  
-
 #ifndef DIV_ROUND_UP
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DIV_ROUND_UP(x,y) (((x) + ((y) - 1)) / (y))
 #endif
-
 typedef struct if_set {
  if_mask ifs_bits[DIV_ROUND_UP(IF_SETSIZE, NIFBITS)];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } if_set;
-
 #define IF_SET(n, p) ((p)->ifs_bits[(n)/NIFBITS] |= (1 << ((n) % NIFBITS)))
 #define IF_CLR(n, p) ((p)->ifs_bits[(n)/NIFBITS] &= ~(1 << ((n) % NIFBITS)))
 #define IF_ISSET(n, p) ((p)->ifs_bits[(n)/NIFBITS] & (1 << ((n) % NIFBITS)))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IF_COPY(f, t) bcopy(f, t, sizeof(*(f)))
 #define IF_ZERO(p) bzero(p, sizeof(*(p)))
-
 struct mif6ctl {
  mifi_t mif6c_mifi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char mif6c_flags;
  unsigned char vifc_threshold;
  __u16 mif6c_pifi;
  unsigned int vifc_rate_limit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define MIFF_REGISTER 0x1  
-
 struct mf6cctl {
  struct sockaddr_in6 mf6cc_origin;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sockaddr_in6 mf6cc_mcastgrp;
  mifi_t mf6cc_parent;
  struct if_set mf6cc_ifset;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sioc_sg_req6 {
  struct sockaddr_in6 src;
  struct sockaddr_in6 grp;
  unsigned long pktcnt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long bytecnt;
  unsigned long wrong_if;
 };
-
 struct sioc_mif_req6 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  mifi_t mifi;
  unsigned long icount;
  unsigned long ocount;
  unsigned long ibytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long obytes;
 };
-
 struct mrt6msg {
 #define MRT6MSG_NOCACHE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MRT6MSG_WRONGMIF 2
 #define MRT6MSG_WHOLEPKT 3  
  __u8 im6_mbz;
  __u8 im6_msgtype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 im6_mif;
  __u32 im6_pad;
  struct in6_addr im6_src, im6_dst;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/msdos_fs.h b/libc/kernel/common/linux/msdos_fs.h
index 5a4eb0a..20be021 100644
--- a/libc/kernel/common/linux/msdos_fs.h
+++ b/libc/kernel/common/linux/msdos_fs.h
@@ -7,174 +7,184 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MSDOS_FS_H
 #define _LINUX_MSDOS_FS_H
-
 #include <linux/magic.h>
-
 #include <asm/byteorder.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SECTOR_SIZE 512  
 #define SECTOR_BITS 9  
 #define MSDOS_DPB (MSDOS_DPS)  
 #define MSDOS_DPB_BITS 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSDOS_DPS (SECTOR_SIZE / sizeof(struct msdos_dir_entry))
 #define MSDOS_DPS_BITS 4  
 #define CF_LE_W(v) le16_to_cpu(v)
 #define CF_LE_L(v) le32_to_cpu(v)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CT_LE_W(v) cpu_to_le16(v)
 #define CT_LE_L(v) cpu_to_le32(v)
-
 #define MSDOS_ROOT_INO 1  
 #define MSDOS_DIR_BITS 5  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FAT_MAX_DIR_ENTRIES (65536)
 #define FAT_MAX_DIR_SIZE (FAT_MAX_DIR_ENTRIES << MSDOS_DIR_BITS)
-
 #define ATTR_NONE 0  
 #define ATTR_RO 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATTR_HIDDEN 2  
 #define ATTR_SYS 4  
 #define ATTR_VOLUME 8  
 #define ATTR_DIR 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATTR_ARCH 32  
-
 #define ATTR_UNUSED (ATTR_VOLUME | ATTR_ARCH | ATTR_SYS | ATTR_HIDDEN)
-
 #define ATTR_EXT (ATTR_RO | ATTR_HIDDEN | ATTR_SYS | ATTR_VOLUME)
-
 #define CASE_LOWER_BASE 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CASE_LOWER_EXT 16  
-
 #define DELETED_FLAG 0xe5  
 #define IS_FREE(n) (!*(n) || *(n) == DELETED_FLAG)
-
 #define MSDOS_VALID_MODE (S_IFREG | S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSDOS_MKMODE(a, m) (m & (a & ATTR_RO ? S_IRUGO|S_IXUGO : S_IRWXUGO))
-
 #define MSDOS_NAME 11  
 #define MSDOS_LONGNAME 256  
 #define MSDOS_SLOTS 21  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSDOS_DOT ".          "  
 #define MSDOS_DOTDOT "..         "  
-
 #define FAT_VALID_MEDIA(x) ((0xF8 <= (x) && (x) <= 0xFF) || (x) == 0xF0)
 #define FAT_FIRST_ENT(s, x) ((MSDOS_SB(s)->fat_bits == 32 ? 0x0FFFFF00 :   MSDOS_SB(s)->fat_bits == 16 ? 0xFF00 : 0xF00) | (x))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FAT_START_ENT 2
-
 #define MAX_FAT12 0xFF4
 #define MAX_FAT16 0xFFF4
 #define MAX_FAT32 0x0FFFFFF6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_FAT(s) (MSDOS_SB(s)->fat_bits == 32 ? MAX_FAT32 :   MSDOS_SB(s)->fat_bits == 16 ? MAX_FAT16 : MAX_FAT12)
-
 #define BAD_FAT12 0xFF7
 #define BAD_FAT16 0xFFF7
 #define BAD_FAT32 0x0FFFFFF7
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EOF_FAT12 0xFFF
 #define EOF_FAT16 0xFFFF
 #define EOF_FAT32 0x0FFFFFFF
-
 #define FAT_ENT_FREE (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FAT_ENT_BAD (BAD_FAT32)
 #define FAT_ENT_EOF (EOF_FAT32)
-
 #define FAT_FSINFO_SIG1 0x41615252
 #define FAT_FSINFO_SIG2 0x61417272
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IS_FSINFO(x) (le32_to_cpu((x)->signature1) == FAT_FSINFO_SIG1   && le32_to_cpu((x)->signature2) == FAT_FSINFO_SIG2)
-
 #define VFAT_IOCTL_READDIR_BOTH _IOR('r', 1, struct dirent [2])
 #define VFAT_IOCTL_READDIR_SHORT _IOR('r', 2, struct dirent [2])
-
 #define FAT_IOCTL_GET_ATTRIBUTES _IOR('r', 0x10, __u32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FAT_IOCTL_SET_ATTRIBUTES _IOW('r', 0x11, __u32)
 #define VFAT_IOCTL_GET_VOLUME_ID _IOR('r', 0x12, __u32)
-
 #define VFAT_SFN_DISPLAY_LOWER 0x0001  
 #define VFAT_SFN_DISPLAY_WIN95 0x0002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VFAT_SFN_DISPLAY_WINNT 0x0004  
 #define VFAT_SFN_CREATE_WIN95 0x0100  
 #define VFAT_SFN_CREATE_WINNT 0x0200  
-
 struct fat_boot_sector {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ignored[3];
  __u8 system_id[8];
  __u8 sector_size[2];
  __u8 sec_per_clus;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 reserved;
  __u8 fats;
  __u8 dir_entries[2];
  __u8 sectors[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 media;
  __le16 fat_length;
  __le16 secs_track;
  __le16 heads;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 hidden;
  __le32 total_sect;
-
  __le32 fat32_length;
  __le16 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 version[2];
  __le32 root_cluster;
  __le16 info_sector;
  __le16 backup_boot;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 reserved2[6];
 };
-
 struct fat_boot_fsinfo {
  __le32 signature1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 reserved1[120];
  __le32 signature2;
  __le32 free_clusters;
  __le32 next_cluster;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 reserved2[4];
 };
-
 struct fat_boot_bsx {
  __u8 drive;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved1;
  __u8 signature;
  __u8 vol_id[4];
  __u8 vol_label[11];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 type[8];
 };
 #define FAT16_BSX_OFFSET 36  
 #define FAT32_BSX_OFFSET 64  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msdos_dir_entry {
  __u8 name[MSDOS_NAME];
  __u8 attr;
  __u8 lcase;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ctime_cs;
  __le16 ctime;
  __le16 cdate;
  __le16 adate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 starthi;
  __le16 time,date,start;
  __le32 size;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msdos_dir_slot {
  __u8 id;
  __u8 name0_4[10];
  __u8 attr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved;
  __u8 alias_checksum;
  __u8 name5_10[12];
  __le16 start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 name11_12[4];
 };
-
 struct fat_slot_info {
  loff_t i_pos;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  loff_t slot_off;
  int nr_slots;
  struct msdos_dir_entry *de;
  struct buffer_head *bh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/msg.h b/libc/kernel/common/linux/msg.h
index 254f1e9..41c21af 100644
--- a/libc/kernel/common/linux/msg.h
+++ b/libc/kernel/common/linux/msg.h
@@ -7,62 +7,70 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MSG_H
 #define _LINUX_MSG_H
-
 #include <linux/ipc.h>
-
 #define MSG_STAT 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSG_INFO 12
-
 #define MSG_NOERROR 010000  
 #define MSG_EXCEPT 020000  
-
 struct msqid_ds {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ipc_perm msg_perm;
  struct msg *msg_first;
  struct msg *msg_last;
  __kernel_time_t msg_stime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t msg_rtime;
  __kernel_time_t msg_ctime;
  unsigned long msg_lcbytes;
  unsigned long msg_lqbytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short msg_cbytes;
  unsigned short msg_qnum;
  unsigned short msg_qbytes;
  __kernel_ipc_pid_t msg_lspid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_ipc_pid_t msg_lrpid;
 };
-
 #include <asm/msgbuf.h>
-
 struct msgbuf {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long mtype;
  char mtext[1];
 };
-
 struct msginfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int msgpool;
  int msgmap;
  int msgmax;
  int msgmnb;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int msgmni;
  int msgssz;
  int msgtql;
  unsigned short msgseg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define MSGMNI 16    
 #define MSGMAX 8192    
 #define MSGMNB 16384    
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSGPOOL (MSGMNI*MSGMNB/1024)  
 #define MSGTQL MSGMNB  
 #define MSGMAP MSGMNB  
 #define MSGSSZ 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __MSGSEG ((MSGPOOL*1024)/ MSGSSZ)  
 #define MSGSEG (__MSGSEG <= 0xffff ? __MSGSEG : 0xffff)
-
 #endif
diff --git a/libc/kernel/common/linux/msm_adsp.h b/libc/kernel/common/linux/msm_adsp.h
index b138a5d..7c3fd14 100644
--- a/libc/kernel/common/linux/msm_adsp.h
+++ b/libc/kernel/common/linux/msm_adsp.h
@@ -7,57 +7,54 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MSM_ADSP_H
 #define __LINUX_MSM_ADSP_H
-
 #include <linux/types.h>
 #include <linux/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADSP_IOCTL_MAGIC 'q'
-
 struct adsp_command_t {
  uint16_t queue;
  uint32_t len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *data;
 };
-
 struct adsp_event_t {
  uint16_t type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t timeout_ms;
  uint16_t msg_id;
  uint16_t flags;
  uint32_t len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *data;
 };
-
 #define ADSP_IOCTL_ENABLE _IOR(ADSP_IOCTL_MAGIC, 1, unsigned)
-
 #define ADSP_IOCTL_DISABLE _IOR(ADSP_IOCTL_MAGIC, 2, unsigned)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADSP_IOCTL_DISABLE_ACK _IOR(ADSP_IOCTL_MAGIC, 3, unsigned)
-
 #define ADSP_IOCTL_WRITE_COMMAND _IOR(ADSP_IOCTL_MAGIC, 4, struct adsp_command_t *)
-
 #define ADSP_IOCTL_GET_EVENT _IOWR(ADSP_IOCTL_MAGIC, 5, struct adsp_event_data_t *)
-
 #define ADSP_IOCTL_SET_CLKRATE _IOR(ADSP_IOCTL_MAGIC, 6, unsigned)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADSP_IOCTL_DISABLE_EVENT_RSP _IOR(ADSP_IOCTL_MAGIC, 10, unsigned)
-
 struct adsp_pmem_info {
  int fd;
  void *vaddr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ADSP_IOCTL_REGISTER_PMEM _IOW(ADSP_IOCTL_MAGIC, 13, unsigned)
-
 #define ADSP_IOCTL_UNREGISTER_PMEM _IOW(ADSP_IOCTL_MAGIC, 14, unsigned)
-
 #define ADSP_IOCTL_ABORT_EVENT_READ _IOW(ADSP_IOCTL_MAGIC, 15, unsigned)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADSP_IOCTL_LINK_TASK _IOW(ADSP_IOCTL_MAGIC, 16, unsigned)
-
 #endif
-
diff --git a/libc/kernel/common/linux/msm_audio.h b/libc/kernel/common/linux/msm_audio.h
index eed5901..95dd427 100644
--- a/libc/kernel/common/linux/msm_audio.h
+++ b/libc/kernel/common/linux/msm_audio.h
@@ -7,78 +7,83 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MSM_AUDIO_H
 #define __LINUX_MSM_AUDIO_H
-
 #include <linux/types.h>
 #include <linux/ioctl.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/sizes.h>
-
 #define AUDIO_IOCTL_MAGIC 'a'
-
 #define AUDIO_START _IOW(AUDIO_IOCTL_MAGIC, 0, unsigned)
 #define AUDIO_STOP _IOW(AUDIO_IOCTL_MAGIC, 1, unsigned)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_FLUSH _IOW(AUDIO_IOCTL_MAGIC, 2, unsigned)
 #define AUDIO_GET_CONFIG _IOR(AUDIO_IOCTL_MAGIC, 3, unsigned)
 #define AUDIO_SET_CONFIG _IOW(AUDIO_IOCTL_MAGIC, 4, unsigned)
 #define AUDIO_GET_STATS _IOR(AUDIO_IOCTL_MAGIC, 5, unsigned)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_ENABLE_AUDPP _IOW(AUDIO_IOCTL_MAGIC, 6, unsigned)
 #define AUDIO_SET_ADRC _IOW(AUDIO_IOCTL_MAGIC, 7, unsigned)
 #define AUDIO_SET_EQ _IOW(AUDIO_IOCTL_MAGIC, 8, unsigned)
 #define AUDIO_SET_RX_IIR _IOW(AUDIO_IOCTL_MAGIC, 9, unsigned)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_SET_VOLUME _IOW(AUDIO_IOCTL_MAGIC, 10, unsigned)
 #define AUDIO_ENABLE_AUDPRE _IOW(AUDIO_IOCTL_MAGIC, 11, unsigned)
 #define AUDIO_SET_AGC _IOW(AUDIO_IOCTL_MAGIC, 12, unsigned)
 #define AUDIO_SET_NS _IOW(AUDIO_IOCTL_MAGIC, 13, unsigned)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AUDIO_SET_TX_IIR _IOW(AUDIO_IOCTL_MAGIC, 14, unsigned)
-
 struct msm_audio_config {
  uint32_t buffer_size;
  uint32_t buffer_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t channel_count;
  uint32_t sample_rate;
  uint32_t type;
  uint32_t unused[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct msm_audio_stats {
  uint32_t byte_count;
  uint32_t sample_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t unused[2];
 };
-
 #define SND_IOCTL_MAGIC 's'
-
 #define SND_MUTE_UNMUTED 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SND_MUTE_MUTED 1
-
 struct msm_snd_device_config {
  uint32_t device;
  uint32_t ear_mute;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t mic_mute;
 };
-
 #define SND_SET_DEVICE _IOW(SND_IOCTL_MAGIC, 2, struct msm_device_config *)
-
 #define SND_METHOD_VOICE 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msm_snd_volume_config {
  uint32_t device;
  uint32_t method;
  uint32_t volume;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define SND_SET_VOLUME _IOW(SND_IOCTL_MAGIC, 3, struct msm_snd_volume_config *)
-
 #define SND_GET_NUM_ENDPOINTS _IOR(SND_IOCTL_MAGIC, 4, unsigned *)
-
 struct msm_snd_endpoint {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int id;
  char name[64];
 };
-
 #define SND_GET_ENDPOINT _IOWR(SND_IOCTL_MAGIC, 5, struct msm_snd_endpoint *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/msm_hw3d.h b/libc/kernel/common/linux/msm_hw3d.h
index 3d05106..684896e 100644
--- a/libc/kernel/common/linux/msm_hw3d.h
+++ b/libc/kernel/common/linux/msm_hw3d.h
@@ -7,38 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MSM_HW3D_H_
 #define _MSM_HW3D_H_
-
 #include <linux/fs.h>
 #include <linux/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hw3d_region;
-
 #define HW3D_IOCTL_MAGIC 'h'
 #define HW3D_WAIT_FOR_REVOKE _IO(HW3D_IOCTL_MAGIC, 0x80)
 #define HW3D_WAIT_FOR_INTERRUPT _IO(HW3D_IOCTL_MAGIC, 0x81)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HW3D_GET_REGIONS   _IOR(HW3D_IOCTL_MAGIC, 0x82, struct hw3d_region *)
-
 #define HW3D_REGION_OFFSET(id) ((((uint32_t)(id)) & 0xf) << 28)
 #define HW3D_REGION_ID(addr) (((uint32_t)(addr) >> 28) & 0xf)
 #define HW3D_OFFSET_IN_REGION(addr) ((uint32_t)(addr) & ~(0xfUL << 28))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  HW3D_EBI = 0,
  HW3D_SMI = 1,
  HW3D_REGS = 2,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  HW3D_NUM_REGIONS = HW3D_REGS + 1,
 };
-
 struct hw3d_region {
  unsigned long phys;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long map_offset;
  unsigned long len;
 };
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/msm_kgsl.h b/libc/kernel/common/linux/msm_kgsl.h
index f543522..ca5c96e 100644
--- a/libc/kernel/common/linux/msm_kgsl.h
+++ b/libc/kernel/common/linux/msm_kgsl.h
@@ -7,200 +7,199 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MSM_KGSL_H
 #define _MSM_KGSL_H
-
 #define KGSL_CONTEXT_SAVE_GMEM 1
 #define KGSL_CONTEXT_NO_GMEM_ALLOC 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KGSL_FLAGS_NORMALMODE 0x00000000
 #define KGSL_FLAGS_SAFEMODE 0x00000001
 #define KGSL_FLAGS_INITIALIZED0 0x00000002
 #define KGSL_FLAGS_INITIALIZED 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KGSL_FLAGS_STARTED 0x00000008
 #define KGSL_FLAGS_ACTIVE 0x00000010
 #define KGSL_FLAGS_RESERVED0 0x00000020
 #define KGSL_FLAGS_RESERVED1 0x00000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define KGSL_FLAGS_RESERVED2 0x00000080
-
 enum kgsl_deviceid {
  KGSL_DEVICE_ANY = 0x00000000,
  KGSL_DEVICE_YAMATO = 0x00000001,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KGSL_DEVICE_G12 = 0x00000002,
  KGSL_DEVICE_MAX = 0x00000002
 };
-
 struct kgsl_devinfo {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int device_id;
-
  unsigned int chip_id;
  unsigned int mmu_enabled;
  unsigned int gmem_gpubaseaddr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int gmem_hostbaseaddr;
  unsigned int gmem_sizebytes;
 };
-
 struct kgsl_devmemstore {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  volatile unsigned int soptimestamp;
  unsigned int sbz;
  volatile unsigned int eoptimestamp;
  unsigned int sbz2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  volatile unsigned int ts_cmp_enable;
  unsigned int sbz3;
  volatile unsigned int ref_wait_ts;
  unsigned int sbz4;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define KGSL_DEVICE_MEMSTORE_OFFSET(field)   offsetof(struct kgsl_devmemstore, field)
-
 enum kgsl_timestamp_type {
  KGSL_TIMESTAMP_CONSUMED = 0x00000001,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KGSL_TIMESTAMP_RETIRED = 0x00000002,
  KGSL_TIMESTAMP_MAX = 0x00000002,
 };
-
 enum kgsl_property_type {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KGSL_PROP_DEVICE_INFO = 0x00000001,
  KGSL_PROP_DEVICE_SHADOW = 0x00000002,
  KGSL_PROP_DEVICE_POWER = 0x00000003,
  KGSL_PROP_SHMEM = 0x00000004,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KGSL_PROP_SHMEM_APERTURES = 0x00000005,
  KGSL_PROP_MMU_ENABLE = 0x00000006,
  KGSL_PROP_INTERRUPT_WAITS = 0x00000007,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kgsl_shadowprop {
  unsigned int gpuaddr;
  unsigned int size;
  unsigned int flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define KGSL_IOC_TYPE 0x09
-
 struct kgsl_device_getproperty {
  unsigned int type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *value;
  unsigned int sizebytes;
 };
-
 #define IOCTL_KGSL_DEVICE_GETPROPERTY   _IOWR(KGSL_IOC_TYPE, 0x2, struct kgsl_device_getproperty)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kgsl_device_regread {
  unsigned int offsetwords;
  unsigned int value;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOCTL_KGSL_DEVICE_REGREAD   _IOWR(KGSL_IOC_TYPE, 0x3, struct kgsl_device_regread)
-
 struct kgsl_device_waittimestamp {
  unsigned int timestamp;
  unsigned int timeout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IOCTL_KGSL_DEVICE_WAITTIMESTAMP   _IOW(KGSL_IOC_TYPE, 0x6, struct kgsl_device_waittimestamp)
-
 struct kgsl_ringbuffer_issueibcmds {
  unsigned int drawctxt_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int ibaddr;
  unsigned int sizedwords;
  unsigned int timestamp;
  unsigned int flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IOCTL_KGSL_RINGBUFFER_ISSUEIBCMDS   _IOWR(KGSL_IOC_TYPE, 0x10, struct kgsl_ringbuffer_issueibcmds)
-
 struct kgsl_cmdstream_readtimestamp {
  unsigned int type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int timestamp;
 };
-
 #define IOCTL_KGSL_CMDSTREAM_READTIMESTAMP   _IOR(KGSL_IOC_TYPE, 0x11, struct kgsl_cmdstream_readtimestamp)
-
 struct kgsl_cmdstream_freememontimestamp {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int gpuaddr;
  unsigned int type;
  unsigned int timestamp;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOCTL_KGSL_CMDSTREAM_FREEMEMONTIMESTAMP   _IOR(KGSL_IOC_TYPE, 0x12, struct kgsl_cmdstream_freememontimestamp)
-
 struct kgsl_drawctxt_create {
  unsigned int flags;
  unsigned int drawctxt_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IOCTL_KGSL_DRAWCTXT_CREATE   _IOWR(KGSL_IOC_TYPE, 0x13, struct kgsl_drawctxt_create)
-
 struct kgsl_drawctxt_destroy {
  unsigned int drawctxt_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IOCTL_KGSL_DRAWCTXT_DESTROY   _IOW(KGSL_IOC_TYPE, 0x14, struct kgsl_drawctxt_destroy)
-
 struct kgsl_sharedmem_from_pmem {
  int pmem_fd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int gpuaddr;
  unsigned int len;
  unsigned int offset;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOCTL_KGSL_SHAREDMEM_FROM_PMEM   _IOWR(KGSL_IOC_TYPE, 0x20, struct kgsl_sharedmem_from_pmem)
-
 struct kgsl_sharedmem_free {
  unsigned int gpuaddr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOCTL_KGSL_SHAREDMEM_FREE   _IOW(KGSL_IOC_TYPE, 0x21, struct kgsl_sharedmem_free)
-
 struct kgsl_gmem_desc {
  unsigned int x;
  unsigned int y;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int width;
  unsigned int height;
  unsigned int pitch;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kgsl_buffer_desc {
  void *hostptr;
  unsigned int gpuaddr;
  int size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int format;
  unsigned int pitch;
  unsigned int enabled;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kgsl_bind_gmem_shadow {
  unsigned int drawctxt_id;
  struct kgsl_gmem_desc gmem_desc;
  unsigned int shadow_x;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int shadow_y;
  struct kgsl_buffer_desc shadow_buffer;
  unsigned int buffer_id;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOCTL_KGSL_DRAWCTXT_BIND_GMEM_SHADOW   _IOW(KGSL_IOC_TYPE, 0x22, struct kgsl_bind_gmem_shadow)
-
 struct kgsl_sharedmem_from_vmalloc {
  unsigned int gpuaddr;
  unsigned int hostptr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int force_no_low_watermark;
 };
-
 #define IOCTL_KGSL_SHAREDMEM_FROM_VMALLOC   _IOWR(KGSL_IOC_TYPE, 0x23, struct kgsl_sharedmem_from_vmalloc)
-
 #define IOCTL_KGSL_SHAREDMEM_FLUSH_CACHE   _IOW(KGSL_IOC_TYPE, 0x24, struct kgsl_sharedmem_free)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kgsl_drawctxt_set_bin_base_offset {
  unsigned int drawctxt_id;
  unsigned int offset;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IOCTL_KGSL_DRAWCTXT_SET_BIN_BASE_OFFSET   _IOW(KGSL_IOC_TYPE, 0x25, struct kgsl_drawctxt_set_bin_base_offset)
-
 #endif
-
diff --git a/libc/kernel/common/linux/msm_mdp.h b/libc/kernel/common/linux/msm_mdp.h
index c355218..cfb91a9 100644
--- a/libc/kernel/common/linux/msm_mdp.h
+++ b/libc/kernel/common/linux/msm_mdp.h
@@ -7,80 +7,90 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MSM_MDP_H_
 #define _MSM_MDP_H_
-
 #include <linux/types.h>
-
 #define MSMFB_IOCTL_MAGIC 'm'
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSMFB_GRP_DISP _IOW(MSMFB_IOCTL_MAGIC, 1, unsigned int)
 #define MSMFB_BLIT _IOW(MSMFB_IOCTL_MAGIC, 2, unsigned int)
-
 enum {
  MDP_RGB_565,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MDP_XRGB_8888,
  MDP_Y_CBCR_H2V2,
  MDP_ARGB_8888,
  MDP_RGB_888,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MDP_Y_CRCB_H2V2,
  MDP_YCRYCB_H2V1,
  MDP_Y_CRCB_H2V1,
  MDP_Y_CBCR_H2V1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MDP_RGBA_8888,
  MDP_BGRA_8888,
  MDP_RGBX_8888,
  MDP_IMGTYPE_LIMIT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  PMEM_IMG,
  FB_IMG,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define MDP_ROT_NOP 0
 #define MDP_FLIP_LR 0x1
 #define MDP_FLIP_UD 0x2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MDP_ROT_90 0x4
 #define MDP_ROT_180 (MDP_FLIP_UD|MDP_FLIP_LR)
 #define MDP_ROT_270 (MDP_ROT_90|MDP_FLIP_UD|MDP_FLIP_LR)
 #define MDP_DITHER 0x8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MDP_BLUR 0x10
 #define MDP_BLEND_FG_PREMULT 0x20000
-
 #define MDP_TRANSP_NOP 0xffffffff
 #define MDP_ALPHA_NOP 0xff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mdp_rect {
  uint32_t x;
  uint32_t y;
  uint32_t w;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t h;
 };
-
 struct mdp_img {
  uint32_t width;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t height;
  uint32_t format;
  uint32_t offset;
  int memory_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct mdp_blit_req {
  struct mdp_img src;
  struct mdp_img dst;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mdp_rect src_rect;
  struct mdp_rect dst_rect;
  uint32_t alpha;
  uint32_t transp_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t flags;
 };
-
 struct mdp_blit_req_list {
  uint32_t count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mdp_blit_req req[];
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/msm_q6vdec.h b/libc/kernel/common/linux/msm_q6vdec.h
index 0182bfb..d1281b0 100644
--- a/libc/kernel/common/linux/msm_q6vdec.h
+++ b/libc/kernel/common/linux/msm_q6vdec.h
@@ -7,206 +7,225 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MSM_VDEC_H_
 #define _MSM_VDEC_H_
-
 #include <linux/types.h>
-
 #define VDEC_IOCTL_MAGIC 'v'
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_IOCTL_INITIALIZE _IOWR(VDEC_IOCTL_MAGIC, 1, struct vdec_init)
 #define VDEC_IOCTL_SETBUFFERS _IOW(VDEC_IOCTL_MAGIC, 2, struct vdec_buffer)
 #define VDEC_IOCTL_QUEUE _IOWR(VDEC_IOCTL_MAGIC, 3,   struct vdec_input_buf)
 #define VDEC_IOCTL_REUSEFRAMEBUFFER _IOW(VDEC_IOCTL_MAGIC, 4, unsigned int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_IOCTL_FLUSH _IOW(VDEC_IOCTL_MAGIC, 5, unsigned int)
 #define VDEC_IOCTL_EOS _IO(VDEC_IOCTL_MAGIC, 6)
 #define VDEC_IOCTL_GETMSG _IOR(VDEC_IOCTL_MAGIC, 7, struct vdec_msg)
 #define VDEC_IOCTL_CLOSE _IO(VDEC_IOCTL_MAGIC, 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_IOCTL_FREEBUFFERS _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_buf_info)
 #define VDEC_IOCTL_GETDECATTRIBUTES _IOR(VDEC_IOCTL_MAGIC, 10,   struct vdec_dec_attributes)
-
 enum {
  VDEC_FRAME_DECODE_OK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_FRAME_DECODE_ERR,
  VDEC_FATAL_ERR,
  VDEC_FLUSH_FINISH,
  VDEC_EOS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_FRAME_FLUSH,
  VDEC_STREAM_SWITCH,
  VDEC_SUSPEND_FINISH,
  VDEC_BUFFER_CONSUMED
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  VDEC_FLUSH_INPUT,
  VDEC_FLUSH_OUTPUT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_FLUSH_ALL
 };
-
 enum {
  VDEC_BUFFER_TYPE_INPUT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_BUFFER_TYPE_OUTPUT,
  VDEC_BUFFER_TYPE_INTERNAL1,
  VDEC_BUFFER_TYPE_INTERNAL2,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  VDEC_QUEUE_SUCCESS,
  VDEC_QUEUE_FAILED,
  VDEC_QUEUE_BADSTATE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct vdec_input_buf_info {
  u32 offset;
  u32 data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 size;
  int timestamp_lo;
  int timestamp_hi;
  int avsync_state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 flags;
 };
-
 struct vdec_buf_desc {
  u32 bufsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 num_min_buffers;
  u32 num_max_buffers;
 };
-
 struct vdec_buf_req {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 max_input_queue_size;
  struct vdec_buf_desc input;
  struct vdec_buf_desc output;
  struct vdec_buf_desc dec_req1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vdec_buf_desc dec_req2;
 };
-
 struct vdec_region_info {
  u32 src_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 offset;
  u32 size;
 };
-
 struct vdec_config {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 fourcc;
  u32 width;
  u32 height;
  u32 order;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 notify_enable;
  u32 vc1_rowbase;
  u32 h264_startcode_detect;
  u32 h264_nal_len_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 postproc_flag;
  u32 fruc_enable;
  u32 reserved;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vdec_vc1_panscan_regions {
  int num;
  int width[4];
  int height[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int xoffset[4];
  int yoffset[4];
 };
-
 struct vdec_cropping_window {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 x1;
  u32 y1;
  u32 x2;
  u32 y2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct vdec_frame_info {
  u32 status;
  u32 offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 data1;
  u32 data2;
  int timestamp_lo;
  int timestamp_hi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int cal_timestamp_lo;
  int cal_timestamp_hi;
  u32 dec_width;
  u32 dec_height;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vdec_cropping_window cwin;
  u32 picture_type[2];
  u32 picture_format;
  u32 vc1_rangeY;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 vc1_rangeUV;
  u32 picture_resolution;
  u32 frame_disp_repeat;
  u32 repeat_first_field;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 top_field_first;
  u32 interframe_interp;
  struct vdec_vc1_panscan_regions panscan;
  u32 concealed_macblk_num;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 flags;
  u32 performance_stats;
  u32 data3;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vdec_buf_info {
  u32 buf_type;
  struct vdec_region_info region;
  u32 num_buf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 islast;
 };
-
 struct vdec_buffer {
  u32 pmem_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vdec_buf_info buf;
 };
-
 struct vdec_sequence {
  u8 *header;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 len;
 };
-
 struct vdec_config_sps {
  struct vdec_config cfg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vdec_sequence seq;
 };
-
 #define VDEC_MSG_REUSEINPUTBUFFER 1
 #define VDEC_MSG_FRAMEDONE 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vdec_msg {
  u32 id;
-
  union {
-
  u32 buf_id;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vdec_frame_info vfr_info;
  };
 };
-
 struct vdec_init {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vdec_config_sps sps_cfg;
  struct vdec_buf_req *buf_req;
 };
-
 struct vdec_input_buf {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 pmem_id;
  struct vdec_input_buf_info buffer;
  struct vdec_queue_status *queue_status;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vdec_queue_status {
  u32 status;
 };
-
 struct vdec_dec_attributes {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 fourcc;
  u32 profile;
  u32 level;
  u32 dec_pic_width;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 dec_pic_height;
  struct vdec_buf_desc input;
  struct vdec_buf_desc output;
  struct vdec_buf_desc dec_req1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vdec_buf_desc dec_req2;
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/msm_q6venc.h b/libc/kernel/common/linux/msm_q6venc.h
index dbe118a..a214de5 100755
--- a/libc/kernel/common/linux/msm_q6venc.h
+++ b/libc/kernel/common/linux/msm_q6venc.h
@@ -7,288 +7,299 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MSM_VENC_H_
 #define _MSM_VENC_H_
-
 #include <linux/types.h>
-
 #define VENC_MAX_RECON_BUFFERS 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VENC_FLAG_EOS 0x00000001
 #define VENC_FLAG_END_OF_FRAME 0x00000010
 #define VENC_FLAG_SYNC_FRAME 0x00000020
 #define VENC_FLAG_EXTRA_DATA 0x00000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VENC_FLAG_CODEC_CONFIG 0x00000080
-
 enum venc_flush_type {
  VENC_FLUSH_INPUT,
  VENC_FLUSH_OUTPUT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_FLUSH_ALL
 };
-
 enum venc_state_type {
  VENC_STATE_PAUSE = 0x1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_STATE_START = 0x2,
  VENC_STATE_STOP = 0x4
 };
-
 enum venc_event_type_enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_EVENT_START_STATUS,
  VENC_EVENT_STOP_STATUS,
  VENC_EVENT_SUSPEND_STATUS,
  VENC_EVENT_RESUME_STATUS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_EVENT_FLUSH_STATUS,
  VENC_EVENT_RELEASE_INPUT,
  VENC_EVENT_DELIVER_OUTPUT,
  VENC_EVENT_UNKNOWN_STATUS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum venc_status_code {
  VENC_STATUS_SUCCESS,
  VENC_STATUS_ERROR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_STATUS_INVALID_STATE,
  VENC_STATUS_FLUSHING,
  VENC_STATUS_INVALID_PARAM,
  VENC_STATUS_CMD_QUEUE_FULL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_STATUS_CRITICAL,
  VENC_STATUS_INSUFFICIENT_RESOURCES,
  VENC_STATUS_TIMEOUT
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum venc_msg_code {
  VENC_MSG_INDICATION,
  VENC_MSG_INPUT_BUFFER_DONE,
  VENC_MSG_OUTPUT_BUFFER_DONE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_MSG_NEED_OUTPUT_BUFFER,
  VENC_MSG_FLUSH,
  VENC_MSG_START,
  VENC_MSG_STOP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_MSG_PAUSE,
  VENC_MSG_RESUME,
  VENC_MSG_STOP_READING_MSG
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum venc_error_code {
  VENC_S_SUCCESS,
  VENC_S_EFAIL,
  VENC_S_EFATAL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_S_EBADPARAM,
  VENC_S_EINVALSTATE,
  VENC_S_ENOSWRES,
  VENC_S_ENOHWRES,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_S_EBUFFREQ,
  VENC_S_EINVALCMD,
  VENC_S_ETIMEOUT,
  VENC_S_ENOREATMPT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_S_ENOPREREQ,
  VENC_S_ECMDQFULL,
  VENC_S_ENOTSUPP,
  VENC_S_ENOTIMPL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_S_ENOTPMEM,
  VENC_S_EFLUSHED,
  VENC_S_EINSUFBUF,
  VENC_S_ESAMESTATE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_S_EINVALTRANS
 };
-
 enum venc_mem_region_enum {
  VENC_PMEM_EBI1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VENC_PMEM_SMI
 };
-
 struct venc_buf_type {
  unsigned int region;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int phys;
  unsigned int size;
  int offset;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_qp_range {
  unsigned int min_qp;
  unsigned int max_qp;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_frame_rate {
  unsigned int frame_rate_num;
  unsigned int frame_rate_den;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_slice_info {
  unsigned int slice_mode;
  unsigned int units_per_slice;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_extra_data {
  unsigned int slice_extra_data_flag;
  unsigned int slice_client_data1;
  unsigned int slice_client_data2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int slice_client_data3;
  unsigned int none_extra_data_flag;
  unsigned int none_client_data1;
  unsigned int none_client_data2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int none_client_data3;
 };
-
 struct venc_common_config {
  unsigned int standard;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int input_frame_height;
  unsigned int input_frame_width;
  unsigned int output_frame_height;
  unsigned int output_frame_width;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int rotation_angle;
  unsigned int intra_period;
  unsigned int rate_control;
  struct venc_frame_rate frame_rate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int bitrate;
  struct venc_qp_range qp_range;
  unsigned int iframe_qp;
  unsigned int pframe_qp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct venc_slice_info slice_config;
  struct venc_extra_data extra_data;
 };
-
 struct venc_nonio_buf_config {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct venc_buf_type recon_buf1;
  struct venc_buf_type recon_buf2;
  struct venc_buf_type wb_buf;
  struct venc_buf_type cmd_buf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct venc_buf_type vlc_buf;
 };
-
 struct venc_mpeg4_config {
  unsigned int profile;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int level;
  unsigned int time_resolution;
  unsigned int ac_prediction;
  unsigned int hec_interval;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int data_partition;
  unsigned int short_header;
  unsigned int rvlc_enable;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_h263_config {
  unsigned int profile;
  unsigned int level;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_h264_config {
  unsigned int profile;
  unsigned int level;
  unsigned int max_nal;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int idr_period;
 };
-
 struct venc_pmem {
  int src;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int fd;
  unsigned int offset;
  void *virt;
  void *phys;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int size;
 };
-
 struct venc_buffer {
  unsigned char *ptr_buffer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int size;
  unsigned int len;
  unsigned int offset;
  long long time_stamp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int flags;
  unsigned int client_data;
-
 };
-
 struct venc_buffers {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct venc_pmem recon_buf[VENC_MAX_RECON_BUFFERS];
  struct venc_pmem wb_buf;
  struct venc_pmem cmd_buf;
  struct venc_pmem vlc_buf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct venc_buffer_flush {
  unsigned int flush_mode;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union venc_msg_data {
  struct venc_buffer buf;
  struct venc_buffer_flush flush_ret;
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_msg {
  unsigned int status_code;
  unsigned int msg_code;
  union venc_msg_data msg_data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int msg_data_size;
 };
-
 union venc_codec_config {
  struct venc_mpeg4_config mpeg4_params;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct venc_h263_config h263_params;
  struct venc_h264_config h264_params;
 };
-
 struct venc_q6_config {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct venc_common_config config_params;
  union venc_codec_config codec_params;
  struct venc_nonio_buf_config buf_params;
  void *callback_event;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct venc_hdr_config {
  struct venc_common_config config_params;
  union venc_codec_config codec_params;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct venc_init_config {
  struct venc_q6_config q6_config;
  struct venc_buffers q6_bufs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct venc_seq_config {
  int size;
  struct venc_pmem buf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct venc_q6_config q6_config;
 };
-
 #define VENC_IOCTL_MAGIC 'V'
-
 #define VENC_IOCTL_CMD_READ_NEXT_MSG   _IOWR(VENC_IOCTL_MAGIC, 1, struct venc_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VENC_IOCTL_CMD_STOP_READ_MSG _IO(VENC_IOCTL_MAGIC, 2)
-
 #define VENC_IOCTL_SET_INPUT_BUFFER   _IOW(VENC_IOCTL_MAGIC, 3, struct venc_pmem)
-
 #define VENC_IOCTL_SET_OUTPUT_BUFFER   _IOW(VENC_IOCTL_MAGIC, 4, struct venc_pmem)
-
 #define VENC_IOCTL_CMD_START _IOW(VENC_IOCTL_MAGIC, 5, struct venc_init_config)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VENC_IOCTL_CMD_ENCODE_FRAME   _IOW(VENC_IOCTL_MAGIC, 6, struct venc_buffer)
-
 #define VENC_IOCTL_CMD_FILL_OUTPUT_BUFFER   _IOW(VENC_IOCTL_MAGIC, 7, struct venc_buffer)
-
 #define VENC_IOCTL_CMD_FLUSH   _IOW(VENC_IOCTL_MAGIC, 8, struct venc_buffer_flush)
-
 #define VENC_IOCTL_CMD_PAUSE _IO(VENC_IOCTL_MAGIC, 9)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VENC_IOCTL_CMD_RESUME _IO(VENC_IOCTL_MAGIC, 10)
-
 #define VENC_IOCTL_CMD_STOP _IO(VENC_IOCTL_MAGIC, 11)
-
 #define VENC_IOCTL_SET_INTRA_PERIOD   _IOW(VENC_IOCTL_MAGIC, 12, int)
-
 #define VENC_IOCTL_CMD_REQUEST_IFRAME _IO(VENC_IOCTL_MAGIC, 13)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VENC_IOCTL_GET_SEQUENCE_HDR   _IOWR(VENC_IOCTL_MAGIC, 14, struct venc_seq_config)
-
 #define VENC_IOCTL_SET_INTRA_REFRESH   _IOW(VENC_IOCTL_MAGIC, 15, int)
-
 #define VENC_IOCTL_SET_FRAME_RATE   _IOW(VENC_IOCTL_MAGIC, 16, struct venc_frame_rate)
-
 #define VENC_IOCTL_SET_TARGET_BITRATE   _IOW(VENC_IOCTL_MAGIC, 17, int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VENC_IOCTL_SET_QP_RANGE   _IOW(VENC_IOCTL_MAGIC, 18, struct venc_qp_range)
-
 #endif
diff --git a/libc/kernel/common/linux/msm_vidc_dec.h b/libc/kernel/common/linux/msm_vidc_dec.h
index 20837a7..2a5587a 100644
--- a/libc/kernel/common/linux/msm_vidc_dec.h
+++ b/libc/kernel/common/linux/msm_vidc_dec.h
@@ -7,454 +7,477 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MSM_VIDC_DEC_H_
 #define _MSM_VIDC_DEC_H_
-
 #include <linux/types.h>
 #include <linux/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_S_BASE 0x40000000
-
 #define VDEC_S_SUCCESS (VDEC_S_BASE)
-
 #define VDEC_S_EFAIL (VDEC_S_BASE + 1)
-
 #define VDEC_S_EFATAL (VDEC_S_BASE + 2)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_S_EBADPARAM (VDEC_S_BASE + 3)
-
 #define VDEC_S_EINVALSTATE (VDEC_S_BASE + 4)
-
 #define VDEC_S_ENOSWRES (VDEC_S_BASE + 5)
-
 #define VDEC_S_ENOHWRES (VDEC_S_BASE + 6)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_S_EINVALCMD (VDEC_S_BASE + 7)
-
 #define VDEC_S_ETIMEOUT (VDEC_S_BASE + 8)
-
 #define VDEC_S_ENOPREREQ (VDEC_S_BASE + 9)
-
 #define VDEC_S_ECMDQFULL (VDEC_S_BASE + 10)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_S_ENOTSUPP (VDEC_S_BASE + 11)
-
 #define VDEC_S_ENOTIMPL (VDEC_S_BASE + 12)
-
 #define VDEC_S_BUSY (VDEC_S_BASE + 13)
-
 #define VDEC_INTF_VER 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_MSG_BASE 0x0000000
-
 #define VDEC_MSG_INVALID (VDEC_MSG_BASE + 0)
 #define VDEC_MSG_RESP_INPUT_BUFFER_DONE (VDEC_MSG_BASE + 1)
 #define VDEC_MSG_RESP_OUTPUT_BUFFER_DONE (VDEC_MSG_BASE + 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_MSG_RESP_INPUT_FLUSHED (VDEC_MSG_BASE + 3)
 #define VDEC_MSG_RESP_OUTPUT_FLUSHED (VDEC_MSG_BASE + 4)
 #define VDEC_MSG_RESP_FLUSH_INPUT_DONE (VDEC_MSG_BASE + 5)
 #define VDEC_MSG_RESP_FLUSH_OUTPUT_DONE (VDEC_MSG_BASE + 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_MSG_RESP_START_DONE (VDEC_MSG_BASE + 7)
 #define VDEC_MSG_RESP_STOP_DONE (VDEC_MSG_BASE + 8)
 #define VDEC_MSG_RESP_PAUSE_DONE (VDEC_MSG_BASE + 9)
 #define VDEC_MSG_RESP_RESUME_DONE (VDEC_MSG_BASE + 10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_MSG_RESP_RESOURCE_LOADED (VDEC_MSG_BASE + 11)
 #define VDEC_EVT_RESOURCES_LOST (VDEC_MSG_BASE + 12)
 #define VDEC_MSG_EVT_CONFIG_CHANGED (VDEC_MSG_BASE + 13)
 #define VDEC_MSG_EVT_HW_ERROR (VDEC_MSG_BASE + 14)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_BUFFERFLAG_EOS 0x00000001
 #define VDEC_BUFFERFLAG_DECODEONLY 0x00000004
 #define VDEC_BUFFERFLAG_DATACORRUPT 0x00000008
 #define VDEC_BUFFERFLAG_ENDOFFRAME 0x00000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_BUFFERFLAG_SYNCFRAME 0x00000020
 #define VDEC_BUFFERFLAG_EXTRADATA 0x00000040
 #define VDEC_BUFFERFLAG_CODECCONFIG 0x00000080
-
 #define VDEC_EXTRADATA_QP 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_EXTRADATA_SEI 0x00000002
 #define VDEC_EXTRADATA_VUI 0x00000004
 #define VDEC_EXTRADATA_MB_ERROR_MAP 0x00000008
-
 #define VDEC_CMDBASE 0x800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_CMD_SET_INTF_VERSION (VDEC_CMDBASE)
-
 #define VDEC_IOCTL_MAGIC 'v'
-
 struct vdec_ioctl_msg {
  void *inputparam;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *outputparam;
 };
-
 #define VDEC_IOCTL_GET_PROFILE_LEVEL_SUPPORTED   _IOWR(VDEC_IOCTL_MAGIC, 0, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_GET_INTERLACE_FORMAT   _IOR(VDEC_IOCTL_MAGIC, 1, struct vdec_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_IOCTL_GET_CURRENT_PROFILE_LEVEL   _IOWR(VDEC_IOCTL_MAGIC, 2, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_SET_OUTPUT_FORMAT   _IOWR(VDEC_IOCTL_MAGIC, 3, struct vdec_ioctl_msg)
 #define VDEC_IOCTL_GET_OUTPUT_FORMAT   _IOWR(VDEC_IOCTL_MAGIC, 4, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_SET_CODEC   _IOW(VDEC_IOCTL_MAGIC, 5, struct vdec_ioctl_msg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_IOCTL_GET_CODEC   _IOR(VDEC_IOCTL_MAGIC, 6, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_SET_PICRES   _IOW(VDEC_IOCTL_MAGIC, 7, struct vdec_ioctl_msg)
 #define VDEC_IOCTL_GET_PICRES   _IOR(VDEC_IOCTL_MAGIC, 8, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_SET_EXTRADATA   _IOW(VDEC_IOCTL_MAGIC, 9, struct vdec_ioctl_msg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_IOCTL_GET_EXTRADATA   _IOR(VDEC_IOCTL_MAGIC, 10, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_SET_SEQUENCE_HEADER   _IOW(VDEC_IOCTL_MAGIC, 11, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_SET_BUFFER_REQ   _IOW(VDEC_IOCTL_MAGIC, 12, struct vdec_ioctl_msg)
 #define VDEC_IOCTL_GET_BUFFER_REQ   _IOR(VDEC_IOCTL_MAGIC, 13, struct vdec_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_IOCTL_ALLOCATE_BUFFER   _IOWR(VDEC_IOCTL_MAGIC, 14, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_FREE_BUFFER   _IOW(VDEC_IOCTL_MAGIC, 15, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_SET_BUFFER   _IOW(VDEC_IOCTL_MAGIC, 16, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_FILL_OUTPUT_BUFFER   _IOW(VDEC_IOCTL_MAGIC, 17, struct vdec_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_IOCTL_DECODE_FRAME   _IOW(VDEC_IOCTL_MAGIC, 18, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_LOAD_RESOURCES _IO(VDEC_IOCTL_MAGIC, 19)
 #define VDEC_IOCTL_CMD_START _IO(VDEC_IOCTL_MAGIC, 20)
 #define VDEC_IOCTL_CMD_STOP _IO(VDEC_IOCTL_MAGIC, 21)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_IOCTL_CMD_PAUSE _IO(VDEC_IOCTL_MAGIC, 22)
 #define VDEC_IOCTL_CMD_RESUME _IO(VDEC_IOCTL_MAGIC, 23)
-
 #define VDEC_IOCTL_CMD_FLUSH _IOW(VDEC_IOCTL_MAGIC, 24, struct vdec_ioctl_msg)
-
 #define VDEC_IOCTL_GET_NEXT_MSG   _IOR(VDEC_IOCTL_MAGIC, 25, struct vdec_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VDEC_IOCTL_STOP_NEXT_MSG _IO(VDEC_IOCTL_MAGIC, 26)
-
 #define VDEC_IOCTL_GET_NUMBER_INSTANCES   _IOR(VDEC_IOCTL_MAGIC, 27, struct vdec_ioctl_msg)
-
 enum vdec_picture {
  PICTURE_TYPE_I,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PICTURE_TYPE_P,
  PICTURE_TYPE_B,
  PICTURE_TYPE_BI,
  PICTURE_TYPE_SKIP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PICTURE_TYPE_UNKNOWN
 };
-
 enum vdec_buffer {
  VDEC_BUFFER_TYPE_INPUT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_BUFFER_TYPE_OUTPUT
 };
-
 struct vdec_allocatorproperty {
  enum vdec_buffer buffer_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t mincount;
  uint32_t maxcount;
  uint32_t actualcount;
  uint32_t buffer_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t alignment;
  uint32_t buf_poolid;
 };
-
 struct vdec_bufferpayload {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *bufferaddr;
  uint32_t buffer_len;
  int pmem_fd;
  uint32_t offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t mmaped_size;
 };
-
 struct vdec_setbuffer_cmd {
  enum vdec_buffer buffer_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vdec_bufferpayload buffer;
 };
-
 struct vdec_fillbuffer_cmd {
  struct vdec_bufferpayload buffer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *client_data;
 };
-
 enum vdec_bufferflush {
  VDEC_FLUSH_TYPE_INPUT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_FLUSH_TYPE_OUTPUT,
  VDEC_FLUSH_TYPE_ALL
 };
-
 enum vdec_codec {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_CODECTYPE_H264 = 0x1,
  VDEC_CODECTYPE_H263 = 0x2,
  VDEC_CODECTYPE_MPEG4 = 0x3,
  VDEC_CODECTYPE_DIVX_3 = 0x4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_CODECTYPE_DIVX_4 = 0x5,
  VDEC_CODECTYPE_DIVX_5 = 0x6,
  VDEC_CODECTYPE_DIVX_6 = 0x7,
  VDEC_CODECTYPE_XVID = 0x8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_CODECTYPE_MPEG1 = 0x9,
  VDEC_CODECTYPE_MPEG2 = 0xa,
  VDEC_CODECTYPE_VC1 = 0xb,
  VDEC_CODECTYPE_VC1_RCV = 0xc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum vdec_mpeg2_profile {
  VDEC_MPEG2ProfileSimple = 0x1,
  VDEC_MPEG2ProfileMain = 0x2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG2Profile422 = 0x4,
  VDEC_MPEG2ProfileSNR = 0x8,
  VDEC_MPEG2ProfileSpatial = 0x10,
  VDEC_MPEG2ProfileHigh = 0x20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG2ProfileKhronosExtensions = 0x6F000000,
  VDEC_MPEG2ProfileVendorStartUnused = 0x7F000000,
  VDEC_MPEG2ProfileMax = 0x7FFFFFFF
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum vdec_mpeg2_level {
-
  VDEC_MPEG2LevelLL = 0x1,
  VDEC_MPEG2LevelML = 0x2,
  VDEC_MPEG2LevelH14 = 0x4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG2LevelHL = 0x8,
  VDEC_MPEG2LevelKhronosExtensions = 0x6F000000,
  VDEC_MPEG2LevelVendorStartUnused = 0x7F000000,
  VDEC_MPEG2LevelMax = 0x7FFFFFFF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum vdec_mpeg4_profile {
  VDEC_MPEG4ProfileSimple = 0x01,
  VDEC_MPEG4ProfileSimpleScalable = 0x02,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG4ProfileCore = 0x04,
  VDEC_MPEG4ProfileMain = 0x08,
  VDEC_MPEG4ProfileNbit = 0x10,
  VDEC_MPEG4ProfileScalableTexture = 0x20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG4ProfileSimpleFace = 0x40,
  VDEC_MPEG4ProfileSimpleFBA = 0x80,
  VDEC_MPEG4ProfileBasicAnimated = 0x100,
  VDEC_MPEG4ProfileHybrid = 0x200,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG4ProfileAdvancedRealTime = 0x400,
  VDEC_MPEG4ProfileCoreScalable = 0x800,
  VDEC_MPEG4ProfileAdvancedCoding = 0x1000,
  VDEC_MPEG4ProfileAdvancedCore = 0x2000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG4ProfileAdvancedScalable = 0x4000,
  VDEC_MPEG4ProfileAdvancedSimple = 0x8000,
  VDEC_MPEG4ProfileKhronosExtensions = 0x6F000000,
  VDEC_MPEG4ProfileVendorStartUnused = 0x7F000000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG4ProfileMax = 0x7FFFFFFF
 };
-
 enum vdec_mpeg4_level {
  VDEC_MPEG4Level0 = 0x01,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG4Level0b = 0x02,
  VDEC_MPEG4Level1 = 0x04,
  VDEC_MPEG4Level2 = 0x08,
  VDEC_MPEG4Level3 = 0x10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG4Level4 = 0x20,
  VDEC_MPEG4Level4a = 0x40,
  VDEC_MPEG4Level5 = 0x80,
  VDEC_MPEG4LevelKhronosExtensions = 0x6F000000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_MPEG4LevelVendorStartUnused = 0x7F000000,
  VDEC_MPEG4LevelMax = 0x7FFFFFFF
 };
-
 enum vdec_avc_profile {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_AVCProfileBaseline = 0x01,
  VDEC_AVCProfileMain = 0x02,
  VDEC_AVCProfileExtended = 0x04,
  VDEC_AVCProfileHigh = 0x08,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_AVCProfileHigh10 = 0x10,
  VDEC_AVCProfileHigh422 = 0x20,
  VDEC_AVCProfileHigh444 = 0x40,
  VDEC_AVCProfileKhronosExtensions = 0x6F000000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_AVCProfileVendorStartUnused = 0x7F000000,
  VDEC_AVCProfileMax = 0x7FFFFFFF
 };
-
 enum vdec_avc_level {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_AVCLevel1 = 0x01,
  VDEC_AVCLevel1b = 0x02,
  VDEC_AVCLevel11 = 0x04,
  VDEC_AVCLevel12 = 0x08,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_AVCLevel13 = 0x10,
  VDEC_AVCLevel2 = 0x20,
  VDEC_AVCLevel21 = 0x40,
  VDEC_AVCLevel22 = 0x80,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_AVCLevel3 = 0x100,
  VDEC_AVCLevel31 = 0x200,
  VDEC_AVCLevel32 = 0x400,
  VDEC_AVCLevel4 = 0x800,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_AVCLevel41 = 0x1000,
  VDEC_AVCLevel42 = 0x2000,
  VDEC_AVCLevel5 = 0x4000,
  VDEC_AVCLevel51 = 0x8000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_AVCLevelKhronosExtensions = 0x6F000000,
  VDEC_AVCLevelVendorStartUnused = 0x7F000000,
  VDEC_AVCLevelMax = 0x7FFFFFFF
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum vdec_divx_profile {
  VDEC_DIVXProfile_qMobile = 0x01,
  VDEC_DIVXProfile_Mobile = 0x02,
  VDEC_DIVXProfile_HD = 0x04,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_DIVXProfile_Handheld = 0x08,
  VDEC_DIVXProfile_Portable = 0x10,
  VDEC_DIVXProfile_HomeTheater = 0x20
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum vdec_xvid_profile {
  VDEC_XVIDProfile_Simple = 0x1,
  VDEC_XVIDProfile_Advanced_Realtime_Simple = 0x2,
  VDEC_XVIDProfile_Advanced_Simple = 0x4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum vdec_xvid_level {
  VDEC_XVID_LEVEL_S_L0 = 0x1,
  VDEC_XVID_LEVEL_S_L1 = 0x2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_XVID_LEVEL_S_L2 = 0x4,
  VDEC_XVID_LEVEL_S_L3 = 0x8,
  VDEC_XVID_LEVEL_ARTS_L1 = 0x10,
  VDEC_XVID_LEVEL_ARTS_L2 = 0x20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_XVID_LEVEL_ARTS_L3 = 0x40,
  VDEC_XVID_LEVEL_ARTS_L4 = 0x80,
  VDEC_XVID_LEVEL_AS_L0 = 0x100,
  VDEC_XVID_LEVEL_AS_L1 = 0x200,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_XVID_LEVEL_AS_L2 = 0x400,
  VDEC_XVID_LEVEL_AS_L3 = 0x800,
  VDEC_XVID_LEVEL_AS_L4 = 0x1000
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum vdec_h263profile {
  VDEC_H263ProfileBaseline = 0x01,
  VDEC_H263ProfileH320Coding = 0x02,
  VDEC_H263ProfileBackwardCompatible = 0x04,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_H263ProfileISWV2 = 0x08,
  VDEC_H263ProfileISWV3 = 0x10,
  VDEC_H263ProfileHighCompression = 0x20,
  VDEC_H263ProfileInternet = 0x40,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_H263ProfileInterlace = 0x80,
  VDEC_H263ProfileHighLatency = 0x100,
  VDEC_H263ProfileKhronosExtensions = 0x6F000000,
  VDEC_H263ProfileVendorStartUnused = 0x7F000000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_H263ProfileMax = 0x7FFFFFFF
 };
-
 enum vdec_h263level {
  VDEC_H263Level10 = 0x01,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_H263Level20 = 0x02,
  VDEC_H263Level30 = 0x04,
  VDEC_H263Level40 = 0x08,
  VDEC_H263Level45 = 0x10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_H263Level50 = 0x20,
  VDEC_H263Level60 = 0x40,
  VDEC_H263Level70 = 0x80,
  VDEC_H263LevelKhronosExtensions = 0x6F000000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_H263LevelVendorStartUnused = 0x7F000000,
  VDEC_H263LevelMax = 0x7FFFFFFF
 };
-
 enum vdec_wmv_format {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_WMVFormatUnused = 0x01,
  VDEC_WMVFormat7 = 0x02,
  VDEC_WMVFormat8 = 0x04,
  VDEC_WMVFormat9 = 0x08,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_WMFFormatKhronosExtensions = 0x6F000000,
  VDEC_WMFFormatVendorStartUnused = 0x7F000000,
  VDEC_WMVFormatMax = 0x7FFFFFFF
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum vdec_vc1_profile {
  VDEC_VC1ProfileSimple = 0x1,
  VDEC_VC1ProfileMain = 0x2,
  VDEC_VC1ProfileAdvanced = 0x4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum vdec_vc1_level {
  VDEC_VC1_LEVEL_S_Low = 0x1,
  VDEC_VC1_LEVEL_S_Medium = 0x2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_VC1_LEVEL_M_Low = 0x4,
  VDEC_VC1_LEVEL_M_Medium = 0x8,
  VDEC_VC1_LEVEL_M_High = 0x10,
  VDEC_VC1_LEVEL_A_L0 = 0x20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_VC1_LEVEL_A_L1 = 0x40,
  VDEC_VC1_LEVEL_A_L2 = 0x80,
  VDEC_VC1_LEVEL_A_L3 = 0x100,
  VDEC_VC1_LEVEL_A_L4 = 0x200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct vdec_profile_level {
  uint32_t profiles;
  uint32_t levels;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum vdec_interlaced_format {
  VDEC_InterlaceFrameProgressive = 0x1,
  VDEC_InterlaceInterleaveFrameTopFieldFirst = 0x2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_InterlaceInterleaveFrameBottomFieldFirst = 0x4
 };
-
 enum vdec_output_fromat {
  VDEC_YUV_FORMAT_NV12 = 0x1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VDEC_YUV_FORMAT_TILE_4x2 = 0x2
 };
-
 struct vdec_picsize {
  uint32_t frame_width;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t frame_height;
  uint32_t stride;
  uint32_t scan_lines;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vdec_seqheader {
  uint8_t *ptr_seqheader;
  uint32_t seq_header_len;
  int pmem_fd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t pmem_offset;
 };
-
 struct vdec_mberror {
  uint8_t *ptr_errormap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t err_mapsize;
 };
-
 struct vdec_input_frameinfo {
  uint8_t *bufferaddr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t offset;
  uint32_t datalen;
  uint32_t flags;
  int64_t timestamp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *client_data;
  int pmem_fd;
  uint32_t pmem_offset;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vdec_framesize {
- uint32_t left;
- uint32_t top;
- uint32_t right;
- uint32_t bottom;
+ uint32_t n_left;
+ uint32_t n_top;
+ uint32_t n_right;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint32_t n_bottom;
 };
-
 struct vdec_output_frameinfo {
  uint8_t *phy_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *bufferaddr;
  uint32_t offset;
  uint32_t len;
  uint32_t flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int64_t time_stamp;
  void *client_data;
  void *input_frame_clientdata;
  struct vdec_framesize framesize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 union vdec_msgdata {
  struct vdec_output_frameinfo output_frame;
  void *input_frame_clientdata;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct vdec_msginfo {
  uint32_t status_code;
  uint32_t msgcode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union vdec_msgdata msgdata;
  uint32_t msgdatasize;
 };
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/msm_vidc_enc.h b/libc/kernel/common/linux/msm_vidc_enc.h
index 45437a2..87b81d5 100644
--- a/libc/kernel/common/linux/msm_vidc_enc.h
+++ b/libc/kernel/common/linux/msm_vidc_enc.h
@@ -7,396 +7,387 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MSM_VIDC_ENC_H_
 #define _MSM_VIDC_ENC_H_
-
 #include <linux/types.h>
 #include <linux/ioctl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_S_BASE 0x00000000
 #define VEN_S_SUCCESS (VEN_S_BASE) 
 #define VEN_S_EFAIL (VEN_S_BASE+1) 
 #define VEN_S_EFATAL (VEN_S_BASE+2) 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_S_EBADPARAM (VEN_S_BASE+3) 
-
 #define VEN_S_EINVALSTATE (VEN_S_BASE+4)
 #define VEN_S_ENOSWRES (VEN_S_BASE+5) 
 #define VEN_S_ENOHWRES (VEN_S_BASE+6) 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_S_EBUFFREQ (VEN_S_BASE+7) 
 #define VEN_S_EINVALCMD (VEN_S_BASE+8) 
 #define VEN_S_ETIMEOUT (VEN_S_BASE+9) 
-
 #define VEN_S_ENOREATMPT (VEN_S_BASE+10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_S_ENOPREREQ (VEN_S_BASE+11) 
 #define VEN_S_ECMDQFULL (VEN_S_BASE+12) 
 #define VEN_S_ENOTSUPP (VEN_S_BASE+13) 
 #define VEN_S_ENOTIMPL (VEN_S_BASE+14) 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_S_ENOTPMEM (VEN_S_BASE+15) 
 #define VEN_S_EFLUSHED (VEN_S_BASE+16) 
 #define VEN_S_EINSUFBUF (VEN_S_BASE+17) 
 #define VEN_S_ESAMESTATE (VEN_S_BASE+18)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_S_EINVALTRANS (VEN_S_BASE+19)
-
 #define VEN_INTF_VER 1
-
 #define VEN_MSG_INDICATION 0
 #define VEN_MSG_INPUT_BUFFER_DONE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_MSG_OUTPUT_BUFFER_DONE 2
 #define VEN_MSG_NEED_OUTPUT_BUFFER 3
 #define VEN_MSG_FLUSH_INPUT_DONE 4
 #define VEN_MSG_FLUSH_OUPUT_DONE 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_MSG_START 6
 #define VEN_MSG_STOP 7
 #define VEN_MSG_PAUSE 8
 #define VEN_MSG_RESUME 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_MSG_STOP_READING_MSG 10
-
 #define VEN_BUFFLAG_EOS 0x00000001
 #define VEN_BUFFLAG_ENDOFFRAME 0x00000010
 #define VEN_BUFFLAG_SYNCFRAME 0x00000020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_BUFFLAG_EXTRADATA 0x00000040
 #define VEN_BUFFLAG_CODECCONFIG 0x00000080
-
 #define VEN_FRAME_TYPE_I 1 
 #define VEN_FRAME_TYPE_P 2 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_FRAME_TYPE_B 3 
-
 #define VEN_CODEC_MPEG4 1 
 #define VEN_CODEC_H264 2 
 #define VEN_CODEC_H263 3 
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_PROFILE_MPEG4_SP 1 
 #define VEN_PROFILE_MPEG4_ASP 2 
 #define VEN_PROFILE_H264_BASELINE 3 
 #define VEN_PROFILE_H264_MAIN 4 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_PROFILE_H264_HIGH 5 
 #define VEN_PROFILE_H263_BASELINE 6 
-
 #define VEN_LEVEL_MPEG4_0 0x1 
 #define VEN_LEVEL_MPEG4_1 0x2 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_LEVEL_MPEG4_2 0x3 
 #define VEN_LEVEL_MPEG4_3 0x4 
 #define VEN_LEVEL_MPEG4_4 0x5 
 #define VEN_LEVEL_MPEG4_5 0x6 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_LEVEL_MPEG4_3b 0x7 
 #define VEN_LEVEL_MPEG4_6 0x8 
-
 #define VEN_LEVEL_H264_1 0x9 
 #define VEN_LEVEL_H264_1b 0xA 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_LEVEL_H264_1p1 0xB 
 #define VEN_LEVEL_H264_1p2 0xC 
 #define VEN_LEVEL_H264_1p3 0xD 
 #define VEN_LEVEL_H264_2 0xE 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_LEVEL_H264_2p1 0xF 
 #define VEN_LEVEL_H264_2p2 0x10 
 #define VEN_LEVEL_H264_3 0x11 
 #define VEN_LEVEL_H264_3p1 0x12 
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_LEVEL_H263_10 0x13 
 #define VEN_LEVEL_H263_20 0x14 
 #define VEN_LEVEL_H263_30 0x15 
 #define VEN_LEVEL_H263_40 0x16 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_LEVEL_H263_45 0x17 
 #define VEN_LEVEL_H263_50 0x18 
 #define VEN_LEVEL_H263_60 0x19 
 #define VEN_LEVEL_H263_70 0x1A 
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_ENTROPY_MODEL_CAVLC 1
 #define VEN_ENTROPY_MODEL_CABAC 2
-
 #define VEN_CABAC_MODEL_0 1 
 #define VEN_CABAC_MODEL_1 2 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_CABAC_MODEL_2 3 
-
 #define VEN_DB_DISABLE 1 
 #define VEN_DB_ALL_BLKG_BNDRY 2 
 #define VEN_DB_SKIP_SLICE_BNDRY 3 
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_MSLICE_OFF 1
 #define VEN_MSLICE_CNT_MB 2  
 #define VEN_MSLICE_CNT_BYTE 3  
 #define VEN_MSLICE_GOB 4  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_RC_OFF 1
 #define VEN_RC_VBR_VFR 2
 #define VEN_RC_VBR_CFR 3
 #define VEN_RC_CBR_VFR 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_FLUSH_INPUT 1
 #define VEN_FLUSH_OUTPUT 2
 #define VEN_FLUSH_ALL 3
-
 #define VEN_INPUTFMT_NV12 1 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_INPUTFMT_NV21 2 
-
 #define VEN_ROTATION_0 1 
 #define VEN_ROTATION_90 2 
 #define VEN_ROTATION_180 3 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_ROTATION_270 4 
-
 #define VEN_TIMEOUT_INFINITE 0xffffffff
-
 #define VEN_IR_OFF 1
 #define VEN_IR_CYCLIC 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IR_RANDOM 3
-
 #define VEN_IOCTLBASE_NENC 0x800
-
 #define VEN_IOCTLBASE_ENC 0x850
-
 struct venc_ioctl_msg{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *inputparam;
  void *outputparam;
 };
-
 #define VEN_IOCTL_SET_INTF_VERSION   _IOW(VEN_IOCTLBASE_NENC, 0, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_CMD_READ_NEXT_MSG   _IOWR(VEN_IOCTLBASE_NENC, 1, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_CMD_STOP_READ_MSG _IO(VEN_IOCTLBASE_NENC, 2)
-
 #define VEN_IOCTL_SET_INPUT_BUFFER_REQ   _IOW(VEN_IOCTLBASE_NENC, 3, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_INPUT_BUFFER_REQ   _IOR(VEN_IOCTLBASE_NENC, 4, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_CMD_ALLOC_INPUT_BUFFER   _IOW(VEN_IOCTLBASE_NENC, 5, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_INPUT_BUFFER   _IOW(VEN_IOCTLBASE_NENC, 6, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_CMD_FREE_INPUT_BUFFER   _IOW(VEN_IOCTLBASE_NENC, 7, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_OUTPUT_BUFFER_REQ   _IOW(VEN_IOCTLBASE_NENC, 8, struct venc_ioctl_msg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_GET_OUTPUT_BUFFER_REQ   _IOR(VEN_IOCTLBASE_NENC, 9, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_CMD_ALLOC_OUTPUT_BUFFER   _IOW(VEN_IOCTLBASE_NENC, 10, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_OUTPUT_BUFFER   _IOW(VEN_IOCTLBASE_NENC, 11, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_CMD_FREE_OUTPUT_BUFFER   _IOW(VEN_IOCTLBASE_NENC, 12, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_CMD_START _IO(VEN_IOCTLBASE_NENC, 13)
-
 #define VEN_IOCTL_CMD_ENCODE_FRAME   _IOW(VEN_IOCTLBASE_NENC, 14, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_CMD_FILL_OUTPUT_BUFFER   _IOW(VEN_IOCTLBASE_NENC, 15, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_CMD_FLUSH   _IOW(VEN_IOCTLBASE_NENC, 16, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_CMD_PAUSE _IO(VEN_IOCTLBASE_NENC, 17)
-
 #define VEN_IOCTL_CMD_RESUME _IO(VEN_IOCTLBASE_NENC, 18)
-
 #define VEN_IOCTL_CMD_STOP _IO(VEN_IOCTLBASE_NENC, 19)
-
 #define VEN_IOCTL_SET_BASE_CFG   _IOW(VEN_IOCTLBASE_ENC, 1, struct venc_ioctl_msg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_GET_BASE_CFG   _IOR(VEN_IOCTLBASE_ENC, 2, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_LIVE_MODE   _IOW(VEN_IOCTLBASE_ENC, 3, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_LIVE_MODE   _IOR(VEN_IOCTLBASE_ENC, 4, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_CODEC_PROFILE   _IOW(VEN_IOCTLBASE_ENC, 5, struct venc_ioctl_msg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_GET_CODEC_PROFILE   _IOR(VEN_IOCTLBASE_ENC, 6, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_PROFILE_LEVEL   _IOW(VEN_IOCTLBASE_ENC, 7, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_GET_PROFILE_LEVEL   _IOR(VEN_IOCTLBASE_ENC, 8, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_SHORT_HDR   _IOW(VEN_IOCTLBASE_ENC, 9, struct venc_ioctl_msg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_GET_SHORT_HDR   _IOR(VEN_IOCTLBASE_ENC, 10, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_SESSION_QP   _IOW(VEN_IOCTLBASE_ENC, 11, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_SESSION_QP   _IOR(VEN_IOCTLBASE_ENC, 12, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_INTRA_PERIOD   _IOW(VEN_IOCTLBASE_ENC, 13, struct venc_ioctl_msg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_GET_INTRA_PERIOD   _IOR(VEN_IOCTLBASE_ENC, 14, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_CMD_REQUEST_IFRAME _IO(VEN_IOCTLBASE_ENC, 15)
-
 #define VEN_IOCTL_GET_CAPABILITY   _IOR(VEN_IOCTLBASE_ENC, 16, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_GET_SEQUENCE_HDR   _IOR(VEN_IOCTLBASE_ENC, 17, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_SET_ENTROPY_CFG   _IOW(VEN_IOCTLBASE_ENC, 18, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_ENTROPY_CFG   _IOR(VEN_IOCTLBASE_ENC, 19, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_DEBLOCKING_CFG   _IOW(VEN_IOCTLBASE_ENC, 20, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_DEBLOCKING_CFG   _IOR(VEN_IOCTLBASE_ENC, 21, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_SET_INTRA_REFRESH   _IOW(VEN_IOCTLBASE_ENC, 22, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_INTRA_REFRESH   _IOR(VEN_IOCTLBASE_ENC, 23, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_MULTI_SLICE_CFG   _IOW(VEN_IOCTLBASE_ENC, 24, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_MULTI_SLICE_CFG   _IOR(VEN_IOCTLBASE_ENC, 25, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_SET_RATE_CTRL_CFG   _IOW(VEN_IOCTLBASE_ENC, 26, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_RATE_CTRL_CFG   _IOR(VEN_IOCTLBASE_ENC, 27, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_VOP_TIMING_CFG   _IOW(VEN_IOCTLBASE_ENC, 28, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_VOP_TIMING_CFG   _IOR(VEN_IOCTLBASE_ENC, 29, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_SET_FRAME_RATE   _IOW(VEN_IOCTLBASE_ENC, 30, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_FRAME_RATE   _IOR(VEN_IOCTLBASE_ENC, 31, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_TARGET_BITRATE   _IOW(VEN_IOCTLBASE_ENC, 32, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_TARGET_BITRATE   _IOR(VEN_IOCTLBASE_ENC, 33, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_SET_ROTATION   _IOW(VEN_IOCTLBASE_ENC, 34, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_ROTATION   _IOR(VEN_IOCTLBASE_ENC, 35, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_HEC   _IOW(VEN_IOCTLBASE_ENC, 36, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_HEC   _IOR(VEN_IOCTLBASE_ENC, 37, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_SET_DATA_PARTITION   _IOW(VEN_IOCTLBASE_ENC, 38, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_DATA_PARTITION   _IOR(VEN_IOCTLBASE_ENC, 39, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_RVLC   _IOW(VEN_IOCTLBASE_ENC, 40, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_RVLC   _IOR(VEN_IOCTLBASE_ENC, 41, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VEN_IOCTL_SET_AC_PREDICTION   _IOW(VEN_IOCTLBASE_ENC, 42, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_AC_PREDICTION   _IOR(VEN_IOCTLBASE_ENC, 43, struct venc_ioctl_msg)
-
 #define VEN_IOCTL_SET_QP_RANGE   _IOW(VEN_IOCTLBASE_ENC, 44, struct venc_ioctl_msg)
 #define VEN_IOCTL_GET_QP_RANGE   _IOR(VEN_IOCTLBASE_ENC, 45, struct venc_ioctl_msg)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_switch{
  unsigned char status;
 };
-
 struct venc_allocatorproperty{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long mincount;
  unsigned long maxcount;
  unsigned long actualcount;
  unsigned long datasize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long suffixsize;
  unsigned long alignment;
  unsigned long bufpoolid;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_bufferpayload{
  unsigned char *pbuffer;
  unsigned long nsize;
  int fd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int offset;
  unsigned int maped_size;
  unsigned long filled_len;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_buffer{
  unsigned char *ptrbuffer;
  unsigned long size;
  unsigned long len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long offset;
  long long timestamp;
  unsigned long flags;
  void *clientdata;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct venc_basecfg{
  unsigned long input_width;
  unsigned long input_height;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long dvs_width;
  unsigned long dvs_height;
  unsigned long codectype;
  unsigned long fps_num;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long fps_den;
  unsigned long targetbitrate;
  unsigned long inputformat;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_profile{
  unsigned long profile;
 };
 struct ven_profilelevel{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long level;
 };
-
 struct venc_sessionqp{
  unsigned long iframeqp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long pframqp;
 };
-
 struct venc_qprange{
  unsigned long maxqp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long minqp;
 };
 struct venc_intraperiod{
  unsigned long num_pframes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct venc_seqheader{
  unsigned char *hdrbufptr;
  unsigned long bufsize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long hdrlen;
 };
-
 struct venc_capability{
  unsigned long codec_types;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long maxframe_width;
  unsigned long maxframe_height;
  unsigned long maxtarget_bitrate;
  unsigned long maxframe_rate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long input_formats;
  unsigned char dvs;
 };
-
 struct venc_entropycfg{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned longentropysel;
  unsigned long cabacmodel;
 };
-
 struct venc_dbcfg{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long db_mode;
  unsigned long slicealpha_offset;
  unsigned long slicebeta_offset;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_intrarefresh{
  unsigned long irmode;
  unsigned long mbcount;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_multiclicecfg{
  unsigned long mslice_mode;
  unsigned long mslice_size;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_bufferflush{
  unsigned long flush_mode;
 };
-
 struct venc_ratectrlcfg{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long rcmode;
 };
-
 struct venc_voptimingcfg{
  unsigned long voptime_resolution;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 struct venc_framerate{
  unsigned long fps_denominator;
  unsigned long fps_numerator;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct venc_targetbitrate{
  unsigned long target_bitrate;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct venc_rotation{
  unsigned long rotation;
 };
-
 struct venc_timeout{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long millisec;
 };
-
 struct venc_headerextension{
  unsigned long header_extension;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct venc_msg{
  unsigned long statuscode;
  unsigned long msgcode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct venc_buffer buf;
  unsigned long msgdata_size;
 };
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mt9t013.h b/libc/kernel/common/linux/mt9t013.h
index 821ef21..6b8b31a 100644
--- a/libc/kernel/common/linux/mt9t013.h
+++ b/libc/kernel/common/linux/mt9t013.h
@@ -7,105 +7,99 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef CAMERA_MT9T013_H
 #define CAMERA_MT9T013_H
 #include <linux/cdev.h>
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/ioctl.h>
 #include <asm/sizes.h>
-
 #define MT9T013_I2C_IOCTL_MAGIC 'm'
-
 #define MT9T013_I2C_IOCTL_W   _IOW(MT9T013_I2C_IOCTL_MAGIC, 0, unsigned)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT9T013_I2C_IOCTL_R   _IOR(MT9T013_I2C_IOCTL_MAGIC, 1, unsigned)
-
 #define MT9T013_I2C_IOCTL_AF_W   _IOW(MT9T013_I2C_IOCTL_MAGIC, 2, unsigned)
-
 #define MT9T013_I2C_IOCTL_CAMIF_PAD_REG_RESET   _IO(MT9T013_I2C_IOCTL_MAGIC, 3)
-
 #define MT9T013_I2C_IOCTL_CAMIF_PAD_REG_RESET_2   _IO(MT9T013_I2C_IOCTL_MAGIC, 4)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAMERA_CONFIGURE_GPIOS   _IO(MT9T013_I2C_IOCTL_MAGIC, 7)
-
 #define CAMERA_UNCONFIGURE_GPIOS   _IO(MT9T013_I2C_IOCTL_MAGIC, 8)
-
 #define CAMERA_LENS_POWER_ON   _IO(MT9T013_I2C_IOCTL_MAGIC, 9)
-
 #define CAMERA_LENS_POWER_OFF   _IO(MT9T013_I2C_IOCTL_MAGIC, 10)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT9T013_I2C_IOCTL_CAMIF_APPS_RESET   _IO(MT9T013_I2C_IOCTL_MAGIC, 11)
-
 #define CAMIO_VFE_MDC_CLK 1  
 #define CAMIO_MDC_CLK 2  
 #define CAMIO_VFE_CLK 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT9T013_I2C_IOCTL_CLK_ENABLE   _IOW(MT9T013_I2C_IOCTL_MAGIC, 12, unsigned)
-
 #define MT9T013_I2C_IOCTL_CLK_DISABLE   _IOW(MT9T013_I2C_IOCTL_MAGIC, 13, unsigned)
-
 #define MT9T013_I2C_IOCTL_CLK_SELECT   _IOW(MT9T013_I2C_IOCTL_MAGIC, 14, unsigned)
-
 #define MT9T013_I2C_IOCTL_CLK_FREQ_PROG   _IOW(MT9T013_I2C_IOCTL_MAGIC, 15, unsigned)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAMSENSOR_REG_INIT 0<<0
 #define CAMSENSOR_REG_UPDATE_PERIODIC 1<<0
 #define CAMSENSOR_TYPE_PREVIEW 0<<1
 #define CAMSENSOR_TYPE_SNAPSHOT 1<<1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT9T013_I2C_IOCTL_SENSOR_SETTING   _IOW(MT9T013_I2C_IOCTL_MAGIC, 16, uint32_t)
-
 struct mt9t013_reg_struct
 {
  uint16_t vt_pix_clk_div;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t vt_sys_clk_div;
  uint16_t pre_pll_clk_div;
  uint16_t pll_multiplier;
  uint16_t op_pix_clk_div;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t op_sys_clk_div;
  uint16_t scale_m;
  uint16_t row_speed;
  uint16_t x_addr_start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t x_addr_end;
  uint16_t y_addr_start;
  uint16_t y_addr_end;
  uint16_t read_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t x_output_size ;
  uint16_t y_output_size;
  uint16_t line_length_pck;
  uint16_t frame_length_lines;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t coarse_integration_time;
  uint16_t fine_integration_time;
 };
-
 struct mt9t013_reg_pat {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mt9t013_reg_struct reg[2];
 };
-
 #define MT9T013_I2C_IOCTL_GET_REGISTERS   _IOR(MT9T013_I2C_IOCTL_MAGIC, 17, struct mt9t013_reg_pat *)
-
 struct mt9t013_exposure_gain {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t gain;
  uint16_t line;
  uint32_t mode;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT9T013_I2C_IOCTL_EXPOSURE_GAIN   _IOW(MT9T013_I2C_IOCTL_MAGIC, 18, struct exposure_gain *)
-
 #define MT9T013_I2C_IOCTL_MOVE_FOCUS   _IOW(MT9T013_I2C_IOCTL_MAGIC, 19, uint32_t)
-
 #define MT9T013_I2C_IOCTL_SET_DEFAULT_FOCUS   _IOW(MT9T013_I2C_IOCTL_MAGIC, 20, uint32_t)
-
 #define MT9T013_I2C_IOCTL_POWER_DOWN   _IO(MT9T013_I2C_IOCTL_MAGIC, 21)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mt9t013_init {
  int preview;
  uint16_t chipid;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT9T013_I2C_IOCTL_INIT   _IOWR(MT9T013_I2C_IOCTL_MAGIC, 22, struct mt9t013_init *)
-
 #endif
-
diff --git a/libc/kernel/common/linux/mtd/bbm.h b/libc/kernel/common/linux/mtd/bbm.h
index e311b23..cde3903 100644
--- a/libc/kernel/common/linux/mtd/bbm.h
+++ b/libc/kernel/common/linux/mtd/bbm.h
@@ -7,69 +7,64 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_BBM_H
 #define __LINUX_MTD_BBM_H
-
 #define NAND_MAX_CHIPS 8
-
 struct nand_bbt_descr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int options;
  int pages[NAND_MAX_CHIPS];
  int offs;
  int veroffs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t version[NAND_MAX_CHIPS];
  int len;
  int maxblocks;
  int reserved_block_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *pattern;
 };
-
 #define NAND_BBT_NRBITS_MSK 0x0000000F
 #define NAND_BBT_1BIT 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_2BIT 0x00000002
 #define NAND_BBT_4BIT 0x00000004
 #define NAND_BBT_8BIT 0x00000008
-
 #define NAND_BBT_LASTBLOCK 0x00000010
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_ABSPAGE 0x00000020
-
 #define NAND_BBT_SEARCH 0x00000040
-
 #define NAND_BBT_PERCHIP 0x00000080
-
 #define NAND_BBT_VERSION 0x00000100
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_CREATE 0x00000200
-
 #define NAND_BBT_SCANALLPAGES 0x00000400
-
 #define NAND_BBT_SCANEMPTY 0x00000800
-
 #define NAND_BBT_WRITE 0x00001000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_SAVECONTENT 0x00002000
-
 #define NAND_BBT_SCAN2NDPAGE 0x00004000
-
 #define NAND_BBT_SCAN_MAXBLOCKS 4
-
 #define ONENAND_BADBLOCK_POS 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct bbm_info {
  int bbt_erase_shift;
  int badblockpos;
  int options;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *bbt;
-
  int (*isbad_bbt)(struct mtd_info *mtd, loff_t ofs, int allowbbt);
-
  struct nand_bbt_descr *badblock_pattern;
-
  void *priv;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/mtd/blktrans.h b/libc/kernel/common/linux/mtd/blktrans.h
index 7c40724..e258698 100644
--- a/libc/kernel/common/linux/mtd/blktrans.h
+++ b/libc/kernel/common/linux/mtd/blktrans.h
@@ -7,57 +7,62 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_TRANS_H__
 #define __MTD_TRANS_H__
-
 #include <linux/mutex.h>
-
 struct hd_geometry;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_info;
 struct mtd_blktrans_ops;
 struct file;
 struct inode;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_blktrans_dev {
  struct mtd_blktrans_ops *tr;
  struct list_head list;
  struct mtd_info *mtd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mutex lock;
  int devnum;
  int blksize;
  unsigned long size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int readonly;
  void *blkcore_priv;
 };
-
 struct blkcore_priv;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_blktrans_ops {
  char *name;
  int major;
  int part_bits;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*readsect)(struct mtd_blktrans_dev *dev,
  unsigned long block, char *buffer);
  int (*writesect)(struct mtd_blktrans_dev *dev,
  unsigned long block, char *buffer);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*getgeo)(struct mtd_blktrans_dev *dev, struct hd_geometry *geo);
  int (*flush)(struct mtd_blktrans_dev *dev);
-
  int (*open)(struct mtd_blktrans_dev *dev);
  int (*release)(struct mtd_blktrans_dev *dev);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*add_mtd)(struct mtd_blktrans_ops *tr, struct mtd_info *mtd);
  void (*remove_dev)(struct mtd_blktrans_dev *dev);
-
  struct list_head devs;
  struct list_head list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct module *owner;
-
  struct mtd_blkcore_priv *blkcore_priv;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/cfi.h b/libc/kernel/common/linux/mtd/cfi.h
index d7f1ba1..944bbfa 100644
--- a/libc/kernel/common/linux/mtd/cfi.h
+++ b/libc/kernel/common/linux/mtd/cfi.h
@@ -7,181 +7,233 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_CFI_H__
 #define __MTD_CFI_H__
-
 #include <linux/delay.h>
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/interrupt.h>
 #include <linux/mtd/flashchip.h>
 #include <linux/mtd/map.h>
 #include <linux/mtd/cfi_endian.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi_interleave_is_1(cfi) (0)
-
 #define cfi_interleave_is_2(cfi) (0)
-
 #define cfi_interleave_is_4(cfi) (0)
-
 #define cfi_interleave_is_8(cfi) (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_DEVICETYPE_X8 (8 / 8)
 #define CFI_DEVICETYPE_X16 (16 / 8)
 #define CFI_DEVICETYPE_X32 (32 / 8)
 #define CFI_DEVICETYPE_X64 (64 / 8)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct cfi_ident {
+ uint8_t qry[3];
+ uint16_t P_ID;
+ uint16_t P_ADR;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint16_t A_ID;
+ uint16_t A_ADR;
+ uint8_t VccMin;
+ uint8_t VccMax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint8_t VppMin;
+ uint8_t VppMax;
+ uint8_t WordWriteTimeoutTyp;
+ uint8_t BufWriteTimeoutTyp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint8_t BlockEraseTimeoutTyp;
+ uint8_t ChipEraseTimeoutTyp;
+ uint8_t WordWriteTimeoutMax;
+ uint8_t BufWriteTimeoutMax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint8_t BlockEraseTimeoutMax;
+ uint8_t ChipEraseTimeoutMax;
+ uint8_t DevSize;
+ uint16_t InterfaceDesc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ uint16_t MaxBufWriteSize;
+ uint8_t NumEraseRegions;
+ uint32_t EraseRegionInfo[0];
+} __attribute__((packed));
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cfi_extquery {
  uint8_t pri[3];
  uint8_t MajorVersion;
  uint8_t MinorVersion;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 struct cfi_pri_intelext {
  uint8_t pri[3];
  uint8_t MajorVersion;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t MinorVersion;
  uint32_t FeatureSupport;
  uint8_t SuspendCmdSupport;
  uint16_t BlkStatusRegMask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t VccOptimal;
  uint8_t VppOptimal;
  uint8_t NumProtectionFields;
  uint16_t ProtRegAddr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t FactProtRegSize;
  uint8_t UserProtRegSize;
  uint8_t extra[0];
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cfi_intelext_otpinfo {
  uint32_t ProtRegAddr;
  uint16_t FactGroups;
  uint8_t FactProtRegSize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t UserGroups;
  uint8_t UserProtRegSize;
 } __attribute__((packed));
-
 struct cfi_intelext_blockinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t NumIdentBlocks;
  uint16_t BlockSize;
  uint16_t MinBlockEraseCycles;
  uint8_t BitsPerCell;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BlockCap;
 } __attribute__((packed));
-
 struct cfi_intelext_regioninfo {
  uint16_t NumIdentPartitions;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t NumOpAllowed;
  uint8_t NumOpAllowedSimProgMode;
  uint8_t NumOpAllowedSimEraMode;
  uint8_t NumBlockTypes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct cfi_intelext_blockinfo BlockTypes[1];
 } __attribute__((packed));
-
 struct cfi_intelext_programming_regioninfo {
  uint8_t ProgRegShift;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t Reserved1;
  uint8_t ControlValid;
  uint8_t Reserved2;
  uint8_t ControlInvalid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t Reserved3;
 } __attribute__((packed));
-
 struct cfi_pri_amdstd {
  uint8_t pri[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t MajorVersion;
  uint8_t MinorVersion;
  uint8_t SiliconRevision;
  uint8_t EraseSuspend;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BlkProt;
  uint8_t TmpBlkUnprotect;
  uint8_t BlkProtUnprot;
  uint8_t SimultaneousOps;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BurstMode;
  uint8_t PageMode;
  uint8_t VppMin;
  uint8_t VppMax;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t TopBottom;
 } __attribute__((packed));
-
 struct cfi_pri_atmel {
  uint8_t pri[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t MajorVersion;
  uint8_t MinorVersion;
  uint8_t Features;
  uint8_t BottomBoot;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t BurstMode;
  uint8_t PageMode;
 } __attribute__((packed));
-
 struct cfi_pri_query {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t NumFields;
  uint32_t ProtField[1];
 } __attribute__((packed));
-
 struct cfi_bri_query {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t PageModeReadCap;
  uint8_t NumFields;
  uint32_t ConfField[1];
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_NONE 0x0000
 #define P_ID_INTEL_EXT 0x0001
 #define P_ID_AMD_STD 0x0002
 #define P_ID_INTEL_STD 0x0003
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_AMD_EXT 0x0004
 #define P_ID_WINBOND 0x0006
 #define P_ID_ST_ADV 0x0020
 #define P_ID_MITSUBISHI_STD 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_MITSUBISHI_EXT 0x0101
 #define P_ID_SST_PAGE 0x0102
 #define P_ID_INTEL_PERFORMANCE 0x0200
 #define P_ID_INTEL_DATA 0x0210
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_ID_RESERVED 0xffff
-
 #define CFI_MODE_CFI 1
 #define CFI_MODE_JEDEC 0
-
 struct cfi_private {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t cmdset;
  void *cmdset_priv;
  int interleave;
  int device_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int cfi_mode;
  int addr_unlock1;
  int addr_unlock2;
  struct mtd_info *(*cmdset_setup)(struct map_info *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct cfi_ident *cfiq;
  int mfr, id;
  int numchips;
  unsigned long chipshift;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char *im_name;
  struct flchip chips[0];
 };
-
 #if BITS_PER_LONG >= 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #define CMD(x) cfi_build_cmd((x), map, cfi)
 #if BITS_PER_LONG >= 64
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MERGESTATUS(x) cfi_merge_status((x), map, cfi)
-
+struct cfi_extquery *cfi_read_pri(struct map_info *map, uint16_t adr, uint16_t size,
+ const char* name);
 struct cfi_fixup {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t mfr;
  uint16_t id;
  void (*fixup)(struct mtd_info *mtd, void* param);
  void* param;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define CFI_MFR_ANY 0xffff
 #define CFI_ID_ANY 0xffff
-
 #define CFI_MFR_AMD 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFI_MFR_ATMEL 0x001F
 #define CFI_MFR_ST 0x0020  
-
 typedef int (*varsize_frob_t)(struct map_info *map, struct flchip *chip,
  unsigned long adr, int len, void *thunk);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/mtd/cfi_endian.h b/libc/kernel/common/linux/mtd/cfi_endian.h
index 452091e..46ab5dc 100644
--- a/libc/kernel/common/linux/mtd/cfi_endian.h
+++ b/libc/kernel/common/linux/mtd/cfi_endian.h
@@ -7,39 +7,52 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm/byteorder.h>
-
 #define CFI_HOST_ENDIAN
-
 #ifdef CFI_LITTLE_ENDIAN
 #define cpu_to_cfi8(x) (x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi8_to_cpu(x) (x)
 #define cpu_to_cfi16(x) cpu_to_le16(x)
 #define cpu_to_cfi32(x) cpu_to_le32(x)
 #define cpu_to_cfi64(x) cpu_to_le64(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi16_to_cpu(x) le16_to_cpu(x)
 #define cfi32_to_cpu(x) le32_to_cpu(x)
 #define cfi64_to_cpu(x) le64_to_cpu(x)
 #elif defined (CFI_BIG_ENDIAN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_to_cfi8(x) (x)
 #define cfi8_to_cpu(x) (x)
 #define cpu_to_cfi16(x) cpu_to_be16(x)
 #define cpu_to_cfi32(x) cpu_to_be32(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_to_cfi64(x) cpu_to_be64(x)
 #define cfi16_to_cpu(x) be16_to_cpu(x)
 #define cfi32_to_cpu(x) be32_to_cpu(x)
 #define cfi64_to_cpu(x) be64_to_cpu(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif defined (CFI_HOST_ENDIAN)
 #define cpu_to_cfi8(x) (x)
 #define cfi8_to_cpu(x) (x)
 #define cpu_to_cfi16(x) (x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cpu_to_cfi32(x) (x)
 #define cpu_to_cfi64(x) (x)
 #define cfi16_to_cpu(x) (x)
 #define cfi32_to_cpu(x) (x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cfi64_to_cpu(x) (x)
 #else
 #error No CFI endianness defined
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/compatmac.h b/libc/kernel/common/linux/mtd/compatmac.h
index 143f46a..24904ce 100644
--- a/libc/kernel/common/linux/mtd/compatmac.h
+++ b/libc/kernel/common/linux/mtd/compatmac.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_COMPATMAC_H__
 #define __LINUX_MTD_COMPATMAC_H__
-
 #endif
diff --git a/libc/kernel/common/linux/mtd/flashchip.h b/libc/kernel/common/linux/mtd/flashchip.h
index e441048..91eaea8 100644
--- a/libc/kernel/common/linux/mtd/flashchip.h
+++ b/libc/kernel/common/linux/mtd/flashchip.h
@@ -7,62 +7,72 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_FLASHCHIP_H__
 #define __MTD_FLASHCHIP_H__
-
 #include <linux/sched.h>
-
 typedef enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_READY,
  FL_STATUS,
  FL_CFI_QUERY,
  FL_JEDEC_QUERY,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_ERASING,
  FL_ERASE_SUSPENDING,
  FL_ERASE_SUSPENDED,
  FL_WRITING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_WRITING_TO_BUFFER,
  FL_OTP_WRITE,
  FL_WRITE_SUSPENDING,
  FL_WRITE_SUSPENDED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_PM_SUSPENDED,
  FL_SYNCING,
  FL_UNLOADING,
  FL_LOCKING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_UNLOCKING,
  FL_POINT,
  FL_XIP_WHILE_ERASING,
  FL_XIP_WHILE_WRITING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_UNKNOWN
 } flstate_t;
-
 struct flchip {
  unsigned long start;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ref_point_counter;
  flstate_t state;
  flstate_t oldstate;
-
  unsigned int write_suspended:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int erase_suspended:1;
  unsigned long in_progress_block_addr;
-
  spinlock_t *mutex;
  spinlock_t _spinlock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  wait_queue_head_t wq;
  int word_write_time;
  int buffer_write_time;
  int erase_time;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *priv;
 };
-
 struct flchip_shared {
  spinlock_t lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct flchip *writing;
  struct flchip *erasing;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/map.h b/libc/kernel/common/linux/mtd/map.h
index 87124bc..803772f 100644
--- a/libc/kernel/common/linux/mtd/map.h
+++ b/libc/kernel/common/linux/mtd/map.h
@@ -7,96 +7,100 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_MAP_H__
 #define __LINUX_MTD_MAP_H__
-
 #include <linux/types.h>
 #include <linux/list.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/string.h>
-
 #include <linux/mtd/compatmac.h>
-
 #include <asm/unaligned.h>
 #include <asm/system.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/io.h>
-
 #define map_bankwidth_is_1(map) (0)
-
 #define map_bankwidth_is_2(map) (0)
-
 #define map_bankwidth_is_4(map) (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define map_calc_words(map) ((map_bankwidth(map) + (sizeof(unsigned long)-1))/ sizeof(unsigned long))
-
 #define map_bankwidth_is_8(map) (0)
-
 #define map_bankwidth_is_16(map) (0)
-
 #define map_bankwidth_is_32(map) (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef map_bankwidth
 #error "No bus width supported. What's the point?"
 #endif
-
 #define MAX_MAP_LONGS ( ((MAX_MAP_BANKWIDTH*8) + BITS_PER_LONG - 1) / BITS_PER_LONG )
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef union {
+ unsigned long x[MAX_MAP_LONGS];
+} map_word;
 struct map_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *name;
  unsigned long size;
  unsigned long phys;
 #define NO_XIP (-1UL)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __iomem *virt;
  void *cached;
-
  int bankwidth;
-
  void (*inval_cache)(struct map_info *, unsigned long, ssize_t);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*set_vpp)(struct map_info *, int);
-
  unsigned long map_priv_1;
  unsigned long map_priv_2;
  void *fldrv_priv;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mtd_chip_driver *fldrv;
 };
-
 struct mtd_chip_driver {
  struct mtd_info *(*probe)(struct map_info *map);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*destroy)(struct mtd_info *);
  struct module *module;
  char *name;
  struct list_head list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct mtd_info *do_map_probe(const char *name, struct map_info *map);
-
 #define ENABLE_VPP(map) do { if(map->set_vpp) map->set_vpp(map, 1); } while(0)
 #define DISABLE_VPP(map) do { if(map->set_vpp) map->set_vpp(map, 0); } while(0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INVALIDATE_CACHED_RANGE(map, from, size)   do { if(map->inval_cache) map->inval_cache(map, from, size); } while(0)
-
 #define map_word_andequal(m, a, b, z) map_word_equal(m, z, map_word_and(m, a, b))
 #if BITS_PER_LONG >= 64
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __LITTLE_ENDIAN
 #else
 #endif
 #if BITS_PER_LONG < 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAP_FF_LIMIT 4
 #else
 #define MAP_FF_LIMIT 8
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if BITS_PER_LONG >= 64
 #endif
 #if BITS_PER_LONG >= 64
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define map_read(map, ofs) inline_map_read(map, ofs)
 #define map_copy_from(map, to, from, len) inline_map_copy_from(map, to, from, len)
 #define map_write(map, datum, ofs) inline_map_write(map, datum, ofs)
 #define map_copy_to(map, to, from, len) inline_map_copy_to(map, to, from, len)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define simple_map_init(map) BUG_ON(!map_bankwidth_supported((map)->bankwidth))
 #define map_is_linear(map) ({ (void)(map); 1; })
 #endif
diff --git a/libc/kernel/common/linux/mtd/mtd.h b/libc/kernel/common/linux/mtd/mtd.h
index 300813c..90ffcfc 100644
--- a/libc/kernel/common/linux/mtd/mtd.h
+++ b/libc/kernel/common/linux/mtd/mtd.h
@@ -7,147 +7,145 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_MTD_H__
 #define __MTD_MTD_H__
-
 #error This is a kernel header. Perhaps include mtd-user.h instead?
-
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/module.h>
 #include <linux/uio.h>
 #include <linux/notifier.h>
-
 #include <linux/mtd/compatmac.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <mtd/mtd-abi.h>
-
 #define MTD_CHAR_MAJOR 90
 #define MTD_BLOCK_MAJOR 31
 #define MAX_MTD_DEVICES 16
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_ERASE_PENDING 0x01
 #define MTD_ERASING 0x02
 #define MTD_ERASE_SUSPEND 0x04
 #define MTD_ERASE_DONE 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_ERASE_FAILED 0x10
-
 struct erase_info {
  struct mtd_info *mtd;
  u_int32_t addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t len;
  u_int32_t fail_addr;
  u_long time;
  u_long retries;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int dev;
  u_int cell;
  void (*callback) (struct erase_info *self);
  u_long priv;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_char state;
  struct erase_info *next;
 };
-
 struct mtd_erase_region_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t offset;
  u_int32_t erasesize;
  u_int32_t numblocks;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
  MTD_OOB_PLACE,
  MTD_OOB_AUTO,
  MTD_OOB_RAW,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mtd_oob_mode_t;
-
 struct mtd_oob_ops {
  mtd_oob_mode_t mode;
  size_t len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t retlen;
  size_t ooblen;
  uint32_t ooboffs;
  uint8_t *datbuf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *oobbuf;
 };
-
 struct mtd_info {
  u_char type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t flags;
  u_int32_t size;
-
  u_int32_t erasesize;
-
  u_int32_t writesize;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t oobsize;
  u_int32_t ecctype;
  u_int32_t eccsize;
-
 #define MTD_PROGREGION_CTRLMODE_VALID(mtd) (mtd)->oobsize
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_PROGREGION_CTRLMODE_INVALID(mtd) (mtd)->ecctype
-
  char *name;
  int index;
-
  struct nand_ecclayout *ecclayout;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int numeraseregions;
  struct mtd_erase_region_info *eraseregions;
-
  u_int32_t bank_size;
-
  int (*erase) (struct mtd_info *mtd, struct erase_info *instr);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*point) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char **mtdbuf);
-
  void (*unpoint) (struct mtd_info *mtd, u_char * addr, loff_t from, size_t len);
-
  int (*read) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
  int (*write) (struct mtd_info *mtd, loff_t to, size_t len, size_t *retlen, const u_char *buf);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*read_oob) (struct mtd_info *mtd, loff_t from,
  struct mtd_oob_ops *ops);
  int (*write_oob) (struct mtd_info *mtd, loff_t to,
  struct mtd_oob_ops *ops);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*get_fact_prot_info) (struct mtd_info *mtd, struct otp_info *buf, size_t len);
  int (*read_fact_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
  int (*get_user_prot_info) (struct mtd_info *mtd, struct otp_info *buf, size_t len);
  int (*read_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*write_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len, size_t *retlen, u_char *buf);
  int (*lock_user_prot_reg) (struct mtd_info *mtd, loff_t from, size_t len);
-
  int (*writev) (struct mtd_info *mtd, const struct kvec *vecs, unsigned long count, loff_t to, size_t *retlen);
-
  void (*sync) (struct mtd_info *mtd);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*lock) (struct mtd_info *mtd, loff_t ofs, size_t len);
  int (*unlock) (struct mtd_info *mtd, loff_t ofs, size_t len);
-
  int (*suspend) (struct mtd_info *mtd);
  void (*resume) (struct mtd_info *mtd);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*block_isbad) (struct mtd_info *mtd, loff_t ofs);
  int (*block_markbad) (struct mtd_info *mtd, loff_t ofs);
-
  struct notifier_block reboot_notifier;
-
  struct mtd_ecc_stats ecc_stats;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *priv;
-
  struct module *owner;
  int usecount;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtd_notifier {
  void (*add)(struct mtd_info *mtd);
  void (*remove)(struct mtd_info *mtd);
  struct list_head list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define MTD_DEBUG_LEVEL0 (0)  
 #define MTD_DEBUG_LEVEL1 (1)  
 #define MTD_DEBUG_LEVEL2 (2)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_DEBUG_LEVEL3 (3)  
 #define DEBUG(n, args...) do { } while(0)
 #endif
diff --git a/libc/kernel/common/linux/mtd/nand.h b/libc/kernel/common/linux/mtd/nand.h
index 36e9fb4..cb9b13a 100644
--- a/libc/kernel/common/linux/mtd/nand.h
+++ b/libc/kernel/common/linux/mtd/nand.h
@@ -7,313 +7,308 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MTD_NAND_H
 #define __LINUX_MTD_NAND_H
-
 #include <linux/wait.h>
 #include <linux/spinlock.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/mtd/mtd.h>
-
 struct mtd_info;
-
 #define NAND_MAX_CHIPS 8
-
 #define NAND_MAX_OOBSIZE 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MAX_PAGESIZE 2048
-
 #define NAND_NCE 0x01
-
 #define NAND_CLE 0x02
-
 #define NAND_ALE 0x04
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CTRL_CLE (NAND_NCE | NAND_CLE)
 #define NAND_CTRL_ALE (NAND_NCE | NAND_ALE)
 #define NAND_CTRL_CHANGE 0x80
-
 #define NAND_CMD_READ0 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_READ1 1
 #define NAND_CMD_RNDOUT 5
 #define NAND_CMD_PAGEPROG 0x10
 #define NAND_CMD_READOOB 0x50
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_ERASE1 0x60
 #define NAND_CMD_STATUS 0x70
 #define NAND_CMD_STATUS_MULTI 0x71
 #define NAND_CMD_SEQIN 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_RNDIN 0x85
 #define NAND_CMD_READID 0x90
 #define NAND_CMD_ERASE2 0xd0
 #define NAND_CMD_RESET 0xff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_READSTART 0x30
 #define NAND_CMD_RNDOUTSTART 0xE0
 #define NAND_CMD_CACHEDPROG 0x15
-
 #define NAND_CMD_DEPLETE1 0x100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_DEPLETE2 0x38
 #define NAND_CMD_STATUS_MULTI 0x71
 #define NAND_CMD_STATUS_ERROR 0x72
-
 #define NAND_CMD_STATUS_ERROR0 0x73
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_STATUS_ERROR1 0x74
 #define NAND_CMD_STATUS_ERROR2 0x75
 #define NAND_CMD_STATUS_ERROR3 0x76
 #define NAND_CMD_STATUS_RESET 0x7f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CMD_STATUS_CLEAR 0xff
-
 #define NAND_CMD_NONE -1
-
 #define NAND_STATUS_FAIL 0x01
 #define NAND_STATUS_FAIL_N1 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_STATUS_TRUE_READY 0x20
 #define NAND_STATUS_READY 0x40
 #define NAND_STATUS_WP 0x80
-
 typedef enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NAND_ECC_NONE,
  NAND_ECC_SOFT,
  NAND_ECC_HW,
  NAND_ECC_HW_SYNDROME,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } nand_ecc_modes_t;
-
 #define NAND_ECC_READ 0
-
 #define NAND_ECC_WRITE 1
-
 #define NAND_ECC_READSYN 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_GET_DEVICE 0x80
-
 #define NAND_NO_AUTOINCR 0x00000001
-
 #define NAND_BUSWIDTH_16 0x00000002
-
 #define NAND_NO_PADDING 0x00000004
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_CACHEPRG 0x00000008
-
 #define NAND_COPYBACK 0x00000010
-
 #define NAND_IS_AND 0x00000020
-
 #define NAND_4PAGE_ARRAY 0x00000040
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BBT_AUTO_REFRESH 0x00000080
-
 #define NAND_NO_READRDY 0x00000100
-
 #define NAND_SAMSUNG_LP_OPTIONS   (NAND_NO_PADDING | NAND_CACHEPRG | NAND_COPYBACK)
-
 #define NAND_CANAUTOINCR(chip) (!(chip->options & NAND_NO_AUTOINCR))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MUST_PAD(chip) (!(chip->options & NAND_NO_PADDING))
 #define NAND_HAS_CACHEPROG(chip) ((chip->options & NAND_CACHEPRG))
 #define NAND_HAS_COPYBACK(chip) ((chip->options & NAND_COPYBACK))
-
 #define NAND_CHIPOPTIONS_MSK (0x0000ffff & ~NAND_NO_AUTOINCR)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_USE_FLASH_BBT 0x00010000
-
 #define NAND_SKIP_BBTSCAN 0x00020000
-
 #define NAND_CONTROLLER_ALLOC 0x80000000
-
 typedef enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_READY,
  FL_READING,
  FL_WRITING,
  FL_ERASING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FL_SYNCING,
  FL_CACHEDPRG,
  FL_PM_SUSPENDED,
 } nand_state_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nand_chip;
-
 struct nand_hw_control {
  spinlock_t lock;
  struct nand_chip *active;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  wait_queue_head_t wq;
 };
-
 struct nand_ecc_ctrl {
  nand_ecc_modes_t mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int steps;
  int size;
  int bytes;
  int total;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int prepad;
  int postpad;
  struct nand_ecclayout *layout;
  void (*hwctl)(struct mtd_info *mtd, int mode);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*calculate)(struct mtd_info *mtd,
  const uint8_t *dat,
  uint8_t *ecc_code);
  int (*correct)(struct mtd_info *mtd, uint8_t *dat,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *read_ecc,
  uint8_t *calc_ecc);
  int (*read_page)(struct mtd_info *mtd,
  struct nand_chip *chip,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t *buf);
  void (*write_page)(struct mtd_info *mtd,
  struct nand_chip *chip,
  const uint8_t *buf);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*read_oob)(struct mtd_info *mtd,
  struct nand_chip *chip,
  int page,
  int sndcmd);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*write_oob)(struct mtd_info *mtd,
  struct nand_chip *chip,
  int page);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nand_buffers {
  uint8_t ecccalc[NAND_MAX_OOBSIZE];
  uint8_t ecccode[NAND_MAX_OOBSIZE];
  uint8_t oobwbuf[NAND_MAX_OOBSIZE];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t databuf[NAND_MAX_PAGESIZE];
  uint8_t oobrbuf[NAND_MAX_OOBSIZE];
 };
-
 struct nand_chip {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __iomem *IO_ADDR_R;
  void __iomem *IO_ADDR_W;
-
  uint8_t (*read_byte)(struct mtd_info *mtd);
  u16 (*read_word)(struct mtd_info *mtd);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*write_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
  void (*read_buf)(struct mtd_info *mtd, uint8_t *buf, int len);
  int (*verify_buf)(struct mtd_info *mtd, const uint8_t *buf, int len);
  void (*select_chip)(struct mtd_info *mtd, int chip);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*block_bad)(struct mtd_info *mtd, loff_t ofs, int getchip);
  int (*block_markbad)(struct mtd_info *mtd, loff_t ofs);
  void (*cmd_ctrl)(struct mtd_info *mtd, int dat,
  unsigned int ctrl);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*dev_ready)(struct mtd_info *mtd);
  void (*cmdfunc)(struct mtd_info *mtd, unsigned command, int column, int page_addr);
  int (*waitfunc)(struct mtd_info *mtd, struct nand_chip *this);
  void (*erase_cmd)(struct mtd_info *mtd, int page);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*scan_bbt)(struct mtd_info *mtd);
  int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state, int status, int page);
-
  int chip_delay;
  unsigned int options;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int page_shift;
  int phys_erase_shift;
  int bbt_erase_shift;
  int chip_shift;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int numchips;
  unsigned long chipsize;
  int pagemask;
  int pagebuf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int badblockpos;
-
  nand_state_t state;
-
  uint8_t *oob_poi;
  struct nand_hw_control *controller;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_ecclayout *ecclayout;
-
  struct nand_ecc_ctrl ecc;
  struct nand_buffers buffers;
  struct nand_hw_control hwcontrol;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mtd_oob_ops ops;
-
  uint8_t *bbt;
  struct nand_bbt_descr *bbt_td;
  struct nand_bbt_descr *bbt_md;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_bbt_descr *badblock_pattern;
-
  void *priv;
 };
-
 #define NAND_MFR_TOSHIBA 0x98
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MFR_SAMSUNG 0xec
 #define NAND_MFR_FUJITSU 0x04
 #define NAND_MFR_NATIONAL 0x8f
 #define NAND_MFR_RENESAS 0x07
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_MFR_STMICRO 0x20
 #define NAND_MFR_HYNIX 0xad
-
 struct nand_flash_dev {
  char *name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int id;
  unsigned long pagesize;
  unsigned long chipsize;
  unsigned long erasesize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long options;
 };
-
 struct nand_manufacturers {
  int id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char * name;
 };
-
 struct nand_bbt_descr {
  int options;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int pages[NAND_MAX_CHIPS];
  int offs;
  int veroffs;
  uint8_t version[NAND_MAX_CHIPS];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int len;
  int maxblocks;
  int reserved_block_code;
  uint8_t *pattern;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define NAND_BBT_NRBITS_MSK 0x0000000F
 #define NAND_BBT_1BIT 0x00000001
 #define NAND_BBT_2BIT 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_4BIT 0x00000004
 #define NAND_BBT_8BIT 0x00000008
-
 #define NAND_BBT_LASTBLOCK 0x00000010
-
 #define NAND_BBT_ABSPAGE 0x00000020
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_SEARCH 0x00000040
-
 #define NAND_BBT_PERCHIP 0x00000080
-
 #define NAND_BBT_VERSION 0x00000100
-
 #define NAND_BBT_CREATE 0x00000200
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_SCANALLPAGES 0x00000400
-
 #define NAND_BBT_SCANEMPTY 0x00000800
-
 #define NAND_BBT_WRITE 0x00001000
-
 #define NAND_BBT_SAVECONTENT 0x00002000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NAND_BBT_SCAN2NDPAGE 0x00004000
-
 #define NAND_BBT_SCAN_MAXBLOCKS 4
-
 #define NAND_SMALL_BADBLOCK_POS 5
 #define NAND_LARGE_BADBLOCK_POS 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct platform_nand_chip {
  int nr_chips;
  int chip_offset;
  int nr_partitions;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mtd_partition *partitions;
  struct nand_ecclayout *ecclayout;
  int chip_delay;
  unsigned int options;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *priv;
 };
-
 struct platform_nand_ctrl {
  void (*hwcontrol)(struct mtd_info *mtd, int cmd);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*dev_ready)(struct mtd_info *mtd);
  void (*select_chip)(struct mtd_info *mtd, int chip);
  void *priv;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/mtd/nand_ecc.h b/libc/kernel/common/linux/mtd/nand_ecc.h
index 3e817f4..e7dbe1a 100644
--- a/libc/kernel/common/linux/mtd/nand_ecc.h
+++ b/libc/kernel/common/linux/mtd/nand_ecc.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_NAND_ECC_H__
 #define __MTD_NAND_ECC_H__
-
 struct mtd_info;
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mtd/nftl.h b/libc/kernel/common/linux/mtd/nftl.h
index da7320e..75cdf54 100644
--- a/libc/kernel/common/linux/mtd/nftl.h
+++ b/libc/kernel/common/linux/mtd/nftl.h
@@ -7,49 +7,58 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_NFTL_H__
 #define __MTD_NFTL_H__
-
 #include <linux/mtd/mtd.h>
 #include <linux/mtd/blktrans.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <mtd/nftl-user.h>
-
 #define BLOCK_NIL 0xffff  
 #define BLOCK_FREE 0xfffe  
 #define BLOCK_NOTEXPLORED 0xfffd  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLOCK_RESERVED 0xfffc  
-
 struct NFTLrecord {
  struct mtd_blktrans_dev mbd;
  __u16 MediaUnit, SpareMediaUnit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 EraseSize;
  struct NFTLMediaHeader MediaHdr;
  int usecount;
  unsigned char heads;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char sectors;
  unsigned short cylinders;
  __u16 numvunits;
  __u16 lastEUN;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 numfreeEUNs;
  __u16 LastFreeEUN;
  int head,sect,cyl;
  __u16 *EUNtable;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 *ReplUnitTable;
  unsigned int nb_blocks;
  unsigned int nb_boot_blocks;
  struct erase_info instr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_ecclayout oobinfo;
 };
-
 #ifndef NFTL_MAJOR
 #define NFTL_MAJOR 93
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define MAX_NFTLS 16
 #define MAX_SECTORS_PER_UNIT 64
 #define NFTL_PARTN_BITS 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/mtd/onenand_regs.h b/libc/kernel/common/linux/mtd/onenand_regs.h
index a39c78f..662ffc9 100644
--- a/libc/kernel/common/linux/mtd/onenand_regs.h
+++ b/libc/kernel/common/linux/mtd/onenand_regs.h
@@ -7,137 +7,150 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __ONENAND_REG_H
 #define __ONENAND_REG_H
-
 #define ONENAND_MEMORY_MAP(x) ((x) << 1)
-
 #define ONENAND_BOOTRAM ONENAND_MEMORY_MAP(0x0000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_DATARAM ONENAND_MEMORY_MAP(0x0200)
 #define ONENAND_SPARERAM ONENAND_MEMORY_MAP(0x8010)
-
 #define ONENAND_REG_MANUFACTURER_ID ONENAND_MEMORY_MAP(0xF000)
 #define ONENAND_REG_DEVICE_ID ONENAND_MEMORY_MAP(0xF001)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_VERSION_ID ONENAND_MEMORY_MAP(0xF002)
 #define ONENAND_REG_DATA_BUFFER_SIZE ONENAND_MEMORY_MAP(0xF003)
 #define ONENAND_REG_BOOT_BUFFER_SIZE ONENAND_MEMORY_MAP(0xF004)
 #define ONENAND_REG_NUM_BUFFERS ONENAND_MEMORY_MAP(0xF005)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_TECHNOLOGY ONENAND_MEMORY_MAP(0xF006)
-
 #define ONENAND_REG_START_ADDRESS1 ONENAND_MEMORY_MAP(0xF100)
 #define ONENAND_REG_START_ADDRESS2 ONENAND_MEMORY_MAP(0xF101)
 #define ONENAND_REG_START_ADDRESS3 ONENAND_MEMORY_MAP(0xF102)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_START_ADDRESS4 ONENAND_MEMORY_MAP(0xF103)
 #define ONENAND_REG_START_ADDRESS5 ONENAND_MEMORY_MAP(0xF104)
 #define ONENAND_REG_START_ADDRESS6 ONENAND_MEMORY_MAP(0xF105)
 #define ONENAND_REG_START_ADDRESS7 ONENAND_MEMORY_MAP(0xF106)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_START_ADDRESS8 ONENAND_MEMORY_MAP(0xF107)
-
 #define ONENAND_REG_START_BUFFER ONENAND_MEMORY_MAP(0xF200)
 #define ONENAND_REG_COMMAND ONENAND_MEMORY_MAP(0xF220)
 #define ONENAND_REG_SYS_CFG1 ONENAND_MEMORY_MAP(0xF221)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_SYS_CFG2 ONENAND_MEMORY_MAP(0xF222)
 #define ONENAND_REG_CTRL_STATUS ONENAND_MEMORY_MAP(0xF240)
 #define ONENAND_REG_INTERRUPT ONENAND_MEMORY_MAP(0xF241)
 #define ONENAND_REG_START_BLOCK_ADDRESS ONENAND_MEMORY_MAP(0xF24C)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_END_BLOCK_ADDRESS ONENAND_MEMORY_MAP(0xF24D)
 #define ONENAND_REG_WP_STATUS ONENAND_MEMORY_MAP(0xF24E)
-
 #define ONENAND_REG_ECC_STATUS ONENAND_MEMORY_MAP(0xFF00)
 #define ONENAND_REG_ECC_M0 ONENAND_MEMORY_MAP(0xFF01)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_ECC_S0 ONENAND_MEMORY_MAP(0xFF02)
 #define ONENAND_REG_ECC_M1 ONENAND_MEMORY_MAP(0xFF03)
 #define ONENAND_REG_ECC_S1 ONENAND_MEMORY_MAP(0xFF04)
 #define ONENAND_REG_ECC_M2 ONENAND_MEMORY_MAP(0xFF05)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_REG_ECC_S2 ONENAND_MEMORY_MAP(0xFF06)
 #define ONENAND_REG_ECC_M3 ONENAND_MEMORY_MAP(0xFF07)
 #define ONENAND_REG_ECC_S3 ONENAND_MEMORY_MAP(0xFF08)
-
 #define ONENAND_DEVICE_DENSITY_SHIFT (4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_DEVICE_IS_DDP (1 << 3)
 #define ONENAND_DEVICE_IS_DEMUX (1 << 2)
 #define ONENAND_DEVICE_VCC_MASK (0x3)
-
 #define ONENAND_DEVICE_DENSITY_512Mb (0x002)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_VERSION_PROCESS_SHIFT (8)
-
 #define ONENAND_DDP_SHIFT (15)
-
 #define ONENAND_FPA_MASK (0x3f)
 #define ONENAND_FPA_SHIFT (2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_FSA_MASK (0x03)
-
 #define ONENAND_BSA_MASK (0x03)
 #define ONENAND_BSA_SHIFT (8)
 #define ONENAND_BSA_BOOTRAM (0 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_BSA_DATARAM0 (2 << 2)
 #define ONENAND_BSA_DATARAM1 (3 << 2)
 #define ONENAND_BSC_MASK (0x03)
-
 #define ONENAND_CMD_READ (0x00)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CMD_READOOB (0x13)
 #define ONENAND_CMD_PROG (0x80)
 #define ONENAND_CMD_PROGOOB (0x1A)
 #define ONENAND_CMD_UNLOCK (0x23)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CMD_LOCK (0x2A)
 #define ONENAND_CMD_LOCK_TIGHT (0x2C)
 #define ONENAND_CMD_ERASE (0x94)
 #define ONENAND_CMD_RESET (0xF0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CMD_OTP_ACCESS (0x65)
 #define ONENAND_CMD_READID (0x90)
-
 #define ONENAND_CMD_BUFFERRAM (0x1978)
-
 #define ONENAND_SYS_CFG1_SYNC_READ (1 << 15)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BRL_7 (7 << 12)
 #define ONENAND_SYS_CFG1_BRL_6 (6 << 12)
 #define ONENAND_SYS_CFG1_BRL_5 (5 << 12)
 #define ONENAND_SYS_CFG1_BRL_4 (4 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BRL_3 (3 << 12)
 #define ONENAND_SYS_CFG1_BRL_10 (2 << 12)
 #define ONENAND_SYS_CFG1_BRL_9 (1 << 12)
 #define ONENAND_SYS_CFG1_BRL_8 (0 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BRL_SHIFT (12)
 #define ONENAND_SYS_CFG1_BL_32 (4 << 9)
 #define ONENAND_SYS_CFG1_BL_16 (3 << 9)
 #define ONENAND_SYS_CFG1_BL_8 (2 << 9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_BL_4 (1 << 9)
 #define ONENAND_SYS_CFG1_BL_CONT (0 << 9)
 #define ONENAND_SYS_CFG1_BL_SHIFT (9)
 #define ONENAND_SYS_CFG1_NO_ECC (1 << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_SYS_CFG1_RDY (1 << 7)
 #define ONENAND_SYS_CFG1_INT (1 << 6)
 #define ONENAND_SYS_CFG1_IOBE (1 << 5)
 #define ONENAND_SYS_CFG1_RDY_CONF (1 << 4)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CTRL_ONGO (1 << 15)
 #define ONENAND_CTRL_LOCK (1 << 14)
 #define ONENAND_CTRL_LOAD (1 << 13)
 #define ONENAND_CTRL_PROGRAM (1 << 12)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CTRL_ERASE (1 << 11)
 #define ONENAND_CTRL_ERROR (1 << 10)
 #define ONENAND_CTRL_RSTB (1 << 7)
 #define ONENAND_CTRL_OTP_L (1 << 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_CTRL_OTP_BL (1 << 5)
-
 #define ONENAND_INT_MASTER (1 << 15)
 #define ONENAND_INT_READ (1 << 7)
 #define ONENAND_INT_WRITE (1 << 6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_INT_ERASE (1 << 5)
 #define ONENAND_INT_RESET (1 << 4)
 #define ONENAND_INT_CLEAR (0 << 0)
-
 #define ONENAND_WP_US (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_WP_LS (1 << 1)
 #define ONENAND_WP_LTS (1 << 0)
-
 #define ONENAND_ECC_1BIT (1 << 0)
 #define ONENAND_ECC_2BIT (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ONENAND_ECC_2BIT_ALL (0xAAAA)
-
 #define ONENAND_OTP_LOCK_OFFSET (14)
-
 #endif
diff --git a/libc/kernel/common/linux/mtd/partitions.h b/libc/kernel/common/linux/mtd/partitions.h
index aeb15e1..c1f106e 100644
--- a/libc/kernel/common/linux/mtd/partitions.h
+++ b/libc/kernel/common/linux/mtd/partitions.h
@@ -7,34 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef MTD_PARTITIONS_H
 #define MTD_PARTITIONS_H
-
 #include <linux/types.h>
-
 struct mtd_partition {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *name;
  u_int32_t size;
  u_int32_t offset;
  u_int32_t mask_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_ecclayout *ecclayout;
  struct mtd_info **mtdp;
 };
-
 #define MTDPART_OFS_NXTBLK (-2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTDPART_OFS_APPEND (-1)
 #define MTDPART_SIZ_FULL (0)
-
 struct mtd_part_parser {
  struct list_head list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct module *owner;
  const char *name;
  int (*parse_fn)(struct mtd_info *, struct mtd_partition **, unsigned long);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define put_partition_parser(p) do { module_put((p)->owner); } while(0)
-
 #endif
-
diff --git a/libc/kernel/common/linux/mtio.h b/libc/kernel/common/linux/mtio.h
index 47a6e2b..c2901ba 100644
--- a/libc/kernel/common/linux/mtio.h
+++ b/libc/kernel/common/linux/mtio.h
@@ -7,253 +7,272 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_MTIO_H
 #define _LINUX_MTIO_H
-
 #include <linux/types.h>
 #include <linux/ioctl.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/qic117.h>
-
 struct mtop {
  short mt_op;
  int mt_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define MTRESET 0  
 #define MTFSF 1  
 #define MTBSF 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTFSR 3  
 #define MTBSR 4  
 #define MTWEOF 5  
 #define MTREW 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTOFFL 7  
 #define MTNOP 8  
 #define MTRETEN 9  
 #define MTBSFM 10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTFSFM 11  
 #define MTEOM 12  
 #define MTERASE 13  
-
 #define MTRAS1 14  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTRAS2 15  
 #define MTRAS3 16  
-
 #define MTSETBLK 20  
 #define MTSETDENSITY 21  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTSEEK 22  
 #define MTTELL 23  
 #define MTSETDRVBUFFER 24  
-
 #define MTFSS 25  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTBSS 26  
 #define MTWSM 27  
-
 #define MTLOCK 28  
 #define MTUNLOCK 29  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTLOAD 30  
 #define MTUNLOAD 31  
 #define MTCOMPRESSION 32 
 #define MTSETPART 33  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTMKPART 34  
-
 struct mtget {
  long mt_type;
  long mt_resid;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long mt_dsreg;
  long mt_gstat;
  long mt_erreg;
-
  __kernel_daddr_t mt_fileno;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_daddr_t mt_blkno;
 };
-
 #define MT_ISUNKNOWN 0x01
 #define MT_ISQIC02 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ISWT5150 0x03  
 #define MT_ISARCHIVE_5945L2 0x04  
 #define MT_ISCMSJ500 0x05  
 #define MT_ISTDC3610 0x06  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ISARCHIVE_VP60I 0x07  
 #define MT_ISARCHIVE_2150L 0x08  
 #define MT_ISARCHIVE_2060L 0x09  
 #define MT_ISARCHIVESC499 0x0A  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ISQIC02_ALL_FEATURES 0x0F  
 #define MT_ISWT5099EEN24 0x11  
 #define MT_ISTEAC_MT2ST 0x12  
 #define MT_ISEVEREX_FT40A 0x32  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ISDDS1 0x51  
 #define MT_ISDDS2 0x52  
 #define MT_ISONSTREAM_SC 0x61  
 #define MT_ISSCSI1 0x71  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ISSCSI2 0x72  
-
 #define MT_ISFTAPE_UNKNOWN 0x800000  
 #define MT_ISFTAPE_FLAG 0x800000
-
 struct mt_tape_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long t_type;
  char *t_name;
 };
-
 #define MT_TAPE_INFO {   {MT_ISUNKNOWN, "Unknown type of tape device"},   {MT_ISQIC02, "Generic QIC-02 tape streamer"},   {MT_ISWT5150, "Wangtek 5150, QIC-150"},   {MT_ISARCHIVE_5945L2, "Archive 5945L-2"},   {MT_ISCMSJ500, "CMS Jumbo 500"},   {MT_ISTDC3610, "Tandberg TDC 3610, QIC-24"},   {MT_ISARCHIVE_VP60I, "Archive VP60i, QIC-02"},   {MT_ISARCHIVE_2150L, "Archive Viper 2150L"},   {MT_ISARCHIVE_2060L, "Archive Viper 2060L"},   {MT_ISARCHIVESC499, "Archive SC-499 QIC-36 controller"},   {MT_ISQIC02_ALL_FEATURES, "Generic QIC-02 tape, all features"},   {MT_ISWT5099EEN24, "Wangtek 5099-een24, 60MB"},   {MT_ISTEAC_MT2ST, "Teac MT-2ST 155mb data cassette drive"},   {MT_ISEVEREX_FT40A, "Everex FT40A, QIC-40"},   {MT_ISONSTREAM_SC, "OnStream SC-, DI-, DP-, or USB tape drive"},   {MT_ISSCSI1, "Generic SCSI-1 tape"},   {MT_ISSCSI2, "Generic SCSI-2 tape"},   {0, NULL}  }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtpos {
  long mt_blkno;
 };
-
 struct mtvolinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int mt_volno;
  unsigned int mt_blksz;
  unsigned int mt_rawsize;
  unsigned int mt_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int mt_cmpr:1;
 };
-
 #define MT_FT_RD_SINGLE 0
 #define MT_FT_RD_AHEAD 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_FT_WR_ASYNC 0  
 #define MT_FT_WR_MULTI 1  
 #define MT_FT_WR_SINGLE 2  
 #define MT_FT_WR_DELETE 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtftseg
 {
  unsigned mt_segno;
  unsigned mt_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int mt_result;
  void __user *mt_data;
 };
-
 struct mttapesize {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long mt_capacity;
  unsigned long mt_used;
 };
-
 #define FTFMT_SET_PARMS 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FTFMT_GET_PARMS 2  
 #define FTFMT_FORMAT_TRACK 3  
 #define FTFMT_STATUS 4  
 #define FTFMT_VERIFY 5  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ftfmtparms {
  unsigned char ft_qicstd;
  unsigned char ft_fmtcode;
  unsigned char ft_fhm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char ft_ftm;
  unsigned short ft_spt;
  unsigned short ft_tpc;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ftfmttrack {
  unsigned int ft_track;
  unsigned char ft_gap3;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ftfmtstatus {
  unsigned int ft_segment;
 };
-
 struct ftfmtverify {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int ft_segment;
  unsigned long ft_bsm;
 };
-
 struct mtftformat {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int fmt_op;
  union fmt_arg {
  struct ftfmtparms fmt_parms;
  struct ftfmttrack fmt_track;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ftfmtstatus fmt_status;
  struct ftfmtverify fmt_verify;
  } fmt_arg;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mtftcmd {
  unsigned int ft_wait_before;
  qic117_cmd_t ft_cmd;
  unsigned char ft_parm_cnt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char ft_parms[3];
  unsigned int ft_result_bits;
  unsigned int ft_result;
  unsigned int ft_wait_after;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ft_status;
  int ft_error;
 };
-
 #define MTIOCTOP _IOW('m', 1, struct mtop)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTIOCGET _IOR('m', 2, struct mtget)  
 #define MTIOCPOS _IOR('m', 3, struct mtpos)  
-
 #define MTIOCGETCONFIG _IOR('m', 4, struct mtconfiginfo)  
 #define MTIOCSETCONFIG _IOW('m', 5, struct mtconfiginfo)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTIOCRDFTSEG _IOWR('m', 6, struct mtftseg)  
 #define MTIOCWRFTSEG _IOWR('m', 7, struct mtftseg)  
 #define MTIOCVOLINFO _IOR('m', 8, struct mtvolinfo)  
 #define MTIOCGETSIZE _IOR('m', 9, struct mttapesize) 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTIOCFTFORMAT _IOWR('m', 10, struct mtftformat)  
 #define MTIOCFTCMD _IOWR('m', 11, struct mtftcmd)  
-
 #define GMT_EOF(x) ((x) & 0x80000000)
 #define GMT_BOT(x) ((x) & 0x40000000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GMT_EOT(x) ((x) & 0x20000000)
 #define GMT_SM(x) ((x) & 0x10000000)  
 #define GMT_EOD(x) ((x) & 0x08000000)  
 #define GMT_WR_PROT(x) ((x) & 0x04000000)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GMT_ONLINE(x) ((x) & 0x01000000)
 #define GMT_D_6250(x) ((x) & 0x00800000)
 #define GMT_D_1600(x) ((x) & 0x00400000)
 #define GMT_D_800(x) ((x) & 0x00200000)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GMT_DR_OPEN(x) ((x) & 0x00040000)  
-
 #define GMT_IM_REP_EN(x) ((x) & 0x00010000)  
 #define GMT_CLN(x) ((x) & 0x00008000)  
-
 #define MT_ST_BLKSIZE_SHIFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ST_BLKSIZE_MASK 0xffffff
 #define MT_ST_DENSITY_SHIFT 24
 #define MT_ST_DENSITY_MASK 0xff000000
-
 #define MT_ST_SOFTERR_SHIFT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ST_SOFTERR_MASK 0xffff
-
 #define MT_ST_OPTIONS 0xf0000000
 #define MT_ST_BOOLEANS 0x10000000
 #define MT_ST_SETBOOLEANS 0x30000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ST_CLEARBOOLEANS 0x40000000
 #define MT_ST_WRITE_THRESHOLD 0x20000000
 #define MT_ST_DEF_BLKSIZE 0x50000000
 #define MT_ST_DEF_OPTIONS 0x60000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ST_TIMEOUTS 0x70000000
 #define MT_ST_SET_TIMEOUT (MT_ST_TIMEOUTS | 0x000000)
 #define MT_ST_SET_LONG_TIMEOUT (MT_ST_TIMEOUTS | 0x100000)
 #define MT_ST_SET_CLN 0x80000000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ST_BUFFER_WRITES 0x1
 #define MT_ST_ASYNC_WRITES 0x2
 #define MT_ST_READ_AHEAD 0x4
 #define MT_ST_DEBUGGING 0x8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ST_TWO_FM 0x10
 #define MT_ST_FAST_MTEOM 0x20
 #define MT_ST_AUTO_LOCK 0x40
 #define MT_ST_DEF_WRITES 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ST_CAN_BSR 0x100
 #define MT_ST_NO_BLKLIMS 0x200
 #define MT_ST_CAN_PARTITIONS 0x400
 #define MT_ST_SCSI2LOGICAL 0x800
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ST_SYSV 0x1000
 #define MT_ST_NOWAIT 0x2000
-
 #define MT_ST_CLEAR_DEFAULT 0xfffff
 #define MT_ST_DEF_DENSITY (MT_ST_DEF_OPTIONS | 0x100000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MT_ST_DEF_COMPRESSION (MT_ST_DEF_OPTIONS | 0x200000)
 #define MT_ST_DEF_DRVBUFFER (MT_ST_DEF_OPTIONS | 0x300000)
-
 #define MT_ST_HPLOADER_OFFSET 10000
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/mutex-debug.h b/libc/kernel/common/linux/mutex-debug.h
index 7065610..5d88f75 100644
--- a/libc/kernel/common/linux/mutex-debug.h
+++ b/libc/kernel/common/linux/mutex-debug.h
@@ -7,16 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MUTEX_DEBUG_H
 #define __LINUX_MUTEX_DEBUG_H
-
 #include <linux/linkage.h>
 #include <linux/lockdep.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __DEBUG_MUTEX_INITIALIZER(lockname)   , .magic = &lockname
-
 #define mutex_init(mutex)  do {   static struct lock_class_key __key;     __mutex_init((mutex), #mutex, &__key);  } while (0)
-
 #endif
diff --git a/libc/kernel/common/linux/mutex.h b/libc/kernel/common/linux/mutex.h
index 4b33a8a..e74c048 100644
--- a/libc/kernel/common/linux/mutex.h
+++ b/libc/kernel/common/linux/mutex.h
@@ -7,40 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MUTEX_H
 #define __LINUX_MUTEX_H
-
 #include <linux/list.h>
 #include <linux/spinlock_types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/linkage.h>
 #include <linux/lockdep.h>
-
 #include <asm/atomic.h>
-
 struct mutex {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t count;
  spinlock_t wait_lock;
  struct list_head wait_list;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct mutex_waiter {
  struct list_head list;
  struct task_struct *task;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __DEBUG_MUTEX_INITIALIZER(lockname)
 #define mutex_init(mutex)  do {   static struct lock_class_key __key;     __mutex_init((mutex), #mutex, &__key);  } while (0)
 #define mutex_destroy(mutex) do { } while (0)
-
 #define __DEP_MAP_MUTEX_INITIALIZER(lockname)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __MUTEX_INITIALIZER(lockname)   { .count = ATOMIC_INIT(1)   , .wait_lock = SPIN_LOCK_UNLOCKED   , .wait_list = LIST_HEAD_INIT(lockname.wait_list)   __DEBUG_MUTEX_INITIALIZER(lockname)   __DEP_MAP_MUTEX_INITIALIZER(lockname) }
-
 #define DEFINE_MUTEX(mutexname)   struct mutex mutexname = __MUTEX_INITIALIZER(mutexname)
-
 #define mutex_lock_nested(lock, subclass) mutex_lock(lock)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/ncp.h b/libc/kernel/common/linux/ncp.h
index 091220a..e2cd7d4 100644
--- a/libc/kernel/common/linux/ncp.h
+++ b/libc/kernel/common/linux/ncp.h
@@ -7,187 +7,212 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NCP_H
 #define _LINUX_NCP_H
-
 #include <linux/types.h>
-
 #define NCP_PTYPE (0x11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_PORT (0x0451)
-
 #define NCP_ALLOC_SLOT_REQUEST (0x1111)
 #define NCP_REQUEST (0x2222)
 #define NCP_DEALLOC_SLOT_REQUEST (0x5555)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ncp_request_header {
  __u16 type;
  __u8 sequence;
  __u8 conn_low;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 task;
  __u8 conn_high;
  __u8 function;
  __u8 data[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 #define NCP_REPLY (0x3333)
 #define NCP_WATCHDOG (0x3E3E)
 #define NCP_POSITIVE_ACK (0x9999)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ncp_reply_header {
  __u16 type;
  __u8 sequence;
  __u8 conn_low;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 task;
  __u8 conn_high;
  __u8 completion_code;
  __u8 connection_state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 data[0];
 } __attribute__((packed));
-
 #define NCP_VOLNAME_LEN (16)
 #define NCP_NUMBER_OF_VOLUMES (256)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ncp_volume_info {
  __u32 total_blocks;
  __u32 free_blocks;
  __u32 purgeable_blocks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 not_yet_purgeable_blocks;
  __u32 total_dir_entries;
  __u32 available_dir_entries;
  __u8 sectors_per_block;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char volume_name[NCP_VOLNAME_LEN + 1];
 };
-
 #define AR_READ (cpu_to_le16(1))
 #define AR_WRITE (cpu_to_le16(2))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AR_EXCLUSIVE (cpu_to_le16(0x20))
-
 #define NCP_FILE_ID_LEN 6
-
 #define NW_NS_DOS 0
 #define NW_NS_MAC 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NW_NS_NFS 2
 #define NW_NS_FTAM 3
 #define NW_NS_OS2 4
-
 #define RIM_NAME (cpu_to_le32(1))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RIM_SPACE_ALLOCATED (cpu_to_le32(2))
 #define RIM_ATTRIBUTES (cpu_to_le32(4))
 #define RIM_DATA_SIZE (cpu_to_le32(8))
 #define RIM_TOTAL_SIZE (cpu_to_le32(0x10))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RIM_EXT_ATTR_INFO (cpu_to_le32(0x20))
 #define RIM_ARCHIVE (cpu_to_le32(0x40))
 #define RIM_MODIFY (cpu_to_le32(0x80))
 #define RIM_CREATION (cpu_to_le32(0x100))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RIM_OWNING_NAMESPACE (cpu_to_le32(0x200))
 #define RIM_DIRECTORY (cpu_to_le32(0x400))
 #define RIM_RIGHTS (cpu_to_le32(0x800))
 #define RIM_ALL (cpu_to_le32(0xFFF))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RIM_COMPRESSED_INFO (cpu_to_le32(0x80000000))
-
 #define NSIBM_NFS_NAME 0x0001
 #define NSIBM_NFS_MODE 0x0002
 #define NSIBM_NFS_GID 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NSIBM_NFS_NLINKS 0x0008
 #define NSIBM_NFS_RDEV 0x0010
 #define NSIBM_NFS_LINK 0x0020
 #define NSIBM_NFS_CREATED 0x0040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NSIBM_NFS_UID 0x0080
 #define NSIBM_NFS_ACSFLAG 0x0100
 #define NSIBM_NFS_MYFLAG 0x0200
-
 #define OC_MODE_OPEN 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OC_MODE_TRUNCATE 0x02
 #define OC_MODE_REPLACE 0x02
 #define OC_MODE_CREATE 0x08
-
 #define OC_ACTION_NONE 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OC_ACTION_OPEN 0x01
 #define OC_ACTION_CREATE 0x02
 #define OC_ACTION_TRUNCATE 0x04
 #define OC_ACTION_REPLACE 0x04
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef AR_READ_ONLY
 #define AR_READ_ONLY 0x0001
 #define AR_WRITE_ONLY 0x0002
 #define AR_DENY_READ 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AR_DENY_WRITE 0x0008
 #define AR_COMPATIBILITY 0x0010
 #define AR_WRITE_THROUGH 0x0040
 #define AR_OPEN_COMPRESSED 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 struct nw_nfs_info {
  __u32 mode;
  __u32 rdev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nw_info_struct {
  __u32 spaceAlloc;
  __le32 attributes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 flags;
  __le32 dataStreamSize;
  __le32 totalStreamSize;
  __u16 numberOfStreams;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 creationTime;
  __le16 creationDate;
  __u32 creatorID;
  __le16 modifyTime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 modifyDate;
  __u32 modifierID;
  __le16 lastAccessDate;
  __u16 archiveTime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 archiveDate;
  __u32 archiverID;
  __u16 inheritedRightsMask;
  __le32 dirEntNum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le32 DosDirNum;
  __u32 volNumber;
  __u32 EADataSize;
  __u32 EAKeyCount;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 EAKeySize;
  __u32 NSCreator;
  __u8 nameLen;
  __u8 entryName[256];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 #define DM_ATTRIBUTES (cpu_to_le32(0x02))
 #define DM_CREATE_DATE (cpu_to_le32(0x04))
 #define DM_CREATE_TIME (cpu_to_le32(0x08))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_CREATOR_ID (cpu_to_le32(0x10))
 #define DM_ARCHIVE_DATE (cpu_to_le32(0x20))
 #define DM_ARCHIVE_TIME (cpu_to_le32(0x40))
 #define DM_ARCHIVER_ID (cpu_to_le32(0x80))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_MODIFY_DATE (cpu_to_le32(0x0100))
 #define DM_MODIFY_TIME (cpu_to_le32(0x0200))
 #define DM_MODIFIER_ID (cpu_to_le32(0x0400))
 #define DM_LAST_ACCESS_DATE (cpu_to_le32(0x0800))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DM_INHERITED_RIGHTS_MASK (cpu_to_le32(0x1000))
 #define DM_MAXIMUM_SPACE (cpu_to_le32(0x2000))
-
 struct nw_modify_dos_info {
  __le32 attributes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 creationDate;
  __le16 creationTime;
  __u32 creatorID;
  __le16 modifyDate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 modifyTime;
  __u32 modifierID;
  __u16 archiveDate;
  __u16 archiveTime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 archiverID;
  __le16 lastAccessDate;
  __u16 inheritanceGrantMask;
  __u16 inheritanceRevokeMask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 maximumSpace;
 } __attribute__((packed));
-
 struct nw_search_sequence {
  __u8 volNumber;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 dirBase;
  __u32 sequence;
 } __attribute__((packed));
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/ncp_mount.h b/libc/kernel/common/linux/ncp_mount.h
index 204869f..76b445d 100644
--- a/libc/kernel/common/linux/ncp_mount.h
+++ b/libc/kernel/common/linux/ncp_mount.h
@@ -7,63 +7,65 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NCP_MOUNT_H
 #define _LINUX_NCP_MOUNT_H
-
 #include <linux/types.h>
 #include <linux/ncp.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_MOUNT_VERSION 3  
-
 #define NCP_MOUNT_SOFT 0x0001
 #define NCP_MOUNT_INTR 0x0002
 #define NCP_MOUNT_STRONG 0x0004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_MOUNT_NO_OS2 0x0008  
 #define NCP_MOUNT_NO_NFS 0x0010  
 #define NCP_MOUNT_EXTRAS 0x0020
 #define NCP_MOUNT_SYMLINKS 0x0040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NCP_MOUNT_NFS_EXTRAS 0x0080  
-
 struct ncp_mount_data {
  int version;
  unsigned int ncp_fd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_uid_t mounted_uid;
  __kernel_pid_t wdog_pid;
-
  unsigned char mounted_vol[NCP_VOLNAME_LEN + 1];
  unsigned int time_out;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int retry_count;
  unsigned int flags;
-
  __kernel_uid_t uid;
  __kernel_gid_t gid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_mode_t file_mode;
  __kernel_mode_t dir_mode;
 };
-
 #define NCP_MOUNT_VERSION_V4 (4)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ncp_mount_data_v4 {
  int version;
  unsigned long flags;
-
  unsigned long mounted_uid;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long wdog_pid;
-
  unsigned int ncp_fd;
  unsigned int time_out;
  unsigned int retry_count;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long uid;
  unsigned long gid;
-
  unsigned long file_mode;
  unsigned long dir_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define NCP_MOUNT_VERSION_V5 (5)  
-
 #endif
diff --git a/libc/kernel/common/linux/ncp_no.h b/libc/kernel/common/linux/ncp_no.h
index 9afed68..bdcd4dc 100644
--- a/libc/kernel/common/linux/ncp_no.h
+++ b/libc/kernel/common/linux/ncp_no.h
@@ -7,23 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _NCP_NO
 #define _NCP_NO
-
 #define aRONLY (__constant_cpu_to_le32(1))
 #define aHIDDEN (__constant_cpu_to_le32(2))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define aSYSTEM (__constant_cpu_to_le32(4))
 #define aEXECUTE (__constant_cpu_to_le32(8))
 #define aDIR (__constant_cpu_to_le32(0x10))
 #define aARCH (__constant_cpu_to_le32(0x20))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define aSHARED (__constant_cpu_to_le32(0x80))
 #define aDONTSUBALLOCATE (__constant_cpu_to_le32(1L<<11))
 #define aTRANSACTIONAL (__constant_cpu_to_le32(1L<<12))
 #define aPURGE (__constant_cpu_to_le32(1L<<16))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define aRENAMEINHIBIT (__constant_cpu_to_le32(1L<<17))
 #define aDELETEINHIBIT (__constant_cpu_to_le32(1L<<18))
 #define aDONTCOMPRESS (__constant_cpu_to_le32(1L<<27))
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/neighbour.h b/libc/kernel/common/linux/neighbour.h
index 2189af0..90de583 100644
--- a/libc/kernel/common/linux/neighbour.h
+++ b/libc/kernel/common/linux/neighbour.h
@@ -7,127 +7,147 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_NEIGHBOUR_H
 #define __LINUX_NEIGHBOUR_H
-
 #include <linux/types.h>
 #include <linux/netlink.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ndmsg
 {
  __u8 ndm_family;
  __u8 ndm_pad1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 ndm_pad2;
  __s32 ndm_ifindex;
  __u16 ndm_state;
  __u8 ndm_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 ndm_type;
 };
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NDA_UNSPEC,
  NDA_DST,
  NDA_LLADDR,
  NDA_CACHEINFO,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NDA_PROBES,
  __NDA_MAX
 };
-
 #define NDA_MAX (__NDA_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NTF_USE 0x01
 #define NTF_PROXY 0x08  
 #define NTF_ROUTER 0x80
-
 #define NUD_INCOMPLETE 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NUD_REACHABLE 0x02
 #define NUD_STALE 0x04
 #define NUD_DELAY 0x08
 #define NUD_PROBE 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NUD_FAILED 0x20
-
 #define NUD_NOARP 0x40
 #define NUD_PERMANENT 0x80
 #define NUD_NONE 0x00
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nda_cacheinfo
 {
  __u32 ndm_confirmed;
  __u32 ndm_used;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ndm_updated;
  __u32 ndm_refcnt;
 };
-
 struct ndt_stats
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u64 ndts_allocs;
  __u64 ndts_destroys;
  __u64 ndts_hash_grows;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 ndts_res_failed;
  __u64 ndts_lookups;
  __u64 ndts_hits;
  __u64 ndts_rcv_probes_mcast;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 ndts_rcv_probes_ucast;
  __u64 ndts_periodic_gc_runs;
  __u64 ndts_forced_gc_runs;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NDTPA_UNSPEC,
  NDTPA_IFINDEX,
  NDTPA_REFCNT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NDTPA_REACHABLE_TIME,
  NDTPA_BASE_REACHABLE_TIME,
  NDTPA_RETRANS_TIME,
  NDTPA_GC_STALETIME,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NDTPA_DELAY_PROBE_TIME,
  NDTPA_QUEUE_LEN,
  NDTPA_APP_PROBES,
  NDTPA_UCAST_PROBES,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NDTPA_MCAST_PROBES,
  NDTPA_ANYCAST_DELAY,
  NDTPA_PROXY_DELAY,
  NDTPA_PROXY_QLEN,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NDTPA_LOCKTIME,
  __NDTPA_MAX
 };
 #define NDTPA_MAX (__NDTPA_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ndtmsg
 {
  __u8 ndtm_family;
  __u8 ndtm_pad1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 ndtm_pad2;
 };
-
 struct ndt_config
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 ndtc_key_len;
  __u16 ndtc_entry_size;
  __u32 ndtc_entries;
  __u32 ndtc_last_flush;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ndtc_last_rand;
  __u32 ndtc_hash_rnd;
  __u32 ndtc_hash_mask;
  __u32 ndtc_hash_chain_gc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ndtc_proxy_qlen;
 };
-
 enum {
  NDTA_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NDTA_NAME,
  NDTA_THRESH1,
  NDTA_THRESH2,
  NDTA_THRESH3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NDTA_CONFIG,
  NDTA_PARMS,
  NDTA_STATS,
  NDTA_GC_INTERVAL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __NDTA_MAX
 };
 #define NDTA_MAX (__NDTA_MAX - 1)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/net.h b/libc/kernel/common/linux/net.h
index 29fca2c..c9bd9f3 100644
--- a/libc/kernel/common/linux/net.h
+++ b/libc/kernel/common/linux/net.h
@@ -7,45 +7,53 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NET_H
 #define _LINUX_NET_H
-
 #include <linux/wait.h>
 #include <asm/socket.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct poll_table_struct;
 struct inode;
-
 #define NPROTO 32  
-
 #define SYS_SOCKET 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYS_BIND 2  
 #define SYS_CONNECT 3  
 #define SYS_LISTEN 4  
 #define SYS_ACCEPT 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYS_GETSOCKNAME 6  
 #define SYS_GETPEERNAME 7  
 #define SYS_SOCKETPAIR 8  
 #define SYS_SEND 9  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYS_RECV 10  
 #define SYS_SENDTO 11  
 #define SYS_RECVFROM 12  
 #define SYS_SHUTDOWN 13  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYS_SETSOCKOPT 14  
 #define SYS_GETSOCKOPT 15  
 #define SYS_SENDMSG 16  
 #define SYS_RECVMSG 17  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
  SS_FREE = 0,
  SS_UNCONNECTED,
  SS_CONNECTING,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SS_CONNECTED,
  SS_DISCONNECTING
 } socket_state;
-
 #define __SO_ACCEPTCON (1 << 16)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netdevice.h b/libc/kernel/common/linux/netdevice.h
index 54b58f1..77afa1c 100644
--- a/libc/kernel/common/linux/netdevice.h
+++ b/libc/kernel/common/linux/netdevice.h
@@ -7,63 +7,70 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NETDEVICE_H
 #define _LINUX_NETDEVICE_H
-
 #include <linux/if.h>
 #include <linux/if_ether.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/if_packet.h>
-
 #define MAX_ADDR_LEN 32  
-
 #define NETDEV_TX_OK 0  
 #define NETDEV_TX_BUSY 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETDEV_TX_LOCKED -1  
-
 #define LL_MAX_HEADER 32
-
 #define MAX_HEADER LL_MAX_HEADER
-
 struct net_device_stats
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned long rx_packets;
  unsigned long tx_packets;
  unsigned long rx_bytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long tx_bytes;
  unsigned long rx_errors;
  unsigned long tx_errors;
  unsigned long rx_dropped;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long tx_dropped;
  unsigned long multicast;
  unsigned long collisions;
-
  unsigned long rx_length_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long rx_over_errors;
  unsigned long rx_crc_errors;
  unsigned long rx_frame_errors;
  unsigned long rx_fifo_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long rx_missed_errors;
-
  unsigned long tx_aborted_errors;
  unsigned long tx_carrier_errors;
  unsigned long tx_fifo_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long tx_heartbeat_errors;
  unsigned long tx_window_errors;
-
  unsigned long rx_compressed;
  unsigned long tx_compressed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  IF_PORT_UNKNOWN = 0,
  IF_PORT_10BASE2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IF_PORT_10BASET,
  IF_PORT_AUI,
  IF_PORT_100BASET,
  IF_PORT_100BASETX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IF_PORT_100BASEFX
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter.h b/libc/kernel/common/linux/netfilter.h
index ce8d394..d58d131 100644
--- a/libc/kernel/common/linux/netfilter.h
+++ b/libc/kernel/common/linux/netfilter.h
@@ -69,4 +69,3 @@
  struct in6_addr in6;
 };
 #endif
-
diff --git a/libc/kernel/common/linux/netfilter/nf_conntrack_common.h b/libc/kernel/common/linux/netfilter/nf_conntrack_common.h
index 69177fc..196851e 100644
--- a/libc/kernel/common/linux/netfilter/nf_conntrack_common.h
+++ b/libc/kernel/common/linux/netfilter/nf_conntrack_common.h
@@ -7,108 +7,97 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _NF_CONNTRACK_COMMON_H
 #define _NF_CONNTRACK_COMMON_H
-
 enum ip_conntrack_info
 {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IP_CT_ESTABLISHED,
-
  IP_CT_RELATED,
-
  IP_CT_NEW,
-
  IP_CT_IS_REPLY,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IP_CT_NUMBER = IP_CT_IS_REPLY * 2 - 1
 };
-
 enum ip_conntrack_status {
-
  IPS_EXPECTED_BIT = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPS_EXPECTED = (1 << IPS_EXPECTED_BIT),
-
  IPS_SEEN_REPLY_BIT = 1,
  IPS_SEEN_REPLY = (1 << IPS_SEEN_REPLY_BIT),
-
  IPS_ASSURED_BIT = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPS_ASSURED = (1 << IPS_ASSURED_BIT),
-
  IPS_CONFIRMED_BIT = 3,
  IPS_CONFIRMED = (1 << IPS_CONFIRMED_BIT),
-
  IPS_SRC_NAT_BIT = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPS_SRC_NAT = (1 << IPS_SRC_NAT_BIT),
-
  IPS_DST_NAT_BIT = 5,
  IPS_DST_NAT = (1 << IPS_DST_NAT_BIT),
-
  IPS_NAT_MASK = (IPS_DST_NAT | IPS_SRC_NAT),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPS_SEQ_ADJUST_BIT = 6,
  IPS_SEQ_ADJUST = (1 << IPS_SEQ_ADJUST_BIT),
-
  IPS_SRC_NAT_DONE_BIT = 7,
  IPS_SRC_NAT_DONE = (1 << IPS_SRC_NAT_DONE_BIT),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPS_DST_NAT_DONE_BIT = 8,
  IPS_DST_NAT_DONE = (1 << IPS_DST_NAT_DONE_BIT),
-
  IPS_NAT_DONE_MASK = (IPS_DST_NAT_DONE | IPS_SRC_NAT_DONE),
-
  IPS_DYING_BIT = 9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPS_DYING = (1 << IPS_DYING_BIT),
-
  IPS_FIXED_TIMEOUT_BIT = 10,
  IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT),
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum ip_conntrack_events
 {
-
  IPCT_NEW_BIT = 0,
  IPCT_NEW = (1 << IPCT_NEW_BIT),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPCT_RELATED_BIT = 1,
  IPCT_RELATED = (1 << IPCT_RELATED_BIT),
-
  IPCT_DESTROY_BIT = 2,
  IPCT_DESTROY = (1 << IPCT_DESTROY_BIT),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPCT_REFRESH_BIT = 3,
  IPCT_REFRESH = (1 << IPCT_REFRESH_BIT),
-
  IPCT_STATUS_BIT = 4,
  IPCT_STATUS = (1 << IPCT_STATUS_BIT),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPCT_PROTOINFO_BIT = 5,
  IPCT_PROTOINFO = (1 << IPCT_PROTOINFO_BIT),
-
  IPCT_PROTOINFO_VOLATILE_BIT = 6,
  IPCT_PROTOINFO_VOLATILE = (1 << IPCT_PROTOINFO_VOLATILE_BIT),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPCT_HELPER_BIT = 7,
  IPCT_HELPER = (1 << IPCT_HELPER_BIT),
-
  IPCT_HELPINFO_BIT = 8,
  IPCT_HELPINFO = (1 << IPCT_HELPINFO_BIT),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPCT_HELPINFO_VOLATILE_BIT = 9,
  IPCT_HELPINFO_VOLATILE = (1 << IPCT_HELPINFO_VOLATILE_BIT),
-
  IPCT_NATINFO_BIT = 10,
  IPCT_NATINFO = (1 << IPCT_NATINFO_BIT),
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPCT_COUNTER_FILLING_BIT = 11,
  IPCT_COUNTER_FILLING = (1 << IPCT_COUNTER_FILLING_BIT),
 };
-
 enum ip_conntrack_expect_events {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPEXP_NEW_BIT = 0,
  IPEXP_NEW = (1 << IPEXP_NEW_BIT),
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter/nf_conntrack_ftp.h b/libc/kernel/common/linux/netfilter/nf_conntrack_ftp.h
index ff815a7..8fd6827 100644
--- a/libc/kernel/common/linux/netfilter/nf_conntrack_ftp.h
+++ b/libc/kernel/common/linux/netfilter/nf_conntrack_ftp.h
@@ -7,21 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _NF_CONNTRACK_FTP_H
 #define _NF_CONNTRACK_FTP_H
-
 enum ip_ct_ftp_type
 {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IP_CT_FTP_PORT,
-
  IP_CT_FTP_PASV,
-
  IP_CT_FTP_EPRT,
-
  IP_CT_FTP_EPSV,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/nf_conntrack_sctp.h b/libc/kernel/common/linux/netfilter/nf_conntrack_sctp.h
index 15768b2..90f1f53 100644
--- a/libc/kernel/common/linux/netfilter/nf_conntrack_sctp.h
+++ b/libc/kernel/common/linux/netfilter/nf_conntrack_sctp.h
@@ -7,31 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _NF_CONNTRACK_SCTP_H
 #define _NF_CONNTRACK_SCTP_H
-
 #include <linux/netfilter/nf_conntrack_tuple_common.h>
-
 enum sctp_conntrack {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SCTP_CONNTRACK_NONE,
  SCTP_CONNTRACK_CLOSED,
  SCTP_CONNTRACK_COOKIE_WAIT,
  SCTP_CONNTRACK_COOKIE_ECHOED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SCTP_CONNTRACK_ESTABLISHED,
  SCTP_CONNTRACK_SHUTDOWN_SENT,
  SCTP_CONNTRACK_SHUTDOWN_RECD,
  SCTP_CONNTRACK_SHUTDOWN_ACK_SENT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SCTP_CONNTRACK_MAX
 };
-
 struct ip_ct_sctp
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  enum sctp_conntrack state;
-
  u_int32_t vtag[IP_CT_DIR_MAX];
  u_int32_t ttag[IP_CT_DIR_MAX];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter/nf_conntrack_tcp.h b/libc/kernel/common/linux/netfilter/nf_conntrack_tcp.h
index 227f902..b34fbd4 100644
--- a/libc/kernel/common/linux/netfilter/nf_conntrack_tcp.h
+++ b/libc/kernel/common/linux/netfilter/nf_conntrack_tcp.h
@@ -7,30 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _NF_CONNTRACK_TCP_H
 #define _NF_CONNTRACK_TCP_H
-
 enum tcp_conntrack {
  TCP_CONNTRACK_NONE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCP_CONNTRACK_SYN_SENT,
  TCP_CONNTRACK_SYN_RECV,
  TCP_CONNTRACK_ESTABLISHED,
  TCP_CONNTRACK_FIN_WAIT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCP_CONNTRACK_CLOSE_WAIT,
  TCP_CONNTRACK_LAST_ACK,
  TCP_CONNTRACK_TIME_WAIT,
  TCP_CONNTRACK_CLOSE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCP_CONNTRACK_LISTEN,
  TCP_CONNTRACK_MAX,
  TCP_CONNTRACK_IGNORE
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_CT_TCP_FLAG_WINDOW_SCALE 0x01
-
 #define IP_CT_TCP_FLAG_SACK_PERM 0x02
-
 #define IP_CT_TCP_FLAG_CLOSE_INIT 0x03
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter/nf_conntrack_tuple_common.h b/libc/kernel/common/linux/netfilter/nf_conntrack_tuple_common.h
index f282543..aa30405 100644
--- a/libc/kernel/common/linux/netfilter/nf_conntrack_tuple_common.h
+++ b/libc/kernel/common/linux/netfilter/nf_conntrack_tuple_common.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _NF_CONNTRACK_TUPLE_COMMON_H
 #define _NF_CONNTRACK_TUPLE_COMMON_H
-
 enum ip_conntrack_dir
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IP_CT_DIR_ORIGINAL,
  IP_CT_DIR_REPLY,
  IP_CT_DIR_MAX
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTINFO2DIR(ctinfo) ((ctinfo) >= IP_CT_IS_REPLY ? IP_CT_DIR_REPLY : IP_CT_DIR_ORIGINAL)
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/nfnetlink.h b/libc/kernel/common/linux/netfilter/nfnetlink.h
index 4544cab..1589745 100644
--- a/libc/kernel/common/linux/netfilter/nfnetlink.h
+++ b/libc/kernel/common/linux/netfilter/nfnetlink.h
@@ -7,78 +7,89 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _NFNETLINK_H
 #define _NFNETLINK_H
 #include <linux/types.h>
-
 #define NF_NETLINK_CONNTRACK_NEW 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_NETLINK_CONNTRACK_UPDATE 0x00000002
 #define NF_NETLINK_CONNTRACK_DESTROY 0x00000004
 #define NF_NETLINK_CONNTRACK_EXP_NEW 0x00000008
 #define NF_NETLINK_CONNTRACK_EXP_UPDATE 0x00000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_NETLINK_CONNTRACK_EXP_DESTROY 0x00000020
-
 enum nfnetlink_groups {
  NFNLGRP_NONE,
 #define NFNLGRP_NONE NFNLGRP_NONE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFNLGRP_CONNTRACK_NEW,
 #define NFNLGRP_CONNTRACK_NEW NFNLGRP_CONNTRACK_NEW
  NFNLGRP_CONNTRACK_UPDATE,
 #define NFNLGRP_CONNTRACK_UPDATE NFNLGRP_CONNTRACK_UPDATE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFNLGRP_CONNTRACK_DESTROY,
 #define NFNLGRP_CONNTRACK_DESTROY NFNLGRP_CONNTRACK_DESTROY
  NFNLGRP_CONNTRACK_EXP_NEW,
 #define NFNLGRP_CONNTRACK_EXP_NEW NFNLGRP_CONNTRACK_EXP_NEW
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFNLGRP_CONNTRACK_EXP_UPDATE,
 #define NFNLGRP_CONNTRACK_EXP_UPDATE NFNLGRP_CONNTRACK_EXP_UPDATE
  NFNLGRP_CONNTRACK_EXP_DESTROY,
 #define NFNLGRP_CONNTRACK_EXP_DESTROY NFNLGRP_CONNTRACK_EXP_DESTROY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __NFNLGRP_MAX,
 };
 #define NFNLGRP_MAX (__NFNLGRP_MAX - 1)
-
 struct nfattr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  u_int16_t nfa_len;
  u_int16_t nfa_type;
 } __attribute__ ((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_NFA_NEST 0x8000
 #define NFA_TYPE(attr) ((attr)->nfa_type & 0x7fff)
-
 #define NFA_ALIGNTO 4
 #define NFA_ALIGN(len) (((len) + NFA_ALIGNTO - 1) & ~(NFA_ALIGNTO - 1))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFA_OK(nfa,len) ((len) > 0 && (nfa)->nfa_len >= sizeof(struct nfattr)   && (nfa)->nfa_len <= (len))
 #define NFA_NEXT(nfa,attrlen) ((attrlen) -= NFA_ALIGN((nfa)->nfa_len),   (struct nfattr *)(((char *)(nfa)) + NFA_ALIGN((nfa)->nfa_len)))
 #define NFA_LENGTH(len) (NFA_ALIGN(sizeof(struct nfattr)) + (len))
 #define NFA_SPACE(len) NFA_ALIGN(NFA_LENGTH(len))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFA_DATA(nfa) ((void *)(((char *)(nfa)) + NFA_LENGTH(0)))
 #define NFA_PAYLOAD(nfa) ((int)((nfa)->nfa_len) - NFA_LENGTH(0))
 #define NFA_NEST(skb, type)  ({ struct nfattr *__start = (struct nfattr *) (skb)->tail;   NFA_PUT(skb, (NFNL_NFA_NEST | type), 0, NULL);   __start; })
 #define NFA_NEST_END(skb, start)  ({ (start)->nfa_len = ((skb)->tail - (unsigned char *) (start));   (skb)->len; })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFA_NEST_CANCEL(skb, start)  ({ if (start)   skb_trim(skb, (unsigned char *) (start) - (skb)->data);   -1; })
-
 struct nfgenmsg {
  u_int8_t nfgen_family;
  u_int8_t version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t res_id;
 } __attribute__ ((packed));
-
 #define NFNETLINK_V0 0
-
 #define NFM_NFA(n) ((struct nfattr *)(((char *)(n))   + NLMSG_ALIGN(sizeof(struct nfgenmsg))))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFM_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct nfgenmsg))
-
 #define NFNL_SUBSYS_ID(x) ((x & 0xff00) >> 8)
 #define NFNL_MSG_TYPE(x) (x & 0x00ff)
-
 #define NFNL_SUBSYS_NONE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_SUBSYS_CTNETLINK 1
 #define NFNL_SUBSYS_CTNETLINK_EXP 2
 #define NFNL_SUBSYS_QUEUE 3
 #define NFNL_SUBSYS_ULOG 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFNL_SUBSYS_COUNT 5
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/nfnetlink_conntrack.h b/libc/kernel/common/linux/netfilter/nfnetlink_conntrack.h
index 0b1b356..3f84fe5 100644
--- a/libc/kernel/common/linux/netfilter/nfnetlink_conntrack.h
+++ b/libc/kernel/common/linux/netfilter/nfnetlink_conntrack.h
@@ -209,4 +209,3 @@
 };
 #define CTA_HELP_MAX (__CTA_HELP_MAX - 1)
 #endif
-
diff --git a/libc/kernel/common/linux/netfilter/x_tables.h b/libc/kernel/common/linux/netfilter/x_tables.h
index 234181f..2439ac8 100644
--- a/libc/kernel/common/linux/netfilter/x_tables.h
+++ b/libc/kernel/common/linux/netfilter/x_tables.h
@@ -7,119 +7,113 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _X_TABLES_H
 #define _X_TABLES_H
-
 #define XT_FUNCTION_MAXNAMELEN 30
 #define XT_TABLE_MAXNAMELEN 32
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_entry_match
 {
  union {
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t match_size;
-
  char name[XT_FUNCTION_MAXNAMELEN-1];
-
  u_int8_t revision;
  } user;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  u_int16_t match_size;
-
  struct xt_match *match;
  } kernel;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t match_size;
  } u;
-
  unsigned char data[0];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_entry_target
 {
  union {
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t target_size;
-
  char name[XT_FUNCTION_MAXNAMELEN-1];
-
  u_int8_t revision;
  } user;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  u_int16_t target_size;
-
  struct xt_target *target;
  } kernel;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t target_size;
  } u;
-
  unsigned char data[0];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_standard_target
 {
  struct xt_entry_target target;
  int verdict;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct xt_get_revision
 {
  char name[XT_FUNCTION_MAXNAMELEN-1];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t revision;
 };
-
 #define XT_CONTINUE 0xFFFFFFFF
-
 #define XT_RETURN (-NF_REPEAT - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct _xt_align
 {
  u_int8_t u8;
  u_int16_t u16;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t u32;
  u_int64_t u64;
 };
-
 #define XT_ALIGN(s) (((s) + (__alignof__(struct _xt_align)-1))   & ~(__alignof__(struct _xt_align)-1))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_STANDARD_TARGET ""
-
 #define XT_ERROR_TARGET "ERROR"
-
 #define XT_BASE_CTL 64  
-
 #define XT_SO_SET_REPLACE (XT_BASE_CTL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_SO_SET_ADD_COUNTERS (XT_BASE_CTL + 1)
 #define XT_SO_SET_MAX XT_SO_SET_ADD_COUNTERS
-
 #define XT_SO_GET_INFO (XT_BASE_CTL)
 #define XT_SO_GET_ENTRIES (XT_BASE_CTL + 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_SO_GET_REVISION_MATCH (XT_BASE_CTL + 2)
 #define XT_SO_GET_REVISION_TARGET (XT_BASE_CTL + 3)
 #define XT_SO_GET_MAX XT_SO_GET_REVISION_TARGET
-
 #define SET_COUNTER(c,b,p) do { (c).bcnt = (b); (c).pcnt = (p); } while(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADD_COUNTER(c,b,p) do { (c).bcnt += (b); (c).pcnt += (p); } while(0)
-
 struct xt_counters
 {
  u_int64_t pcnt, bcnt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct xt_counters_info
 {
-
  char name[XT_TABLE_MAXNAMELEN];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int num_counters;
-
  struct xt_counters counters[0];
 };
-
 #define XT_INV_PROTO 0x40  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_CLASSIFY.h b/libc/kernel/common/linux/netfilter/xt_CLASSIFY.h
index 1e9f61e..8d55d7f 100644
--- a/libc/kernel/common/linux/netfilter/xt_CLASSIFY.h
+++ b/libc/kernel/common/linux/netfilter/xt_CLASSIFY.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_CLASSIFY_H
 #define _XT_CLASSIFY_H
-
 struct xt_classify_target_info {
  u_int32_t priority;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_CONNMARK.h b/libc/kernel/common/linux/netfilter/xt_CONNMARK.h
index 1b30eeb..0a2ac40 100644
--- a/libc/kernel/common/linux/netfilter/xt_CONNMARK.h
+++ b/libc/kernel/common/linux/netfilter/xt_CONNMARK.h
@@ -7,21 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_CONNMARK_H_target
 #define _XT_CONNMARK_H_target
-
 enum {
  XT_CONNMARK_SET = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XT_CONNMARK_SAVE,
  XT_CONNMARK_RESTORE
 };
-
 struct xt_connmark_target_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long mark;
  unsigned long mask;
  u_int8_t mode;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_CONNSECMARK.h b/libc/kernel/common/linux/netfilter/xt_CONNSECMARK.h
index 5e16b2e..7209766 100644
--- a/libc/kernel/common/linux/netfilter/xt_CONNSECMARK.h
+++ b/libc/kernel/common/linux/netfilter/xt_CONNSECMARK.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_CONNSECMARK_H_target
 #define _XT_CONNSECMARK_H_target
-
 enum {
  CONNSECMARK_SAVE = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CONNSECMARK_RESTORE,
 };
-
 struct xt_connsecmark_target_info {
  u_int8_t mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_MARK.h b/libc/kernel/common/linux/netfilter/xt_MARK.h
index f58c97c..d5580bc 100644
--- a/libc/kernel/common/linux/netfilter/xt_MARK.h
+++ b/libc/kernel/common/linux/netfilter/xt_MARK.h
@@ -7,24 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_MARK_H_target
 #define _XT_MARK_H_target
-
 struct xt_mark_target_info {
  unsigned long mark;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  XT_MARK_SET=0,
  XT_MARK_AND,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XT_MARK_OR,
 };
-
 struct xt_mark_target_info_v1 {
  unsigned long mark;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t mode;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_NFQUEUE.h b/libc/kernel/common/linux/netfilter/xt_NFQUEUE.h
index 1f0cacb..b4f430c 100644
--- a/libc/kernel/common/linux/netfilter/xt_NFQUEUE.h
+++ b/libc/kernel/common/linux/netfilter/xt_NFQUEUE.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_NFQ_TARGET_H
 #define _XT_NFQ_TARGET_H
-
 struct xt_NFQ_info {
  u_int16_t queuenum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_SECMARK.h b/libc/kernel/common/linux/netfilter/xt_SECMARK.h
index a91d32c..7060f0b 100644
--- a/libc/kernel/common/linux/netfilter/xt_SECMARK.h
+++ b/libc/kernel/common/linux/netfilter/xt_SECMARK.h
@@ -7,24 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_SECMARK_H_target
 #define _XT_SECMARK_H_target
-
 #define SECMARK_MODE_SEL 0x01  
 #define SECMARK_SELCTX_MAX 256
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_secmark_target_selinux_info {
  u_int32_t selsid;
  char selctx[SECMARK_SELCTX_MAX];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_secmark_target_info {
  u_int8_t mode;
  union {
  struct xt_secmark_target_selinux_info sel;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } u;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_comment.h b/libc/kernel/common/linux/netfilter/xt_comment.h
index 6ea26fc..e825907 100644
--- a/libc/kernel/common/linux/netfilter/xt_comment.h
+++ b/libc/kernel/common/linux/netfilter/xt_comment.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_COMMENT_H
 #define _XT_COMMENT_H
-
 #define XT_MAX_COMMENT_LEN 256
-
 struct xt_comment_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char comment[XT_MAX_COMMENT_LEN];
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_connbytes.h b/libc/kernel/common/linux/netfilter/xt_connbytes.h
index 8cc80e1..da2e361 100644
--- a/libc/kernel/common/linux/netfilter/xt_connbytes.h
+++ b/libc/kernel/common/linux/netfilter/xt_connbytes.h
@@ -7,30 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_CONNBYTES_H
 #define _XT_CONNBYTES_H
-
 enum xt_connbytes_what {
  XT_CONNBYTES_PKTS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XT_CONNBYTES_BYTES,
  XT_CONNBYTES_AVGPKT,
 };
-
 enum xt_connbytes_direction {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XT_CONNBYTES_DIR_ORIGINAL,
  XT_CONNBYTES_DIR_REPLY,
  XT_CONNBYTES_DIR_BOTH,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_connbytes_info
 {
  struct {
  aligned_u64 from;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  aligned_u64 to;
  } count;
  u_int8_t what;
  u_int8_t direction;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_connmark.h b/libc/kernel/common/linux/netfilter/xt_connmark.h
index 021e03a..f02bd8e 100644
--- a/libc/kernel/common/linux/netfilter/xt_connmark.h
+++ b/libc/kernel/common/linux/netfilter/xt_connmark.h
@@ -7,14 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_CONNMARK_H
 #define _XT_CONNMARK_H
-
 struct xt_connmark_info {
  unsigned long mark, mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t invert;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_conntrack.h b/libc/kernel/common/linux/netfilter/xt_conntrack.h
index aa9bde2..5a032c6 100644
--- a/libc/kernel/common/linux/netfilter/xt_conntrack.h
+++ b/libc/kernel/common/linux/netfilter/xt_conntrack.h
@@ -7,60 +7,65 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_CONNTRACK_H
 #define _XT_CONNTRACK_H
-
 #include <linux/netfilter/nf_conntrack_tuple_common.h>
 #include <linux/in.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_CONNTRACK_STATE_BIT(ctinfo) (1 << ((ctinfo)%IP_CT_IS_REPLY+1))
 #define XT_CONNTRACK_STATE_INVALID (1 << 0)
-
 #define XT_CONNTRACK_STATE_SNAT (1 << (IP_CT_NUMBER + 1))
 #define XT_CONNTRACK_STATE_DNAT (1 << (IP_CT_NUMBER + 2))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_CONNTRACK_STATE_UNTRACKED (1 << (IP_CT_NUMBER + 3))
-
 #define XT_CONNTRACK_STATE 0x01
 #define XT_CONNTRACK_PROTO 0x02
 #define XT_CONNTRACK_ORIGSRC 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_CONNTRACK_ORIGDST 0x08
 #define XT_CONNTRACK_REPLSRC 0x10
 #define XT_CONNTRACK_REPLDST 0x20
 #define XT_CONNTRACK_STATUS 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_CONNTRACK_EXPIRES 0x80
-
 struct ip_conntrack_old_tuple
 {
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ip;
  union {
  __u16 all;
  } u;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } src;
-
  struct {
  __u32 ip;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 all;
  } u;
-
  __u16 protonum;
  } dst;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct xt_conntrack_info
 {
  unsigned int statemask, statusmask;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ip_conntrack_old_tuple tuple[IP_CT_DIR_MAX];
  struct in_addr sipmsk[IP_CT_DIR_MAX], dipmsk[IP_CT_DIR_MAX];
-
  unsigned long expires_min, expires_max;
-
  u_int8_t flags;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t invflags;
 };
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_dccp.h b/libc/kernel/common/linux/netfilter/xt_dccp.h
index 8a10e67..1a4fea0 100644
--- a/libc/kernel/common/linux/netfilter/xt_dccp.h
+++ b/libc/kernel/common/linux/netfilter/xt_dccp.h
@@ -7,28 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_DCCP_H_
 #define _XT_DCCP_H_
-
 #define XT_DCCP_SRC_PORTS 0x01
 #define XT_DCCP_DEST_PORTS 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_DCCP_TYPE 0x04
 #define XT_DCCP_OPTION 0x08
-
 #define XT_DCCP_VALID_FLAGS 0x0f
-
 struct xt_dccp_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t dpts[2];
  u_int16_t spts[2];
-
  u_int16_t flags;
  u_int16_t invflags;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t typemask;
  u_int8_t option;
 };
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter/xt_esp.h b/libc/kernel/common/linux/netfilter/xt_esp.h
index 175c47e..ad76c2e 100644
--- a/libc/kernel/common/linux/netfilter/xt_esp.h
+++ b/libc/kernel/common/linux/netfilter/xt_esp.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_ESP_H
 #define _XT_ESP_H
-
 struct xt_esp
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t spis[2];
  u_int8_t invflags;
 };
-
 #define XT_ESP_INV_SPI 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_ESP_INV_MASK 0x01  
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_helper.h b/libc/kernel/common/linux/netfilter/xt_helper.h
index 6ffa451..785663e 100644
--- a/libc/kernel/common/linux/netfilter/xt_helper.h
+++ b/libc/kernel/common/linux/netfilter/xt_helper.h
@@ -7,13 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_HELPER_H
 #define _XT_HELPER_H
-
 struct xt_helper_info {
  int invert;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[30];
 };
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_length.h b/libc/kernel/common/linux/netfilter/xt_length.h
index 12db6c7..51b2a88 100644
--- a/libc/kernel/common/linux/netfilter/xt_length.h
+++ b/libc/kernel/common/linux/netfilter/xt_length.h
@@ -7,14 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_LENGTH_H
 #define _XT_LENGTH_H
-
 struct xt_length_info {
  u_int16_t min, max;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t invert;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_limit.h b/libc/kernel/common/linux/netfilter/xt_limit.h
index f9fb37f..d9b5191 100644
--- a/libc/kernel/common/linux/netfilter/xt_limit.h
+++ b/libc/kernel/common/linux/netfilter/xt_limit.h
@@ -7,21 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_RATE_H
 #define _XT_RATE_H
-
 #define XT_LIMIT_SCALE 10000
-
 struct xt_rateinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t avg;
  u_int32_t burst;
-
  unsigned long prev;
  u_int32_t credit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t credit_cap, cost;
-
  struct xt_rateinfo *master;
 };
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter/xt_mac.h b/libc/kernel/common/linux/netfilter/xt_mac.h
index 2473aab..12c584c 100644
--- a/libc/kernel/common/linux/netfilter/xt_mac.h
+++ b/libc/kernel/common/linux/netfilter/xt_mac.h
@@ -7,13 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_MAC_H
 #define _XT_MAC_H
-
 struct xt_mac_info {
  unsigned char srcaddr[ETH_ALEN];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int invert;
 };
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_mark.h b/libc/kernel/common/linux/netfilter/xt_mark.h
index 69699df..f06462b 100644
--- a/libc/kernel/common/linux/netfilter/xt_mark.h
+++ b/libc/kernel/common/linux/netfilter/xt_mark.h
@@ -7,14 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_MARK_H
 #define _XT_MARK_H
-
 struct xt_mark_info {
  unsigned long mark, mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t invert;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_multiport.h b/libc/kernel/common/linux/netfilter/xt_multiport.h
index f17979a..ce8f425 100644
--- a/libc/kernel/common/linux/netfilter/xt_multiport.h
+++ b/libc/kernel/common/linux/netfilter/xt_multiport.h
@@ -7,34 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_MULTIPORT_H
 #define _XT_MULTIPORT_H
-
 enum xt_multiport_flags
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XT_MULTIPORT_SOURCE,
  XT_MULTIPORT_DESTINATION,
  XT_MULTIPORT_EITHER
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_MULTI_PORTS 15
-
 struct xt_multiport
 {
  u_int8_t flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t count;
  u_int16_t ports[XT_MULTI_PORTS];
 };
-
 struct xt_multiport_v1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  u_int8_t flags;
  u_int8_t count;
  u_int16_t ports[XT_MULTI_PORTS];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t pflags[XT_MULTI_PORTS];
  u_int8_t invert;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter/xt_physdev.h b/libc/kernel/common/linux/netfilter/xt_physdev.h
index d0ca032..1d85008 100644
--- a/libc/kernel/common/linux/netfilter/xt_physdev.h
+++ b/libc/kernel/common/linux/netfilter/xt_physdev.h
@@ -7,25 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_PHYSDEV_H
 #define _XT_PHYSDEV_H
-
 #define XT_PHYSDEV_OP_IN 0x01
 #define XT_PHYSDEV_OP_OUT 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_PHYSDEV_OP_BRIDGED 0x04
 #define XT_PHYSDEV_OP_ISIN 0x08
 #define XT_PHYSDEV_OP_ISOUT 0x10
 #define XT_PHYSDEV_OP_MASK (0x20 - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_physdev_info {
  char physindev[IFNAMSIZ];
  char in_mask[IFNAMSIZ];
  char physoutdev[IFNAMSIZ];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char out_mask[IFNAMSIZ];
  u_int8_t invert;
  u_int8_t bitmask;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_pkttype.h b/libc/kernel/common/linux/netfilter/xt_pkttype.h
index 32527b8..5ef1256 100644
--- a/libc/kernel/common/linux/netfilter/xt_pkttype.h
+++ b/libc/kernel/common/linux/netfilter/xt_pkttype.h
@@ -7,13 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_PKTTYPE_H
 #define _XT_PKTTYPE_H
-
 struct xt_pkttype_info {
  int pkttype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int invert;
 };
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_quota.h b/libc/kernel/common/linux/netfilter/xt_quota.h
index d34752d..fe46721 100644
--- a/libc/kernel/common/linux/netfilter/xt_quota.h
+++ b/libc/kernel/common/linux/netfilter/xt_quota.h
@@ -7,21 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_QUOTA_H
 #define _XT_QUOTA_H
-
 enum xt_quota_flags {
  XT_QUOTA_INVERT = 0x1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define XT_QUOTA_MASK 0x1
-
 struct xt_quota_info {
  u_int32_t flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t pad;
  aligned_u64 quota;
  struct xt_quota_info *master;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_realm.h b/libc/kernel/common/linux/netfilter/xt_realm.h
index 1a2a3cf..93e6b9a 100644
--- a/libc/kernel/common/linux/netfilter/xt_realm.h
+++ b/libc/kernel/common/linux/netfilter/xt_realm.h
@@ -7,15 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_REALM_H
 #define _XT_REALM_H
-
 struct xt_realm_info {
  u_int32_t id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t mask;
  u_int8_t invert;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter/xt_sctp.h b/libc/kernel/common/linux/netfilter/xt_sctp.h
index f79c3b6..7591375 100644
--- a/libc/kernel/common/linux/netfilter/xt_sctp.h
+++ b/libc/kernel/common/linux/netfilter/xt_sctp.h
@@ -7,62 +7,57 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_SCTP_H_
 #define _XT_SCTP_H_
-
 #define XT_SCTP_SRC_PORTS 0x01
 #define XT_SCTP_DEST_PORTS 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_SCTP_CHUNK_TYPES 0x04
-
 #define XT_SCTP_VALID_FLAGS 0x07
-
 #define ELEMCOUNT(x) (sizeof(x)/sizeof(x[0]))
-
 struct xt_sctp_flag_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t chunktype;
  u_int8_t flag;
  u_int8_t flag_mask;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_NUM_SCTP_FLAGS 4
-
 struct xt_sctp_info {
  u_int16_t dpts[2];
  u_int16_t spts[2];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t chunkmap[256 / sizeof (u_int32_t)];
-
 #define SCTP_CHUNK_MATCH_ANY 0x01  
 #define SCTP_CHUNK_MATCH_ALL 0x02  
 #define SCTP_CHUNK_MATCH_ONLY 0x04  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t chunk_match_type;
  struct xt_sctp_flag_info flag_info[XT_NUM_SCTP_FLAGS];
  int flag_count;
-
  u_int32_t flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t invflags;
 };
-
 #define bytes(type) (sizeof(type) * 8)
-
 #define SCTP_CHUNKMAP_SET(chunkmap, type)   do {   chunkmap[type / bytes(u_int32_t)] |=   1 << (type % bytes(u_int32_t));   } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCTP_CHUNKMAP_CLEAR(chunkmap, type)   do {   chunkmap[type / bytes(u_int32_t)] &=   ~(1 << (type % bytes(u_int32_t)));   } while (0)
-
 #define SCTP_CHUNKMAP_IS_SET(chunkmap, type)  ({   (chunkmap[type / bytes (u_int32_t)] &   (1 << (type % bytes (u_int32_t)))) ? 1: 0;  })
-
 #define SCTP_CHUNKMAP_RESET(chunkmap)   do {   int i;   for (i = 0; i < ELEMCOUNT(chunkmap); i++)   chunkmap[i] = 0;   } while (0)
-
 #define SCTP_CHUNKMAP_SET_ALL(chunkmap)   do {   int i;   for (i = 0; i < ELEMCOUNT(chunkmap); i++)   chunkmap[i] = ~0;   } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCTP_CHUNKMAP_COPY(destmap, srcmap)   do {   int i;   for (i = 0; i < ELEMCOUNT(chunkmap); i++)   destmap[i] = srcmap[i];   } while (0)
-
 #define SCTP_CHUNKMAP_IS_CLEAR(chunkmap)  ({   int i;   int flag = 1;   for (i = 0; i < ELEMCOUNT(chunkmap); i++) {   if (chunkmap[i]) {   flag = 0;   break;   }   }   flag;  })
-
 #define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap)  ({   int i;   int flag = 1;   for (i = 0; i < ELEMCOUNT(chunkmap); i++) {   if (chunkmap[i] != ~0) {   flag = 0;   break;   }   }   flag;  })
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter/xt_state.h b/libc/kernel/common/linux/netfilter/xt_state.h
index 6754776..7144d2b 100644
--- a/libc/kernel/common/linux/netfilter/xt_state.h
+++ b/libc/kernel/common/linux/netfilter/xt_state.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_STATE_H
 #define _XT_STATE_H
-
 #define XT_STATE_BIT(ctinfo) (1 << ((ctinfo)%IP_CT_IS_REPLY+1))
 #define XT_STATE_INVALID (1 << 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_STATE_UNTRACKED (1 << (IP_CT_NUMBER + 1))
-
 struct xt_state_info
 {
  unsigned int statemask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_statistic.h b/libc/kernel/common/linux/netfilter/xt_statistic.h
index 999b0a1..c098492 100644
--- a/libc/kernel/common/linux/netfilter/xt_statistic.h
+++ b/libc/kernel/common/linux/netfilter/xt_statistic.h
@@ -7,37 +7,47 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_STATISTIC_H
 #define _XT_STATISTIC_H
-
 enum xt_statistic_mode {
  XT_STATISTIC_MODE_RANDOM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  XT_STATISTIC_MODE_NTH,
  __XT_STATISTIC_MODE_MAX
 };
 #define XT_STATISTIC_MODE_MAX (__XT_STATISTIC_MODE_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum xt_statistic_flags {
  XT_STATISTIC_INVERT = 0x1,
 };
 #define XT_STATISTIC_MASK 0x1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_statistic_info {
  u_int16_t mode;
  u_int16_t flags;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  u_int32_t probability;
  } random;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t every;
  u_int32_t packet;
  u_int32_t count;
  } nth;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } u;
  struct xt_statistic_info *master __attribute__((aligned(8)));
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter/xt_string.h b/libc/kernel/common/linux/netfilter/xt_string.h
index a01018f..3d34f4c 100644
--- a/libc/kernel/common/linux/netfilter/xt_string.h
+++ b/libc/kernel/common/linux/netfilter/xt_string.h
@@ -7,23 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_STRING_H
 #define _XT_STRING_H
-
 #define XT_STRING_MAX_PATTERN_SIZE 128
 #define XT_STRING_MAX_ALGO_NAME_SIZE 16
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_string_info
 {
  u_int16_t from_offset;
  u_int16_t to_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char algo[XT_STRING_MAX_ALGO_NAME_SIZE];
  char pattern[XT_STRING_MAX_PATTERN_SIZE];
  u_int8_t patlen;
  u_int8_t invert;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ts_config __attribute__((aligned(8))) *config;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_tcpmss.h b/libc/kernel/common/linux/netfilter/xt_tcpmss.h
index 33de0ee..8233ea9 100644
--- a/libc/kernel/common/linux/netfilter/xt_tcpmss.h
+++ b/libc/kernel/common/linux/netfilter/xt_tcpmss.h
@@ -7,14 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_TCPMSS_MATCH_H
 #define _XT_TCPMSS_MATCH_H
-
 struct xt_tcpmss_match_info {
  u_int16_t mss_min, mss_max;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t invert;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter/xt_tcpudp.h b/libc/kernel/common/linux/netfilter/xt_tcpudp.h
index 476fffb..52ec36f 100644
--- a/libc/kernel/common/linux/netfilter/xt_tcpudp.h
+++ b/libc/kernel/common/linux/netfilter/xt_tcpudp.h
@@ -7,36 +7,44 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XT_TCPUDP_H
 #define _XT_TCPUDP_H
-
 struct xt_tcp
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t spts[2];
  u_int16_t dpts[2];
  u_int8_t option;
  u_int8_t flg_mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t flg_cmp;
  u_int8_t invflags;
 };
-
 #define XT_TCP_INV_SRCPT 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_TCP_INV_DSTPT 0x02  
 #define XT_TCP_INV_FLAGS 0x04  
 #define XT_TCP_INV_OPTION 0x08  
 #define XT_TCP_INV_MASK 0x0F  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xt_udp
 {
  u_int16_t spts[2];
  u_int16_t dpts[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t invflags;
 };
-
 #define XT_UDP_INV_SRCPT 0x01  
 #define XT_UDP_INV_DSTPT 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XT_UDP_INV_MASK 0x03  
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_arp.h b/libc/kernel/common/linux/netfilter_arp.h
index 08569db..521b951 100644
--- a/libc/kernel/common/linux/netfilter_arp.h
+++ b/libc/kernel/common/linux/netfilter_arp.h
@@ -7,18 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_ARP_NETFILTER_H
 #define __LINUX_ARP_NETFILTER_H
-
 #include <linux/netfilter.h>
-
 #define NF_ARP 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_ARP_IN 0
 #define NF_ARP_OUT 1
 #define NF_ARP_FORWARD 2
 #define NF_ARP_NUMHOOKS 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_arp/arp_tables.h b/libc/kernel/common/linux/netfilter_arp/arp_tables.h
index 665a347..e337386 100644
--- a/libc/kernel/common/linux/netfilter_arp/arp_tables.h
+++ b/libc/kernel/common/linux/netfilter_arp/arp_tables.h
@@ -7,153 +7,129 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ARPTABLES_H
 #define _ARPTABLES_H
-
 #include <linux/compiler.h>
 #include <linux/netfilter_arp.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/netfilter/x_tables.h>
-
 #define ARPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
 #define ARPT_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
 #define arpt_target xt_target
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define arpt_table xt_table
-
 #define ARPT_DEV_ADDR_LEN_MAX 16
-
 struct arpt_devaddr_info {
  char addr[ARPT_DEV_ADDR_LEN_MAX];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char mask[ARPT_DEV_ADDR_LEN_MAX];
 };
-
 struct arpt_arp {
-
  struct in_addr src, tgt;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct in_addr smsk, tmsk;
-
  u_int8_t arhln, arhln_mask;
  struct arpt_devaddr_info src_devaddr;
  struct arpt_devaddr_info tgt_devaddr;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t arpop, arpop_mask;
-
  u_int16_t arhrd, arhrd_mask;
  u_int16_t arpro, arpro_mask;
-
  char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
-
  u_int8_t flags;
-
  u_int16_t invflags;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define arpt_entry_target xt_entry_target
 #define arpt_standard_target xt_standard_target
-
 #define ARPT_F_MASK 0x00  
-
 #define ARPT_INV_VIA_IN 0x0001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_INV_VIA_OUT 0x0002  
 #define ARPT_INV_SRCIP 0x0004  
 #define ARPT_INV_TGTIP 0x0008  
 #define ARPT_INV_SRCDEVADDR 0x0010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_INV_TGTDEVADDR 0x0020  
 #define ARPT_INV_ARPOP 0x0040  
 #define ARPT_INV_ARPHRD 0x0080  
 #define ARPT_INV_ARPPRO 0x0100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_INV_ARPHLN 0x0200  
 #define ARPT_INV_MASK 0x03FF  
-
 struct arpt_entry
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct arpt_arp arp;
-
  u_int16_t target_offset;
-
  u_int16_t next_offset;
-
  unsigned int comefrom;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct xt_counters counters;
-
  unsigned char elems[0];
 };
-
 #define ARPT_CTL_OFFSET 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_BASE_CTL (XT_BASE_CTL+ARPT_CTL_OFFSET)
-
 #define ARPT_SO_SET_REPLACE (XT_SO_SET_REPLACE+ARPT_CTL_OFFSET)
 #define ARPT_SO_SET_ADD_COUNTERS (XT_SO_SET_ADD_COUNTERS+ARPT_CTL_OFFSET)
 #define ARPT_SO_SET_MAX (XT_SO_SET_MAX+ARPT_CTL_OFFSET)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_SO_GET_INFO (XT_SO_GET_INFO+ARPT_CTL_OFFSET)
 #define ARPT_SO_GET_ENTRIES (XT_SO_GET_ENTRIES+ARPT_CTL_OFFSET)
-
 #define ARPT_SO_GET_REVISION_TARGET (XT_SO_GET_REVISION_TARGET+ARPT_CTL_OFFSET)
 #define ARPT_SO_GET_MAX (XT_SO_GET_REVISION_TARGET+ARPT_CTL_OFFSET)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_CONTINUE XT_CONTINUE
-
 #define ARPT_RETURN XT_RETURN
-
 struct arpt_getinfo
 {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[ARPT_TABLE_MAXNAMELEN];
-
  unsigned int valid_hooks;
-
  unsigned int hook_entry[NF_ARP_NUMHOOKS];
-
  unsigned int underflow[NF_ARP_NUMHOOKS];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int num_entries;
-
  unsigned int size;
 };
-
 struct arpt_replace
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
-
  char name[ARPT_TABLE_MAXNAMELEN];
-
  unsigned int valid_hooks;
-
  unsigned int num_entries;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int size;
-
  unsigned int hook_entry[NF_ARP_NUMHOOKS];
-
  unsigned int underflow[NF_ARP_NUMHOOKS];
-
  unsigned int num_counters;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct xt_counters __user *counters;
-
  struct arpt_entry entries[0];
 };
-
 #define arpt_counters_info xt_counters_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct arpt_get_entries
 {
-
  char name[ARPT_TABLE_MAXNAMELEN];
-
  unsigned int size;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct arpt_entry entrytable[0];
 };
-
 #define ARPT_STANDARD_TARGET XT_STANDARD_TARGET
-
 #define ARPT_ERROR_TARGET XT_ERROR_TARGET
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ARPT_ENTRY_ITERATE(entries, size, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct arpt_entry *__entry;     for (__i = 0; __i < (size); __i += __entry->next_offset) {   __entry = (void *)(entries) + __i;     __ret = fn(__entry , ## args);   if (__ret != 0)   break;   }   __ret;  })
 #endif
diff --git a/libc/kernel/common/linux/netfilter_bridge.h b/libc/kernel/common/linux/netfilter_bridge.h
index 22cca55..e6d38e1 100644
--- a/libc/kernel/common/linux/netfilter_bridge.h
+++ b/libc/kernel/common/linux/netfilter_bridge.h
@@ -7,24 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_BRIDGE_NETFILTER_H
 #define __LINUX_BRIDGE_NETFILTER_H
-
 #include <linux/netfilter.h>
-
 #define NF_BR_PRE_ROUTING 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_BR_LOCAL_IN 1
-
 #define NF_BR_FORWARD 2
-
 #define NF_BR_LOCAL_OUT 3
-
 #define NF_BR_POST_ROUTING 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_BR_BROUTING 5
 #define NF_BR_NUMHOOKS 6
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4.h b/libc/kernel/common/linux/netfilter_ipv4.h
index 17fd451..30c5b3d 100644
--- a/libc/kernel/common/linux/netfilter_ipv4.h
+++ b/libc/kernel/common/linux/netfilter_ipv4.h
@@ -7,67 +7,63 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_IP_NETFILTER_H
 #define __LINUX_IP_NETFILTER_H
-
 #include <linux/netfilter.h>
-
 #define NFC_IP_SRC 0x0001
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_IP_DST 0x0002
-
 #define NFC_IP_IF_IN 0x0004
-
 #define NFC_IP_IF_OUT 0x0008
-
 #define NFC_IP_TOS 0x0010
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_IP_PROTO 0x0020
-
 #define NFC_IP_OPTIONS 0x0040
-
 #define NFC_IP_FRAG 0x0080
-
 #define NFC_IP_TCPFLAGS 0x0100
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_IP_SRC_PT 0x0200
-
 #define NFC_IP_DST_PT 0x0400
-
 #define NFC_IP_PROTO_UNKNOWN 0x2000
-
 #define NF_IP_PRE_ROUTING 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_IP_LOCAL_IN 1
-
 #define NF_IP_FORWARD 2
-
 #define NF_IP_LOCAL_OUT 3
-
 #define NF_IP_POST_ROUTING 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_IP_NUMHOOKS 5
-
 enum nf_ip_hook_priorities {
  NF_IP_PRI_FIRST = INT_MIN,
  NF_IP_PRI_CONNTRACK_DEFRAG = -400,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF_IP_PRI_RAW = -300,
  NF_IP_PRI_SELINUX_FIRST = -225,
  NF_IP_PRI_CONNTRACK = -200,
  NF_IP_PRI_BRIDGE_SABOTAGE_FORWARD = -175,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF_IP_PRI_MANGLE = -150,
  NF_IP_PRI_NAT_DST = -100,
  NF_IP_PRI_BRIDGE_SABOTAGE_LOCAL_OUT = -50,
  NF_IP_PRI_FILTER = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF_IP_PRI_NAT_SRC = 100,
  NF_IP_PRI_SELINUX_LAST = 225,
  NF_IP_PRI_CONNTRACK_HELPER = INT_MAX - 2,
  NF_IP_PRI_NAT_SEQ_ADJUST = INT_MAX - 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX,
  NF_IP_PRI_LAST = INT_MAX,
 };
-
 #define SO_ORIGINAL_DST 80
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ip_conntrack.h b/libc/kernel/common/linux/netfilter_ipv4/ip_conntrack.h
index ef55a61..4ddeba4 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ip_conntrack.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ip_conntrack.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP_CONNTRACK_H
 #define _IP_CONNTRACK_H
-
 #include <linux/netfilter/nf_conntrack_common.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ip_conntrack_tuple.h b/libc/kernel/common/linux/netfilter_ipv4/ip_conntrack_tuple.h
index 0c96baf..8358425 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ip_conntrack_tuple.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ip_conntrack_tuple.h
@@ -7,75 +7,83 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP_CONNTRACK_TUPLE_H
 #define _IP_CONNTRACK_TUPLE_H
-
 #include <linux/types.h>
 #include <linux/netfilter/nf_conntrack_tuple_common.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union ip_conntrack_manip_proto
 {
-
  u_int16_t all;
-
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 port;
  } tcp;
  struct {
  u_int16_t port;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } udp;
  struct {
  u_int16_t id;
  } icmp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  u_int16_t port;
  } sctp;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 key;
  } gre;
 };
-
 struct ip_conntrack_manip
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  u_int32_t ip;
  union ip_conntrack_manip_proto u;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip_conntrack_tuple
 {
  struct ip_conntrack_manip src;
-
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t ip;
  union {
-
  u_int16_t all;
-
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t port;
  } tcp;
  struct {
  u_int16_t port;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } udp;
  struct {
  u_int8_t type, code;
  } icmp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  u_int16_t port;
  } sctp;
  struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be16 key;
  } gre;
  } u;
-
  u_int8_t protonum;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t dir;
  } dst;
 };
-
 #define IP_CT_TUPLE_U_BLANK(tuple)   do {   (tuple)->src.u.all = 0;   (tuple)->dst.u.all = 0;   } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ip_nat.h b/libc/kernel/common/linux/netfilter_ipv4/ip_nat.h
index 7db9da3..88d04e5 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ip_nat.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ip_nat.h
@@ -7,49 +7,49 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP_NAT_H
 #define _IP_NAT_H
 #include <linux/netfilter_ipv4.h>
 #include <linux/netfilter_ipv4/ip_conntrack_tuple.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_NAT_MAPPING_TYPE_MAX_NAMELEN 16
-
 enum ip_nat_manip_type
 {
  IP_NAT_MANIP_SRC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IP_NAT_MANIP_DST
 };
-
 #define HOOK2MANIP(hooknum) ((hooknum) != NF_IP_POST_ROUTING && (hooknum) != NF_IP_LOCAL_IN)
-
 #define IP_NAT_RANGE_MAP_IPS 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP_NAT_RANGE_PROTO_SPECIFIED 2
-
 struct ip_nat_seq {
-
  u_int32_t correction_pos;
-
  int16_t offset_before, offset_after;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ip_nat_range
 {
-
  unsigned int flags;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t min_ip, max_ip;
-
  union ip_conntrack_manip_proto min, max;
 };
-
 struct ip_nat_multi_range_compat
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned int rangesize;
-
  struct ip_nat_range range[1];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ip_nat_multi_range ip_nat_multi_range_compat
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ip_nat_rule.h b/libc/kernel/common/linux/netfilter_ipv4/ip_nat_rule.h
index b9db0b0..1923be7 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ip_nat_rule.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ip_nat_rule.h
@@ -7,12 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP_NAT_RULE_H
 #define _IP_NAT_RULE_H
 #include <linux/netfilter_ipv4/ip_conntrack.h>
 #include <linux/netfilter_ipv4/ip_tables.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/netfilter_ipv4/ip_nat.h>
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ip_queue.h b/libc/kernel/common/linux/netfilter_ipv4/ip_queue.h
index 5d17a54..0fc6b43 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ip_queue.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ip_queue.h
@@ -7,59 +7,69 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP_QUEUE_H
 #define _IP_QUEUE_H
-
 #include <net/if.h>
-
 typedef struct ipq_packet_msg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long packet_id;
  unsigned long mark;
  long timestamp_sec;
  long timestamp_usec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int hook;
  char indev_name[IFNAMSIZ];
  char outdev_name[IFNAMSIZ];
  unsigned short hw_protocol;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short hw_type;
  unsigned char hw_addrlen;
  unsigned char hw_addr[8];
  size_t data_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char payload[0];
 } ipq_packet_msg_t;
-
 typedef struct ipq_mode_msg {
  unsigned char value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t range;
 } ipq_mode_msg_t;
-
 typedef struct ipq_verdict_msg {
  unsigned int value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long id;
  size_t data_len;
  unsigned char payload[0];
 } ipq_verdict_msg_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct ipq_peer_msg {
  union {
  ipq_verdict_msg_t verdict;
  ipq_mode_msg_t mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } msg;
 } ipq_peer_msg_t;
-
 enum {
  IPQ_COPY_NONE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPQ_COPY_META,
  IPQ_COPY_PACKET
 };
 #define IPQ_COPY_MAX IPQ_COPY_PACKET
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPQM_BASE 0x10  
 #define IPQM_MODE (IPQM_BASE + 1)  
 #define IPQM_VERDICT (IPQM_BASE + 2)   
 #define IPQM_PACKET (IPQM_BASE + 3)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPQM_MAX (IPQM_BASE + 4)
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ip_tables.h b/libc/kernel/common/linux/netfilter_ipv4/ip_tables.h
index aa48305..6174ee3 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ip_tables.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ip_tables.h
@@ -7,174 +7,152 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPTABLES_H
 #define _IPTABLES_H
-
 #include <linux/compiler.h>
 #include <linux/netfilter_ipv4.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/netfilter/x_tables.h>
-
 #define IPT_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
 #define IPT_TABLE_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
 #define ipt_match xt_match
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ipt_target xt_target
 #define ipt_table xt_table
 #define ipt_get_revision xt_get_revision
-
 struct ipt_ip {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct in_addr src, dst;
-
  struct in_addr smsk, dmsk;
  char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
  unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t proto;
-
  u_int8_t flags;
-
  u_int8_t invflags;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ipt_entry_match xt_entry_match
 #define ipt_entry_target xt_entry_target
 #define ipt_standard_target xt_standard_target
-
 #define ipt_counters xt_counters
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_F_FRAG 0x01  
 #define IPT_F_GOTO 0x02  
 #define IPT_F_MASK 0x03  
-
 #define IPT_INV_VIA_IN 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_INV_VIA_OUT 0x02  
 #define IPT_INV_TOS 0x04  
 #define IPT_INV_SRCIP 0x08  
 #define IPT_INV_DSTIP 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_INV_FRAG 0x20  
 #define IPT_INV_PROTO XT_INV_PROTO
 #define IPT_INV_MASK 0x7F  
-
 struct ipt_entry
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  struct ipt_ip ip;
-
  unsigned int nfcache;
-
  u_int16_t target_offset;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t next_offset;
-
  unsigned int comefrom;
-
  struct xt_counters counters;
-
  unsigned char elems[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IPT_BASE_CTL XT_BASE_CTL
-
 #define IPT_SO_SET_REPLACE XT_SO_SET_REPLACE
 #define IPT_SO_SET_ADD_COUNTERS XT_SO_SET_ADD_COUNTERS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_SO_SET_MAX XT_SO_SET_MAX
-
 #define IPT_SO_GET_INFO XT_SO_GET_INFO
 #define IPT_SO_GET_ENTRIES XT_SO_GET_ENTRIES
 #define IPT_SO_GET_REVISION_MATCH XT_SO_GET_REVISION_MATCH
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_SO_GET_REVISION_TARGET XT_SO_GET_REVISION_TARGET
 #define IPT_SO_GET_MAX XT_SO_GET_REVISION_TARGET
-
 #define IPT_CONTINUE XT_CONTINUE
 #define IPT_RETURN XT_RETURN
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/netfilter/xt_tcpudp.h>
 #define ipt_udp xt_udp
 #define ipt_tcp xt_tcp
-
 #define IPT_TCP_INV_SRCPT XT_TCP_INV_SRCPT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_TCP_INV_DSTPT XT_TCP_INV_DSTPT
 #define IPT_TCP_INV_FLAGS XT_TCP_INV_FLAGS
 #define IPT_TCP_INV_OPTION XT_TCP_INV_OPTION
 #define IPT_TCP_INV_MASK XT_TCP_INV_MASK
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_UDP_INV_SRCPT XT_UDP_INV_SRCPT
 #define IPT_UDP_INV_DSTPT XT_UDP_INV_DSTPT
 #define IPT_UDP_INV_MASK XT_UDP_INV_MASK
-
 struct ipt_icmp
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  u_int8_t type;
  u_int8_t code[2];
  u_int8_t invflags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IPT_ICMP_INV 0x01  
-
 struct ipt_getinfo
 {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[IPT_TABLE_MAXNAMELEN];
-
  unsigned int valid_hooks;
-
  unsigned int hook_entry[NF_IP_NUMHOOKS];
-
  unsigned int underflow[NF_IP_NUMHOOKS];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int num_entries;
-
  unsigned int size;
 };
-
 struct ipt_replace
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
-
  char name[IPT_TABLE_MAXNAMELEN];
-
  unsigned int valid_hooks;
-
  unsigned int num_entries;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int size;
-
  unsigned int hook_entry[NF_IP_NUMHOOKS];
-
  unsigned int underflow[NF_IP_NUMHOOKS];
-
  unsigned int num_counters;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct xt_counters __user *counters;
-
  struct ipt_entry entries[0];
 };
-
 #define ipt_counters_info xt_counters_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipt_get_entries
 {
-
  char name[IPT_TABLE_MAXNAMELEN];
-
  unsigned int size;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ipt_entry entrytable[0];
 };
-
 #define IPT_STANDARD_TARGET XT_STANDARD_TARGET
-
 #define IPT_ERROR_TARGET XT_ERROR_TARGET
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 static __inline__ struct ipt_entry_target *
 ipt_get_target(struct ipt_entry *e)
 {
  return (void *)e + e->target_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 }
-
 #define IPT_MATCH_ITERATE(e, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct ipt_entry_match *__match;     for (__i = sizeof(struct ipt_entry);   __i < (e)->target_offset;   __i += __match->u.match_size) {   __match = (void *)(e) + __i;     __ret = fn(__match , ## args);   if (__ret != 0)   break;   }   __ret;  })
-
 #define IPT_ENTRY_ITERATE(entries, size, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct ipt_entry *__entry;     for (__i = 0; __i < (size); __i += __entry->next_offset) {   __entry = (void *)(entries) + __i;     __ret = fn(__entry , ## args);   if (__ret != 0)   break;   }   __ret;  })
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_CLASSIFY.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_CLASSIFY.h
index a738edd..670a597 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_CLASSIFY.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_CLASSIFY.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_CLASSIFY_H
 #define _IPT_CLASSIFY_H
-
 #include <linux/netfilter/xt_CLASSIFY.h>
 #define ipt_classify_target_info xt_classify_target_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_DSCP.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_DSCP.h
index 0271fb2..515ba6b 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_DSCP.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_DSCP.h
@@ -7,14 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_DSCP_TARGET_H
 #define _IPT_DSCP_TARGET_H
 #include <linux/netfilter_ipv4/ipt_dscp.h>
-
 struct ipt_DSCP_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t dscp;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_ECN.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_ECN.h
index 67c16fe..5d9e7a9 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_ECN.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_ECN.h
@@ -7,28 +7,34 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_ECN_TARGET_H
 #define _IPT_ECN_TARGET_H
 #include <linux/netfilter_ipv4/ipt_DSCP.h>
-
 #define IPT_ECN_IP_MASK (~IPT_DSCP_MASK)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_ECN_OP_SET_IP 0x01  
 #define IPT_ECN_OP_SET_ECE 0x10  
 #define IPT_ECN_OP_SET_CWR 0x20  
-
 #define IPT_ECN_OP_MASK 0xce
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipt_ECN_info {
  u_int8_t operation;
  u_int8_t ip_ect;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  u_int8_t ece:1, cwr:1;
  } tcp;
  } proto;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_LOG.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_LOG.h
index dd6fd1b..d2b6607 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_LOG.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_LOG.h
@@ -7,22 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_LOG_H
 #define _IPT_LOG_H
-
 #define IPT_LOG_TCPSEQ 0x01  
 #define IPT_LOG_TCPOPT 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_LOG_IPOPT 0x04  
 #define IPT_LOG_UID 0x08  
 #define IPT_LOG_NFLOG 0x10  
 #define IPT_LOG_MASK 0x1f
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipt_log_info {
  unsigned char level;
  unsigned char logflags;
  char prefix[30];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_NFQUEUE.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_NFQUEUE.h
index 27ac4a5..7283ab7 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_NFQUEUE.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_NFQUEUE.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_NFQ_TARGET_H
 #define _IPT_NFQ_TARGET_H
-
 #include <linux/netfilter/xt_NFQUEUE.h>
-
 #define ipt_NFQ_info xt_NFQ_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_REJECT.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_REJECT.h
index d3c3965..d133b71 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_REJECT.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_REJECT.h
@@ -7,25 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_REJECT_H
 #define _IPT_REJECT_H
-
 enum ipt_reject_with {
  IPT_ICMP_NET_UNREACHABLE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPT_ICMP_HOST_UNREACHABLE,
  IPT_ICMP_PROT_UNREACHABLE,
  IPT_ICMP_PORT_UNREACHABLE,
  IPT_ICMP_ECHOREPLY,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPT_ICMP_NET_PROHIBITED,
  IPT_ICMP_HOST_PROHIBITED,
  IPT_TCP_RESET,
  IPT_ICMP_ADMIN_PROHIBITED
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ipt_reject_info {
  enum ipt_reject_with with;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_TCPMSS.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_TCPMSS.h
index e924f37..102ded5 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_TCPMSS.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_TCPMSS.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_TCPMSS_H
 #define _IPT_TCPMSS_H
-
 struct ipt_tcpmss_info {
  u_int16_t mss;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IPT_TCPMSS_CLAMP_PMTU 0xffff
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_TOS.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_TOS.h
index 1cc2116..d0842fa 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_TOS.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_TOS.h
@@ -7,17 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_TOS_H_target
 #define _IPT_TOS_H_target
-
 #ifndef IPTOS_NORMALSVC
 #define IPTOS_NORMALSVC 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 struct ipt_tos_target_info {
  u_int8_t tos;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_TTL.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_TTL.h
index f9e98af..69f5d86 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_TTL.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_TTL.h
@@ -7,22 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_TTL_H
 #define _IPT_TTL_H
-
 enum {
  IPT_TTL_SET = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IPT_TTL_INC,
  IPT_TTL_DEC
 };
-
 #define IPT_TTL_MAXMODE IPT_TTL_DEC
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipt_TTL_info {
  u_int8_t mode;
  u_int8_t ttl;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_ULOG.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_ULOG.h
index 9511cb8..8e8f572 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_ULOG.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_ULOG.h
@@ -7,42 +7,49 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_ULOG_H
 #define _IPT_ULOG_H
-
 #ifndef NETLINK_NFLOG
 #define NETLINK_NFLOG 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define ULOG_DEFAULT_NLGROUP 1
 #define ULOG_DEFAULT_QTHRESHOLD 1
-
 #define ULOG_MAC_LEN 80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ULOG_PREFIX_LEN 32
-
 #define ULOG_MAX_QLEN 50
-
 struct ipt_ulog_info {
  unsigned int nl_group;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t copy_range;
  size_t qthreshold;
  char prefix[ULOG_PREFIX_LEN];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct ulog_packet_msg {
  unsigned long mark;
  long timestamp_sec;
  long timestamp_usec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int hook;
  char indev_name[IFNAMSIZ];
  char outdev_name[IFNAMSIZ];
  size_t data_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char prefix[ULOG_PREFIX_LEN];
  unsigned char mac_len;
  unsigned char mac[ULOG_MAC_LEN];
  unsigned char payload[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } ulog_packet_msg_t;
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_addrtype.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_addrtype.h
index 5203b32..2760afc 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_addrtype.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_addrtype.h
@@ -7,16 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_ADDRTYPE_H
 #define _IPT_ADDRTYPE_H
-
 struct ipt_addrtype_info {
  u_int16_t source;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t dest;
  u_int32_t invert_source;
  u_int32_t invert_dest;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_ah.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_ah.h
index 11983e2..3d60809 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_ah.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_ah.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_AH_H
 #define _IPT_AH_H
-
 struct ipt_ah
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t spis[2];
  u_int8_t invflags;
 };
-
 #define IPT_AH_INV_SPI 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_AH_INV_MASK 0x01  
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_comment.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_comment.h
index dbd7507..9dd0aed 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_comment.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_comment.h
@@ -7,15 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_COMMENT_H
 #define _IPT_COMMENT_H
-
 #include <linux/netfilter/xt_comment.h>
-
 #define IPT_MAX_COMMENT_LEN XT_MAX_COMMENT_LEN
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ipt_comment_info xt_comment_info
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_connbytes.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_connbytes.h
index 8ae19c5..e014a23 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_connbytes.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_connbytes.h
@@ -7,23 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_CONNBYTES_H
 #define _IPT_CONNBYTES_H
-
 #include <linux/netfilter/xt_connbytes.h>
 #define ipt_connbytes_what xt_connbytes_what
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_CONNBYTES_PKTS XT_CONNBYTES_PKTS
 #define IPT_CONNBYTES_BYTES XT_CONNBYTES_BYTES
 #define IPT_CONNBYTES_AVGPKT XT_CONNBYTES_AVGPKT
-
 #define ipt_connbytes_direction xt_connbytes_direction
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_CONNBYTES_DIR_ORIGINAL XT_CONNBYTES_DIR_ORIGINAL
 #define IPT_CONNBYTES_DIR_REPLY XT_CONNBYTES_DIR_REPLY
 #define IPT_CONNBYTES_DIR_BOTH XT_CONNBYTES_DIR_BOTH
-
 #define ipt_connbytes_info xt_connbytes_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_dccp.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_dccp.h
index c1212c9..d614521 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_dccp.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_dccp.h
@@ -7,20 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_DCCP_H_
 #define _IPT_DCCP_H_
-
 #include <linux/netfilter/xt_dccp.h>
 #define IPT_DCCP_SRC_PORTS XT_DCCP_SRC_PORTS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_DCCP_DEST_PORTS XT_DCCP_DEST_PORTS
 #define IPT_DCCP_TYPE XT_DCCP_TYPE
 #define IPT_DCCP_OPTION XT_DCCP_OPTION
-
 #define IPT_DCCP_VALID_FLAGS XT_DCCP_VALID_FLAGS
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ipt_dccp_info xt_dccp_info
-
 #endif
-
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_dscp_.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_dscp_.h
index aba8861..e315e35 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_dscp_.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_dscp_.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_DSCP_H
 #define _IPT_DSCP_H
-
 #define IPT_DSCP_MASK 0xfc  
 #define IPT_DSCP_SHIFT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_DSCP_MAX 0x3f  
-
 struct ipt_dscp_info {
  u_int8_t dscp;
  u_int8_t invert;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_esp.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_esp.h
index 4947e7e..38bfffa 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_esp.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_esp.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_ESP_H
 #define _IPT_ESP_H
-
 #include <linux/netfilter/xt_esp.h>
-
 #define ipt_esp xt_esp
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_ESP_INV_SPI XT_ESP_INV_SPI
 #define IPT_ESP_INV_MASK XT_ESP_INV_MASK
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_hashlimit.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_hashlimit.h
index adc1f41..39a2c08 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_hashlimit.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_hashlimit.h
@@ -7,39 +7,45 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_HASHLIMIT_H
 #define _IPT_HASHLIMIT_H
-
 #define IPT_HASHLIMIT_SCALE 10000
-
 struct ipt_hashlimit_htable;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_HASHLIMIT_HASH_DIP 0x0001
 #define IPT_HASHLIMIT_HASH_DPT 0x0002
 #define IPT_HASHLIMIT_HASH_SIP 0x0004
 #define IPT_HASHLIMIT_HASH_SPT 0x0008
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct hashlimit_cfg {
  u_int32_t mode;
  u_int32_t avg;
  u_int32_t burst;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t size;
  u_int32_t max;
  u_int32_t gc_interval;
  u_int32_t expire;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ipt_hashlimit_info {
  char name [IFNAMSIZ];
  struct hashlimit_cfg cfg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ipt_hashlimit_htable *hinfo;
-
  union {
  void *ptr;
  struct ipt_hashlimit_info *master;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } u;
 };
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_helper.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_helper.h
index 576add9..7915609 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_helper.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_helper.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_HELPER_H
 #define _IPT_HELPER_H
-
 #include <linux/netfilter/xt_helper.h>
 #define ipt_helper_info xt_helper_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_iprange.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_iprange.h
index b4dd603..6ac3b9a 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_iprange.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_iprange.h
@@ -7,27 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_IPRANGE_H
 #define _IPT_IPRANGE_H
-
 #define IPRANGE_SRC 0x01  
 #define IPRANGE_DST 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPRANGE_SRC_INV 0x10  
 #define IPRANGE_DST_INV 0x20  
-
 struct ipt_iprange {
-
  u_int32_t min_ip, max_ip;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ipt_iprange_info
 {
  struct ipt_iprange src;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ipt_iprange dst;
-
  u_int8_t flags;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_length.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_length.h
index 9610859..3739637 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_length.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_length.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_LENGTH_H
 #define _IPT_LENGTH_H
-
 #include <linux/netfilter/xt_length.h>
 #define ipt_length_info xt_length_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_mac.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_mac.h
index 89378a3..8c8f5d0 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_mac.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_mac.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_MAC_H
 #define _IPT_MAC_H
-
 #include <linux/netfilter/xt_mac.h>
 #define ipt_mac_info xt_mac_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_owner.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_owner.h
index 8b742b1..1089716 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_owner.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_owner.h
@@ -7,24 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_OWNER_H
 #define _IPT_OWNER_H
-
 #define IPT_OWNER_UID 0x01
 #define IPT_OWNER_GID 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_OWNER_PID 0x04
 #define IPT_OWNER_SID 0x08
 #define IPT_OWNER_COMM 0x10
-
 struct ipt_owner_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uid_t uid;
  gid_t gid;
  pid_t pid;
  pid_t sid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char comm[16];
  u_int8_t match, invert;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_physdev.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_physdev.h
index 791cf02..d010868 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_physdev.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_physdev.h
@@ -7,20 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_PHYSDEV_H
 #define _IPT_PHYSDEV_H
-
 #include <linux/netfilter/xt_physdev.h>
-
 #define IPT_PHYSDEV_OP_IN XT_PHYSDEV_OP_IN
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_PHYSDEV_OP_OUT XT_PHYSDEV_OP_OUT
 #define IPT_PHYSDEV_OP_BRIDGED XT_PHYSDEV_OP_BRIDGED
 #define IPT_PHYSDEV_OP_ISIN XT_PHYSDEV_OP_ISIN
 #define IPT_PHYSDEV_OP_ISOUT XT_PHYSDEV_OP_ISOUT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_PHYSDEV_OP_MASK XT_PHYSDEV_OP_MASK
-
 #define ipt_physdev_info xt_physdev_info
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_pkttype.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_pkttype.h
index fbb20b1..d59e778 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_pkttype.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_pkttype.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_PKTTYPE_H
 #define _IPT_PKTTYPE_H
-
 #include <linux/netfilter/xt_pkttype.h>
 #define ipt_pkttype_info xt_pkttype_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_realm.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_realm.h
index 9b80faa..f0f00eb 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_realm.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_realm.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_REALM_H
 #define _IPT_REALM_H
-
 #include <linux/netfilter/xt_realm.h>
 #define ipt_realm_info xt_realm_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_recent.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_recent.h
index 45172bd..c29577a 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_recent.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_recent.h
@@ -7,32 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_RECENT_H
 #define _IPT_RECENT_H
-
 #define RECENT_NAME "ipt_recent"
 #define RECENT_VER "v0.3.1"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_RECENT_CHECK 1
 #define IPT_RECENT_SET 2
 #define IPT_RECENT_UPDATE 4
 #define IPT_RECENT_REMOVE 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_RECENT_TTL 16
-
 #define IPT_RECENT_SOURCE 0
 #define IPT_RECENT_DEST 1
-
 #define IPT_RECENT_NAME_LEN 200
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipt_recent_info {
  u_int32_t seconds;
  u_int32_t hit_count;
  u_int8_t check_set;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t invert;
  char name[IPT_RECENT_NAME_LEN];
  u_int8_t side;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_sctp.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_sctp.h
index 20f301f..786c4d2 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_sctp.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_sctp.h
@@ -7,60 +7,55 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_SCTP_H_
 #define _IPT_SCTP_H_
-
 #define IPT_SCTP_SRC_PORTS 0x01
 #define IPT_SCTP_DEST_PORTS 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_SCTP_CHUNK_TYPES 0x04
-
 #define IPT_SCTP_VALID_FLAGS 0x07
-
 struct ipt_sctp_flag_info {
  u_int8_t chunktype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t flag;
  u_int8_t flag_mask;
 };
-
 #define IPT_NUM_SCTP_FLAGS 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ipt_sctp_info {
  u_int16_t dpts[2];
  u_int16_t spts[2];
-
  u_int32_t chunkmap[256 / sizeof (u_int32_t)];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCTP_CHUNK_MATCH_ANY 0x01  
 #define SCTP_CHUNK_MATCH_ALL 0x02  
 #define SCTP_CHUNK_MATCH_ONLY 0x04  
-
  u_int32_t chunk_match_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ipt_sctp_flag_info flag_info[IPT_NUM_SCTP_FLAGS];
  int flag_count;
-
  u_int32_t flags;
  u_int32_t invflags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define bytes(type) (sizeof(type) * 8)
-
 #define SCTP_CHUNKMAP_SET(chunkmap, type)   do {   chunkmap[type / bytes(u_int32_t)] |=   1 << (type % bytes(u_int32_t));   } while (0)
-
 #define SCTP_CHUNKMAP_CLEAR(chunkmap, type)   do {   chunkmap[type / bytes(u_int32_t)] &=   ~(1 << (type % bytes(u_int32_t)));   } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCTP_CHUNKMAP_IS_SET(chunkmap, type)  ({   (chunkmap[type / bytes (u_int32_t)] &   (1 << (type % bytes (u_int32_t)))) ? 1: 0;  })
-
 #define SCTP_CHUNKMAP_RESET(chunkmap)   do {   int i;   for (i = 0; i < ARRAY_SIZE(chunkmap); i++)   chunkmap[i] = 0;   } while (0)
-
 #define SCTP_CHUNKMAP_SET_ALL(chunkmap)   do {   int i;   for (i = 0; i < ARRAY_SIZE(chunkmap); i++)   chunkmap[i] = ~0;   } while (0)
-
 #define SCTP_CHUNKMAP_COPY(destmap, srcmap)   do {   int i;   for (i = 0; i < ARRAY_SIZE(chunkmap); i++)   destmap[i] = srcmap[i];   } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCTP_CHUNKMAP_IS_CLEAR(chunkmap)  ({   int i;   int flag = 1;   for (i = 0; i < ARRAY_SIZE(chunkmap); i++) {   if (chunkmap[i]) {   flag = 0;   break;   }   }   flag;  })
-
 #define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap)  ({   int i;   int flag = 1;   for (i = 0; i < ARRAY_SIZE(chunkmap); i++) {   if (chunkmap[i] != ~0) {   flag = 0;   break;   }   }   flag;  })
-
 #endif
-
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_state.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_state.h
index bd51990..3909def 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_state.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_state.h
@@ -7,18 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_STATE_H
 #define _IPT_STATE_H
-
 #include <linux/netfilter/xt_state.h>
-
 #define IPT_STATE_BIT XT_STATE_BIT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_STATE_INVALID XT_STATE_INVALID
-
 #define IPT_STATE_UNTRACKED XT_STATE_UNTRACKED
-
 #define ipt_state_info xt_state_info
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_string.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_string.h
index 60923dd..2613ef5 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_string.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_string.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_STRING_H
 #define _IPT_STRING_H
-
 #include <linux/netfilter/xt_string.h>
-
 #define IPT_STRING_MAX_PATTERN_SIZE XT_STRING_MAX_PATTERN_SIZE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IPT_STRING_MAX_ALGO_NAME_SIZE XT_STRING_MAX_ALGO_NAME_SIZE
 #define ipt_string_info xt_string_info
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv4/ipt_tos_.h b/libc/kernel/common/linux/netfilter_ipv4/ipt_tos_.h
index 789ce22..c28ad63 100644
--- a/libc/kernel/common/linux/netfilter_ipv4/ipt_tos_.h
+++ b/libc/kernel/common/linux/netfilter_ipv4/ipt_tos_.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IPT_TOS_H
 #define _IPT_TOS_H
-
 struct ipt_tos_info {
  u_int8_t tos;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t invert;
 };
-
 #ifndef IPTOS_NORMALSVC
 #define IPTOS_NORMALSVC 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6.h b/libc/kernel/common/linux/netfilter_ipv6.h
index ce2f12c..8fab0c9 100644
--- a/libc/kernel/common/linux/netfilter_ipv6.h
+++ b/libc/kernel/common/linux/netfilter_ipv6.h
@@ -7,61 +7,57 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_IP6_NETFILTER_H
 #define __LINUX_IP6_NETFILTER_H
-
 #include <linux/netfilter.h>
-
 #define NFC_IP6_SRC 0x0001
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_IP6_DST 0x0002
-
 #define NFC_IP6_IF_IN 0x0004
-
 #define NFC_IP6_IF_OUT 0x0008
-
 #define NFC_IP6_TOS 0x0010
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_IP6_PROTO 0x0020
-
 #define NFC_IP6_OPTIONS 0x0040
-
 #define NFC_IP6_FRAG 0x0080
-
 #define NFC_IP6_TCPFLAGS 0x0100
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFC_IP6_SRC_PT 0x0200
-
 #define NFC_IP6_DST_PT 0x0400
-
 #define NFC_IP6_PROTO_UNKNOWN 0x2000
-
 #define NF_IP6_PRE_ROUTING 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_IP6_LOCAL_IN 1
-
 #define NF_IP6_FORWARD 2
-
 #define NF_IP6_LOCAL_OUT 3
-
 #define NF_IP6_POST_ROUTING 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NF_IP6_NUMHOOKS 5
-
 enum nf_ip6_hook_priorities {
  NF_IP6_PRI_FIRST = INT_MIN,
  NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF_IP6_PRI_RAW = -300,
  NF_IP6_PRI_SELINUX_FIRST = -225,
  NF_IP6_PRI_CONNTRACK = -200,
  NF_IP6_PRI_MANGLE = -150,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF_IP6_PRI_NAT_DST = -100,
  NF_IP6_PRI_FILTER = 0,
  NF_IP6_PRI_SECURITY = 50,
  NF_IP6_PRI_NAT_SRC = 100,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF_IP6_PRI_SELINUX_LAST = 225,
  NF_IP6_PRI_LAST = INT_MAX,
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6_tables.h b/libc/kernel/common/linux/netfilter_ipv6/ip6_tables.h
index d76a529..daea636 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6_tables.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6_tables.h
@@ -7,181 +7,154 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6_TABLES_H
 #define _IP6_TABLES_H
-
 #include <linux/compiler.h>
 #include <linux/netfilter_ipv6.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/netfilter/x_tables.h>
-
 #define IP6T_FUNCTION_MAXNAMELEN XT_FUNCTION_MAXNAMELEN
 #define IP6T_TABLE_MAXNAMELEN XT_TABLE_MAXNAMELEN
-
 #define ip6t_match xt_match
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ip6t_target xt_target
 #define ip6t_table xt_table
 #define ip6t_get_revision xt_get_revision
-
 struct ip6t_ip6 {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct in6_addr src, dst;
-
  struct in6_addr smsk, dmsk;
  char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
  unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t proto;
-
  u_int8_t tos;
-
  u_int8_t flags;
-
  u_int8_t invflags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ip6t_entry_match xt_entry_match
 #define ip6t_entry_target xt_entry_target
 #define ip6t_standard_target xt_standard_target
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ip6t_counters xt_counters
-
 #define IP6T_F_PROTO 0x01  
 #define IP6T_F_TOS 0x02  
 #define IP6T_F_GOTO 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_F_MASK 0x07  
-
 #define IP6T_INV_VIA_IN 0x01  
 #define IP6T_INV_VIA_OUT 0x02  
 #define IP6T_INV_TOS 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_INV_SRCIP 0x08  
 #define IP6T_INV_DSTIP 0x10  
 #define IP6T_INV_FRAG 0x20  
 #define IP6T_INV_PROTO XT_INV_PROTO
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_INV_MASK 0x7F  
-
 struct ip6t_entry
 {
  struct ip6t_ip6 ipv6;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int nfcache;
-
  u_int16_t target_offset;
-
  u_int16_t next_offset;
-
  unsigned int comefrom;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct xt_counters counters;
-
  unsigned char elems[0];
 };
-
 #define IP6T_BASE_CTL XT_BASE_CTL
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_SO_SET_REPLACE XT_SO_SET_REPLACE
 #define IP6T_SO_SET_ADD_COUNTERS XT_SO_SET_ADD_COUNTERS
 #define IP6T_SO_SET_MAX XT_SO_SET_MAX
-
 #define IP6T_SO_GET_INFO XT_SO_GET_INFO
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_SO_GET_ENTRIES XT_SO_GET_ENTRIES
 #define IP6T_SO_GET_REVISION_MATCH XT_SO_GET_REVISION_MATCH
 #define IP6T_SO_GET_REVISION_TARGET XT_SO_GET_REVISION_TARGET
 #define IP6T_SO_GET_MAX XT_SO_GET_REVISION_TARGET
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_CONTINUE XT_CONTINUE
-
 #define IP6T_RETURN XT_RETURN
-
 #include <linux/netfilter/xt_tcpudp.h>
-
 #define ip6t_tcp xt_tcp
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ip6t_udp xt_udp
-
 #define IP6T_TCP_INV_SRCPT XT_TCP_INV_SRCPT
 #define IP6T_TCP_INV_DSTPT XT_TCP_INV_DSTPT
 #define IP6T_TCP_INV_FLAGS XT_TCP_INV_FLAGS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_TCP_INV_OPTION XT_TCP_INV_OPTION
 #define IP6T_TCP_INV_MASK XT_TCP_INV_MASK
-
 #define IP6T_UDP_INV_SRCPT XT_UDP_INV_SRCPT
 #define IP6T_UDP_INV_DSTPT XT_UDP_INV_DSTPT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_UDP_INV_MASK XT_UDP_INV_MASK
-
 struct ip6t_icmp
 {
  u_int8_t type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t code[2];
  u_int8_t invflags;
 };
-
 #define IP6T_ICMP_INV 0x01  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip6t_getinfo
 {
-
  char name[IP6T_TABLE_MAXNAMELEN];
-
  unsigned int valid_hooks;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int hook_entry[NF_IP6_NUMHOOKS];
-
  unsigned int underflow[NF_IP6_NUMHOOKS];
-
  unsigned int num_entries;
-
  unsigned int size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct ip6t_replace
 {
-
  char name[IP6T_TABLE_MAXNAMELEN];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int valid_hooks;
-
  unsigned int num_entries;
-
  unsigned int size;
-
  unsigned int hook_entry[NF_IP6_NUMHOOKS];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int underflow[NF_IP6_NUMHOOKS];
-
  unsigned int num_counters;
-
  struct xt_counters __user *counters;
-
  struct ip6t_entry entries[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ip6t_counters_info xt_counters_info
-
 struct ip6t_get_entries
 {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[IP6T_TABLE_MAXNAMELEN];
-
  unsigned int size;
-
  struct ip6t_entry entrytable[0];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_STANDARD_TARGET XT_STANDARD_TARGET
-
 #define IP6T_ERROR_TARGET XT_ERROR_TARGET
-
 static __inline__ struct ip6t_entry_target *
 ip6t_get_target(struct ip6t_entry *e)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  return (void *)e + e->target_offset;
 }
-
 #define IP6T_MATCH_ITERATE(e, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct ip6t_entry_match *__m;     for (__i = sizeof(struct ip6t_entry);   __i < (e)->target_offset;   __i += __m->u.match_size) {   __m = (void *)(e) + __i;     __ret = fn(__m , ## args);   if (__ret != 0)   break;   }   __ret;  })
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_ENTRY_ITERATE(entries, size, fn, args...)  ({   unsigned int __i;   int __ret = 0;   struct ip6t_entry *__e;     for (__i = 0; __i < (size); __i += __e->next_offset) {   __e = (void *)(entries) + __i;     __ret = fn(__e , ## args);   if (__ret != 0)   break;   }   __ret;  })
-
 #endif
-
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_HL.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_HL.h
index 1071ff9..ca933e0 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_HL.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_HL.h
@@ -7,22 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_HL_H
 #define _IP6T_HL_H
-
 enum {
  IP6T_HL_SET = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IP6T_HL_INC,
  IP6T_HL_DEC
 };
-
 #define IP6T_HL_MAXMODE IP6T_HL_DEC
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip6t_HL_info {
  u_int8_t mode;
  u_int8_t hop_limit;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_LOG.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_LOG.h
index 344c133..5664180 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_LOG.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_LOG.h
@@ -7,22 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_LOG_H
 #define _IP6T_LOG_H
-
 #define IP6T_LOG_TCPSEQ 0x01  
 #define IP6T_LOG_TCPOPT 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_LOG_IPOPT 0x04  
 #define IP6T_LOG_UID 0x08  
 #define IP6T_LOG_NFLOG 0x10  
 #define IP6T_LOG_MASK 0x1f
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip6t_log_info {
  unsigned char level;
  unsigned char logflags;
  char prefix[30];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_REJECT.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_REJECT.h
index b101c85..778771a 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_REJECT.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_REJECT.h
@@ -7,23 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_REJECT_H
 #define _IP6T_REJECT_H
-
 enum ip6t_reject_with {
  IP6T_ICMP6_NO_ROUTE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IP6T_ICMP6_ADM_PROHIBITED,
  IP6T_ICMP6_NOT_NEIGHBOUR,
  IP6T_ICMP6_ADDR_UNREACH,
  IP6T_ICMP6_PORT_UNREACH,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IP6T_ICMP6_ECHOREPLY,
  IP6T_TCP_RESET
 };
-
 struct ip6t_reject_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t with;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_ah.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_ah.h
index 7110df5..ff1c3dc 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_ah.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_ah.h
@@ -7,25 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_AH_H
 #define _IP6T_AH_H
-
 struct ip6t_ah
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t spis[2];
  u_int32_t hdrlen;
  u_int8_t hdrres;
  u_int8_t invflags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IP6T_AH_SPI 0x01
 #define IP6T_AH_LEN 0x02
 #define IP6T_AH_RES 0x04
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_AH_INV_SPI 0x01  
 #define IP6T_AH_INV_LEN 0x02  
 #define IP6T_AH_INV_MASK 0x03  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_esp.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_esp.h
index 0aa7556..8ca8388 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_esp.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_esp.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_ESP_H
 #define _IP6T_ESP_H
-
 #include <linux/netfilter/xt_esp.h>
-
 #define ip6t_esp xt_esp
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_ESP_INV_SPI XT_ESP_INV_SPI
 #define IP6T_ESP_INV_MASK XT_ESP_INV_MASK
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_frag.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_frag.h
index 134d6bb..f9f2518 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_frag.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_frag.h
@@ -7,28 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_FRAG_H
 #define _IP6T_FRAG_H
-
 struct ip6t_frag
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int32_t ids[2];
  u_int32_t hdrlen;
  u_int8_t flags;
  u_int8_t invflags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IP6T_FRAG_IDS 0x01
 #define IP6T_FRAG_LEN 0x02
 #define IP6T_FRAG_RES 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_FRAG_FST 0x08
 #define IP6T_FRAG_MF 0x10
 #define IP6T_FRAG_NMF 0x20
-
 #define IP6T_FRAG_INV_IDS 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_FRAG_INV_LEN 0x02  
 #define IP6T_FRAG_INV_MASK 0x03  
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_hl.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_hl.h
index e0144d2..6986adc 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_hl.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_hl.h
@@ -7,21 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_HL_H
 #define _IP6T_HL_H
-
 enum {
  IP6T_HL_EQ = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  IP6T_HL_NE,
  IP6T_HL_LT,
  IP6T_HL_GT,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ip6t_hl_info {
  u_int8_t mode;
  u_int8_t hop_limit;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_ipv6header.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_ipv6header.h
index 7e83ebc..cf6b688 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_ipv6header.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_ipv6header.h
@@ -7,25 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __IPV6HEADER_H
 #define __IPV6HEADER_H
-
 struct ip6t_ipv6header_info
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t matchflags;
  u_int8_t invflags;
  u_int8_t modeflag;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MASK_HOPOPTS 128
 #define MASK_DSTOPTS 64
 #define MASK_ROUTING 32
 #define MASK_FRAGMENT 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MASK_AH 8
 #define MASK_ESP 4
 #define MASK_NONE 2
 #define MASK_PROTO 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_length.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_length.h
index fdc4c5f..ffadb3f 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_length.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_length.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_LENGTH_H
 #define _IP6T_LENGTH_H
-
 #include <linux/netfilter/xt_length.h>
 #define ip6t_length_info xt_length_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_mac.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_mac.h
index 58e6023..85e8561 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_mac.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_mac.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_MAC_H
 #define _IP6T_MAC_H
-
 #include <linux/netfilter/xt_mac.h>
 #define ip6t_mac_info xt_mac_info
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_opts.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_opts.h
index 1d9db9c..ff2b574 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_opts.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_opts.h
@@ -7,27 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_OPTS_H
 #define _IP6T_OPTS_H
-
 #define IP6T_OPTS_OPTSNR 16
-
 struct ip6t_opts
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  u_int32_t hdrlen;
  u_int8_t flags;
  u_int8_t invflags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int16_t opts[IP6T_OPTS_OPTSNR];
  u_int8_t optsnr;
 };
-
 #define IP6T_OPTS_LEN 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_OPTS_OPTS 0x02
 #define IP6T_OPTS_NSTRICT 0x04
-
 #define IP6T_OPTS_INV_LEN 0x01  
 #define IP6T_OPTS_INV_MASK 0x01  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_owner.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_owner.h
index a6126b4..b67cefe 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_owner.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_owner.h
@@ -7,22 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_OWNER_H
 #define _IP6T_OWNER_H
-
 #define IP6T_OWNER_UID 0x01
 #define IP6T_OWNER_GID 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_OWNER_PID 0x04
 #define IP6T_OWNER_SID 0x08
-
 struct ip6t_owner_info {
  uid_t uid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  gid_t gid;
  pid_t pid;
  pid_t sid;
  u_int8_t match, invert;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_physdev.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_physdev.h
index 657e2fb..4c34251 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_physdev.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_physdev.h
@@ -7,20 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_PHYSDEV_H
 #define _IP6T_PHYSDEV_H
-
 #include <linux/netfilter/xt_physdev.h>
-
 #define IP6T_PHYSDEV_OP_IN XT_PHYSDEV_OP_IN
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_PHYSDEV_OP_OUT XT_PHYSDEV_OP_OUT
 #define IP6T_PHYSDEV_OP_BRIDGED XT_PHYSDEV_OP_BRIDGED
 #define IP6T_PHYSDEV_OP_ISIN XT_PHYSDEV_OP_ISIN
 #define IP6T_PHYSDEV_OP_ISOUT XT_PHYSDEV_OP_ISOUT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_PHYSDEV_OP_MASK XT_PHYSDEV_OP_MASK
-
 #define ip6t_physdev_info xt_physdev_info
-
 #endif
diff --git a/libc/kernel/common/linux/netfilter_ipv6/ip6t_rt.h b/libc/kernel/common/linux/netfilter_ipv6/ip6t_rt.h
index 274a7ee..e1d12a5 100644
--- a/libc/kernel/common/linux/netfilter_ipv6/ip6t_rt.h
+++ b/libc/kernel/common/linux/netfilter_ipv6/ip6t_rt.h
@@ -7,35 +7,43 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _IP6T_RT_H
 #define _IP6T_RT_H
-
 #define IP6T_RT_HOPS 16
-
 struct ip6t_rt
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  u_int32_t rt_type;
  u_int32_t segsleft[2];
  u_int32_t hdrlen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u_int8_t flags;
  u_int8_t invflags;
  struct in6_addr addrs[IP6T_RT_HOPS];
  u_int8_t addrnr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IP6T_RT_TYP 0x01
 #define IP6T_RT_SGS 0x02
 #define IP6T_RT_LEN 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_RT_RES 0x08
 #define IP6T_RT_FST_MASK 0x30
 #define IP6T_RT_FST 0x10
 #define IP6T_RT_FST_NSTRICT 0x20
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IP6T_RT_INV_TYP 0x01  
 #define IP6T_RT_INV_SGS 0x02  
 #define IP6T_RT_INV_LEN 0x04  
 #define IP6T_RT_INV_MASK 0x07  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/netlink.h b/libc/kernel/common/linux/netlink.h
index 75e889a..25d9a32 100644
--- a/libc/kernel/common/linux/netlink.h
+++ b/libc/kernel/common/linux/netlink.h
@@ -7,124 +7,133 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_NETLINK_H
 #define __LINUX_NETLINK_H
-
 #include <linux/socket.h>  
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETLINK_ROUTE 0  
 #define NETLINK_UNUSED 1  
 #define NETLINK_USERSOCK 2  
 #define NETLINK_FIREWALL 3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETLINK_INET_DIAG 4  
 #define NETLINK_NFLOG 5  
 #define NETLINK_XFRM 6  
 #define NETLINK_SELINUX 7  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETLINK_ISCSI 8  
 #define NETLINK_AUDIT 9  
 #define NETLINK_FIB_LOOKUP 10 
 #define NETLINK_CONNECTOR 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETLINK_NETFILTER 12  
 #define NETLINK_IP6_FW 13
 #define NETLINK_DNRTMSG 14  
 #define NETLINK_KOBJECT_UEVENT 15  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETLINK_GENERIC 16
-
 #define NETLINK_SCSITRANSPORT 18  
 #define NETLINK_ECRYPTFS 19
-
 #define MAX_LINKS 32 
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct net;
-
 struct sockaddr_nl
 {
  sa_family_t nl_family;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short nl_pad;
  __u32 nl_pid;
  __u32 nl_groups;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nlmsghdr
 {
  __u32 nlmsg_len;
  __u16 nlmsg_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 nlmsg_flags;
  __u32 nlmsg_seq;
  __u32 nlmsg_pid;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLM_F_REQUEST 1  
 #define NLM_F_MULTI 2  
 #define NLM_F_ACK 4  
 #define NLM_F_ECHO 8  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLM_F_ROOT 0x100  
 #define NLM_F_MATCH 0x200  
 #define NLM_F_ATOMIC 0x400  
 #define NLM_F_DUMP (NLM_F_ROOT|NLM_F_MATCH)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLM_F_REPLACE 0x100  
 #define NLM_F_EXCL 0x200  
 #define NLM_F_CREATE 0x400  
 #define NLM_F_APPEND 0x800  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMSG_ALIGNTO 4
 #define NLMSG_ALIGN(len) ( ((len)+NLMSG_ALIGNTO-1) & ~(NLMSG_ALIGNTO-1) )
 #define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
 #define NLMSG_LENGTH(len) ((len)+NLMSG_ALIGN(NLMSG_HDRLEN))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMSG_SPACE(len) NLMSG_ALIGN(NLMSG_LENGTH(len))
 #define NLMSG_DATA(nlh) ((void*)(((char*)nlh) + NLMSG_LENGTH(0)))
 #define NLMSG_NEXT(nlh,len) ((len) -= NLMSG_ALIGN((nlh)->nlmsg_len),   (struct nlmsghdr*)(((char*)(nlh)) + NLMSG_ALIGN((nlh)->nlmsg_len)))
 #define NLMSG_OK(nlh,len) ((len) >= (int)sizeof(struct nlmsghdr) &&   (nlh)->nlmsg_len >= sizeof(struct nlmsghdr) &&   (nlh)->nlmsg_len <= (len))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMSG_PAYLOAD(nlh,len) ((nlh)->nlmsg_len - NLMSG_SPACE((len)))
-
 #define NLMSG_NOOP 0x1  
 #define NLMSG_ERROR 0x2  
 #define NLMSG_DONE 0x3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLMSG_OVERRUN 0x4  
-
 #define NLMSG_MIN_TYPE 0x10  
-
 struct nlmsgerr
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int error;
  struct nlmsghdr msg;
 };
-
 #define NETLINK_ADD_MEMBERSHIP 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NETLINK_DROP_MEMBERSHIP 2
 #define NETLINK_PKTINFO 3
 #define NETLINK_BROADCAST_ERROR 4
 #define NETLINK_NO_ENOBUFS 5
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nl_pktinfo
 {
  __u32 group;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NET_MAJOR 36  
-
 enum {
  NETLINK_UNCONNECTED = 0,
  NETLINK_CONNECTED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nlattr
 {
  __u16 nla_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 nla_type;
 };
-
 #define NLA_F_NESTED (1 << 15)
 #define NLA_F_NET_BYTEORDER (1 << 14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLA_TYPE_MASK ~(NLA_F_NESTED | NLA_F_NET_BYTEORDER)
-
 #define NLA_ALIGNTO 4
 #define NLA_ALIGN(len) (((len) + NLA_ALIGNTO - 1) & ~(NLA_ALIGNTO - 1))
 #define NLA_HDRLEN ((int) NLA_ALIGN(sizeof(struct nlattr)))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/nfs.h b/libc/kernel/common/linux/nfs.h
index d94dc9f..10b59f9 100644
--- a/libc/kernel/common/linux/nfs.h
+++ b/libc/kernel/common/linux/nfs.h
@@ -7,118 +7,147 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NFS_H
 #define _LINUX_NFS_H
-
 #define NFS_PROGRAM 100003
 #define NFS_PORT 2049
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS_MAXDATA 8192
 #define NFS_MAXPATHLEN 1024
 #define NFS_MAXNAMLEN 255
 #define NFS_MAXGROUPS 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS_FHSIZE 32
 #define NFS_COOKIESIZE 4
 #define NFS_FIFO_DEV (-1)
 #define NFSMODE_FMT 0170000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSMODE_DIR 0040000
 #define NFSMODE_CHR 0020000
 #define NFSMODE_BLK 0060000
 #define NFSMODE_REG 0100000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSMODE_LNK 0120000
 #define NFSMODE_SOCK 0140000
 #define NFSMODE_FIFO 0010000
-
 #define NFS_MNT_PROGRAM 100005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS_MNT_PORT 627
-
  enum nfs_stat {
  NFS_OK = 0,
  NFSERR_PERM = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_NOENT = 2,
  NFSERR_IO = 5,
  NFSERR_NXIO = 6,
  NFSERR_EAGAIN = 11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_ACCES = 13,
  NFSERR_EXIST = 17,
  NFSERR_XDEV = 18,
  NFSERR_NODEV = 19,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_NOTDIR = 20,
  NFSERR_ISDIR = 21,
  NFSERR_INVAL = 22,
  NFSERR_FBIG = 27,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_NOSPC = 28,
  NFSERR_ROFS = 30,
  NFSERR_MLINK = 31,
  NFSERR_OPNOTSUPP = 45,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_NAMETOOLONG = 63,
  NFSERR_NOTEMPTY = 66,
  NFSERR_DQUOT = 69,
  NFSERR_STALE = 70,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_REMOTE = 71,
  NFSERR_WFLUSH = 99,
  NFSERR_BADHANDLE = 10001,
  NFSERR_NOT_SYNC = 10002,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_BAD_COOKIE = 10003,
  NFSERR_NOTSUPP = 10004,
  NFSERR_TOOSMALL = 10005,
  NFSERR_SERVERFAULT = 10006,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_BADTYPE = 10007,
  NFSERR_JUKEBOX = 10008,
  NFSERR_SAME = 10009,
  NFSERR_DENIED = 10010,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_EXPIRED = 10011,
  NFSERR_LOCKED = 10012,
  NFSERR_GRACE = 10013,
  NFSERR_FHEXPIRED = 10014,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_SHARE_DENIED = 10015,
  NFSERR_WRONGSEC = 10016,
  NFSERR_CLID_INUSE = 10017,
  NFSERR_RESOURCE = 10018,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_MOVED = 10019,
  NFSERR_NOFILEHANDLE = 10020,
  NFSERR_MINOR_VERS_MISMATCH = 10021,
  NFSERR_STALE_CLIENTID = 10022,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_STALE_STATEID = 10023,
  NFSERR_OLD_STATEID = 10024,
  NFSERR_BAD_STATEID = 10025,
  NFSERR_BAD_SEQID = 10026,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_NOT_SAME = 10027,
  NFSERR_LOCK_RANGE = 10028,
  NFSERR_SYMLINK = 10029,
  NFSERR_RESTOREFH = 10030,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_LEASE_MOVED = 10031,
  NFSERR_ATTRNOTSUPP = 10032,
  NFSERR_NO_GRACE = 10033,
  NFSERR_RECLAIM_BAD = 10034,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_RECLAIM_CONFLICT = 10035,
  NFSERR_BAD_XDR = 10036,
  NFSERR_LOCKS_HELD = 10037,
  NFSERR_OPENMODE = 10038,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_BADOWNER = 10039,
  NFSERR_BADCHAR = 10040,
  NFSERR_BADNAME = 10041,
  NFSERR_BAD_RANGE = 10042,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_LOCK_NOTSUPP = 10043,
  NFSERR_OP_ILLEGAL = 10044,
  NFSERR_DEADLOCK = 10045,
  NFSERR_FILE_OPEN = 10046,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFSERR_ADMIN_REVOKED = 10047,
  NFSERR_CB_PATH_DOWN = 10048,
  NFSERR_REPLAY_ME = 10049
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum nfs_ftype {
  NFNON = 0,
  NFREG = 1,
  NFDIR = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFBLK = 3,
  NFCHR = 4,
  NFLNK = 5,
  NFSOCK = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFBAD = 7,
  NFFIFO = 8
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/nfs2.h b/libc/kernel/common/linux/nfs2.h
index 1bb5df2..0f6fcf8 100644
--- a/libc/kernel/common/linux/nfs2.h
+++ b/libc/kernel/common/linux/nfs2.h
@@ -7,69 +7,84 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NFS2_H
 #define _LINUX_NFS2_H
-
 #define NFS2_PORT 2049
 #define NFS2_MAXDATA 8192
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS2_MAXPATHLEN 1024
 #define NFS2_MAXNAMLEN 255
 #define NFS2_MAXGROUPS 16
 #define NFS2_FHSIZE 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS2_COOKIESIZE 4
 #define NFS2_FIFO_DEV (-1)
 #define NFS2MODE_FMT 0170000
 #define NFS2MODE_DIR 0040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS2MODE_CHR 0020000
 #define NFS2MODE_BLK 0060000
 #define NFS2MODE_REG 0100000
 #define NFS2MODE_LNK 0120000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS2MODE_SOCK 0140000
 #define NFS2MODE_FIFO 0010000
-
 enum nfs2_ftype {
  NF2NON = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF2REG = 1,
  NF2DIR = 2,
  NF2BLK = 3,
  NF2CHR = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF2LNK = 5,
  NF2SOCK = 6,
  NF2BAD = 7,
  NF2FIFO = 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs2_fh {
  char data[NFS2_FHSIZE];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS2_VERSION 2
 #define NFSPROC_NULL 0
 #define NFSPROC_GETATTR 1
 #define NFSPROC_SETATTR 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSPROC_ROOT 3
 #define NFSPROC_LOOKUP 4
 #define NFSPROC_READLINK 5
 #define NFSPROC_READ 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSPROC_WRITECACHE 7
 #define NFSPROC_WRITE 8
 #define NFSPROC_CREATE 9
 #define NFSPROC_REMOVE 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSPROC_RENAME 11
 #define NFSPROC_LINK 12
 #define NFSPROC_SYMLINK 13
 #define NFSPROC_MKDIR 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSPROC_RMDIR 15
 #define NFSPROC_READDIR 16
 #define NFSPROC_STATFS 17
-
 #define NFS_MNT_PROGRAM 100005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS_MNT_VERSION 1
 #define MNTPROC_NULL 0
 #define MNTPROC_MNT 1
 #define MNTPROC_UMNT 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MNTPROC_UMNTALL 4
-
 #endif
diff --git a/libc/kernel/common/linux/nfs3.h b/libc/kernel/common/linux/nfs3.h
index 8303459..6bac99d 100644
--- a/libc/kernel/common/linux/nfs3.h
+++ b/libc/kernel/common/linux/nfs3.h
@@ -7,102 +7,118 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NFS3_H
 #define _LINUX_NFS3_H
-
 #define NFS3_PORT 2049
 #define NFS3_MAXDATA 32768
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3_MAXPATHLEN PATH_MAX
 #define NFS3_MAXNAMLEN NAME_MAX
 #define NFS3_MAXGROUPS 16
 #define NFS3_FHSIZE 64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3_COOKIESIZE 4
 #define NFS3_FIFO_DEV (-1)
 #define NFS3MODE_FMT 0170000
 #define NFS3MODE_DIR 0040000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3MODE_CHR 0020000
 #define NFS3MODE_BLK 0060000
 #define NFS3MODE_REG 0100000
 #define NFS3MODE_LNK 0120000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3MODE_SOCK 0140000
 #define NFS3MODE_FIFO 0010000
-
 #define NFS3_ACCESS_READ 0x0001
 #define NFS3_ACCESS_LOOKUP 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3_ACCESS_MODIFY 0x0004
 #define NFS3_ACCESS_EXTEND 0x0008
 #define NFS3_ACCESS_DELETE 0x0010
 #define NFS3_ACCESS_EXECUTE 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3_ACCESS_FULL 0x003f
-
 enum nfs3_createmode {
  NFS3_CREATE_UNCHECKED = 0,
  NFS3_CREATE_GUARDED = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFS3_CREATE_EXCLUSIVE = 2
 };
-
 #define NFS3_FSF_LINK 0x0001
 #define NFS3_FSF_SYMLINK 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3_FSF_HOMOGENEOUS 0x0008
 #define NFS3_FSF_CANSETTIME 0x0010
-
 #define NFS3_FSF_DEFAULT 0x001B
 #define NFS3_FSF_BILLYBOY 0x0018
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3_FSF_READONLY 0x0008
-
 enum nfs3_ftype {
  NF3NON = 0,
  NF3REG = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF3DIR = 2,
  NF3BLK = 3,
  NF3CHR = 4,
  NF3LNK = 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NF3SOCK = 6,
  NF3FIFO = 7,
  NF3BAD = 8
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs3_fh {
  unsigned short size;
  unsigned char data[NFS3_FHSIZE];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3_VERSION 3
 #define NFS3PROC_NULL 0
 #define NFS3PROC_GETATTR 1
 #define NFS3PROC_SETATTR 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3PROC_LOOKUP 3
 #define NFS3PROC_ACCESS 4
 #define NFS3PROC_READLINK 5
 #define NFS3PROC_READ 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3PROC_WRITE 7
 #define NFS3PROC_CREATE 8
 #define NFS3PROC_MKDIR 9
 #define NFS3PROC_SYMLINK 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3PROC_MKNOD 11
 #define NFS3PROC_REMOVE 12
 #define NFS3PROC_RMDIR 13
 #define NFS3PROC_RENAME 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3PROC_LINK 15
 #define NFS3PROC_READDIR 16
 #define NFS3PROC_READDIRPLUS 17
 #define NFS3PROC_FSSTAT 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS3PROC_FSINFO 19
 #define NFS3PROC_PATHCONF 20
 #define NFS3PROC_COMMIT 21
-
 #define NFS_MNT3_PROGRAM 100005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS_MNT3_VERSION 3
 #define MOUNTPROC3_NULL 0
 #define MOUNTPROC3_MNT 1
 #define MOUNTPROC3_UMNT 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MOUNTPROC3_UMNTALL 4
-
 #ifdef NFS_NEED_KERNEL_TYPES
-
 #define NFS3_POST_OP_ATTR_WORDS 22
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/nfs4.h b/libc/kernel/common/linux/nfs4.h
index 2e95e45..f7404c0 100644
--- a/libc/kernel/common/linux/nfs4.h
+++ b/libc/kernel/common/linux/nfs4.h
@@ -7,93 +7,104 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NFS4_H
 #define _LINUX_NFS4_H
-
 #include <linux/types.h>
-
 #define NFS4_VERIFIER_SIZE 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_FHSIZE 128
 #define NFS4_MAXPATHLEN PATH_MAX
 #define NFS4_MAXNAMLEN NAME_MAX
-
 #define NFS4_ACCESS_READ 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACCESS_LOOKUP 0x0002
 #define NFS4_ACCESS_MODIFY 0x0004
 #define NFS4_ACCESS_EXTEND 0x0008
 #define NFS4_ACCESS_DELETE 0x0010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACCESS_EXECUTE 0x0020
-
 #define NFS4_FH_PERSISTENT 0x0000
 #define NFS4_FH_NOEXPIRE_WITH_OPEN 0x0001
 #define NFS4_FH_VOLATILE_ANY 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_FH_VOL_MIGRATION 0x0004
 #define NFS4_FH_VOL_RENAME 0x0008
-
 #define NFS4_OPEN_RESULT_CONFIRM 0x0002
 #define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_SHARE_ACCESS_READ 0x0001
 #define NFS4_SHARE_ACCESS_WRITE 0x0002
 #define NFS4_SHARE_ACCESS_BOTH 0x0003
 #define NFS4_SHARE_DENY_READ 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_SHARE_DENY_WRITE 0x0002
 #define NFS4_SHARE_DENY_BOTH 0x0003
-
 #define NFS4_SET_TO_SERVER_TIME 0
 #define NFS4_SET_TO_CLIENT_TIME 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACE_ACCESS_ALLOWED_ACE_TYPE 0
 #define NFS4_ACE_ACCESS_DENIED_ACE_TYPE 1
 #define NFS4_ACE_SYSTEM_AUDIT_ACE_TYPE 2
 #define NFS4_ACE_SYSTEM_ALARM_ACE_TYPE 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ACL4_SUPPORT_ALLOW_ACL 0x01
 #define ACL4_SUPPORT_DENY_ACL 0x02
 #define ACL4_SUPPORT_AUDIT_ACL 0x04
 #define ACL4_SUPPORT_ALARM_ACL 0x08
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACE_FILE_INHERIT_ACE 0x00000001
 #define NFS4_ACE_DIRECTORY_INHERIT_ACE 0x00000002
 #define NFS4_ACE_NO_PROPAGATE_INHERIT_ACE 0x00000004
 #define NFS4_ACE_INHERIT_ONLY_ACE 0x00000008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACE_SUCCESSFUL_ACCESS_ACE_FLAG 0x00000010
 #define NFS4_ACE_FAILED_ACCESS_ACE_FLAG 0x00000020
 #define NFS4_ACE_IDENTIFIER_GROUP 0x00000040
 #define NFS4_ACE_OWNER 0x00000080
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACE_GROUP 0x00000100
 #define NFS4_ACE_EVERYONE 0x00000200
-
 #define NFS4_ACE_READ_DATA 0x00000001
 #define NFS4_ACE_LIST_DIRECTORY 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACE_WRITE_DATA 0x00000002
 #define NFS4_ACE_ADD_FILE 0x00000002
 #define NFS4_ACE_APPEND_DATA 0x00000004
 #define NFS4_ACE_ADD_SUBDIRECTORY 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACE_READ_NAMED_ATTRS 0x00000008
 #define NFS4_ACE_WRITE_NAMED_ATTRS 0x00000010
 #define NFS4_ACE_EXECUTE 0x00000020
 #define NFS4_ACE_DELETE_CHILD 0x00000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACE_READ_ATTRIBUTES 0x00000080
 #define NFS4_ACE_WRITE_ATTRIBUTES 0x00000100
 #define NFS4_ACE_DELETE 0x00010000
 #define NFS4_ACE_READ_ACL 0x00020000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACE_WRITE_ACL 0x00040000
 #define NFS4_ACE_WRITE_OWNER 0x00080000
 #define NFS4_ACE_SYNCHRONIZE 0x00100000
 #define NFS4_ACE_GENERIC_READ 0x00120081
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS4_ACE_GENERIC_WRITE 0x00160106
 #define NFS4_ACE_GENERIC_EXECUTE 0x001200A0
 #define NFS4_ACE_MASK_ALL 0x001F01FF
-
 enum nfs4_acl_whotype {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NFS4_ACL_WHO_NAMED = 0,
  NFS4_ACL_WHO_OWNER,
  NFS4_ACL_WHO_GROUP,
  NFS4_ACL_WHO_EVERYONE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/nfs_xdr.h b/libc/kernel/common/linux/nfs_xdr.h
index 48fe262..865e178 100644
--- a/libc/kernel/common/linux/nfs_xdr.h
+++ b/libc/kernel/common/linux/nfs_xdr.h
@@ -7,550 +7,642 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NFS_XDR_H
 #define _LINUX_NFS_XDR_H
-
 #include <linux/sunrpc/xprt.h>
 #include <linux/nfsacl.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS_MAX_FILE_IO_SIZE (1048576U)
 #define NFS_DEF_FILE_IO_SIZE (4096U)
 #define NFS_MIN_FILE_IO_SIZE (1024U)
-
 struct nfs_fsid {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint64_t major;
  uint64_t minor;
 };
-
+struct nfs_fattr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short valid;
+ __u64 pre_size;
+ struct timespec pre_mtime;
+ struct timespec pre_ctime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ enum nfs_ftype type;
+ __u32 mode;
+ __u32 nlink;
+ __u32 uid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 gid;
+ __u64 size;
+ union {
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 blocksize;
+ __u32 blocks;
+ } nfs2;
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 used;
+ } nfs3;
+ } du;
+ dev_t rdev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct nfs_fsid fsid;
+ __u64 fileid;
+ struct timespec atime;
+ struct timespec mtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct timespec ctime;
+ __u32 bitmap[2];
+ __u64 change_attr;
+ __u64 pre_change_attr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned long time_start;
+};
 #define NFS_ATTR_WCC 0x0001  
 #define NFS_ATTR_FATTR 0x0002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS_ATTR_FATTR_V3 0x0004  
 #define NFS_ATTR_FATTR_V4 0x0008  
 #define NFS_ATTR_FATTR_V4_REFERRAL 0x0010  
-
 struct nfs_fsinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fattr *fattr;
  __u32 rtmax;
  __u32 rtpref;
  __u32 rtmult;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 wtmax;
  __u32 wtpref;
  __u32 wtmult;
  __u32 dtpref;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 maxfilesize;
  __u32 lease_time;
 };
-
 struct nfs_fsstat {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fattr *fattr;
  __u64 tbytes;
  __u64 fbytes;
  __u64 abytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 tfiles;
  __u64 ffiles;
  __u64 afiles;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs2_fsstat {
  __u32 tsize;
  __u32 bsize;
  __u32 blocks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 bfree;
  __u32 bavail;
 };
-
 struct nfs_pathconf {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fattr *fattr;
  __u32 max_link;
  __u32 max_namelen;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs4_change_info {
  u32 atomic;
  u64 before;
  u64 after;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs_seqid;
-
 struct nfs_openargs {
  const struct nfs_fh * fh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_seqid * seqid;
  int open_flags;
  __u64 clientid;
  __u32 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  struct iattr * attrs;
  nfs4_verifier verifier;
  nfs4_stateid delegation;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int delegation_type;
  } u;
  const struct qstr * name;
  const struct nfs_server *server;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const u32 * bitmask;
  __u32 claim;
 };
-
 struct nfs_openres {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  nfs4_stateid stateid;
  struct nfs_fh fh;
  struct nfs4_change_info cinfo;
  __u32 rflags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fattr * f_attr;
  struct nfs_fattr * dir_attr;
  const struct nfs_server *server;
  int delegation_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  nfs4_stateid delegation;
  __u32 do_recall;
  __u64 maxsize;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_open_confirmargs {
  const struct nfs_fh * fh;
  nfs4_stateid * stateid;
  struct nfs_seqid * seqid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs_open_confirmres {
  nfs4_stateid stateid;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_closeargs {
  struct nfs_fh * fh;
  nfs4_stateid * stateid;
  struct nfs_seqid * seqid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int open_flags;
  const u32 * bitmask;
 };
-
 struct nfs_closeres {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  nfs4_stateid stateid;
  struct nfs_fattr * fattr;
  const struct nfs_server *server;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_lowner {
  __u64 clientid;
  u32 id;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_lock_args {
  struct nfs_fh * fh;
  struct file_lock * fl;
  struct nfs_seqid * lock_seqid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  nfs4_stateid * lock_stateid;
  struct nfs_seqid * open_seqid;
  nfs4_stateid * open_stateid;
  struct nfs_lowner lock_owner;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char block : 1;
  unsigned char reclaim : 1;
  unsigned char new_lock_owner : 1;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_lock_res {
  nfs4_stateid stateid;
 };
-
 struct nfs_locku_args {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fh * fh;
  struct file_lock * fl;
  struct nfs_seqid * seqid;
  nfs4_stateid * stateid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs_locku_res {
  nfs4_stateid stateid;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_lockt_args {
  struct nfs_fh * fh;
  struct file_lock * fl;
  struct nfs_lowner lock_owner;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs_lockt_res {
  struct file_lock * denied;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs4_delegreturnargs {
  const struct nfs_fh *fhandle;
  const nfs4_stateid *stateid;
  const u32 * bitmask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs4_delegreturnres {
  struct nfs_fattr * fattr;
  const struct nfs_server *server;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs_readargs {
  struct nfs_fh * fh;
  struct nfs_open_context *context;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 offset;
  __u32 count;
  unsigned int pgbase;
  struct page ** pages;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs_readres {
  struct nfs_fattr * fattr;
  __u32 count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int eof;
 };
-
 struct nfs_writeargs {
  struct nfs_fh * fh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_open_context *context;
  __u64 offset;
  __u32 count;
  enum nfs3_stable_how stable;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int pgbase;
  struct page ** pages;
  const u32 * bitmask;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_writeverf {
  enum nfs3_stable_how committed;
  __u32 verifier[2];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_writeres {
  struct nfs_fattr * fattr;
  struct nfs_writeverf * verf;
  __u32 count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const struct nfs_server *server;
 };
-
 struct nfs_entry {
  __u64 ino;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 cookie,
  prev_cookie;
  const char * name;
  unsigned int len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int eof;
  struct nfs_fh * fh;
  struct nfs_fattr * fattr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_sattrargs {
  struct nfs_fh * fh;
  struct iattr * sattr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_diropargs {
  struct nfs_fh * fh;
  const char * name;
  unsigned int len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs_createargs {
  struct nfs_fh * fh;
  const char * name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int len;
  struct iattr * sattr;
 };
-
 struct nfs_renameargs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fh * fromfh;
  const char * fromname;
  unsigned int fromlen;
  struct nfs_fh * tofh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char * toname;
  unsigned int tolen;
 };
-
 struct nfs_setattrargs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fh * fh;
  nfs4_stateid stateid;
  struct iattr * iap;
  const struct nfs_server * server;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const u32 * bitmask;
 };
-
 struct nfs_setaclargs {
  struct nfs_fh * fh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t acl_len;
  unsigned int acl_pgbase;
  struct page ** acl_pages;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_getaclargs {
  struct nfs_fh * fh;
  size_t acl_len;
  unsigned int acl_pgbase;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page ** acl_pages;
 };
-
 struct nfs_setattrres {
  struct nfs_fattr * fattr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const struct nfs_server * server;
 };
-
 struct nfs_linkargs {
  struct nfs_fh * fromfh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fh * tofh;
  const char * toname;
  unsigned int tolen;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_symlinkargs {
  struct nfs_fh * fromfh;
  const char * fromname;
  unsigned int fromlen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char * topath;
  unsigned int tolen;
  struct iattr * sattr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs_readdirargs {
  struct nfs_fh * fh;
  __u32 cookie;
  unsigned int count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page ** pages;
 };
-
 struct nfs3_getaclargs {
  struct nfs_fh * fh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int mask;
  struct page ** pages;
 };
-
 struct nfs3_setaclargs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct inode * inode;
  int mask;
  struct posix_acl * acl_access;
  struct posix_acl * acl_default;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page ** pages;
 };
-
 struct nfs_diropok {
  struct nfs_fh * fh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fattr * fattr;
 };
-
 struct nfs_readlinkargs {
  struct nfs_fh * fh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int pgbase;
  unsigned int pglen;
  struct page ** pages;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs3_sattrargs {
  struct nfs_fh * fh;
  struct iattr * sattr;
  unsigned int guard;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct timespec guardtime;
 };
-
 struct nfs3_diropargs {
  struct nfs_fh * fh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char * name;
  unsigned int len;
 };
-
 struct nfs3_accessargs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fh * fh;
  __u32 access;
 };
-
 struct nfs3_createargs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fh * fh;
  const char * name;
  unsigned int len;
  struct iattr * sattr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  enum nfs3_createmode createmode;
  __u32 verifier[2];
 };
-
 struct nfs3_mkdirargs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fh * fh;
  const char * name;
  unsigned int len;
  struct iattr * sattr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs3_symlinkargs {
  struct nfs_fh * fromfh;
  const char * fromname;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int fromlen;
  const char * topath;
  unsigned int tolen;
  struct iattr * sattr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs3_mknodargs {
  struct nfs_fh * fh;
  const char * name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int len;
  enum nfs3_ftype type;
  struct iattr * sattr;
  dev_t rdev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs3_renameargs {
  struct nfs_fh * fromfh;
  const char * fromname;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int fromlen;
  struct nfs_fh * tofh;
  const char * toname;
  unsigned int tolen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfs3_linkargs {
  struct nfs_fh * fromfh;
  struct nfs_fh * tofh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char * toname;
  unsigned int tolen;
 };
-
 struct nfs3_readdirargs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fh * fh;
  __u64 cookie;
  __u32 verf[2];
  int plus;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int count;
  struct page ** pages;
 };
-
 struct nfs3_diropres {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fattr * dir_attr;
  struct nfs_fh * fh;
  struct nfs_fattr * fattr;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs3_accessres {
  struct nfs_fattr * fattr;
  __u32 access;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfs3_readlinkargs {
  struct nfs_fh * fh;
  unsigned int pgbase;
  unsigned int pglen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page ** pages;
 };
-
 struct nfs3_renameres {
  struct nfs_fattr * fromattr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fattr * toattr;
 };
-
 struct nfs3_linkres {
  struct nfs_fattr * dir_attr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fattr * fattr;
 };
-
 struct nfs3_readdirres {
  struct nfs_fattr * dir_attr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 * verf;
  int plus;
 };
-
 struct nfs3_getaclres {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fattr * fattr;
  int mask;
  unsigned int acl_access_count;
  unsigned int acl_default_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct posix_acl * acl_access;
  struct posix_acl * acl_default;
 };
-
 struct nfs_page;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS_PAGEVEC_SIZE (8U)
-
 struct nfs_read_data {
  int flags;
  struct rpc_task task;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct inode *inode;
  struct rpc_cred *cred;
  struct nfs_fattr fattr;
  struct list_head pages;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_page *req;
  struct page **pagevec;
  unsigned int npages;
  struct nfs_readargs args;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_readres res;
  struct page *page_array[NFS_PAGEVEC_SIZE];
 };
-
 struct nfs_write_data {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int flags;
  struct rpc_task task;
  struct inode *inode;
  struct rpc_cred *cred;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fattr fattr;
  struct nfs_writeverf verf;
  struct list_head pages;
  struct nfs_page *req;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page **pagevec;
  unsigned int npages;
  struct nfs_writeargs args;
  struct nfs_writeres res;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page *page_array[NFS_PAGEVEC_SIZE];
 };
-
 struct nfs_access_entry;
-
 struct nfs_rpc_ops {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int version;
  struct dentry_operations *dentry_ops;
  struct inode_operations *dir_inode_ops;
  struct inode_operations *file_inode_ops;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*getroot) (struct nfs_server *, struct nfs_fh *,
  struct nfs_fsinfo *);
  int (*getattr) (struct nfs_server *, struct nfs_fh *,
  struct nfs_fattr *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*setattr) (struct dentry *, struct nfs_fattr *,
  struct iattr *);
  int (*lookup) (struct inode *, struct qstr *,
  struct nfs_fh *, struct nfs_fattr *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*access) (struct inode *, struct nfs_access_entry *);
  int (*readlink)(struct inode *, struct page *, unsigned int,
  unsigned int);
  int (*read) (struct nfs_read_data *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*write) (struct nfs_write_data *);
  int (*commit) (struct nfs_write_data *);
  int (*create) (struct inode *, struct dentry *,
  struct iattr *, int, struct nameidata *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*remove) (struct inode *, struct qstr *);
  int (*unlink_setup) (struct rpc_message *,
  struct dentry *, struct qstr *);
  int (*unlink_done) (struct dentry *, struct rpc_task *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*rename) (struct inode *, struct qstr *,
  struct inode *, struct qstr *);
  int (*link) (struct inode *, struct inode *, struct qstr *);
  int (*symlink) (struct inode *, struct qstr *, struct qstr *,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct iattr *, struct nfs_fh *,
  struct nfs_fattr *);
  int (*mkdir) (struct inode *, struct dentry *, struct iattr *);
  int (*rmdir) (struct inode *, struct qstr *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*readdir) (struct dentry *, struct rpc_cred *,
  u64, struct page *, unsigned int, int);
  int (*mknod) (struct inode *, struct dentry *, struct iattr *,
  dev_t);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*statfs) (struct nfs_server *, struct nfs_fh *,
  struct nfs_fsstat *);
  int (*fsinfo) (struct nfs_server *, struct nfs_fh *,
  struct nfs_fsinfo *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*pathconf) (struct nfs_server *, struct nfs_fh *,
  struct nfs_pathconf *);
  u32 * (*decode_dirent)(u32 *, struct nfs_entry *, int plus);
  void (*read_setup) (struct nfs_read_data *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*read_done) (struct rpc_task *, struct nfs_read_data *);
  void (*write_setup) (struct nfs_write_data *, int how);
  int (*write_done) (struct rpc_task *, struct nfs_write_data *);
  void (*commit_setup) (struct nfs_write_data *, int how);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*commit_done) (struct rpc_task *, struct nfs_write_data *);
  int (*file_open) (struct inode *, struct file *);
  int (*file_release) (struct inode *, struct file *);
  int (*lock)(struct file *, int, struct file_lock *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*clear_acl_cache)(struct inode *);
 };
-
 #define NFS_CALL(op, inode, args) NFS_PROTO(inode)->op args
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/nfsacl.h b/libc/kernel/common/linux/nfsacl.h
index 7dd95ab..675471a 100644
--- a/libc/kernel/common/linux/nfsacl.h
+++ b/libc/kernel/common/linux/nfsacl.h
@@ -7,26 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_NFSACL_H
 #define __LINUX_NFSACL_H
-
 #define NFS_ACL_PROGRAM 100227
-
 #define ACLPROC2_GETACL 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ACLPROC2_SETACL 2
 #define ACLPROC2_GETATTR 3
 #define ACLPROC2_ACCESS 4
-
 #define ACLPROC3_GETACL 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ACLPROC3_SETACL 2
-
 #define NFS_ACL 0x0001
 #define NFS_ACLCNT 0x0002
 #define NFS_DFACL 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFS_DFACLCNT 0x0008
-
 #define NFS_ACL_DEFAULT 0x1000
-
 #endif
diff --git a/libc/kernel/common/linux/nfsd/auth.h b/libc/kernel/common/linux/nfsd/auth.h
index f840f0e..a6d6fec 100644
--- a/libc/kernel/common/linux/nfsd/auth.h
+++ b/libc/kernel/common/linux/nfsd/auth.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_NFSD_AUTH_H
 #define LINUX_NFSD_AUTH_H
-
 #endif
diff --git a/libc/kernel/common/linux/nfsd/const.h b/libc/kernel/common/linux/nfsd/const.h
index c345508..658a5d2 100644
--- a/libc/kernel/common/linux/nfsd/const.h
+++ b/libc/kernel/common/linux/nfsd/const.h
@@ -7,18 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NFSD_CONST_H
 #define _LINUX_NFSD_CONST_H
-
 #include <linux/nfs.h>
 #include <linux/nfs2.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/nfs3.h>
 #include <linux/nfs4.h>
-
 #define NFSSVC_MAXVERS 3
-
 #define NFSSVC_MAXBLKSIZE (32*1024)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/nfsd/debug.h b/libc/kernel/common/linux/nfsd/debug.h
index 9b90f05..7add7fd 100644
--- a/libc/kernel/common/linux/nfsd/debug.h
+++ b/libc/kernel/common/linux/nfsd/debug.h
@@ -7,28 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_NFSD_DEBUG_H
 #define LINUX_NFSD_DEBUG_H
-
 #include <linux/sunrpc/debug.h>
-
 #ifdef RPC_DEBUG
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSD_DEBUG 1
 #endif
-
 #define NFSDDBG_SOCK 0x0001
 #define NFSDDBG_FH 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSDDBG_EXPORT 0x0004
 #define NFSDDBG_SVC 0x0008
 #define NFSDDBG_PROC 0x0010
 #define NFSDDBG_FILEOP 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSDDBG_AUTH 0x0040
 #define NFSDDBG_REPCACHE 0x0080
 #define NFSDDBG_XDR 0x0100
 #define NFSDDBG_LOCKD 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSDDBG_ALL 0x7FFF
 #define NFSDDBG_NOCHANGE 0xFFFF
-
 #endif
diff --git a/libc/kernel/common/linux/nfsd/export.h b/libc/kernel/common/linux/nfsd/export.h
index 932274f..7bb5774 100644
--- a/libc/kernel/common/linux/nfsd/export.h
+++ b/libc/kernel/common/linux/nfsd/export.h
@@ -7,32 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef NFSD_EXPORT_H
 #define NFSD_EXPORT_H
-
 #include <asm/types.h>
-
 #define NFSCLNT_IDMAX 1024
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSCLNT_ADDRMAX 16
 #define NFSCLNT_KEYMAX 32
-
 #define NFSEXP_READONLY 0x0001
 #define NFSEXP_INSECURE_PORT 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSEXP_ROOTSQUASH 0x0004
 #define NFSEXP_ALLSQUASH 0x0008
 #define NFSEXP_ASYNC 0x0010
 #define NFSEXP_GATHERED_WRITES 0x0020
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSEXP_NOHIDE 0x0200
 #define NFSEXP_NOSUBTREECHECK 0x0400
 #define NFSEXP_NOAUTHNLM 0x0800  
 #define NFSEXP_MSNFS 0x1000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSEXP_FSID 0x2000
 #define NFSEXP_CROSSMOUNT 0x4000
 #define NFSEXP_NOACL 0x8000  
 #define NFSEXP_ALLFLAGS 0xFE3F
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/nfsd/interface.h b/libc/kernel/common/linux/nfsd/interface.h
index 3c3946a..c9b81c1 100644
--- a/libc/kernel/common/linux/nfsd/interface.h
+++ b/libc/kernel/common/linux/nfsd/interface.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_NFSD_INTERFACE_H
 #define LINUX_NFSD_INTERFACE_H
-
 #endif
diff --git a/libc/kernel/common/linux/nfsd/nfsfh.h b/libc/kernel/common/linux/nfsd/nfsfh.h
index 13450d2..152b2c6 100644
--- a/libc/kernel/common/linux/nfsd/nfsfh.h
+++ b/libc/kernel/common/linux/nfsd/nfsfh.h
@@ -7,56 +7,65 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NFSD_FH_H
 #define _LINUX_NFSD_FH_H
-
 #include <asm/types.h>
 #include <linux/nfsd/const.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/nfsd/debug.h>
-
 struct nfs_fhbase_old {
  __u32 fb_dcookie;
  __u32 fb_ino;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 fb_dirino;
  __u32 fb_dev;
  __u32 fb_xdev;
  __u32 fb_xino;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 fb_generation;
 };
-
 struct nfs_fhbase_new {
  __u8 fb_version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 fb_auth_type;
  __u8 fb_fsid_type;
  __u8 fb_fileid_type;
  __u32 fb_auth[1];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct knfsd_fh {
  unsigned int fh_size;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfs_fhbase_old fh_old;
  __u32 fh_pad[NFS4_FHSIZE/4];
  struct nfs_fhbase_new fh_new;
  } fh_base;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ofh_dcookie fh_base.fh_old.fb_dcookie
 #define ofh_ino fh_base.fh_old.fb_ino
 #define ofh_dirino fh_base.fh_old.fb_dirino
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ofh_dev fh_base.fh_old.fb_dev
 #define ofh_xdev fh_base.fh_old.fb_xdev
 #define ofh_xino fh_base.fh_old.fb_xino
 #define ofh_generation fh_base.fh_old.fb_generation
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define fh_version fh_base.fh_new.fb_version
 #define fh_fsid_type fh_base.fh_new.fb_fsid_type
 #define fh_auth_type fh_base.fh_new.fb_auth_type
 #define fh_fileid_type fh_base.fh_new.fb_fileid_type
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define fh_auth fh_base.fh_new.fb_auth
 #define fh_fsid fh_base.fh_new.fb_auth
-
 #endif
diff --git a/libc/kernel/common/linux/nfsd/stats.h b/libc/kernel/common/linux/nfsd/stats.h
index 647e65c..46b0c02 100644
--- a/libc/kernel/common/linux/nfsd/stats.h
+++ b/libc/kernel/common/linux/nfsd/stats.h
@@ -7,32 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_NFSD_STATS_H
 #define LINUX_NFSD_STATS_H
-
 #include <linux/nfs4.h>
-
 struct nfsd_stats {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int rchits;
  unsigned int rcmisses;
  unsigned int rcnocache;
  unsigned int fh_stale;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int fh_lookup;
  unsigned int fh_anon;
  unsigned int fh_nocache_dir;
  unsigned int fh_nocache_nondir;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int io_read;
  unsigned int io_write;
  unsigned int th_cnt;
  unsigned int th_usage[10];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int th_fullcnt;
  unsigned int ra_size;
  unsigned int ra_depth[11];
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NFSD_USAGE_WRAP (HZ*1000000)
-
 #endif
diff --git a/libc/kernel/common/linux/nfsd/xdr.h b/libc/kernel/common/linux/nfsd/xdr.h
index f94961d..7a9ca56 100644
--- a/libc/kernel/common/linux/nfsd/xdr.h
+++ b/libc/kernel/common/linux/nfsd/xdr.h
@@ -7,135 +7,147 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_NFSD_H
 #define LINUX_NFSD_H
-
 #include <linux/fs.h>
 #include <linux/vfs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/nfs.h>
-
 struct nfsd_fhandle {
  struct svc_fh fh;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfsd_sattrargs {
  struct svc_fh fh;
  struct iattr attrs;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfsd_diropargs {
  struct svc_fh fh;
  char * name;
  int len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfsd_readargs {
  struct svc_fh fh;
  __u32 offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 count;
  struct kvec vec[RPCSVC_MAXPAGES];
  int vlen;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfsd_writeargs {
  svc_fh fh;
  __u32 offset;
  int len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct kvec vec[RPCSVC_MAXPAGES];
  int vlen;
 };
-
 struct nfsd_createargs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct svc_fh fh;
  char * name;
  int len;
  struct iattr attrs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfsd_renameargs {
  struct svc_fh ffh;
  char * fname;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int flen;
  struct svc_fh tfh;
  char * tname;
  int tlen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfsd_readlinkargs {
  struct svc_fh fh;
  char * buffer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfsd_linkargs {
  struct svc_fh ffh;
  struct svc_fh tfh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char * tname;
  int tlen;
 };
-
 struct nfsd_symlinkargs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct svc_fh ffh;
  char * fname;
  int flen;
  char * tname;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int tlen;
  struct iattr attrs;
 };
-
 struct nfsd_readdirargs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct svc_fh fh;
  __u32 cookie;
  __u32 count;
  u32 * buffer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfsd_attrstat {
  struct svc_fh fh;
  struct kstat stat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfsd_diropres {
  struct svc_fh fh;
  struct kstat stat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfsd_readlinkres {
  int len;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfsd_readres {
  struct svc_fh fh;
  unsigned long count;
  struct kstat stat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct nfsd_readdirres {
  int count;
-
  struct readdir_cd common;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 * buffer;
  int buflen;
  u32 * offset;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nfsd_statfsres {
  struct kstatfs stats;
 };
-
 union nfsd_xdrstore {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfsd_sattrargs sattr;
  struct nfsd_diropargs dirop;
  struct nfsd_readargs read;
  struct nfsd_writeargs write;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfsd_createargs create;
  struct nfsd_renameargs rename;
  struct nfsd_linkargs link;
  struct nfsd_symlinkargs symlink;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nfsd_readdirargs readdir;
 };
-
 #define NFS2_SVC_XDRSIZE sizeof(union nfsd_xdrstore)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/node.h b/libc/kernel/common/linux/node.h
index b33bffc..9cc8cb4 100644
--- a/libc/kernel/common/linux/node.h
+++ b/libc/kernel/common/linux/node.h
@@ -7,17 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NODE_H_
 #define _LINUX_NODE_H_
-
 #include <linux/sysdev.h>
 #include <linux/cpumask.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct node {
  struct sys_device sysdev;
 };
-
 #define to_node(sys_device) container_of(sys_device, struct node, sysdev)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/nodemask.h b/libc/kernel/common/linux/nodemask.h
index 4ec8632..0158018 100644
--- a/libc/kernel/common/linux/nodemask.h
+++ b/libc/kernel/common/linux/nodemask.h
@@ -7,83 +7,99 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_NODEMASK_H
 #define __LINUX_NODEMASK_H
-
 #include <linux/kernel.h>
 #include <linux/threads.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/bitmap.h>
 #include <linux/numa.h>
-
 typedef struct { DECLARE_BITMAP(bits, MAX_NUMNODES); } nodemask_t;
-
 #define node_set(node, dst) __node_set((node), &(dst))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define node_clear(node, dst) __node_clear((node), &(dst))
 #define nodes_setall(dst) __nodes_setall(&(dst), MAX_NUMNODES)
 #define nodes_clear(dst) __nodes_clear(&(dst), MAX_NUMNODES)
 #define node_isset(node, nodemask) test_bit((node), (nodemask).bits)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define node_test_and_set(node, nodemask)   __node_test_and_set((node), &(nodemask))
 #define nodes_and(dst, src1, src2)   __nodes_and(&(dst), &(src1), &(src2), MAX_NUMNODES)
 #define nodes_or(dst, src1, src2)   __nodes_or(&(dst), &(src1), &(src2), MAX_NUMNODES)
 #define nodes_xor(dst, src1, src2)   __nodes_xor(&(dst), &(src1), &(src2), MAX_NUMNODES)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define nodes_andnot(dst, src1, src2)   __nodes_andnot(&(dst), &(src1), &(src2), MAX_NUMNODES)
 #define nodes_complement(dst, src)   __nodes_complement(&(dst), &(src), MAX_NUMNODES)
 #define nodes_equal(src1, src2)   __nodes_equal(&(src1), &(src2), MAX_NUMNODES)
 #define nodes_intersects(src1, src2)   __nodes_intersects(&(src1), &(src2), MAX_NUMNODES)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define nodes_subset(src1, src2)   __nodes_subset(&(src1), &(src2), MAX_NUMNODES)
 #define nodes_empty(src) __nodes_empty(&(src), MAX_NUMNODES)
 #define nodes_full(nodemask) __nodes_full(&(nodemask), MAX_NUMNODES)
 #define nodes_weight(nodemask) __nodes_weight(&(nodemask), MAX_NUMNODES)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define nodes_shift_right(dst, src, n)   __nodes_shift_right(&(dst), &(src), (n), MAX_NUMNODES)
 #define nodes_shift_left(dst, src, n)   __nodes_shift_left(&(dst), &(src), (n), MAX_NUMNODES)
 #define first_node(src) __first_node(&(src))
 #define next_node(n, src) __next_node((n), &(src))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define nodemask_of_node(node)  ({   typeof(_unused_nodemask_arg_) m;   if (sizeof(m) == sizeof(unsigned long)) {   m.bits[0] = 1UL<<(node);   } else {   nodes_clear(m);   node_set((node), m);   }   m;  })
 #define first_unset_node(mask) __first_unset_node(&(mask))
 #define NODE_MASK_LAST_WORD BITMAP_LAST_WORD_MASK(MAX_NUMNODES)
 #if MAX_NUMNODES <= BITS_PER_LONG
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NODE_MASK_ALL  ((nodemask_t) { {   [BITS_TO_LONGS(MAX_NUMNODES)-1] = NODE_MASK_LAST_WORD  } })
 #else
 #define NODE_MASK_ALL  ((nodemask_t) { {   [0 ... BITS_TO_LONGS(MAX_NUMNODES)-2] = ~0UL,   [BITS_TO_LONGS(MAX_NUMNODES)-1] = NODE_MASK_LAST_WORD  } })
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NODE_MASK_NONE  ((nodemask_t) { {   [0 ... BITS_TO_LONGS(MAX_NUMNODES)-1] = 0UL  } })
 #define nodes_addr(src) ((src).bits)
 #define nodemask_scnprintf(buf, len, src)   __nodemask_scnprintf((buf), (len), &(src), MAX_NUMNODES)
 #define nodemask_parse(ubuf, ulen, dst)   __nodemask_parse((ubuf), (ulen), &(dst), MAX_NUMNODES)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define nodelist_scnprintf(buf, len, src)   __nodelist_scnprintf((buf), (len), &(src), MAX_NUMNODES)
 #define nodelist_parse(buf, dst) __nodelist_parse((buf), &(dst), MAX_NUMNODES)
 #define node_remap(oldbit, old, new)   __node_remap((oldbit), &(old), &(new), MAX_NUMNODES)
 #define nodes_remap(dst, src, old, new)   __nodes_remap(&(dst), &(src), &(old), &(new), MAX_NUMNODES)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if MAX_NUMNODES > 1
 #define for_each_node_mask(node, mask)   for ((node) = first_node(mask);   (node) < MAX_NUMNODES;   (node) = next_node((node), (mask)))
 #else
 #define for_each_node_mask(node, mask)   if (!nodes_empty(mask))   for ((node) = 0; (node) < 1; (node)++)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #if MAX_NUMNODES > 1
 #define num_online_nodes() nodes_weight(node_online_map)
 #define num_possible_nodes() nodes_weight(node_possible_map)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define node_online(node) node_isset((node), node_online_map)
 #define node_possible(node) node_isset((node), node_possible_map)
 #define first_online_node first_node(node_online_map)
 #define next_online_node(nid) next_node((nid), node_online_map)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #define num_online_nodes() 1
 #define num_possible_nodes() 1
 #define node_online(node) ((node) == 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define node_possible(node) ((node) == 0)
 #define first_online_node 0
 #define next_online_node(nid) (MAX_NUMNODES)
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define any_online_node(mask)  ({   int node;   for_each_node_mask(node, (mask))   if (node_online(node))   break;   node;  })
-
 #define node_set_online(node) set_bit((node), node_online_map.bits)
 #define node_set_offline(node) clear_bit((node), node_online_map.bits)
-
 #define for_each_node(node) for_each_node_mask((node), node_possible_map)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define for_each_online_node(node) for_each_node_mask((node), node_online_map)
-
 #endif
diff --git a/libc/kernel/common/linux/notifier.h b/libc/kernel/common/linux/notifier.h
index f1fc461..080d796 100644
--- a/libc/kernel/common/linux/notifier.h
+++ b/libc/kernel/common/linux/notifier.h
@@ -7,44 +7,50 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NOTIFIER_H
 #define _LINUX_NOTIFIER_H
 #include <linux/errno.h>
 #include <linux/mutex.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/rwsem.h>
-
 struct notifier_block {
  int (*notifier_call)(struct notifier_block *, unsigned long, void *);
  struct notifier_block *next;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int priority;
 };
-
 struct atomic_notifier_head {
  spinlock_t lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct notifier_block *head;
 };
-
 struct blocking_notifier_head {
  struct rw_semaphore rwsem;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct notifier_block *head;
 };
-
 struct raw_notifier_head {
  struct notifier_block *head;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define ATOMIC_INIT_NOTIFIER_HEAD(name) do {   spin_lock_init(&(name)->lock);   (name)->head = NULL;   } while (0)
 #define BLOCKING_INIT_NOTIFIER_HEAD(name) do {   init_rwsem(&(name)->rwsem);   (name)->head = NULL;   } while (0)
 #define RAW_INIT_NOTIFIER_HEAD(name) do {   (name)->head = NULL;   } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ATOMIC_NOTIFIER_INIT(name) {   .lock = __SPIN_LOCK_UNLOCKED(name.lock),   .head = NULL }
 #define BLOCKING_NOTIFIER_INIT(name) {   .rwsem = __RWSEM_INITIALIZER((name).rwsem),   .head = NULL }
 #define RAW_NOTIFIER_INIT(name) {   .head = NULL }
-
 #define ATOMIC_NOTIFIER_HEAD(name)   struct atomic_notifier_head name =   ATOMIC_NOTIFIER_INIT(name)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BLOCKING_NOTIFIER_HEAD(name)   struct blocking_notifier_head name =   BLOCKING_NOTIFIER_INIT(name)
 #define RAW_NOTIFIER_HEAD(name)   struct raw_notifier_head name =   RAW_NOTIFIER_INIT(name)
-
 #endif
diff --git a/libc/kernel/common/linux/numa.h b/libc/kernel/common/linux/numa.h
index f5d66f5..694d60c 100644
--- a/libc/kernel/common/linux/numa.h
+++ b/libc/kernel/common/linux/numa.h
@@ -7,13 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NUMA_H
 #define _LINUX_NUMA_H
-
 #define NODES_SHIFT 0
-
 #define MAX_NUMNODES (1 << NODES_SHIFT)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/nvhdcp.h b/libc/kernel/common/linux/nvhdcp.h
index d21ea55..dadc512 100644
--- a/libc/kernel/common/linux/nvhdcp.h
+++ b/libc/kernel/common/linux/nvhdcp.h
@@ -82,4 +82,3 @@
 #define TEGRAIO_NVHDCP_RENEGOTIATE _IO('F', 0x75)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/nvram.h b/libc/kernel/common/linux/nvram.h
index b358bdb..06aaa9d 100644
--- a/libc/kernel/common/linux/nvram.h
+++ b/libc/kernel/common/linux/nvram.h
@@ -7,18 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_NVRAM_H
 #define _LINUX_NVRAM_H
-
 #include <linux/ioctl.h>
-
 #define NVRAM_INIT _IO('p', 0x40)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NVRAM_SETCKS _IO('p', 0x41)  
-
 #define NVRAM_FIRST_BYTE 14
-
 #define NVRAM_OFFSET(x) ((x)-NVRAM_FIRST_BYTE)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/omap_csmi.h b/libc/kernel/common/linux/omap_csmi.h
index 6a28d3d..07dc856 100644
--- a/libc/kernel/common/linux/omap_csmi.h
+++ b/libc/kernel/common/linux/omap_csmi.h
@@ -7,17 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _OMAP_CSMI_H_
 #define _OMAP_CSMI_H_
-
 #include <asm/ioctl.h>
-
 #define OMAP_CSMI_TTY_ENABLE_ACK _IO('c', 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OMAP_CSMI_TTY_DISABLE_ACK _IO('c', 1)
 #define OMAP_CSMI_TTY_READ_UNACKED _IOR('c', 2, int)
 #define OMAP_CSMI_TTY_ACK _IOW('c', 3, int)
 #define OMAP_CSMI_TTY_WAKEUP_AND_ACK _IOW('c', 4, int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/omap_ion.h b/libc/kernel/common/linux/omap_ion.h
index 216533e..65af914 100644
--- a/libc/kernel/common/linux/omap_ion.h
+++ b/libc/kernel/common/linux/omap_ion.h
@@ -57,4 +57,3 @@
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/pagemap.h b/libc/kernel/common/linux/pagemap.h
index 8dd397d..2a5223a 100644
--- a/libc/kernel/common/linux/pagemap.h
+++ b/libc/kernel/common/linux/pagemap.h
@@ -7,27 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PAGEMAP_H
 #define _LINUX_PAGEMAP_H
-
 #include <linux/mm.h>
 #include <linux/fs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/list.h>
 #include <linux/highmem.h>
 #include <linux/compiler.h>
 #include <asm/uaccess.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/gfp.h>
-
 #define AS_EIO (__GFP_BITS_SHIFT + 0)  
 #define AS_ENOSPC (__GFP_BITS_SHIFT + 1)  
-
 #define PAGE_CACHE_SHIFT PAGE_SHIFT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PAGE_CACHE_SIZE PAGE_SIZE
 #define PAGE_CACHE_MASK PAGE_MASK
 #define PAGE_CACHE_ALIGN(addr) (((addr)+PAGE_CACHE_SIZE-1)&PAGE_CACHE_MASK)
 #define page_cache_get(page) get_page(page)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define page_cache_release(page) put_page(page)
-
+typedef int filler_t(void *, struct page *);
 #endif
diff --git a/libc/kernel/common/linux/param.h b/libc/kernel/common/linux/param.h
index 456695d..569c9dd 100644
--- a/libc/kernel/common/linux/param.h
+++ b/libc/kernel/common/linux/param.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PARAM_H
 #define _LINUX_PARAM_H
-
 #include <asm/param.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/patchkey.h b/libc/kernel/common/linux/patchkey.h
index fdf86ce..dc94949 100644
--- a/libc/kernel/common/linux/patchkey.h
+++ b/libc/kernel/common/linux/patchkey.h
@@ -7,25 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PATCHKEY_H_INDIRECT
 #error "patchkey.h included directly"
 #endif
-
 #ifndef _LINUX_PATCHKEY_H
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _LINUX_PATCHKEY_H
-
 #include <endian.h>
-
 #ifdef __BYTE_ORDER
 #if __BYTE_ORDER == __BIG_ENDIAN
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _PATCHKEY(id) (0xfd00|id)
 #elif __BYTE_ORDER == __LITTLE_ENDIAN
 #define _PATCHKEY(id) ((id<<8)|0x00fd)
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error "could not determine byte order"
 #endif
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/pci.h b/libc/kernel/common/linux/pci.h
index 165deb4..cecaf07 100644
--- a/libc/kernel/common/linux/pci.h
+++ b/libc/kernel/common/linux/pci.h
@@ -7,23 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_PCI_H
 #define LINUX_PCI_H
-
 #include <linux/pci_regs.h>
-
 #include <linux/pci_ids.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVFN(slot,func) ((((slot) & 0x1f) << 3) | ((func) & 0x07))
 #define PCI_SLOT(devfn) (((devfn) >> 3) & 0x1f)
 #define PCI_FUNC(devfn) ((devfn) & 0x07)
-
 #define PCIIOC_BASE ('P' << 24 | 'C' << 16 | 'I' << 8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCIIOC_CONTROLLER (PCIIOC_BASE | 0x00)  
 #define PCIIOC_MMAP_IS_IO (PCIIOC_BASE | 0x01)  
 #define PCIIOC_MMAP_IS_MEM (PCIIOC_BASE | 0x02)  
 #define PCIIOC_WRITE_COMBINE (PCIIOC_BASE | 0x03)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/pci_ids.h b/libc/kernel/common/linux/pci_ids.h
index ec5adfb..ec37495 100644
--- a/libc/kernel/common/linux/pci_ids.h
+++ b/libc/kernel/common/linux/pci_ids.h
@@ -7,2264 +7,2547 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #define PCI_CLASS_NOT_DEFINED 0x0000
 #define PCI_CLASS_NOT_DEFINED_VGA 0x0001
-
 #define PCI_BASE_CLASS_STORAGE 0x01
 #define PCI_CLASS_STORAGE_SCSI 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_STORAGE_IDE 0x0101
 #define PCI_CLASS_STORAGE_FLOPPY 0x0102
 #define PCI_CLASS_STORAGE_IPI 0x0103
 #define PCI_CLASS_STORAGE_RAID 0x0104
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_STORAGE_SAS 0x0107
 #define PCI_CLASS_STORAGE_OTHER 0x0180
-
 #define PCI_BASE_CLASS_NETWORK 0x02
 #define PCI_CLASS_NETWORK_ETHERNET 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_NETWORK_TOKEN_RING 0x0201
 #define PCI_CLASS_NETWORK_FDDI 0x0202
 #define PCI_CLASS_NETWORK_ATM 0x0203
 #define PCI_CLASS_NETWORK_OTHER 0x0280
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BASE_CLASS_DISPLAY 0x03
 #define PCI_CLASS_DISPLAY_VGA 0x0300
 #define PCI_CLASS_DISPLAY_XGA 0x0301
 #define PCI_CLASS_DISPLAY_3D 0x0302
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_DISPLAY_OTHER 0x0380
-
 #define PCI_BASE_CLASS_MULTIMEDIA 0x04
 #define PCI_CLASS_MULTIMEDIA_VIDEO 0x0400
 #define PCI_CLASS_MULTIMEDIA_AUDIO 0x0401
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_MULTIMEDIA_PHONE 0x0402
 #define PCI_CLASS_MULTIMEDIA_OTHER 0x0480
-
 #define PCI_BASE_CLASS_MEMORY 0x05
 #define PCI_CLASS_MEMORY_RAM 0x0500
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_MEMORY_FLASH 0x0501
 #define PCI_CLASS_MEMORY_OTHER 0x0580
-
 #define PCI_BASE_CLASS_BRIDGE 0x06
 #define PCI_CLASS_BRIDGE_HOST 0x0600
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_BRIDGE_ISA 0x0601
 #define PCI_CLASS_BRIDGE_EISA 0x0602
 #define PCI_CLASS_BRIDGE_MC 0x0603
 #define PCI_CLASS_BRIDGE_PCI 0x0604
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_BRIDGE_PCMCIA 0x0605
 #define PCI_CLASS_BRIDGE_NUBUS 0x0606
 #define PCI_CLASS_BRIDGE_CARDBUS 0x0607
 #define PCI_CLASS_BRIDGE_RACEWAY 0x0608
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_BRIDGE_OTHER 0x0680
-
 #define PCI_BASE_CLASS_COMMUNICATION 0x07
 #define PCI_CLASS_COMMUNICATION_SERIAL 0x0700
 #define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_COMMUNICATION_MULTISERIAL 0x0702
 #define PCI_CLASS_COMMUNICATION_MODEM 0x0703
 #define PCI_CLASS_COMMUNICATION_OTHER 0x0780
-
 #define PCI_BASE_CLASS_SYSTEM 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_SYSTEM_PIC 0x0800
 #define PCI_CLASS_SYSTEM_PIC_IOAPIC 0x080010
 #define PCI_CLASS_SYSTEM_PIC_IOXAPIC 0x080020
 #define PCI_CLASS_SYSTEM_DMA 0x0801
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_SYSTEM_TIMER 0x0802
 #define PCI_CLASS_SYSTEM_RTC 0x0803
 #define PCI_CLASS_SYSTEM_PCI_HOTPLUG 0x0804
 #define PCI_CLASS_SYSTEM_SDHCI 0x0805
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_SYSTEM_OTHER 0x0880
-
 #define PCI_BASE_CLASS_INPUT 0x09
 #define PCI_CLASS_INPUT_KEYBOARD 0x0900
 #define PCI_CLASS_INPUT_PEN 0x0901
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_INPUT_MOUSE 0x0902
 #define PCI_CLASS_INPUT_SCANNER 0x0903
 #define PCI_CLASS_INPUT_GAMEPORT 0x0904
 #define PCI_CLASS_INPUT_OTHER 0x0980
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BASE_CLASS_DOCKING 0x0a
 #define PCI_CLASS_DOCKING_GENERIC 0x0a00
 #define PCI_CLASS_DOCKING_OTHER 0x0a80
-
 #define PCI_BASE_CLASS_PROCESSOR 0x0b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_PROCESSOR_386 0x0b00
 #define PCI_CLASS_PROCESSOR_486 0x0b01
 #define PCI_CLASS_PROCESSOR_PENTIUM 0x0b02
 #define PCI_CLASS_PROCESSOR_ALPHA 0x0b10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_PROCESSOR_POWERPC 0x0b20
 #define PCI_CLASS_PROCESSOR_MIPS 0x0b30
 #define PCI_CLASS_PROCESSOR_CO 0x0b40
-
 #define PCI_BASE_CLASS_SERIAL 0x0c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_SERIAL_FIREWIRE 0x0c00
 #define PCI_CLASS_SERIAL_ACCESS 0x0c01
 #define PCI_CLASS_SERIAL_SSA 0x0c02
 #define PCI_CLASS_SERIAL_USB 0x0c03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_SERIAL_USB_UHCI 0x0c0300
 #define PCI_CLASS_SERIAL_USB_OHCI 0x0c0310
 #define PCI_CLASS_SERIAL_USB_EHCI 0x0c0320
 #define PCI_CLASS_SERIAL_FIBER 0x0c04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_SERIAL_SMBUS 0x0c05
-
 #define PCI_BASE_CLASS_INTELLIGENT 0x0e
 #define PCI_CLASS_INTELLIGENT_I2O 0x0e00
-
 #define PCI_BASE_CLASS_SATELLITE 0x0f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CLASS_SATELLITE_TV 0x0f00
 #define PCI_CLASS_SATELLITE_AUDIO 0x0f01
 #define PCI_CLASS_SATELLITE_VOICE 0x0f03
 #define PCI_CLASS_SATELLITE_DATA 0x0f04
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BASE_CLASS_CRYPT 0x10
 #define PCI_CLASS_CRYPT_NETWORK 0x1000
 #define PCI_CLASS_CRYPT_ENTERTAINMENT 0x1001
 #define PCI_CLASS_CRYPT_OTHER 0x1080
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BASE_CLASS_SIGNAL_PROCESSING 0x11
 #define PCI_CLASS_SP_DPIO 0x1100
 #define PCI_CLASS_SP_OTHER 0x1180
-
 #define PCI_CLASS_OTHERS 0xff
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_DYNALINK 0x0675
 #define PCI_DEVICE_ID_DYNALINK_IS64PH 0x1702
-
 #define PCI_VENDOR_ID_BERKOM 0x0871
 #define PCI_DEVICE_ID_BERKOM_A1T 0xffa1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_BERKOM_T_CONCEPT 0xffa2
 #define PCI_DEVICE_ID_BERKOM_A4T 0xffa4
 #define PCI_DEVICE_ID_BERKOM_SCITEL_QUADRO 0xffa8
-
 #define PCI_VENDOR_ID_COMPAQ 0x0e11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_COMPAQ_TOKENRING 0x0508
 #define PCI_DEVICE_ID_COMPAQ_TACHYON 0xa0fc
 #define PCI_DEVICE_ID_COMPAQ_SMART2P 0xae10
 #define PCI_DEVICE_ID_COMPAQ_NETEL100 0xae32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_COMPAQ_NETEL10 0xae34
 #define PCI_DEVICE_ID_COMPAQ_TRIFLEX_IDE 0xae33
 #define PCI_DEVICE_ID_COMPAQ_NETFLEX3I 0xae35
 #define PCI_DEVICE_ID_COMPAQ_NETEL100D 0xae40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_COMPAQ_NETEL100PI 0xae43
 #define PCI_DEVICE_ID_COMPAQ_NETEL100I 0xb011
 #define PCI_DEVICE_ID_COMPAQ_CISS 0xb060
 #define PCI_DEVICE_ID_COMPAQ_CISSB 0xb178
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_COMPAQ_CISSC 0x46
 #define PCI_DEVICE_ID_COMPAQ_THUNDER 0xf130
 #define PCI_DEVICE_ID_COMPAQ_NETFLEX3B 0xf150
-
 #define PCI_VENDOR_ID_NCR 0x1000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_LSI_LOGIC 0x1000
 #define PCI_DEVICE_ID_NCR_53C810 0x0001
 #define PCI_DEVICE_ID_NCR_53C820 0x0002
 #define PCI_DEVICE_ID_NCR_53C825 0x0003
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NCR_53C815 0x0004
 #define PCI_DEVICE_ID_LSI_53C810AP 0x0005
 #define PCI_DEVICE_ID_NCR_53C860 0x0006
 #define PCI_DEVICE_ID_LSI_53C1510 0x000a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NCR_53C896 0x000b
 #define PCI_DEVICE_ID_NCR_53C895 0x000c
 #define PCI_DEVICE_ID_NCR_53C885 0x000d
 #define PCI_DEVICE_ID_NCR_53C875 0x000f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NCR_53C1510 0x0010
 #define PCI_DEVICE_ID_LSI_53C895A 0x0012
 #define PCI_DEVICE_ID_LSI_53C875A 0x0013
 #define PCI_DEVICE_ID_LSI_53C1010_33 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LSI_53C1010_66 0x0021
 #define PCI_DEVICE_ID_LSI_53C1030 0x0030
 #define PCI_DEVICE_ID_LSI_1030_53C1035 0x0032
 #define PCI_DEVICE_ID_LSI_53C1035 0x0040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NCR_53C875J 0x008f
 #define PCI_DEVICE_ID_LSI_FC909 0x0621
 #define PCI_DEVICE_ID_LSI_FC929 0x0622
 #define PCI_DEVICE_ID_LSI_FC929_LAN 0x0623
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LSI_FC919 0x0624
 #define PCI_DEVICE_ID_LSI_FC919_LAN 0x0625
 #define PCI_DEVICE_ID_LSI_FC929X 0x0626
 #define PCI_DEVICE_ID_LSI_FC939X 0x0642
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LSI_FC949X 0x0640
 #define PCI_DEVICE_ID_LSI_FC949ES 0x0646
 #define PCI_DEVICE_ID_LSI_FC919X 0x0628
 #define PCI_DEVICE_ID_NCR_YELLOWFIN 0x0701
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LSI_61C102 0x0901
 #define PCI_DEVICE_ID_LSI_63C815 0x1000
 #define PCI_DEVICE_ID_LSI_SAS1064 0x0050
 #define PCI_DEVICE_ID_LSI_SAS1064R 0x0411
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LSI_SAS1066 0x005E
 #define PCI_DEVICE_ID_LSI_SAS1068 0x0054
 #define PCI_DEVICE_ID_LSI_SAS1064A 0x005C
 #define PCI_DEVICE_ID_LSI_SAS1064E 0x0056
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LSI_SAS1066E 0x005A
 #define PCI_DEVICE_ID_LSI_SAS1068E 0x0058
 #define PCI_DEVICE_ID_LSI_SAS1078 0x0060
-
 #define PCI_VENDOR_ID_ATI 0x1002
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_68800 0x4158
 #define PCI_DEVICE_ID_ATI_215CT222 0x4354
 #define PCI_DEVICE_ID_ATI_210888CX 0x4358
 #define PCI_DEVICE_ID_ATI_215ET222 0x4554
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_215GB 0x4742
 #define PCI_DEVICE_ID_ATI_215GD 0x4744
 #define PCI_DEVICE_ID_ATI_215GI 0x4749
 #define PCI_DEVICE_ID_ATI_215GP 0x4750
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_215GQ 0x4751
 #define PCI_DEVICE_ID_ATI_215XL 0x4752
 #define PCI_DEVICE_ID_ATI_215GT 0x4754
 #define PCI_DEVICE_ID_ATI_215GTB 0x4755
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_215_IV 0x4756
 #define PCI_DEVICE_ID_ATI_215_IW 0x4757
 #define PCI_DEVICE_ID_ATI_215_IZ 0x475A
 #define PCI_DEVICE_ID_ATI_210888GX 0x4758
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_215_LB 0x4c42
 #define PCI_DEVICE_ID_ATI_215_LD 0x4c44
 #define PCI_DEVICE_ID_ATI_215_LG 0x4c47
 #define PCI_DEVICE_ID_ATI_215_LI 0x4c49
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_215_LM 0x4c4D
 #define PCI_DEVICE_ID_ATI_215_LN 0x4c4E
 #define PCI_DEVICE_ID_ATI_215_LR 0x4c52
 #define PCI_DEVICE_ID_ATI_215_LS 0x4c53
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_264_LT 0x4c54
-
 #define PCI_DEVICE_ID_ATI_264VT 0x5654
 #define PCI_DEVICE_ID_ATI_264VU 0x5655
 #define PCI_DEVICE_ID_ATI_264VV 0x5656
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_RE 0x5245
 #define PCI_DEVICE_ID_ATI_RAGE128_RF 0x5246
 #define PCI_DEVICE_ID_ATI_RAGE128_RG 0x5247
-
 #define PCI_DEVICE_ID_ATI_RAGE128_RK 0x524b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_RL 0x524c
 #define PCI_DEVICE_ID_ATI_RAGE128_SE 0x5345
 #define PCI_DEVICE_ID_ATI_RAGE128_SF 0x5346
 #define PCI_DEVICE_ID_ATI_RAGE128_SG 0x5347
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_SH 0x5348
 #define PCI_DEVICE_ID_ATI_RAGE128_SK 0x534b
 #define PCI_DEVICE_ID_ATI_RAGE128_SL 0x534c
 #define PCI_DEVICE_ID_ATI_RAGE128_SM 0x534d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_SN 0x534e
-
 #define PCI_DEVICE_ID_ATI_RAGE128_TF 0x5446
 #define PCI_DEVICE_ID_ATI_RAGE128_TL 0x544c
 #define PCI_DEVICE_ID_ATI_RAGE128_TR 0x5452
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_TS 0x5453
 #define PCI_DEVICE_ID_ATI_RAGE128_TT 0x5454
 #define PCI_DEVICE_ID_ATI_RAGE128_TU 0x5455
-
 #define PCI_DEVICE_ID_ATI_RAGE128_LE 0x4c45
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_LF 0x4c46
-
 #define PCI_DEVICE_ID_ATI_RAGE128_MF 0x4d46
 #define PCI_DEVICE_ID_ATI_RAGE128_ML 0x4d4c
-
 #define PCI_DEVICE_ID_ATI_RAGE128_PA 0x5041
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_PB 0x5042
 #define PCI_DEVICE_ID_ATI_RAGE128_PC 0x5043
 #define PCI_DEVICE_ID_ATI_RAGE128_PD 0x5044
 #define PCI_DEVICE_ID_ATI_RAGE128_PE 0x5045
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_PF 0x5046
-
 #define PCI_DEVICE_ID_ATI_RAGE128_PG 0x5047
 #define PCI_DEVICE_ID_ATI_RAGE128_PH 0x5048
 #define PCI_DEVICE_ID_ATI_RAGE128_PI 0x5049
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_PJ 0x504A
 #define PCI_DEVICE_ID_ATI_RAGE128_PK 0x504B
 #define PCI_DEVICE_ID_ATI_RAGE128_PL 0x504C
 #define PCI_DEVICE_ID_ATI_RAGE128_PM 0x504D
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_PN 0x504E
 #define PCI_DEVICE_ID_ATI_RAGE128_PO 0x504F
 #define PCI_DEVICE_ID_ATI_RAGE128_PP 0x5050
 #define PCI_DEVICE_ID_ATI_RAGE128_PQ 0x5051
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_PR 0x5052
 #define PCI_DEVICE_ID_ATI_RAGE128_PS 0x5053
 #define PCI_DEVICE_ID_ATI_RAGE128_PT 0x5054
 #define PCI_DEVICE_ID_ATI_RAGE128_PU 0x5055
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RAGE128_PV 0x5056
 #define PCI_DEVICE_ID_ATI_RAGE128_PW 0x5057
 #define PCI_DEVICE_ID_ATI_RAGE128_PX 0x5058
-
 #define PCI_DEVICE_ID_ATI_RADEON_QD 0x5144
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RADEON_QE 0x5145
 #define PCI_DEVICE_ID_ATI_RADEON_QF 0x5146
 #define PCI_DEVICE_ID_ATI_RADEON_QG 0x5147
-
 #define PCI_DEVICE_ID_ATI_RADEON_QY 0x5159
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RADEON_QZ 0x515a
-
 #define PCI_DEVICE_ID_ATI_RADEON_QL 0x514c
 #define PCI_DEVICE_ID_ATI_RADEON_QN 0x514e
 #define PCI_DEVICE_ID_ATI_RADEON_QO 0x514f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RADEON_Ql 0x516c
 #define PCI_DEVICE_ID_ATI_RADEON_BB 0x4242
-
 #define PCI_DEVICE_ID_ATI_RADEON_QM 0x514d
-
 #define PCI_DEVICE_ID_ATI_RADEON_QW 0x5157
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RADEON_QX 0x5158
-
 #define PCI_DEVICE_ID_ATI_RADEON_Id 0x4964
 #define PCI_DEVICE_ID_ATI_RADEON_Ie 0x4965
 #define PCI_DEVICE_ID_ATI_RADEON_If 0x4966
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RADEON_Ig 0x4967
-
 #define PCI_DEVICE_ID_ATI_RADEON_Ya 0x5961
 #define PCI_DEVICE_ID_ATI_RADEON_Yd 0x5964
-
 #define PCI_DEVICE_ID_ATI_RADEON_ND 0x4e44
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RADEON_NE 0x4e45
 #define PCI_DEVICE_ID_ATI_RADEON_NF 0x4e46
 #define PCI_DEVICE_ID_ATI_RADEON_NG 0x4e47
-
 #define PCI_DEVICE_ID_ATI_RADEON_LY 0x4c59
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RADEON_LZ 0x4c5a
-
 #define PCI_DEVICE_ID_ATI_RADEON_LW 0x4c57
 #define PCI_DEVICE_ID_ATI_RADEON_LX 0x4c58
-
 #define PCI_DEVICE_ID_ATI_RADEON_Ld 0x4c64
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RADEON_Le 0x4c65
 #define PCI_DEVICE_ID_ATI_RADEON_Lf 0x4c66
 #define PCI_DEVICE_ID_ATI_RADEON_Lg 0x4c67
-
 #define PCI_DEVICE_ID_ATI_RS100 0xcab0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RS200 0xcab2
 #define PCI_DEVICE_ID_ATI_RS200_B 0xcbb2
 #define PCI_DEVICE_ID_ATI_RS250 0xcab3
 #define PCI_DEVICE_ID_ATI_RS300_100 0x5830
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RS300_133 0x5831
 #define PCI_DEVICE_ID_ATI_RS300_166 0x5832
 #define PCI_DEVICE_ID_ATI_RS300_200 0x5833
 #define PCI_DEVICE_ID_ATI_RS350_100 0x7830
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RS350_133 0x7831
 #define PCI_DEVICE_ID_ATI_RS350_166 0x7832
 #define PCI_DEVICE_ID_ATI_RS350_200 0x7833
 #define PCI_DEVICE_ID_ATI_RS400_100 0x5a30
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_RS400_133 0x5a31
 #define PCI_DEVICE_ID_ATI_RS400_166 0x5a32
 #define PCI_DEVICE_ID_ATI_RS400_200 0x5a33
 #define PCI_DEVICE_ID_ATI_RS480 0x5950
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_IXP200_IDE 0x4349
 #define PCI_DEVICE_ID_ATI_IXP200_SMBUS 0x4353
 #define PCI_DEVICE_ID_ATI_IXP300_SMBUS 0x4363
 #define PCI_DEVICE_ID_ATI_IXP300_IDE 0x4369
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_IXP300_SATA 0x436e
 #define PCI_DEVICE_ID_ATI_IXP400_SMBUS 0x4372
 #define PCI_DEVICE_ID_ATI_IXP400_IDE 0x4376
 #define PCI_DEVICE_ID_ATI_IXP400_SATA 0x4379
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ATI_IXP400_SATA2 0x437a
 #define PCI_DEVICE_ID_ATI_IXP600_SATA 0x4380
 #define PCI_DEVICE_ID_ATI_IXP600_SRAID 0x4381
 #define PCI_DEVICE_ID_ATI_IXP600_IDE 0x438c
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_VLSI 0x1004
 #define PCI_DEVICE_ID_VLSI_82C592 0x0005
 #define PCI_DEVICE_ID_VLSI_82C593 0x0006
 #define PCI_DEVICE_ID_VLSI_82C594 0x0007
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VLSI_82C597 0x0009
 #define PCI_DEVICE_ID_VLSI_82C541 0x000c
 #define PCI_DEVICE_ID_VLSI_82C543 0x000d
 #define PCI_DEVICE_ID_VLSI_82C532 0x0101
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VLSI_82C534 0x0102
 #define PCI_DEVICE_ID_VLSI_82C535 0x0104
 #define PCI_DEVICE_ID_VLSI_82C147 0x0105
 #define PCI_DEVICE_ID_VLSI_VAS96011 0x0702
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_ADL 0x1005
 #define PCI_DEVICE_ID_ADL_2301 0x2301
-
 #define PCI_VENDOR_ID_NS 0x100b
 #define PCI_DEVICE_ID_NS_87415 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NS_87560_LIO 0x000e
 #define PCI_DEVICE_ID_NS_87560_USB 0x0012
 #define PCI_DEVICE_ID_NS_83815 0x0020
 #define PCI_DEVICE_ID_NS_83820 0x0022
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NS_CS5535_ISA 0x002b
 #define PCI_DEVICE_ID_NS_CS5535_IDE 0x002d
 #define PCI_DEVICE_ID_NS_CS5535_AUDIO 0x002e
 #define PCI_DEVICE_ID_NS_CS5535_USB 0x002f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NS_CS5535_VIDEO 0x0030
 #define PCI_DEVICE_ID_NS_SATURN 0x0035
 #define PCI_DEVICE_ID_NS_SCx200_BRIDGE 0x0500
 #define PCI_DEVICE_ID_NS_SCx200_SMI 0x0501
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NS_SCx200_IDE 0x0502
 #define PCI_DEVICE_ID_NS_SCx200_AUDIO 0x0503
 #define PCI_DEVICE_ID_NS_SCx200_VIDEO 0x0504
 #define PCI_DEVICE_ID_NS_SCx200_XBUS 0x0505
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NS_SC1100_BRIDGE 0x0510
 #define PCI_DEVICE_ID_NS_SC1100_SMI 0x0511
 #define PCI_DEVICE_ID_NS_SC1100_XBUS 0x0515
 #define PCI_DEVICE_ID_NS_87410 0xd001
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NS_CS5535_HOST_BRIDGE 0x0028
 #define PCI_DEVICE_ID_NS_CS5535_ISA_BRIDGE 0x002b
-
 #define PCI_VENDOR_ID_TSENG 0x100c
 #define PCI_DEVICE_ID_TSENG_W32P_2 0x3202
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TSENG_W32P_b 0x3205
 #define PCI_DEVICE_ID_TSENG_W32P_c 0x3206
 #define PCI_DEVICE_ID_TSENG_W32P_d 0x3207
 #define PCI_DEVICE_ID_TSENG_ET6000 0x3208
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_WEITEK 0x100e
 #define PCI_DEVICE_ID_WEITEK_P9000 0x9001
 #define PCI_DEVICE_ID_WEITEK_P9100 0x9100
-
 #define PCI_VENDOR_ID_DEC 0x1011
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_DEC_BRD 0x0001
 #define PCI_DEVICE_ID_DEC_TULIP 0x0002
 #define PCI_DEVICE_ID_DEC_TGA 0x0004
 #define PCI_DEVICE_ID_DEC_TULIP_FAST 0x0009
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_DEC_TGA2 0x000D
 #define PCI_DEVICE_ID_DEC_FDDI 0x000F
 #define PCI_DEVICE_ID_DEC_TULIP_PLUS 0x0014
 #define PCI_DEVICE_ID_DEC_21142 0x0019
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_DEC_21052 0x0021
 #define PCI_DEVICE_ID_DEC_21150 0x0022
 #define PCI_DEVICE_ID_DEC_21152 0x0024
 #define PCI_DEVICE_ID_DEC_21153 0x0025
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_DEC_21154 0x0026
 #define PCI_DEVICE_ID_DEC_21285 0x1065
 #define PCI_DEVICE_ID_COMPAQ_42XX 0x0046
-
 #define PCI_VENDOR_ID_CIRRUS 0x1013
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CIRRUS_7548 0x0038
 #define PCI_DEVICE_ID_CIRRUS_5430 0x00a0
 #define PCI_DEVICE_ID_CIRRUS_5434_4 0x00a4
 #define PCI_DEVICE_ID_CIRRUS_5434_8 0x00a8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CIRRUS_5436 0x00ac
 #define PCI_DEVICE_ID_CIRRUS_5446 0x00b8
 #define PCI_DEVICE_ID_CIRRUS_5480 0x00bc
 #define PCI_DEVICE_ID_CIRRUS_5462 0x00d0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CIRRUS_5464 0x00d4
 #define PCI_DEVICE_ID_CIRRUS_5465 0x00d6
 #define PCI_DEVICE_ID_CIRRUS_6729 0x1100
 #define PCI_DEVICE_ID_CIRRUS_6832 0x1110
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CIRRUS_7543 0x1202
 #define PCI_DEVICE_ID_CIRRUS_4610 0x6001
 #define PCI_DEVICE_ID_CIRRUS_4612 0x6003
 #define PCI_DEVICE_ID_CIRRUS_4615 0x6004
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_IBM 0x1014
 #define PCI_DEVICE_ID_IBM_TR 0x0018
 #define PCI_DEVICE_ID_IBM_TR_WAKE 0x003e
 #define PCI_DEVICE_ID_IBM_CPC710_PCI64 0x00fc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_IBM_SNIPE 0x0180
 #define PCI_DEVICE_ID_IBM_CITRINE 0x028C
 #define PCI_DEVICE_ID_IBM_GEMSTONE 0xB166
 #define PCI_DEVICE_ID_IBM_OBSIDIAN 0x02BD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_IBM_ICOM_DEV_ID_1 0x0031
 #define PCI_DEVICE_ID_IBM_ICOM_DEV_ID_2 0x0219
 #define PCI_DEVICE_ID_IBM_ICOM_V2_TWO_PORTS_RVX 0x021A
 #define PCI_DEVICE_ID_IBM_ICOM_V2_ONE_PORT_RVX_ONE_PORT_MDM 0x0251
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_IBM_ICOM_FOUR_PORT_MODEL 0x252
-
 #define PCI_VENDOR_ID_COMPEX2 0x101a  
 #define PCI_DEVICE_ID_COMPEX2_100VG 0x0005
-
 #define PCI_VENDOR_ID_WD 0x101c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_WD_90C 0xc24a
-
 #define PCI_VENDOR_ID_AMI 0x101e
 #define PCI_DEVICE_ID_AMI_MEGARAID3 0x1960
 #define PCI_DEVICE_ID_AMI_MEGARAID 0x9010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AMI_MEGARAID2 0x9060
-
 #define PCI_VENDOR_ID_AMD 0x1022
 #define PCI_DEVICE_ID_AMD_K8_NB 0x1100
 #define PCI_DEVICE_ID_AMD_LANCE 0x2000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001
 #define PCI_DEVICE_ID_AMD_SCSI 0x2020
 #define PCI_DEVICE_ID_AMD_SERENADE 0x36c0
 #define PCI_DEVICE_ID_AMD_FE_GATE_7006 0x7006
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AMD_FE_GATE_7007 0x7007
 #define PCI_DEVICE_ID_AMD_FE_GATE_700C 0x700C
 #define PCI_DEVICE_ID_AMD_FE_GATE_700E 0x700E
 #define PCI_DEVICE_ID_AMD_COBRA_7401 0x7401
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AMD_VIPER_7409 0x7409
 #define PCI_DEVICE_ID_AMD_VIPER_740B 0x740B
 #define PCI_DEVICE_ID_AMD_VIPER_7410 0x7410
 #define PCI_DEVICE_ID_AMD_VIPER_7411 0x7411
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AMD_VIPER_7413 0x7413
 #define PCI_DEVICE_ID_AMD_VIPER_7440 0x7440
 #define PCI_DEVICE_ID_AMD_OPUS_7441 0x7441
 #define PCI_DEVICE_ID_AMD_OPUS_7443 0x7443
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AMD_VIPER_7443 0x7443
 #define PCI_DEVICE_ID_AMD_OPUS_7445 0x7445
 #define PCI_DEVICE_ID_AMD_8111_LPC 0x7468
 #define PCI_DEVICE_ID_AMD_8111_IDE 0x7469
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AMD_8111_SMBUS2 0x746a
 #define PCI_DEVICE_ID_AMD_8111_SMBUS 0x746b
 #define PCI_DEVICE_ID_AMD_8111_AUDIO 0x746d
 #define PCI_DEVICE_ID_AMD_8151_0 0x7454
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AMD_8131_BRIDGE 0x7450
 #define PCI_DEVICE_ID_AMD_8131_APIC 0x7451
 #define PCI_DEVICE_ID_AMD_CS5536_ISA 0x2090
 #define PCI_DEVICE_ID_AMD_CS5536_FLASH 0x2091
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AMD_CS5536_AUDIO 0x2093
 #define PCI_DEVICE_ID_AMD_CS5536_OHC 0x2094
 #define PCI_DEVICE_ID_AMD_CS5536_EHC 0x2095
 #define PCI_DEVICE_ID_AMD_CS5536_UDC 0x2096
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AMD_CS5536_UOC 0x2097
 #define PCI_DEVICE_ID_AMD_CS5536_IDE 0x209A
-
 #define PCI_DEVICE_ID_AMD_LX_VIDEO 0x2081
 #define PCI_DEVICE_ID_AMD_LX_AES 0x2082
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_TRIDENT 0x1023
 #define PCI_DEVICE_ID_TRIDENT_4DWAVE_DX 0x2000
 #define PCI_DEVICE_ID_TRIDENT_4DWAVE_NX 0x2001
 #define PCI_DEVICE_ID_TRIDENT_9320 0x9320
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TRIDENT_9388 0x9388
 #define PCI_DEVICE_ID_TRIDENT_9397 0x9397
 #define PCI_DEVICE_ID_TRIDENT_939A 0x939A
 #define PCI_DEVICE_ID_TRIDENT_9520 0x9520
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TRIDENT_9525 0x9525
 #define PCI_DEVICE_ID_TRIDENT_9420 0x9420
 #define PCI_DEVICE_ID_TRIDENT_9440 0x9440
 #define PCI_DEVICE_ID_TRIDENT_9660 0x9660
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TRIDENT_9750 0x9750
 #define PCI_DEVICE_ID_TRIDENT_9850 0x9850
 #define PCI_DEVICE_ID_TRIDENT_9880 0x9880
 #define PCI_DEVICE_ID_TRIDENT_8400 0x8400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TRIDENT_8420 0x8420
 #define PCI_DEVICE_ID_TRIDENT_8500 0x8500
-
 #define PCI_VENDOR_ID_AI 0x1025
 #define PCI_DEVICE_ID_AI_M1435 0x1435
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_DELL 0x1028
 #define PCI_DEVICE_ID_DELL_RACIII 0x0008
 #define PCI_DEVICE_ID_DELL_RAC4 0x0012
 #define PCI_DEVICE_ID_DELL_PERC5 0x0015
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_MATROX 0x102B
 #define PCI_DEVICE_ID_MATROX_MGA_2 0x0518
 #define PCI_DEVICE_ID_MATROX_MIL 0x0519
 #define PCI_DEVICE_ID_MATROX_MYS 0x051A
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MATROX_MIL_2 0x051b
 #define PCI_DEVICE_ID_MATROX_MYS_AGP 0x051e
 #define PCI_DEVICE_ID_MATROX_MIL_2_AGP 0x051f
 #define PCI_DEVICE_ID_MATROX_MGA_IMP 0x0d10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MATROX_G100_MM 0x1000
 #define PCI_DEVICE_ID_MATROX_G100_AGP 0x1001
 #define PCI_DEVICE_ID_MATROX_G200_PCI 0x0520
 #define PCI_DEVICE_ID_MATROX_G200_AGP 0x0521
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MATROX_G400 0x0525
 #define PCI_DEVICE_ID_MATROX_G550 0x2527
 #define PCI_DEVICE_ID_MATROX_VIA 0x4536
-
 #define PCI_VENDOR_ID_CT 0x102c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CT_69000 0x00c0
 #define PCI_DEVICE_ID_CT_65545 0x00d8
 #define PCI_DEVICE_ID_CT_65548 0x00dc
 #define PCI_DEVICE_ID_CT_65550 0x00e0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CT_65554 0x00e4
 #define PCI_DEVICE_ID_CT_65555 0x00e5
-
 #define PCI_VENDOR_ID_MIRO 0x1031
 #define PCI_DEVICE_ID_MIRO_36050 0x5601
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MIRO_DC10PLUS 0x7efe
 #define PCI_DEVICE_ID_MIRO_DC30PLUS 0xd801
-
 #define PCI_VENDOR_ID_NEC 0x1033
 #define PCI_DEVICE_ID_NEC_CBUS_1 0x0001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NEC_LOCAL 0x0002  
 #define PCI_DEVICE_ID_NEC_ATM 0x0003  
 #define PCI_DEVICE_ID_NEC_R4000 0x0004  
 #define PCI_DEVICE_ID_NEC_486 0x0005  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NEC_ACCEL_1 0x0006  
 #define PCI_DEVICE_ID_NEC_UXBUS 0x0007  
 #define PCI_DEVICE_ID_NEC_ACCEL_2 0x0008  
 #define PCI_DEVICE_ID_NEC_GRAPH 0x0009  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NEC_VL 0x0016  
 #define PCI_DEVICE_ID_NEC_STARALPHA2 0x002c  
 #define PCI_DEVICE_ID_NEC_CBUS_2 0x002d  
 #define PCI_DEVICE_ID_NEC_USB 0x0035  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NEC_CBUS_3 0x003b
 #define PCI_DEVICE_ID_NEC_NAPCCARD 0x003e
 #define PCI_DEVICE_ID_NEC_PCX2 0x0046  
 #define PCI_DEVICE_ID_NEC_NILE4 0x005a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NEC_VRC5476 0x009b
 #define PCI_DEVICE_ID_NEC_VRC4173 0x00a5
 #define PCI_DEVICE_ID_NEC_VRC5477_AC97 0x00a6
 #define PCI_DEVICE_ID_NEC_PC9821CS01 0x800c  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NEC_PC9821NRB06 0x800d  
-
 #define PCI_VENDOR_ID_FD 0x1036
 #define PCI_DEVICE_ID_FD_36C70 0x0000
-
 #define PCI_VENDOR_ID_SI 0x1039
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_5591_AGP 0x0001
 #define PCI_DEVICE_ID_SI_6202 0x0002
 #define PCI_DEVICE_ID_SI_503 0x0008
 #define PCI_DEVICE_ID_SI_ACPI 0x0009
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_SMBUS 0x0016
 #define PCI_DEVICE_ID_SI_LPC 0x0018
 #define PCI_DEVICE_ID_SI_5597_VGA 0x0200
 #define PCI_DEVICE_ID_SI_6205 0x0205
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_501 0x0406
 #define PCI_DEVICE_ID_SI_496 0x0496
 #define PCI_DEVICE_ID_SI_300 0x0300
 #define PCI_DEVICE_ID_SI_315H 0x0310
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_315 0x0315
 #define PCI_DEVICE_ID_SI_315PRO 0x0325
 #define PCI_DEVICE_ID_SI_530 0x0530
 #define PCI_DEVICE_ID_SI_540 0x0540
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_550 0x0550
 #define PCI_DEVICE_ID_SI_540_VGA 0x5300
 #define PCI_DEVICE_ID_SI_550_VGA 0x5315
 #define PCI_DEVICE_ID_SI_620 0x0620
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_630 0x0630
 #define PCI_DEVICE_ID_SI_633 0x0633
 #define PCI_DEVICE_ID_SI_635 0x0635
 #define PCI_DEVICE_ID_SI_640 0x0640
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_645 0x0645
 #define PCI_DEVICE_ID_SI_646 0x0646
 #define PCI_DEVICE_ID_SI_648 0x0648
 #define PCI_DEVICE_ID_SI_650 0x0650
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_651 0x0651
 #define PCI_DEVICE_ID_SI_655 0x0655
 #define PCI_DEVICE_ID_SI_661 0x0661
 #define PCI_DEVICE_ID_SI_730 0x0730
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_733 0x0733
 #define PCI_DEVICE_ID_SI_630_VGA 0x6300
 #define PCI_DEVICE_ID_SI_735 0x0735
 #define PCI_DEVICE_ID_SI_740 0x0740
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_741 0x0741
 #define PCI_DEVICE_ID_SI_745 0x0745
 #define PCI_DEVICE_ID_SI_746 0x0746
 #define PCI_DEVICE_ID_SI_755 0x0755
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_760 0x0760
 #define PCI_DEVICE_ID_SI_900 0x0900
 #define PCI_DEVICE_ID_SI_961 0x0961
 #define PCI_DEVICE_ID_SI_962 0x0962
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_963 0x0963
 #define PCI_DEVICE_ID_SI_965 0x0965
 #define PCI_DEVICE_ID_SI_966 0x0966
 #define PCI_DEVICE_ID_SI_968 0x0968
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_5511 0x5511
 #define PCI_DEVICE_ID_SI_5513 0x5513
 #define PCI_DEVICE_ID_SI_5517 0x5517
 #define PCI_DEVICE_ID_SI_5518 0x5518
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_5571 0x5571
 #define PCI_DEVICE_ID_SI_5581 0x5581
 #define PCI_DEVICE_ID_SI_5582 0x5582
 #define PCI_DEVICE_ID_SI_5591 0x5591
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_5596 0x5596
 #define PCI_DEVICE_ID_SI_5597 0x5597
 #define PCI_DEVICE_ID_SI_5598 0x5598
 #define PCI_DEVICE_ID_SI_5600 0x5600
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SI_7012 0x7012
 #define PCI_DEVICE_ID_SI_7013 0x7013
 #define PCI_DEVICE_ID_SI_7016 0x7016
 #define PCI_DEVICE_ID_SI_7018 0x7018
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_HP 0x103c
 #define PCI_DEVICE_ID_HP_VISUALIZE_EG 0x1005
 #define PCI_DEVICE_ID_HP_VISUALIZE_FX6 0x1006
 #define PCI_DEVICE_ID_HP_VISUALIZE_FX4 0x1008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_HP_VISUALIZE_FX2 0x100a
 #define PCI_DEVICE_ID_HP_TACHYON 0x1028
 #define PCI_DEVICE_ID_HP_TACHLITE 0x1029
 #define PCI_DEVICE_ID_HP_J2585A 0x1030
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_HP_J2585B 0x1031
 #define PCI_DEVICE_ID_HP_J2973A 0x1040
 #define PCI_DEVICE_ID_HP_J2970A 0x1042
 #define PCI_DEVICE_ID_HP_DIVA 0x1048
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_HP_DIVA_TOSCA1 0x1049
 #define PCI_DEVICE_ID_HP_DIVA_TOSCA2 0x104A
 #define PCI_DEVICE_ID_HP_DIVA_MAESTRO 0x104B
 #define PCI_DEVICE_ID_HP_REO_IOC 0x10f1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_HP_VISUALIZE_FXE 0x108b
 #define PCI_DEVICE_ID_HP_DIVA_HALFDOME 0x1223
 #define PCI_DEVICE_ID_HP_DIVA_KEYSTONE 0x1226
 #define PCI_DEVICE_ID_HP_DIVA_POWERBAR 0x1227
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_HP_ZX1_IOC 0x122a
 #define PCI_DEVICE_ID_HP_PCIX_LBA 0x122e
 #define PCI_DEVICE_ID_HP_SX1000_IOC 0x127c
 #define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290
 #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301
 #define PCI_DEVICE_ID_HP_DIVA_HURRICANE 0x132a
 #define PCI_DEVICE_ID_HP_CISSA 0x3220
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_HP_CISSC 0x3230
 #define PCI_DEVICE_ID_HP_CISSD 0x3238
 #define PCI_DEVICE_ID_HP_ZX2_IOC 0x4031
-
 #define PCI_VENDOR_ID_PCTECH 0x1042
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_PCTECH_RZ1000 0x1000
 #define PCI_DEVICE_ID_PCTECH_RZ1001 0x1001
 #define PCI_DEVICE_ID_PCTECH_SAMURAI_IDE 0x3020
-
 #define PCI_VENDOR_ID_ASUSTEK 0x1043
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ASUSTEK_0675 0x0675
-
 #define PCI_VENDOR_ID_DPT 0x1044
 #define PCI_DEVICE_ID_DPT 0xa400
-
 #define PCI_VENDOR_ID_OPTI 0x1045
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_OPTI_82C558 0xc558
 #define PCI_DEVICE_ID_OPTI_82C621 0xc621
 #define PCI_DEVICE_ID_OPTI_82C700 0xc700
 #define PCI_DEVICE_ID_OPTI_82C825 0xd568
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_ELSA 0x1048
 #define PCI_DEVICE_ID_ELSA_MICROLINK 0x1000
 #define PCI_DEVICE_ID_ELSA_QS3000 0x3000
-
 #define PCI_VENDOR_ID_BUSLOGIC 0x104B
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC 0x0140
 #define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER 0x1040
 #define PCI_DEVICE_ID_BUSLOGIC_FLASHPOINT 0x8130
-
 #define PCI_VENDOR_ID_TI 0x104c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TI_TVP4020 0x3d07
 #define PCI_DEVICE_ID_TI_4450 0x8011
 #define PCI_DEVICE_ID_TI_XX21_XX11 0x8031
 #define PCI_DEVICE_ID_TI_XX21_XX11_SD 0x8034
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TI_X515 0x8036
 #define PCI_DEVICE_ID_TI_XX12 0x8039
 #define PCI_DEVICE_ID_TI_1130 0xac12
 #define PCI_DEVICE_ID_TI_1031 0xac13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TI_1131 0xac15
 #define PCI_DEVICE_ID_TI_1250 0xac16
 #define PCI_DEVICE_ID_TI_1220 0xac17
 #define PCI_DEVICE_ID_TI_1221 0xac19
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TI_1210 0xac1a
 #define PCI_DEVICE_ID_TI_1450 0xac1b
 #define PCI_DEVICE_ID_TI_1225 0xac1c
 #define PCI_DEVICE_ID_TI_1251A 0xac1d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TI_1211 0xac1e
 #define PCI_DEVICE_ID_TI_1251B 0xac1f
 #define PCI_DEVICE_ID_TI_4410 0xac41
 #define PCI_DEVICE_ID_TI_4451 0xac42
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TI_4510 0xac44
 #define PCI_DEVICE_ID_TI_4520 0xac46
 #define PCI_DEVICE_ID_TI_7510 0xac47
 #define PCI_DEVICE_ID_TI_7610 0xac48
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TI_7410 0xac49
 #define PCI_DEVICE_ID_TI_1410 0xac50
 #define PCI_DEVICE_ID_TI_1420 0xac51
 #define PCI_DEVICE_ID_TI_1451A 0xac52
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TI_1620 0xac54
 #define PCI_DEVICE_ID_TI_1520 0xac55
 #define PCI_DEVICE_ID_TI_1510 0xac56
 #define PCI_DEVICE_ID_TI_X620 0xac8d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TI_X420 0xac8e
-
 #define PCI_VENDOR_ID_SONY 0x104d
-
 #define PCI_VENDOR_ID_WINBOND2 0x1050
 #define PCI_DEVICE_ID_WINBOND2_89C940F 0x5a5a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_WINBOND2_6692 0x6692
-
 #define PCI_VENDOR_ID_ANIGMA 0x1051
 #define PCI_DEVICE_ID_ANIGMA_MC145575 0x0100
-
 #define PCI_VENDOR_ID_EFAR 0x1055
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_EFAR_SLC90E66_1 0x9130
 #define PCI_DEVICE_ID_EFAR_SLC90E66_3 0x9463
-
 #define PCI_VENDOR_ID_MOTOROLA 0x1057
 #define PCI_DEVICE_ID_MOTOROLA_MPC105 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MOTOROLA_MPC106 0x0002
 #define PCI_DEVICE_ID_MOTOROLA_MPC107 0x0004
 #define PCI_DEVICE_ID_MOTOROLA_RAVEN 0x4801
 #define PCI_DEVICE_ID_MOTOROLA_FALCON 0x4802
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MOTOROLA_HAWK 0x4803
 #define PCI_DEVICE_ID_MOTOROLA_HARRIER 0x480b
 #define PCI_DEVICE_ID_MOTOROLA_MPC5200 0x5803
 #define PCI_DEVICE_ID_MOTOROLA_MPC5200B 0x5809
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_PROMISE 0x105a
 #define PCI_DEVICE_ID_PROMISE_20265 0x0d30
 #define PCI_DEVICE_ID_PROMISE_20267 0x4d30
 #define PCI_DEVICE_ID_PROMISE_20246 0x4d33
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_PROMISE_20262 0x4d38
 #define PCI_DEVICE_ID_PROMISE_20263 0x0D38
 #define PCI_DEVICE_ID_PROMISE_20268 0x4d68
 #define PCI_DEVICE_ID_PROMISE_20269 0x4d69
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_PROMISE_20270 0x6268
 #define PCI_DEVICE_ID_PROMISE_20271 0x6269
 #define PCI_DEVICE_ID_PROMISE_20275 0x1275
 #define PCI_DEVICE_ID_PROMISE_20276 0x5275
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_PROMISE_20277 0x7275
-
 #define PCI_VENDOR_ID_UMC 0x1060
 #define PCI_DEVICE_ID_UMC_UM8673F 0x0101
 #define PCI_DEVICE_ID_UMC_UM8886BF 0x673a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_UMC_UM8886A 0x886a
-
 #define PCI_VENDOR_ID_MYLEX 0x1069
 #define PCI_DEVICE_ID_MYLEX_DAC960_P 0x0001
 #define PCI_DEVICE_ID_MYLEX_DAC960_PD 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MYLEX_DAC960_PG 0x0010
 #define PCI_DEVICE_ID_MYLEX_DAC960_LA 0x0020
 #define PCI_DEVICE_ID_MYLEX_DAC960_LP 0x0050
 #define PCI_DEVICE_ID_MYLEX_DAC960_BA 0xBA56
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MYLEX_DAC960_GEM 0xB166
-
 #define PCI_VENDOR_ID_APPLE 0x106b
 #define PCI_DEVICE_ID_APPLE_BANDIT 0x0001
 #define PCI_DEVICE_ID_APPLE_HYDRA 0x000e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_APPLE_UNI_N_FW 0x0018
 #define PCI_DEVICE_ID_APPLE_UNI_N_AGP 0x0020
 #define PCI_DEVICE_ID_APPLE_UNI_N_GMAC 0x0021
 #define PCI_DEVICE_ID_APPLE_UNI_N_GMACP 0x0024
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_APPLE_UNI_N_AGP_P 0x0027
 #define PCI_DEVICE_ID_APPLE_UNI_N_AGP15 0x002d
 #define PCI_DEVICE_ID_APPLE_UNI_N_PCI15 0x002e
 #define PCI_DEVICE_ID_APPLE_UNI_N_GMAC2 0x0032
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_APPLE_UNI_N_ATA 0x0033
 #define PCI_DEVICE_ID_APPLE_UNI_N_AGP2 0x0034
 #define PCI_DEVICE_ID_APPLE_IPID_ATA100 0x003b
 #define PCI_DEVICE_ID_APPLE_K2_ATA100 0x0043
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_APPLE_U3_AGP 0x004b
 #define PCI_DEVICE_ID_APPLE_K2_GMAC 0x004c
 #define PCI_DEVICE_ID_APPLE_SH_ATA 0x0050
 #define PCI_DEVICE_ID_APPLE_SH_SUNGEM 0x0051
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_APPLE_U3L_AGP 0x0058
 #define PCI_DEVICE_ID_APPLE_U3H_AGP 0x0059
 #define PCI_DEVICE_ID_APPLE_IPID2_AGP 0x0066
 #define PCI_DEVICE_ID_APPLE_IPID2_ATA 0x0069
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_APPLE_IPID2_FW 0x006a
 #define PCI_DEVICE_ID_APPLE_IPID2_GMAC 0x006b
 #define PCI_DEVICE_ID_APPLE_TIGON3 0x1645
-
 #define PCI_VENDOR_ID_YAMAHA 0x1073
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_YAMAHA_724 0x0004
 #define PCI_DEVICE_ID_YAMAHA_724F 0x000d
 #define PCI_DEVICE_ID_YAMAHA_740 0x000a
 #define PCI_DEVICE_ID_YAMAHA_740C 0x000c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_YAMAHA_744 0x0010
 #define PCI_DEVICE_ID_YAMAHA_754 0x0012
-
 #define PCI_VENDOR_ID_QLOGIC 0x1077
 #define PCI_DEVICE_ID_QLOGIC_ISP10160 0x1016
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_QLOGIC_ISP1020 0x1020
 #define PCI_DEVICE_ID_QLOGIC_ISP1080 0x1080
 #define PCI_DEVICE_ID_QLOGIC_ISP12160 0x1216
 #define PCI_DEVICE_ID_QLOGIC_ISP1240 0x1240
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_QLOGIC_ISP1280 0x1280
 #define PCI_DEVICE_ID_QLOGIC_ISP2100 0x2100
 #define PCI_DEVICE_ID_QLOGIC_ISP2200 0x2200
 #define PCI_DEVICE_ID_QLOGIC_ISP2300 0x2300
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_QLOGIC_ISP2312 0x2312
 #define PCI_DEVICE_ID_QLOGIC_ISP2322 0x2322
 #define PCI_DEVICE_ID_QLOGIC_ISP6312 0x6312
 #define PCI_DEVICE_ID_QLOGIC_ISP6322 0x6322
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_QLOGIC_ISP2422 0x2422
 #define PCI_DEVICE_ID_QLOGIC_ISP2432 0x2432
 #define PCI_DEVICE_ID_QLOGIC_ISP2512 0x2512
 #define PCI_DEVICE_ID_QLOGIC_ISP2522 0x2522
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_QLOGIC_ISP5422 0x5422
 #define PCI_DEVICE_ID_QLOGIC_ISP5432 0x5432
-
 #define PCI_VENDOR_ID_CYRIX 0x1078
 #define PCI_DEVICE_ID_CYRIX_5510 0x0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CYRIX_PCI_MASTER 0x0001
 #define PCI_DEVICE_ID_CYRIX_5520 0x0002
 #define PCI_DEVICE_ID_CYRIX_5530_LEGACY 0x0100
 #define PCI_DEVICE_ID_CYRIX_5530_IDE 0x0102
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CYRIX_5530_AUDIO 0x0103
 #define PCI_DEVICE_ID_CYRIX_5530_VIDEO 0x0104
-
 #define PCI_VENDOR_ID_CONTAQ 0x1080
 #define PCI_DEVICE_ID_CONTAQ_82C693 0xc693
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_OLICOM 0x108d
 #define PCI_DEVICE_ID_OLICOM_OC2325 0x0012
 #define PCI_DEVICE_ID_OLICOM_OC2183 0x0013
 #define PCI_DEVICE_ID_OLICOM_OC2326 0x0014
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_SUN 0x108e
 #define PCI_DEVICE_ID_SUN_EBUS 0x1000
 #define PCI_DEVICE_ID_SUN_HAPPYMEAL 0x1001
 #define PCI_DEVICE_ID_SUN_RIO_EBUS 0x1100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SUN_RIO_GEM 0x1101
 #define PCI_DEVICE_ID_SUN_RIO_1394 0x1102
 #define PCI_DEVICE_ID_SUN_RIO_USB 0x1103
 #define PCI_DEVICE_ID_SUN_GEM 0x2bad
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SUN_SIMBA 0x5000
 #define PCI_DEVICE_ID_SUN_PBM 0x8000
 #define PCI_DEVICE_ID_SUN_SCHIZO 0x8001
 #define PCI_DEVICE_ID_SUN_SABRE 0xa000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SUN_HUMMINGBIRD 0xa001
 #define PCI_DEVICE_ID_SUN_TOMATILLO 0xa801
 #define PCI_DEVICE_ID_SUN_CASSINI 0xabba
-
 #define PCI_VENDOR_ID_CMD 0x1095
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CMD_643 0x0643
 #define PCI_DEVICE_ID_CMD_646 0x0646
 #define PCI_DEVICE_ID_CMD_648 0x0648
 #define PCI_DEVICE_ID_CMD_649 0x0649
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SII_680 0x0680
 #define PCI_DEVICE_ID_SII_3112 0x3112
 #define PCI_DEVICE_ID_SII_1210SA 0x0240
-
 #define PCI_VENDOR_ID_BROOKTREE 0x109e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_BROOKTREE_878 0x0878
 #define PCI_DEVICE_ID_BROOKTREE_879 0x0879
-
 #define PCI_VENDOR_ID_SGI 0x10a9
 #define PCI_DEVICE_ID_SGI_IOC3 0x0003
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SGI_IOC4 0x100a
 #define PCI_VENDOR_ID_SGI_LITHIUM 0x1002
-
 #define PCI_VENDOR_ID_WINBOND 0x10ad
 #define PCI_DEVICE_ID_WINBOND_82C105 0x0105
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_WINBOND_83C553 0x0565
-
 #define PCI_VENDOR_ID_PLX 0x10b5
 #define PCI_DEVICE_ID_PLX_R685 0x1030
 #define PCI_DEVICE_ID_PLX_ROMULUS 0x106a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_PLX_SPCOM800 0x1076
 #define PCI_DEVICE_ID_PLX_1077 0x1077
 #define PCI_DEVICE_ID_PLX_SPCOM200 0x1103
 #define PCI_DEVICE_ID_PLX_DJINN_ITOO 0x1151
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_PLX_R753 0x1152
 #define PCI_DEVICE_ID_PLX_OLITEC 0x1187
 #define PCI_DEVICE_ID_PLX_PCI200SYN 0x3196
 #define PCI_DEVICE_ID_PLX_9050 0x9050
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_PLX_9080 0x9080
 #define PCI_DEVICE_ID_PLX_GTEK_SERIAL2 0xa001
-
 #define PCI_VENDOR_ID_MADGE 0x10b6
 #define PCI_DEVICE_ID_MADGE_MK2 0x0002
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_3COM 0x10b7
 #define PCI_DEVICE_ID_3COM_3C985 0x0001
 #define PCI_DEVICE_ID_3COM_3C940 0x1700
 #define PCI_DEVICE_ID_3COM_3C339 0x3390
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_3COM_3C359 0x3590
 #define PCI_DEVICE_ID_3COM_3C940B 0x80eb
 #define PCI_DEVICE_ID_3COM_3CR990 0x9900
 #define PCI_DEVICE_ID_3COM_3CR990_TX_95 0x9902
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_3COM_3CR990_TX_97 0x9903
 #define PCI_DEVICE_ID_3COM_3CR990B 0x9904
 #define PCI_DEVICE_ID_3COM_3CR990_FX 0x9905
 #define PCI_DEVICE_ID_3COM_3CR990SVR95 0x9908
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_3COM_3CR990SVR97 0x9909
 #define PCI_DEVICE_ID_3COM_3CR990SVR 0x990a
-
 #define PCI_VENDOR_ID_AL 0x10b9
 #define PCI_DEVICE_ID_AL_M1533 0x1533
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AL_M1535 0x1535
 #define PCI_DEVICE_ID_AL_M1541 0x1541
 #define PCI_DEVICE_ID_AL_M1563 0x1563
 #define PCI_DEVICE_ID_AL_M1621 0x1621
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AL_M1631 0x1631
 #define PCI_DEVICE_ID_AL_M1632 0x1632
 #define PCI_DEVICE_ID_AL_M1641 0x1641
 #define PCI_DEVICE_ID_AL_M1644 0x1644
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AL_M1647 0x1647
 #define PCI_DEVICE_ID_AL_M1651 0x1651
 #define PCI_DEVICE_ID_AL_M1671 0x1671
 #define PCI_DEVICE_ID_AL_M1681 0x1681
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AL_M1683 0x1683
 #define PCI_DEVICE_ID_AL_M1689 0x1689
 #define PCI_DEVICE_ID_AL_M5219 0x5219
 #define PCI_DEVICE_ID_AL_M5228 0x5228
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AL_M5229 0x5229
 #define PCI_DEVICE_ID_AL_M5451 0x5451
 #define PCI_DEVICE_ID_AL_M7101 0x7101
-
 #define PCI_VENDOR_ID_NEOMAGIC 0x10c8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NEOMAGIC_NM256AV_AUDIO 0x8005
 #define PCI_DEVICE_ID_NEOMAGIC_NM256ZX_AUDIO 0x8006
 #define PCI_DEVICE_ID_NEOMAGIC_NM256XL_PLUS_AUDIO 0x8016
-
 #define PCI_VENDOR_ID_TCONRAD 0x10da
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TCONRAD_TOKENRING 0x0508
-
 #define PCI_VENDOR_ID_NVIDIA 0x10de
 #define PCI_DEVICE_ID_NVIDIA_TNT 0x0020
 #define PCI_DEVICE_ID_NVIDIA_TNT2 0x0028
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_UTNT2 0x0029
 #define PCI_DEVICE_ID_NVIDIA_TNT_UNKNOWN 0x002a
 #define PCI_DEVICE_ID_NVIDIA_VTNT2 0x002C
 #define PCI_DEVICE_ID_NVIDIA_UVTNT2 0x002D
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SMBUS 0x0034
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE 0x0035
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA 0x0036
 #define PCI_DEVICE_ID_NVIDIA_NVENET_10 0x0037
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NVENET_11 0x0038
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2 0x003e
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800_ULTRA 0x0040
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800 0x0041
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800_LE 0x0042
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800_GT 0x0045
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_4000 0x004E
 #define PCI_DEVICE_ID_NVIDIA_NFORCE4_SMBUS 0x0052
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_IDE 0x0053
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA 0x0054
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA2 0x0055
 #define PCI_DEVICE_ID_NVIDIA_NVENET_8 0x0056
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NVENET_9 0x0057
 #define PCI_DEVICE_ID_NVIDIA_CK804_AUDIO 0x0059
 #define PCI_DEVICE_ID_NVIDIA_CK804_PCIE 0x005d
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS 0x0064
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE 0x0065
 #define PCI_DEVICE_ID_NVIDIA_NVENET_2 0x0066
 #define PCI_DEVICE_ID_NVIDIA_MCP2_MODEM 0x0069
 #define PCI_DEVICE_ID_NVIDIA_MCP2_AUDIO 0x006a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SMBUS 0x0084
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE 0x0085
 #define PCI_DEVICE_ID_NVIDIA_NVENET_4 0x0086
 #define PCI_DEVICE_ID_NVIDIA_MCP2S_MODEM 0x0089
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_CK8_AUDIO 0x008a
 #define PCI_DEVICE_ID_NVIDIA_NVENET_5 0x008c
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA 0x008e
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GT 0x0090
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GTX 0x0091
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_7800 0x0098
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_7800_GTX 0x0099
 #define PCI_DEVICE_ID_NVIDIA_ITNT2 0x00A0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_GEFORCE_6800A 0x00c1
 #define PCI_DEVICE_ID_GEFORCE_6800A_LE 0x00c2
 #define PCI_DEVICE_ID_GEFORCE_GO_6800 0x00c8
 #define PCI_DEVICE_ID_GEFORCE_GO_6800_ULTRA 0x00c9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_QUADRO_FX_GO1400 0x00cc
 #define PCI_DEVICE_ID_QUADRO_FX_1400 0x00ce
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3 0x00d1
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3_SMBUS 0x00d4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE 0x00d5
 #define PCI_DEVICE_ID_NVIDIA_NVENET_3 0x00d6
 #define PCI_DEVICE_ID_NVIDIA_MCP3_MODEM 0x00d9
 #define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO 0x00da
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NVENET_7 0x00df
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3S 0x00e1
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA 0x00e3
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SMBUS 0x00e4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE 0x00e5
 #define PCI_DEVICE_ID_NVIDIA_NVENET_6 0x00e6
 #define PCI_DEVICE_ID_NVIDIA_CK8S_AUDIO 0x00ea
 #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2 0x00ee
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCIE_DEVICE_ID_NVIDIA_GEFORCE_6800_ALT1 0x00f0
 #define PCIE_DEVICE_ID_NVIDIA_GEFORCE_6600_ALT1 0x00f1
 #define PCIE_DEVICE_ID_NVIDIA_GEFORCE_6600_ALT2 0x00f2
 #define PCIE_DEVICE_ID_NVIDIA_GEFORCE_6200_ALT1 0x00f3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCIE_DEVICE_ID_NVIDIA_GEFORCE_6800_GT 0x00f9
 #define PCIE_DEVICE_ID_NVIDIA_QUADRO_NVS280 0x00fd
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_SDR 0x0100
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_DDR 0x0101
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_QUADRO 0x0103
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX 0x0110
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE2_MX2 0x0111
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GO 0x0112
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_QUADRO2_MXR 0x0113
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6600_GT 0x0140
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6600 0x0141
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6610_XL 0x0145
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_540 0x014E
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6200 0x014F
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS 0x0150
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2 0x0151
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA 0x0152
 #define PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO 0x0153
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6200_TURBOCACHE 0x0161
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_6200 0x0164
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_6250 0x0166
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_6200_1 0x0167
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_GO_6250_1 0x0168
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_460 0x0170
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440 0x0171
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_420 0x0172
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440_SE 0x0173
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_440_GO 0x0174
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO 0x0175
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_420_GO_M32 0x0176
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_460_GO 0x0177
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_500XGL 0x0178
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_440_GO_M64 0x0179
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_200 0x017A
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_550XGL 0x017B
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_500_GOGL 0x017C
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_410_GO_M16 0x017D
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440_8X 0x0181
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_440SE_8X 0x0182
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_420_8X 0x0183
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_4000 0x0185
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_448_GO 0x0186
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_488_GO 0x0187
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_580_XGL 0x0188
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_MX_MAC 0x0189
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_280_NVS 0x018A
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_380_XGL 0x018B
 #define PCI_DEVICE_ID_NVIDIA_IGEFORCE2 0x01a0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE 0x01a4
 #define PCI_DEVICE_ID_NVIDIA_MCP1_AUDIO 0x01b1
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_SMBUS 0x01b4
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE 0x01bc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_MCP1_MODEM 0x01c1
 #define PCI_DEVICE_ID_NVIDIA_NVENET_1 0x01c3
 #define PCI_DEVICE_ID_NVIDIA_NFORCE2 0x01e0
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE3 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE3_1 0x0201
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE3_2 0x0202
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_DDC 0x0203
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800B 0x0211
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800B_LE 0x0212
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800B_GT 0x0215
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4600 0x0250
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4400 0x0251
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4200 0x0253
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_900XGL 0x0258
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_750XGL 0x0259
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_700XGL 0x025B
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SMBUS 0x0264
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_IDE 0x0265
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA 0x0266
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP51_SATA2 0x0267
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SMBUS 0x0368
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE 0x036E
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA 0x037E
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2 0x037F
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NVENET_12 0x0268
 #define PCI_DEVICE_ID_NVIDIA_NVENET_13 0x0269
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800 0x0280
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800_8X 0x0281
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800SE 0x0282
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_4200_GO 0x0286
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_980_XGL 0x0288
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_780_XGL 0x0289
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_QUADRO4_700_GOGL 0x028C
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800_ULTRA 0x0301
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5800 0x0302
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_2000 0x0308
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1000 0x0309
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600_ULTRA 0x0311
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600 0x0312
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5600SE 0x0314
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5600 0x031A
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5650 0x031B
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO700 0x031C
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200 0x0320
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_ULTRA 0x0321
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200_1 0x0322
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5200SE 0x0323
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5200 0x0324
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5250 0x0325
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5500 0x0326
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5100 0x0327
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5250_32 0x0328
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO_5200 0x0329
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_NVS_280_PCI 0x032A
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_500 0x032B
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5300 0x032C
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5100 0x032D
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900_ULTRA 0x0330
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900 0x0331
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900XT 0x0332
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5950_ULTRA 0x0333
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5900ZT 0x0334
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_3000 0x0338
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_700 0x033F
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700_ULTRA 0x0341
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700 0x0342
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700LE 0x0343
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_5700VE 0x0344
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_1 0x0347
 #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_2 0x0348
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO1000 0x034C
 #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100 0x034E
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NVENET_14 0x0372
 #define PCI_DEVICE_ID_NVIDIA_NVENET_15 0x0373
 #define PCI_DEVICE_ID_NVIDIA_NVENET_16 0x03E5
 #define PCI_DEVICE_ID_NVIDIA_NVENET_17 0x03E6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA 0x03E7
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_IDE 0x03EC
 #define PCI_DEVICE_ID_NVIDIA_NVENET_18 0x03EE
 #define PCI_DEVICE_ID_NVIDIA_NVENET_19 0x03EF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2 0x03F6
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3 0x03F7
 #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_IDE 0x0448
 #define PCI_DEVICE_ID_NVIDIA_NVENET_20 0x0450
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NVIDIA_NVENET_21 0x0451
 #define PCI_DEVICE_ID_NVIDIA_NVENET_22 0x0452
 #define PCI_DEVICE_ID_NVIDIA_NVENET_23 0x0453
-
 #define PCI_VENDOR_ID_IMS 0x10e0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_IMS_TT128 0x9128
 #define PCI_DEVICE_ID_IMS_TT3D 0x9135
-
 #define PCI_VENDOR_ID_INTERG 0x10ea
 #define PCI_DEVICE_ID_INTERG_1682 0x1682
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTERG_2000 0x2000
 #define PCI_DEVICE_ID_INTERG_2010 0x2010
 #define PCI_DEVICE_ID_INTERG_5000 0x5000
 #define PCI_DEVICE_ID_INTERG_5050 0x5050
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_REALTEK 0x10ec
 #define PCI_DEVICE_ID_REALTEK_8139 0x8139
-
 #define PCI_VENDOR_ID_XILINX 0x10ee
 #define PCI_DEVICE_ID_RME_DIGI96 0x3fc0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_RME_DIGI96_8 0x3fc1
 #define PCI_DEVICE_ID_RME_DIGI96_8_PRO 0x3fc2
 #define PCI_DEVICE_ID_RME_DIGI96_8_PAD_OR_PST 0x3fc3
 #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP 0x3fc5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI 0x3fc6
-
 #define PCI_VENDOR_ID_INIT 0x1101
-
 #define PCI_VENDOR_ID_CREATIVE 0x1102  
 #define PCI_DEVICE_ID_CREATIVE_EMU10K1 0x0002
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_ECTIVA 0x1102  
 #define PCI_DEVICE_ID_ECTIVA_EV1938 0x8938
-
 #define PCI_VENDOR_ID_TTI 0x1103
 #define PCI_DEVICE_ID_TTI_HPT343 0x0003
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TTI_HPT366 0x0004
 #define PCI_DEVICE_ID_TTI_HPT372 0x0005
 #define PCI_DEVICE_ID_TTI_HPT302 0x0006
 #define PCI_DEVICE_ID_TTI_HPT371 0x0007
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TTI_HPT374 0x0008
 #define PCI_DEVICE_ID_TTI_HPT372N 0x0009  
-
 #define PCI_VENDOR_ID_VIA 0x1106
 #define PCI_DEVICE_ID_VIA_8763_0 0x0198
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_8380_0 0x0204
 #define PCI_DEVICE_ID_VIA_3238_0 0x0238
 #define PCI_DEVICE_ID_VIA_PT880 0x0258
 #define PCI_DEVICE_ID_VIA_PT880ULTRA 0x0308
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_PX8X0_0 0x0259
 #define PCI_DEVICE_ID_VIA_3269_0 0x0269
 #define PCI_DEVICE_ID_VIA_K8T800PRO_0 0x0282
 #define PCI_DEVICE_ID_VIA_3296_0 0x0296
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_8363_0 0x0305
 #define PCI_DEVICE_ID_VIA_P4M800CE 0x0314
 #define PCI_DEVICE_ID_VIA_8371_0 0x0391
 #define PCI_DEVICE_ID_VIA_8501_0 0x0501
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_82C561 0x0561
 #define PCI_DEVICE_ID_VIA_82C586_1 0x0571
 #define PCI_DEVICE_ID_VIA_82C576 0x0576
 #define PCI_DEVICE_ID_VIA_SATA_EIDE 0x0581
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_82C586_0 0x0586
 #define PCI_DEVICE_ID_VIA_82C596 0x0596
 #define PCI_DEVICE_ID_VIA_82C597_0 0x0597
 #define PCI_DEVICE_ID_VIA_82C598_0 0x0598
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_8601_0 0x0601
 #define PCI_DEVICE_ID_VIA_8605_0 0x0605
 #define PCI_DEVICE_ID_VIA_82C686 0x0686
 #define PCI_DEVICE_ID_VIA_82C691_0 0x0691
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_82C576_1 0x1571
 #define PCI_DEVICE_ID_VIA_82C586_2 0x3038
 #define PCI_DEVICE_ID_VIA_82C586_3 0x3040
 #define PCI_DEVICE_ID_VIA_82C596_3 0x3050
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_82C596B_3 0x3051
 #define PCI_DEVICE_ID_VIA_82C686_4 0x3057
 #define PCI_DEVICE_ID_VIA_82C686_5 0x3058
 #define PCI_DEVICE_ID_VIA_8233_5 0x3059
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_8233_0 0x3074
 #define PCI_DEVICE_ID_VIA_8633_0 0x3091
 #define PCI_DEVICE_ID_VIA_8367_0 0x3099
 #define PCI_DEVICE_ID_VIA_8653_0 0x3101
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_8622 0x3102
 #define PCI_DEVICE_ID_VIA_8235_USB_2 0x3104
 #define PCI_DEVICE_ID_VIA_8233C_0 0x3109
 #define PCI_DEVICE_ID_VIA_8361 0x3112
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_XM266 0x3116
 #define PCI_DEVICE_ID_VIA_612X 0x3119
 #define PCI_DEVICE_ID_VIA_862X_0 0x3123
 #define PCI_DEVICE_ID_VIA_8753_0 0x3128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_8233A 0x3147
 #define PCI_DEVICE_ID_VIA_8703_51_0 0x3148
 #define PCI_DEVICE_ID_VIA_8237_SATA 0x3149
 #define PCI_DEVICE_ID_VIA_XN266 0x3156
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_6410 0x3164
 #define PCI_DEVICE_ID_VIA_8754C_0 0x3168
 #define PCI_DEVICE_ID_VIA_8235 0x3177
 #define PCI_DEVICE_ID_VIA_8385_0 0x3188
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_8377_0 0x3189
 #define PCI_DEVICE_ID_VIA_8378_0 0x3205
 #define PCI_DEVICE_ID_VIA_8783_0 0x3208
 #define PCI_DEVICE_ID_VIA_8237 0x3227
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_8251 0x3287
 #define PCI_DEVICE_ID_VIA_8237A 0x3337
 #define PCI_DEVICE_ID_VIA_8231 0x8231
 #define PCI_DEVICE_ID_VIA_8231_4 0x8235
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_8365_1 0x8305
 #define PCI_DEVICE_ID_VIA_CX700 0x8324
 #define PCI_DEVICE_ID_VIA_8371_1 0x8391
 #define PCI_DEVICE_ID_VIA_82C598_1 0x8598
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VIA_838X_1 0xB188
 #define PCI_DEVICE_ID_VIA_83_87XX_1 0xB198
-
 #define PCI_VENDOR_ID_SIEMENS 0x110A
 #define PCI_DEVICE_ID_SIEMENS_DSCC4 0x2102
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_VORTEX 0x1119
 #define PCI_DEVICE_ID_VORTEX_GDT60x0 0x0000
 #define PCI_DEVICE_ID_VORTEX_GDT6000B 0x0001
 #define PCI_DEVICE_ID_VORTEX_GDT6x10 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VORTEX_GDT6x20 0x0003
 #define PCI_DEVICE_ID_VORTEX_GDT6530 0x0004
 #define PCI_DEVICE_ID_VORTEX_GDT6550 0x0005
 #define PCI_DEVICE_ID_VORTEX_GDT6x17 0x0006
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VORTEX_GDT6x27 0x0007
 #define PCI_DEVICE_ID_VORTEX_GDT6537 0x0008
 #define PCI_DEVICE_ID_VORTEX_GDT6557 0x0009
 #define PCI_DEVICE_ID_VORTEX_GDT6x15 0x000a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VORTEX_GDT6x25 0x000b
 #define PCI_DEVICE_ID_VORTEX_GDT6535 0x000c
 #define PCI_DEVICE_ID_VORTEX_GDT6555 0x000d
 #define PCI_DEVICE_ID_VORTEX_GDT6x17RP 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VORTEX_GDT6x27RP 0x0101
 #define PCI_DEVICE_ID_VORTEX_GDT6537RP 0x0102
 #define PCI_DEVICE_ID_VORTEX_GDT6557RP 0x0103
 #define PCI_DEVICE_ID_VORTEX_GDT6x11RP 0x0104
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_VORTEX_GDT6x21RP 0x0105
-
 #define PCI_VENDOR_ID_EF 0x111a
 #define PCI_DEVICE_ID_EF_ATM_FPGA 0x0000
 #define PCI_DEVICE_ID_EF_ATM_ASIC 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_EF_ATM_LANAI2 0x0003
 #define PCI_VENDOR_ID_EF_ATM_LANAIHB 0x0005
-
 #define PCI_VENDOR_ID_IDT 0x111d
 #define PCI_DEVICE_ID_IDT_IDT77201 0x0001
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_FORE 0x1127
 #define PCI_DEVICE_ID_FORE_PCA200E 0x0300
-
 #define PCI_VENDOR_ID_PHILIPS 0x1131
 #define PCI_DEVICE_ID_PHILIPS_SAA7146 0x7146
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_PHILIPS_SAA9730 0x9730
-
 #define PCI_VENDOR_ID_EICON 0x1133
 #define PCI_DEVICE_ID_EICON_DIVA20 0xe002
 #define PCI_DEVICE_ID_EICON_DIVA20_U 0xe004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_EICON_DIVA201 0xe005
 #define PCI_DEVICE_ID_EICON_DIVA202 0xe00b
 #define PCI_DEVICE_ID_EICON_MAESTRA 0xe010
 #define PCI_DEVICE_ID_EICON_MAESTRAQ 0xe012
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_EICON_MAESTRAQ_U 0xe013
 #define PCI_DEVICE_ID_EICON_MAESTRAP 0xe014
-
 #define PCI_VENDOR_ID_ZIATECH 0x1138
 #define PCI_DEVICE_ID_ZIATECH_5550_HC 0x5550
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_SYSKONNECT 0x1148
 #define PCI_DEVICE_ID_SYSKONNECT_TR 0x4200
 #define PCI_DEVICE_ID_SYSKONNECT_GE 0x4300
 #define PCI_DEVICE_ID_SYSKONNECT_YU 0x4320
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SYSKONNECT_9DXX 0x4400
 #define PCI_DEVICE_ID_SYSKONNECT_9MXX 0x4500
-
 #define PCI_VENDOR_ID_DIGI 0x114f
 #define PCI_DEVICE_ID_DIGI_DF_M_IOM2_E 0x0070
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_DIGI_DF_M_E 0x0071
 #define PCI_DEVICE_ID_DIGI_DF_M_IOM2_A 0x0072
 #define PCI_DEVICE_ID_DIGI_DF_M_A 0x0073
 #define PCI_DEVICE_ID_NEO_2DB9 0x00C8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NEO_2DB9PRI 0x00C9
 #define PCI_DEVICE_ID_NEO_2RJ45 0x00CA
 #define PCI_DEVICE_ID_NEO_2RJ45PRI 0x00CB
-
 #define PCI_VENDOR_ID_XIRCOM 0x115d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_XIRCOM_RBM56G 0x0101
 #define PCI_DEVICE_ID_XIRCOM_X3201_MDM 0x0103
-
 #define PCI_VENDOR_ID_SERVERWORKS 0x1166
 #define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009
 #define PCI_DEVICE_ID_SERVERWORKS_GCNB_LE 0x0017
 #define PCI_DEVICE_ID_SERVERWORKS_EPB 0x0103
 #define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SERVERWORKS_CSB5 0x0201
 #define PCI_DEVICE_ID_SERVERWORKS_CSB6 0x0203
 #define PCI_DEVICE_ID_SERVERWORKS_HT1000SB 0x0205
 #define PCI_DEVICE_ID_SERVERWORKS_OSB4IDE 0x0211
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SERVERWORKS_CSB5IDE 0x0212
 #define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE 0x0213
 #define PCI_DEVICE_ID_SERVERWORKS_HT1000IDE 0x0214
 #define PCI_DEVICE_ID_SERVERWORKS_CSB6IDE2 0x0217
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SERVERWORKS_CSB6LPC 0x0227
-
 #define PCI_VENDOR_ID_SBE 0x1176
 #define PCI_DEVICE_ID_SBE_WANXL100 0x0301
 #define PCI_DEVICE_ID_SBE_WANXL200 0x0302
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SBE_WANXL400 0x0104
-
 #define PCI_VENDOR_ID_TOSHIBA 0x1179
 #define PCI_DEVICE_ID_TOSHIBA_PICCOLO 0x0102
 #define PCI_DEVICE_ID_TOSHIBA_PICCOLO_1 0x0103
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TOSHIBA_PICCOLO_2 0x0105
 #define PCI_DEVICE_ID_TOSHIBA_TOPIC95 0x060a
 #define PCI_DEVICE_ID_TOSHIBA_TOPIC97 0x060f
 #define PCI_DEVICE_ID_TOSHIBA_TOPIC100 0x0617
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_TOSHIBA_2 0x102f
 #define PCI_DEVICE_ID_TOSHIBA_TC35815CF 0x0030
 #define PCI_DEVICE_ID_TOSHIBA_TC86C001_MISC 0x0108
 #define PCI_DEVICE_ID_TOSHIBA_SPIDER_NET 0x01b3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_RICOH 0x1180
 #define PCI_DEVICE_ID_RICOH_RL5C465 0x0465
 #define PCI_DEVICE_ID_RICOH_RL5C466 0x0466
 #define PCI_DEVICE_ID_RICOH_RL5C475 0x0475
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_RICOH_RL5C476 0x0476
 #define PCI_DEVICE_ID_RICOH_RL5C478 0x0478
 #define PCI_DEVICE_ID_RICOH_R5C822 0x0822
-
 #define PCI_VENDOR_ID_DLINK 0x1186
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_DLINK_DGE510T 0x4c00
-
 #define PCI_VENDOR_ID_ARTOP 0x1191
 #define PCI_DEVICE_ID_ARTOP_ATP850UF 0x0005
 #define PCI_DEVICE_ID_ARTOP_ATP860 0x0006
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ARTOP_ATP860R 0x0007
 #define PCI_DEVICE_ID_ARTOP_ATP865 0x0008
 #define PCI_DEVICE_ID_ARTOP_ATP865R 0x0009
 #define PCI_DEVICE_ID_ARTOP_AEC7610 0x8002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ARTOP_AEC7612UW 0x8010
 #define PCI_DEVICE_ID_ARTOP_AEC7612U 0x8020
 #define PCI_DEVICE_ID_ARTOP_AEC7612S 0x8030
 #define PCI_DEVICE_ID_ARTOP_AEC7612D 0x8040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ARTOP_AEC7612SUW 0x8050
 #define PCI_DEVICE_ID_ARTOP_8060 0x8060
-
 #define PCI_VENDOR_ID_ZEITNET 0x1193
 #define PCI_DEVICE_ID_ZEITNET_1221 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ZEITNET_1225 0x0002
-
 #define PCI_VENDOR_ID_FUJITSU_ME 0x119e
 #define PCI_DEVICE_ID_FUJITSU_FS155 0x0001
 #define PCI_DEVICE_ID_FUJITSU_FS50 0x0003
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBVENDOR_ID_KEYSPAN 0x11a9
 #define PCI_SUBDEVICE_ID_KEYSPAN_SX2 0x5334
-
 #define PCI_VENDOR_ID_MARVELL 0x11ab
 #define PCI_DEVICE_ID_MARVELL_GT64111 0x4146
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MARVELL_GT64260 0x6430
 #define PCI_DEVICE_ID_MARVELL_MV64360 0x6460
 #define PCI_DEVICE_ID_MARVELL_MV64460 0x6480
 #define PCI_DEVICE_ID_MARVELL_GT96100 0x9652
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MARVELL_GT96100A 0x9653
-
 #define PCI_VENDOR_ID_V3 0x11b0
 #define PCI_DEVICE_ID_V3_V960 0x0001
 #define PCI_DEVICE_ID_V3_V351 0x0002
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_ATT 0x11c1
 #define PCI_DEVICE_ID_ATT_VENUS_MODEM 0x480
-
 #define PCI_VENDOR_ID_SPECIALIX 0x11cb
 #define PCI_DEVICE_ID_SPECIALIX_IO8 0x2000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SPECIALIX_RIO 0x8000
 #define PCI_SUBDEVICE_ID_SPECIALIX_SPEED4 0xa004
-
 #define PCI_VENDOR_ID_ANALOG_DEVICES 0x11d4
 #define PCI_DEVICE_ID_AD1889JS 0x1889
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SEGA_BBA 0x1234
-
 #define PCI_VENDOR_ID_ZORAN 0x11de
 #define PCI_DEVICE_ID_ZORAN_36057 0x6057
 #define PCI_DEVICE_ID_ZORAN_36120 0x6120
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_COMPEX 0x11f6
 #define PCI_DEVICE_ID_COMPEX_ENET100VG4 0x0112
-
 #define PCI_VENDOR_ID_RP 0x11fe
 #define PCI_DEVICE_ID_RP32INTF 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_RP8INTF 0x0002
 #define PCI_DEVICE_ID_RP16INTF 0x0003
 #define PCI_DEVICE_ID_RP4QUAD 0x0004
 #define PCI_DEVICE_ID_RP8OCTA 0x0005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_RP8J 0x0006
 #define PCI_DEVICE_ID_RP4J 0x0007
 #define PCI_DEVICE_ID_RP8SNI 0x0008 
 #define PCI_DEVICE_ID_RP16SNI 0x0009 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_RPP4 0x000A
 #define PCI_DEVICE_ID_RPP8 0x000B
 #define PCI_DEVICE_ID_RP4M 0x000D
 #define PCI_DEVICE_ID_RP2_232 0x000E
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_RP2_422 0x000F
 #define PCI_DEVICE_ID_URP32INTF 0x0801
 #define PCI_DEVICE_ID_URP8INTF 0x0802
 #define PCI_DEVICE_ID_URP16INTF 0x0803
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_URP8OCTA 0x0805
 #define PCI_DEVICE_ID_UPCI_RM3_8PORT 0x080C 
 #define PCI_DEVICE_ID_UPCI_RM3_4PORT 0x080D
 #define PCI_DEVICE_ID_CRP16INTF 0x0903 
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_CYCLADES 0x120e
 #define PCI_DEVICE_ID_CYCLOM_Y_Lo 0x0100
 #define PCI_DEVICE_ID_CYCLOM_Y_Hi 0x0101
 #define PCI_DEVICE_ID_CYCLOM_4Y_Lo 0x0102
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CYCLOM_4Y_Hi 0x0103
 #define PCI_DEVICE_ID_CYCLOM_8Y_Lo 0x0104
 #define PCI_DEVICE_ID_CYCLOM_8Y_Hi 0x0105
 #define PCI_DEVICE_ID_CYCLOM_Z_Lo 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CYCLOM_Z_Hi 0x0201
 #define PCI_DEVICE_ID_PC300_RX_2 0x0300
 #define PCI_DEVICE_ID_PC300_RX_1 0x0301
 #define PCI_DEVICE_ID_PC300_TE_2 0x0310
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_PC300_TE_1 0x0311
 #define PCI_DEVICE_ID_PC300_TE_M_2 0x0320
 #define PCI_DEVICE_ID_PC300_TE_M_1 0x0321
-
 #define PCI_VENDOR_ID_ESSENTIAL 0x120f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ESSENTIAL_ROADRUNNER 0x0001
-
 #define PCI_VENDOR_ID_O2 0x1217
 #define PCI_DEVICE_ID_O2_6729 0x6729
 #define PCI_DEVICE_ID_O2_6730 0x673a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_O2_6832 0x6832
 #define PCI_DEVICE_ID_O2_6836 0x6836
-
 #define PCI_VENDOR_ID_3DFX 0x121a
 #define PCI_DEVICE_ID_3DFX_VOODOO 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_3DFX_VOODOO2 0x0002
 #define PCI_DEVICE_ID_3DFX_BANSHEE 0x0003
 #define PCI_DEVICE_ID_3DFX_VOODOO3 0x0005
 #define PCI_DEVICE_ID_3DFX_VOODOO5 0x0009
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_AVM 0x1244
 #define PCI_DEVICE_ID_AVM_B1 0x0700
 #define PCI_DEVICE_ID_AVM_C4 0x0800
 #define PCI_DEVICE_ID_AVM_A1 0x0a00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AVM_A1_V2 0x0e00
 #define PCI_DEVICE_ID_AVM_C2 0x1100
 #define PCI_DEVICE_ID_AVM_T1 0x1200
-
 #define PCI_VENDOR_ID_STALLION 0x124d
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_AT 0x1259
 #define PCI_SUBDEVICE_ID_AT_2700FX 0x2701
 #define PCI_SUBDEVICE_ID_AT_2701FX 0x2703
-
 #define PCI_VENDOR_ID_ESS 0x125d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ESS_ESS1968 0x1968
 #define PCI_DEVICE_ID_ESS_ESS1978 0x1978
 #define PCI_DEVICE_ID_ESS_ALLEGRO_1 0x1988
 #define PCI_DEVICE_ID_ESS_ALLEGRO 0x1989
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ESS_CANYON3D_2LE 0x1990
 #define PCI_DEVICE_ID_ESS_CANYON3D_2 0x1992
 #define PCI_DEVICE_ID_ESS_MAESTRO3 0x1998
 #define PCI_DEVICE_ID_ESS_MAESTRO3_1 0x1999
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ESS_MAESTRO3_HW 0x199a
 #define PCI_DEVICE_ID_ESS_MAESTRO3_2 0x199b
-
 #define PCI_VENDOR_ID_SATSAGEM 0x1267
 #define PCI_DEVICE_ID_SATSAGEM_NICCY 0x1016
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_ENSONIQ 0x1274
 #define PCI_DEVICE_ID_ENSONIQ_CT5880 0x5880
 #define PCI_DEVICE_ID_ENSONIQ_ES1370 0x5000
 #define PCI_DEVICE_ID_ENSONIQ_ES1371 0x1371
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_TRANSMETA 0x1279
 #define PCI_DEVICE_ID_EFFICEON 0x0060
-
 #define PCI_VENDOR_ID_ROCKWELL 0x127A
-
 #define PCI_VENDOR_ID_ITE 0x1283
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ITE_IT8172G 0x8172
 #define PCI_DEVICE_ID_ITE_IT8172G_AUDIO 0x0801
 #define PCI_DEVICE_ID_ITE_8211 0x8211
 #define PCI_DEVICE_ID_ITE_8212 0x8212
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ITE_8872 0x8872
 #define PCI_DEVICE_ID_ITE_IT8330G_0 0xe886
-
 #define PCI_DEVICE_ID_ESS_ESS0100 0x0100
-
 #define PCI_VENDOR_ID_ALTEON 0x12ae
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBVENDOR_ID_CONNECT_TECH 0x12c4
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232 0x0001
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_232 0x0002
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH2_232 0x0003
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485 0x0004
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485_4_4 0x0005
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_485 0x0006
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_485_2_2 0x0007
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH2_485 0x0008
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_485_2_6 0x0009
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH081101V1 0x000A
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH041101V1 0x000B
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH2_20MHZ 0x000C
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_BH2_PTM 0x000D
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_NT960PCI 0x0100
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_TITAN_2 0x0201
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_TITAN_4 0x0202
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_2_232 0x0300
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_4_232 0x0301
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_8_232 0x0302
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_1_1 0x0310
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_2_2 0x0311
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_4_4 0x0312
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_2 0x0320
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_4 0x0321
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_8 0x0322
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_2_485 0x0330
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_4_485 0x0331
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_8_485 0x0332
-
 #define PCI_VENDOR_ID_NVIDIA_SGS 0x12d2
 #define PCI_DEVICE_ID_NVIDIA_SGS_RIVA128 0x0018
-
 #define PCI_SUBVENDOR_ID_CHASE_PCIFAST 0x12E0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBDEVICE_ID_CHASE_PCIFAST4 0x0031
 #define PCI_SUBDEVICE_ID_CHASE_PCIFAST8 0x0021
 #define PCI_SUBDEVICE_ID_CHASE_PCIFAST16 0x0011
 #define PCI_SUBDEVICE_ID_CHASE_PCIFAST16FMC 0x0041
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBVENDOR_ID_CHASE_PCIRAS 0x124D
 #define PCI_SUBDEVICE_ID_CHASE_PCIRAS4 0xF001
 #define PCI_SUBDEVICE_ID_CHASE_PCIRAS8 0xF010
-
 #define PCI_VENDOR_ID_AUREAL 0x12eb
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AUREAL_VORTEX_1 0x0001
 #define PCI_DEVICE_ID_AUREAL_VORTEX_2 0x0002
 #define PCI_DEVICE_ID_AUREAL_ADVANTAGE 0x0003
-
 #define PCI_VENDOR_ID_ELECTRONICDESIGNGMBH 0x12f8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LML_33R10 0x8a02
-
 #define PCI_VENDOR_ID_SIIG 0x131f
 #define PCI_SUBVENDOR_ID_SIIG 0x131f
 #define PCI_DEVICE_ID_SIIG_1S_10x_550 0x1000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SIIG_1S_10x_650 0x1001
 #define PCI_DEVICE_ID_SIIG_1S_10x_850 0x1002
 #define PCI_DEVICE_ID_SIIG_1S1P_10x_550 0x1010
 #define PCI_DEVICE_ID_SIIG_1S1P_10x_650 0x1011
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SIIG_1S1P_10x_850 0x1012
 #define PCI_DEVICE_ID_SIIG_1P_10x 0x1020
 #define PCI_DEVICE_ID_SIIG_2P_10x 0x1021
 #define PCI_DEVICE_ID_SIIG_2S_10x_550 0x1030
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SIIG_2S_10x_650 0x1031
 #define PCI_DEVICE_ID_SIIG_2S_10x_850 0x1032
 #define PCI_DEVICE_ID_SIIG_2S1P_10x_550 0x1034
 #define PCI_DEVICE_ID_SIIG_2S1P_10x_650 0x1035
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SIIG_2S1P_10x_850 0x1036
 #define PCI_DEVICE_ID_SIIG_4S_10x_550 0x1050
 #define PCI_DEVICE_ID_SIIG_4S_10x_650 0x1051
 #define PCI_DEVICE_ID_SIIG_4S_10x_850 0x1052
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SIIG_1S_20x_550 0x2000
 #define PCI_DEVICE_ID_SIIG_1S_20x_650 0x2001
 #define PCI_DEVICE_ID_SIIG_1S_20x_850 0x2002
 #define PCI_DEVICE_ID_SIIG_1P_20x 0x2020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SIIG_2P_20x 0x2021
 #define PCI_DEVICE_ID_SIIG_2S_20x_550 0x2030
 #define PCI_DEVICE_ID_SIIG_2S_20x_650 0x2031
 #define PCI_DEVICE_ID_SIIG_2S_20x_850 0x2032
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SIIG_2P1S_20x_550 0x2040
 #define PCI_DEVICE_ID_SIIG_2P1S_20x_650 0x2041
 #define PCI_DEVICE_ID_SIIG_2P1S_20x_850 0x2042
 #define PCI_DEVICE_ID_SIIG_1S1P_20x_550 0x2010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SIIG_1S1P_20x_650 0x2011
 #define PCI_DEVICE_ID_SIIG_1S1P_20x_850 0x2012
 #define PCI_DEVICE_ID_SIIG_4S_20x_550 0x2050
 #define PCI_DEVICE_ID_SIIG_4S_20x_650 0x2051
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SIIG_4S_20x_850 0x2052
 #define PCI_DEVICE_ID_SIIG_2S1P_20x_550 0x2060
 #define PCI_DEVICE_ID_SIIG_2S1P_20x_650 0x2061
 #define PCI_DEVICE_ID_SIIG_2S1P_20x_850 0x2062
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SIIG_8S_20x_550 0x2080
 #define PCI_DEVICE_ID_SIIG_8S_20x_650 0x2081
 #define PCI_DEVICE_ID_SIIG_8S_20x_850 0x2082
 #define PCI_SUBDEVICE_ID_SIIG_QUARTET_SERIAL 0x2050
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_RADISYS 0x1331
-
 #define PCI_VENDOR_ID_DOMEX 0x134a
 #define PCI_DEVICE_ID_DOMEX_DMX3191D 0x0001
-
 #define PCI_VENDOR_ID_INTASHIELD 0x135a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTASHIELD_IS200 0x0d80
-
 #define PCI_VENDOR_ID_QUATECH 0x135C
 #define PCI_DEVICE_ID_QUATECH_QSC100 0x0010
 #define PCI_DEVICE_ID_QUATECH_DSC100 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_QUATECH_ESC100D 0x0050
 #define PCI_DEVICE_ID_QUATECH_ESC100M 0x0060
-
 #define PCI_VENDOR_ID_SEALEVEL 0x135e
 #define PCI_DEVICE_ID_SEALEVEL_U530 0x7101
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SEALEVEL_UCOMM2 0x7201
 #define PCI_DEVICE_ID_SEALEVEL_UCOMM422 0x7402
 #define PCI_DEVICE_ID_SEALEVEL_UCOMM232 0x7202
 #define PCI_DEVICE_ID_SEALEVEL_COMM4 0x7401
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SEALEVEL_COMM8 0x7801
 #define PCI_DEVICE_ID_SEALEVEL_UCOMM8 0x7804
-
 #define PCI_VENDOR_ID_HYPERCOPE 0x1365
 #define PCI_DEVICE_ID_HYPERCOPE_PLX 0x9050
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBDEVICE_ID_HYPERCOPE_OLD_ERGO 0x0104
 #define PCI_SUBDEVICE_ID_HYPERCOPE_ERGO 0x0106
 #define PCI_SUBDEVICE_ID_HYPERCOPE_METRO 0x0107
 #define PCI_SUBDEVICE_ID_HYPERCOPE_CHAMP2 0x0108
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_KAWASAKI 0x136b
 #define PCI_DEVICE_ID_MCHIP_KL5A72002 0xff01
-
 #define PCI_VENDOR_ID_CNET 0x1371
 #define PCI_DEVICE_ID_CNET_GIGACARD 0x434e
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_LMC 0x1376
 #define PCI_DEVICE_ID_LMC_HSSI 0x0003
 #define PCI_DEVICE_ID_LMC_DS3 0x0004
 #define PCI_DEVICE_ID_LMC_SSI 0x0005
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LMC_T1 0x0006
-
 #define PCI_VENDOR_ID_NETGEAR 0x1385
 #define PCI_DEVICE_ID_NETGEAR_GA620 0x620a
-
 #define PCI_VENDOR_ID_APPLICOM 0x1389
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_APPLICOM_PCIGENERIC 0x0001
 #define PCI_DEVICE_ID_APPLICOM_PCI2000IBS_CAN 0x0002
 #define PCI_DEVICE_ID_APPLICOM_PCI2000PFB 0x0003
-
 #define PCI_VENDOR_ID_MOXA 0x1393
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MOXA_RC7000 0x0001
 #define PCI_DEVICE_ID_MOXA_CP102 0x1020
 #define PCI_DEVICE_ID_MOXA_CP102UL 0x1021
 #define PCI_DEVICE_ID_MOXA_CP102U 0x1022
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MOXA_C104 0x1040
 #define PCI_DEVICE_ID_MOXA_CP104U 0x1041
 #define PCI_DEVICE_ID_MOXA_CP104JU 0x1042
 #define PCI_DEVICE_ID_MOXA_CT114 0x1140
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MOXA_CP114 0x1141
 #define PCI_DEVICE_ID_MOXA_CP118U 0x1180
 #define PCI_DEVICE_ID_MOXA_CP132 0x1320
 #define PCI_DEVICE_ID_MOXA_CP132U 0x1321
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MOXA_CP134U 0x1340
 #define PCI_DEVICE_ID_MOXA_C168 0x1680
 #define PCI_DEVICE_ID_MOXA_CP168U 0x1681
-
 #define PCI_VENDOR_ID_CCD 0x1397
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CCD_2BD0 0x2bd0
 #define PCI_DEVICE_ID_CCD_B000 0xb000
 #define PCI_DEVICE_ID_CCD_B006 0xb006
 #define PCI_DEVICE_ID_CCD_B007 0xb007
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CCD_B008 0xb008
 #define PCI_DEVICE_ID_CCD_B009 0xb009
 #define PCI_DEVICE_ID_CCD_B00A 0xb00a
 #define PCI_DEVICE_ID_CCD_B00B 0xb00b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CCD_B00C 0xb00c
 #define PCI_DEVICE_ID_CCD_B100 0xb100
 #define PCI_DEVICE_ID_CCD_B700 0xb700
 #define PCI_DEVICE_ID_CCD_B701 0xb701
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_EXAR 0x13a8
 #define PCI_DEVICE_ID_EXAR_XR17C152 0x0152
 #define PCI_DEVICE_ID_EXAR_XR17C154 0x0154
 #define PCI_DEVICE_ID_EXAR_XR17C158 0x0158
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_MICROGATE 0x13c0
 #define PCI_DEVICE_ID_MICROGATE_USC 0x0010
 #define PCI_DEVICE_ID_MICROGATE_SCA 0x0030
-
 #define PCI_VENDOR_ID_3WARE 0x13C1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_3WARE_1000 0x1000
 #define PCI_DEVICE_ID_3WARE_7000 0x1001
 #define PCI_DEVICE_ID_3WARE_9000 0x1002
-
 #define PCI_VENDOR_ID_IOMEGA 0x13ca
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_IOMEGA_BUZ 0x4231
-
 #define PCI_VENDOR_ID_ABOCOM 0x13D1
 #define PCI_DEVICE_ID_ABOCOM_2BD1 0x2BD1
-
 #define PCI_VENDOR_ID_CMEDIA 0x13f6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_CMEDIA_CM8338A 0x0100
 #define PCI_DEVICE_ID_CMEDIA_CM8338B 0x0101
 #define PCI_DEVICE_ID_CMEDIA_CM8738 0x0111
 #define PCI_DEVICE_ID_CMEDIA_CM8738B 0x0112
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_LAVA 0x1407
 #define PCI_DEVICE_ID_LAVA_DSERIAL 0x0100  
 #define PCI_DEVICE_ID_LAVA_QUATRO_A 0x0101  
 #define PCI_DEVICE_ID_LAVA_QUATRO_B 0x0102  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LAVA_OCTO_A 0x0180  
 #define PCI_DEVICE_ID_LAVA_OCTO_B 0x0181  
 #define PCI_DEVICE_ID_LAVA_PORT_PLUS 0x0200  
 #define PCI_DEVICE_ID_LAVA_QUAD_A 0x0201  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LAVA_QUAD_B 0x0202  
 #define PCI_DEVICE_ID_LAVA_SSERIAL 0x0500  
 #define PCI_DEVICE_ID_LAVA_PORT_650 0x0600  
 #define PCI_DEVICE_ID_LAVA_PARALLEL 0x8000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_LAVA_DUAL_PAR_A 0x8002  
 #define PCI_DEVICE_ID_LAVA_DUAL_PAR_B 0x8003  
 #define PCI_DEVICE_ID_LAVA_BOCA_IOPPAR 0x8800
-
 #define PCI_VENDOR_ID_TIMEDIA 0x1409
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIMEDIA_1889 0x7168
-
 #define PCI_VENDOR_ID_ICE 0x1412
 #define PCI_DEVICE_ID_ICE_1712 0x1712
 #define PCI_DEVICE_ID_VT1724 0x1724
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_OXSEMI 0x1415
 #define PCI_DEVICE_ID_OXSEMI_12PCI840 0x8403
 #define PCI_DEVICE_ID_OXSEMI_16PCI954 0x9501
 #define PCI_DEVICE_ID_OXSEMI_16PCI95N 0x9511
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_OXSEMI_16PCI954PP 0x9513
 #define PCI_DEVICE_ID_OXSEMI_16PCI952 0x9521
-
 #define PCI_VENDOR_ID_SAMSUNG 0x144d
-
 #define PCI_VENDOR_ID_MYRICOM 0x14c1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_TITAN 0x14D2
 #define PCI_DEVICE_ID_TITAN_010L 0x8001
 #define PCI_DEVICE_ID_TITAN_100L 0x8010
 #define PCI_DEVICE_ID_TITAN_110L 0x8011
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TITAN_200L 0x8020
 #define PCI_DEVICE_ID_TITAN_210L 0x8021
 #define PCI_DEVICE_ID_TITAN_400L 0x8040
 #define PCI_DEVICE_ID_TITAN_800L 0x8080
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TITAN_100 0xA001
 #define PCI_DEVICE_ID_TITAN_200 0xA005
 #define PCI_DEVICE_ID_TITAN_400 0xA003
 #define PCI_DEVICE_ID_TITAN_800B 0xA004
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_PANACOM 0x14d4
 #define PCI_DEVICE_ID_PANACOM_QUADMODEM 0x0400
 #define PCI_DEVICE_ID_PANACOM_DUALMODEM 0x0402
-
 #define PCI_VENDOR_ID_AFAVLAB 0x14db
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AFAVLAB_P028 0x2180
 #define PCI_DEVICE_ID_AFAVLAB_P030 0x2182
 #define PCI_SUBDEVICE_ID_AFAVLAB_P061 0x2150
-
 #define PCI_VENDOR_ID_BROADCOM 0x14e4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5752 0x1600
 #define PCI_DEVICE_ID_TIGON3_5752M 0x1601
 #define PCI_DEVICE_ID_TIGON3_5700 0x1644
 #define PCI_DEVICE_ID_TIGON3_5701 0x1645
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5702 0x1646
 #define PCI_DEVICE_ID_TIGON3_5703 0x1647
 #define PCI_DEVICE_ID_TIGON3_5704 0x1648
 #define PCI_DEVICE_ID_TIGON3_5704S_2 0x1649
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NX2_5706 0x164a
 #define PCI_DEVICE_ID_NX2_5708 0x164c
 #define PCI_DEVICE_ID_TIGON3_5702FE 0x164d
 #define PCI_DEVICE_ID_TIGON3_5705 0x1653
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5705_2 0x1654
 #define PCI_DEVICE_ID_TIGON3_5720 0x1658
 #define PCI_DEVICE_ID_TIGON3_5721 0x1659
 #define PCI_DEVICE_ID_TIGON3_5705M 0x165d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5705M_2 0x165e
 #define PCI_DEVICE_ID_TIGON3_5714 0x1668
 #define PCI_DEVICE_ID_TIGON3_5714S 0x1669
 #define PCI_DEVICE_ID_TIGON3_5780 0x166a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5780S 0x166b
 #define PCI_DEVICE_ID_TIGON3_5705F 0x166e
 #define PCI_DEVICE_ID_TIGON3_5754M 0x1672
 #define PCI_DEVICE_ID_TIGON3_5755M 0x1673
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5750 0x1676
 #define PCI_DEVICE_ID_TIGON3_5751 0x1677
 #define PCI_DEVICE_ID_TIGON3_5715 0x1678
 #define PCI_DEVICE_ID_TIGON3_5715S 0x1679
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5754 0x167a
 #define PCI_DEVICE_ID_TIGON3_5755 0x167b
 #define PCI_DEVICE_ID_TIGON3_5750M 0x167c
 #define PCI_DEVICE_ID_TIGON3_5751M 0x167d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5751F 0x167e
 #define PCI_DEVICE_ID_TIGON3_5787M 0x1693
 #define PCI_DEVICE_ID_TIGON3_5782 0x1696
 #define PCI_DEVICE_ID_TIGON3_5786 0x169a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5787 0x169b
 #define PCI_DEVICE_ID_TIGON3_5788 0x169c
 #define PCI_DEVICE_ID_TIGON3_5789 0x169d
 #define PCI_DEVICE_ID_TIGON3_5702X 0x16a6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5703X 0x16a7
 #define PCI_DEVICE_ID_TIGON3_5704S 0x16a8
 #define PCI_DEVICE_ID_NX2_5706S 0x16aa
 #define PCI_DEVICE_ID_NX2_5708S 0x16ac
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5702A3 0x16c6
 #define PCI_DEVICE_ID_TIGON3_5703A3 0x16c7
 #define PCI_DEVICE_ID_TIGON3_5781 0x16dd
 #define PCI_DEVICE_ID_TIGON3_5753 0x16f7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5753M 0x16fd
 #define PCI_DEVICE_ID_TIGON3_5753F 0x16fe
 #define PCI_DEVICE_ID_TIGON3_5901 0x170d
 #define PCI_DEVICE_ID_BCM4401B1 0x170c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGON3_5901_2 0x170e
 #define PCI_DEVICE_ID_BCM4401 0x4401
 #define PCI_DEVICE_ID_BCM4401B0 0x4402
-
 #define PCI_VENDOR_ID_TOPIC 0x151f
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TOPIC_TP560 0x0000
-
 #define PCI_VENDOR_ID_ENE 0x1524
 #define PCI_DEVICE_ID_ENE_1211 0x1211
 #define PCI_DEVICE_ID_ENE_1225 0x1225
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ENE_1410 0x1410
 #define PCI_DEVICE_ID_ENE_710 0x1411
 #define PCI_DEVICE_ID_ENE_712 0x1412
 #define PCI_DEVICE_ID_ENE_1420 0x1420
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ENE_720 0x1421
 #define PCI_DEVICE_ID_ENE_722 0x1422
-
 #define PCI_VENDOR_ID_CHELSIO 0x1425
-
 #define PCI_VENDOR_ID_SYBA 0x1592
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_SYBA_2P_EPP 0x0782
 #define PCI_DEVICE_ID_SYBA_1P_ECP 0x0783
-
 #define PCI_VENDOR_ID_MORETON 0x15aa
 #define PCI_DEVICE_ID_RASTEL_2PORT 0x2000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_ZOLTRIX 0x15b0
 #define PCI_DEVICE_ID_ZOLTRIX_2BD0 0x2bd0 
-
 #define PCI_VENDOR_ID_MELLANOX 0x15b3
 #define PCI_DEVICE_ID_MELLANOX_TAVOR 0x5a44
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE 0x5a46
 #define PCI_DEVICE_ID_MELLANOX_ARBEL_COMPAT 0x6278
 #define PCI_DEVICE_ID_MELLANOX_ARBEL 0x6282
 #define PCI_DEVICE_ID_MELLANOX_SINAI_OLD 0x5e8c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_MELLANOX_SINAI 0x6274
-
 #define PCI_VENDOR_ID_PDC 0x15e9
-
 #define PCI_VENDOR_ID_FARSITE 0x1619
 #define PCI_DEVICE_ID_FARSITE_T2P 0x0400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_FARSITE_T4P 0x0440
 #define PCI_DEVICE_ID_FARSITE_T1U 0x0610
 #define PCI_DEVICE_ID_FARSITE_T2U 0x0620
 #define PCI_DEVICE_ID_FARSITE_T4U 0x0640
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_FARSITE_TE1 0x1610
 #define PCI_DEVICE_ID_FARSITE_TE1C 0x1612
-
 #define PCI_VENDOR_ID_SIBYTE 0x166d
 #define PCI_DEVICE_ID_BCM1250_HT 0x0002
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_NETCELL 0x169c
 #define PCI_DEVICE_ID_REVOLUTION 0x0044
-
 #define PCI_VENDOR_ID_VITESSE 0x1725
 #define PCI_DEVICE_ID_VITESSE_VSC7174 0x7174
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_LINKSYS 0x1737
 #define PCI_DEVICE_ID_LINKSYS_EG1064 0x1064
-
 #define PCI_VENDOR_ID_ALTIMA 0x173b
 #define PCI_DEVICE_ID_ALTIMA_AC1000 0x03e8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ALTIMA_AC1001 0x03e9
 #define PCI_DEVICE_ID_ALTIMA_AC9100 0x03ea
 #define PCI_DEVICE_ID_ALTIMA_AC1003 0x03eb
-
 #define PCI_VENDOR_ID_S2IO 0x17d5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_S2IO_WIN 0x5731
 #define PCI_DEVICE_ID_S2IO_UNI 0x5831
 #define PCI_DEVICE_ID_HERC_WIN 0x5732
 #define PCI_DEVICE_ID_HERC_UNI 0x5832
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_SITECOM 0x182d
 #define PCI_DEVICE_ID_SITECOM_DC105V2 0x3069
-
 #define PCI_VENDOR_ID_TOPSPIN 0x1867
-
 #define PCI_VENDOR_ID_TDI 0x192E
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TDI_EHCI 0x0101
-
 #define PCI_VENDOR_ID_JMICRON 0x197B
 #define PCI_DEVICE_ID_JMICRON_JMB360 0x2360
 #define PCI_DEVICE_ID_JMICRON_JMB361 0x2361
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_JMICRON_JMB363 0x2363
 #define PCI_DEVICE_ID_JMICRON_JMB365 0x2365
 #define PCI_DEVICE_ID_JMICRON_JMB366 0x2366
 #define PCI_DEVICE_ID_JMICRON_JMB368 0x2368
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_TEKRAM 0x1de1
 #define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29
-
 #define PCI_VENDOR_ID_HINT 0x3388
 #define PCI_DEVICE_ID_HINT_VXPROII_IDE 0x8013
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_3DLABS 0x3d3d
 #define PCI_DEVICE_ID_3DLABS_PERMEDIA2 0x0007
 #define PCI_DEVICE_ID_3DLABS_PERMEDIA2V 0x0009
-
 #define PCI_VENDOR_ID_AKS 0x416c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_AKS_ALADDINCARD 0x0100
-
 #define PCI_VENDOR_ID_S3 0x5333
 #define PCI_DEVICE_ID_S3_TRIO 0x8811
 #define PCI_DEVICE_ID_S3_868 0x8880
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_S3_968 0x88f0
 #define PCI_DEVICE_ID_S3_SAVAGE4 0x8a25
 #define PCI_DEVICE_ID_S3_PROSAVAGE8 0x8d04
 #define PCI_DEVICE_ID_S3_SONICVIBES 0xca00
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_DUNORD 0x5544
 #define PCI_DEVICE_ID_DUNORD_I3000 0x0001
-
 #define PCI_VENDOR_ID_DCI 0x6666
 #define PCI_DEVICE_ID_DCI_PCCOM4 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_DCI_PCCOM8 0x0002
 #define PCI_DEVICE_ID_DCI_PCCOM2 0x0004
-
 #define PCI_VENDOR_ID_INTEL 0x8086
 #define PCI_DEVICE_ID_INTEL_EESSC 0x0008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_PXHD_0 0x0320
 #define PCI_DEVICE_ID_INTEL_PXHD_1 0x0321
 #define PCI_DEVICE_ID_INTEL_PXH_0 0x0329
 #define PCI_DEVICE_ID_INTEL_PXH_1 0x032A
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_PXHV 0x032C
 #define PCI_DEVICE_ID_INTEL_82375 0x0482
 #define PCI_DEVICE_ID_INTEL_82424 0x0483
 #define PCI_DEVICE_ID_INTEL_82378 0x0484
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_I960 0x0960
 #define PCI_DEVICE_ID_INTEL_I960RM 0x0962
 #define PCI_DEVICE_ID_INTEL_82815_MC 0x1130
 #define PCI_DEVICE_ID_INTEL_82815_CGC 0x1132
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82092AA_0 0x1221
 #define PCI_DEVICE_ID_INTEL_7505_0 0x2550 
 #define PCI_DEVICE_ID_INTEL_7205_0 0x255d
 #define PCI_DEVICE_ID_INTEL_82437 0x122d
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82371FB_0 0x122e
 #define PCI_DEVICE_ID_INTEL_82371FB_1 0x1230
 #define PCI_DEVICE_ID_INTEL_82371MX 0x1234
 #define PCI_DEVICE_ID_INTEL_82441 0x1237
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82380FB 0x124b
 #define PCI_DEVICE_ID_INTEL_82439 0x1250
 #define PCI_DEVICE_ID_INTEL_80960_RP 0x1960
 #define PCI_DEVICE_ID_INTEL_82840_HB 0x1a21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82845_HB 0x1a30
 #define PCI_DEVICE_ID_INTEL_IOAT 0x1a38
 #define PCI_DEVICE_ID_INTEL_82801AA_0 0x2410
 #define PCI_DEVICE_ID_INTEL_82801AA_1 0x2411
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801AA_3 0x2413
 #define PCI_DEVICE_ID_INTEL_82801AA_5 0x2415
 #define PCI_DEVICE_ID_INTEL_82801AA_6 0x2416
 #define PCI_DEVICE_ID_INTEL_82801AA_8 0x2418
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801AB_0 0x2420
 #define PCI_DEVICE_ID_INTEL_82801AB_1 0x2421
 #define PCI_DEVICE_ID_INTEL_82801AB_3 0x2423
 #define PCI_DEVICE_ID_INTEL_82801AB_5 0x2425
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801AB_6 0x2426
 #define PCI_DEVICE_ID_INTEL_82801AB_8 0x2428
 #define PCI_DEVICE_ID_INTEL_82801BA_0 0x2440
 #define PCI_DEVICE_ID_INTEL_82801BA_2 0x2443
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801BA_4 0x2445
 #define PCI_DEVICE_ID_INTEL_82801BA_6 0x2448
 #define PCI_DEVICE_ID_INTEL_82801BA_8 0x244a
 #define PCI_DEVICE_ID_INTEL_82801BA_9 0x244b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801BA_10 0x244c
 #define PCI_DEVICE_ID_INTEL_82801BA_11 0x244e
 #define PCI_DEVICE_ID_INTEL_82801E_0 0x2450
 #define PCI_DEVICE_ID_INTEL_82801E_11 0x245b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801CA_0 0x2480
 #define PCI_DEVICE_ID_INTEL_82801CA_3 0x2483
 #define PCI_DEVICE_ID_INTEL_82801CA_5 0x2485
 #define PCI_DEVICE_ID_INTEL_82801CA_6 0x2486
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801CA_10 0x248a
 #define PCI_DEVICE_ID_INTEL_82801CA_11 0x248b
 #define PCI_DEVICE_ID_INTEL_82801CA_12 0x248c
 #define PCI_DEVICE_ID_INTEL_82801DB_0 0x24c0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801DB_1 0x24c1
 #define PCI_DEVICE_ID_INTEL_82801DB_3 0x24c3
 #define PCI_DEVICE_ID_INTEL_82801DB_5 0x24c5
 #define PCI_DEVICE_ID_INTEL_82801DB_6 0x24c6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801DB_9 0x24c9
 #define PCI_DEVICE_ID_INTEL_82801DB_10 0x24ca
 #define PCI_DEVICE_ID_INTEL_82801DB_11 0x24cb
 #define PCI_DEVICE_ID_INTEL_82801DB_12 0x24cc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801EB_0 0x24d0
 #define PCI_DEVICE_ID_INTEL_82801EB_1 0x24d1
 #define PCI_DEVICE_ID_INTEL_82801EB_3 0x24d3
 #define PCI_DEVICE_ID_INTEL_82801EB_5 0x24d5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82801EB_6 0x24d6
 #define PCI_DEVICE_ID_INTEL_82801EB_11 0x24db
 #define PCI_DEVICE_ID_INTEL_82801EB_13 0x24dd
 #define PCI_DEVICE_ID_INTEL_ESB_1 0x25a1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_ESB_2 0x25a2
 #define PCI_DEVICE_ID_INTEL_ESB_4 0x25a4
 #define PCI_DEVICE_ID_INTEL_ESB_5 0x25a6
 #define PCI_DEVICE_ID_INTEL_ESB_9 0x25ab
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82820_HB 0x2500
 #define PCI_DEVICE_ID_INTEL_82820_UP_HB 0x2501
 #define PCI_DEVICE_ID_INTEL_82850_HB 0x2530
 #define PCI_DEVICE_ID_INTEL_82860_HB 0x2531
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_E7501_MCH 0x254c
 #define PCI_DEVICE_ID_INTEL_82845G_HB 0x2560
 #define PCI_DEVICE_ID_INTEL_82845G_IG 0x2562
 #define PCI_DEVICE_ID_INTEL_82865_HB 0x2570
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82865_IG 0x2572
 #define PCI_DEVICE_ID_INTEL_82875_HB 0x2578
 #define PCI_DEVICE_ID_INTEL_82915G_HB 0x2580
 #define PCI_DEVICE_ID_INTEL_82915G_IG 0x2582
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82915GM_HB 0x2590
 #define PCI_DEVICE_ID_INTEL_82915GM_IG 0x2592
 #define PCI_DEVICE_ID_INTEL_82945G_HB 0x2770
 #define PCI_DEVICE_ID_INTEL_82945G_IG 0x2772
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82945GM_HB 0x27A0
 #define PCI_DEVICE_ID_INTEL_82945GM_IG 0x27A2
 #define PCI_DEVICE_ID_INTEL_ICH6_0 0x2640
 #define PCI_DEVICE_ID_INTEL_ICH6_1 0x2641
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_ICH6_2 0x2642
 #define PCI_DEVICE_ID_INTEL_ICH6_16 0x266a
 #define PCI_DEVICE_ID_INTEL_ICH6_17 0x266d
 #define PCI_DEVICE_ID_INTEL_ICH6_18 0x266e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_ICH6_19 0x266f
 #define PCI_DEVICE_ID_INTEL_ESB2_0 0x2670
 #define PCI_DEVICE_ID_INTEL_ESB2_14 0x2698
 #define PCI_DEVICE_ID_INTEL_ESB2_17 0x269b
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_ESB2_18 0x269e
 #define PCI_DEVICE_ID_INTEL_ICH7_0 0x27b8
 #define PCI_DEVICE_ID_INTEL_ICH7_1 0x27b9
 #define PCI_DEVICE_ID_INTEL_ICH7_30 0x27b0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_ICH7_31 0x27bd
 #define PCI_DEVICE_ID_INTEL_ICH7_17 0x27da
 #define PCI_DEVICE_ID_INTEL_ICH7_19 0x27dd
 #define PCI_DEVICE_ID_INTEL_ICH7_20 0x27de
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_ICH7_21 0x27df
 #define PCI_DEVICE_ID_INTEL_ICH8_0 0x2810
 #define PCI_DEVICE_ID_INTEL_ICH8_1 0x2811
 #define PCI_DEVICE_ID_INTEL_ICH8_2 0x2812
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_ICH8_3 0x2814
 #define PCI_DEVICE_ID_INTEL_ICH8_4 0x2815
 #define PCI_DEVICE_ID_INTEL_ICH8_5 0x283e
 #define PCI_DEVICE_ID_INTEL_ICH8_6 0x2850
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82855PM_HB 0x3340
 #define PCI_DEVICE_ID_INTEL_82830_HB 0x3575
 #define PCI_DEVICE_ID_INTEL_82830_CGC 0x3577
 #define PCI_DEVICE_ID_INTEL_82855GM_HB 0x3580
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82855GM_IG 0x3582
 #define PCI_DEVICE_ID_INTEL_E7520_MCH 0x3590
 #define PCI_DEVICE_ID_INTEL_E7320_MCH 0x3592
 #define PCI_DEVICE_ID_INTEL_MCH_PA 0x3595
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_MCH_PA1 0x3596
 #define PCI_DEVICE_ID_INTEL_MCH_PB 0x3597
 #define PCI_DEVICE_ID_INTEL_MCH_PB1 0x3598
 #define PCI_DEVICE_ID_INTEL_MCH_PC 0x3599
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_MCH_PC1 0x359a
 #define PCI_DEVICE_ID_INTEL_E7525_MCH 0x359e
 #define PCI_DEVICE_ID_INTEL_82371SB_0 0x7000
 #define PCI_DEVICE_ID_INTEL_82371SB_1 0x7010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82371SB_2 0x7020
 #define PCI_DEVICE_ID_INTEL_82437VX 0x7030
 #define PCI_DEVICE_ID_INTEL_82439TX 0x7100
 #define PCI_DEVICE_ID_INTEL_82371AB_0 0x7110
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82371AB 0x7111
 #define PCI_DEVICE_ID_INTEL_82371AB_2 0x7112
 #define PCI_DEVICE_ID_INTEL_82371AB_3 0x7113
 #define PCI_DEVICE_ID_INTEL_82810_MC1 0x7120
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82810_IG1 0x7121
 #define PCI_DEVICE_ID_INTEL_82810_MC3 0x7122
 #define PCI_DEVICE_ID_INTEL_82810_IG3 0x7123
 #define PCI_DEVICE_ID_INTEL_82810E_MC 0x7124
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82810E_IG 0x7125
 #define PCI_DEVICE_ID_INTEL_82443LX_0 0x7180
 #define PCI_DEVICE_ID_INTEL_82443LX_1 0x7181
 #define PCI_DEVICE_ID_INTEL_82443BX_0 0x7190
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82443BX_1 0x7191
 #define PCI_DEVICE_ID_INTEL_82443BX_2 0x7192
 #define PCI_DEVICE_ID_INTEL_440MX 0x7195
 #define PCI_DEVICE_ID_INTEL_440MX_6 0x7196
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82443MX_0 0x7198
 #define PCI_DEVICE_ID_INTEL_82443MX_1 0x7199
 #define PCI_DEVICE_ID_INTEL_82443MX_3 0x719b
 #define PCI_DEVICE_ID_INTEL_82443GX_0 0x71a0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82443GX_2 0x71a2
 #define PCI_DEVICE_ID_INTEL_82372FB_1 0x7601
 #define PCI_DEVICE_ID_INTEL_82454GX 0x84c4
 #define PCI_DEVICE_ID_INTEL_82450GX 0x84c5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_82451NX 0x84ca
 #define PCI_DEVICE_ID_INTEL_82454NX 0x84cb
 #define PCI_DEVICE_ID_INTEL_84460GX 0x84ea
 #define PCI_DEVICE_ID_INTEL_IXP4XX 0x8500
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_INTEL_IXP2800 0x9004
 #define PCI_DEVICE_ID_INTEL_S21152BB 0xb152
-
 #define PCI_VENDOR_ID_SCALEMP 0x8686
 #define PCI_DEVICE_ID_SCALEMP_VSMP_CTL 0x1010
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_COMPUTONE 0x8e0e
 #define PCI_DEVICE_ID_COMPUTONE_IP2EX 0x0291
 #define PCI_DEVICE_ID_COMPUTONE_PG 0x0302
 #define PCI_SUBVENDOR_ID_COMPUTONE 0x8e0e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBDEVICE_ID_COMPUTONE_PG4 0x0001
 #define PCI_SUBDEVICE_ID_COMPUTONE_PG8 0x0002
 #define PCI_SUBDEVICE_ID_COMPUTONE_PG6 0x0003
-
 #define PCI_VENDOR_ID_KTI 0x8e2e
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_ADAPTEC 0x9004
 #define PCI_DEVICE_ID_ADAPTEC_7810 0x1078
 #define PCI_DEVICE_ID_ADAPTEC_7821 0x2178
 #define PCI_DEVICE_ID_ADAPTEC_38602 0x3860
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ADAPTEC_7850 0x5078
 #define PCI_DEVICE_ID_ADAPTEC_7855 0x5578
 #define PCI_DEVICE_ID_ADAPTEC_3860 0x6038
 #define PCI_DEVICE_ID_ADAPTEC_1480A 0x6075
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ADAPTEC_7860 0x6078
 #define PCI_DEVICE_ID_ADAPTEC_7861 0x6178
 #define PCI_DEVICE_ID_ADAPTEC_7870 0x7078
 #define PCI_DEVICE_ID_ADAPTEC_7871 0x7178
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ADAPTEC_7872 0x7278
 #define PCI_DEVICE_ID_ADAPTEC_7873 0x7378
 #define PCI_DEVICE_ID_ADAPTEC_7874 0x7478
 #define PCI_DEVICE_ID_ADAPTEC_7895 0x7895
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ADAPTEC_7880 0x8078
 #define PCI_DEVICE_ID_ADAPTEC_7881 0x8178
 #define PCI_DEVICE_ID_ADAPTEC_7882 0x8278
 #define PCI_DEVICE_ID_ADAPTEC_7883 0x8378
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ADAPTEC_7884 0x8478
 #define PCI_DEVICE_ID_ADAPTEC_7885 0x8578
 #define PCI_DEVICE_ID_ADAPTEC_7886 0x8678
 #define PCI_DEVICE_ID_ADAPTEC_7887 0x8778
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ADAPTEC_7888 0x8878
-
 #define PCI_VENDOR_ID_ADAPTEC2 0x9005
 #define PCI_DEVICE_ID_ADAPTEC2_2940U2 0x0010
 #define PCI_DEVICE_ID_ADAPTEC2_2930U2 0x0011
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ADAPTEC2_7890B 0x0013
 #define PCI_DEVICE_ID_ADAPTEC2_7890 0x001f
 #define PCI_DEVICE_ID_ADAPTEC2_3940U2 0x0050
 #define PCI_DEVICE_ID_ADAPTEC2_3950U2D 0x0051
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ADAPTEC2_7896 0x005f
 #define PCI_DEVICE_ID_ADAPTEC2_7892A 0x0080
 #define PCI_DEVICE_ID_ADAPTEC2_7892B 0x0081
 #define PCI_DEVICE_ID_ADAPTEC2_7892D 0x0083
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ADAPTEC2_7892P 0x008f
 #define PCI_DEVICE_ID_ADAPTEC2_7899A 0x00c0
 #define PCI_DEVICE_ID_ADAPTEC2_7899B 0x00c1
 #define PCI_DEVICE_ID_ADAPTEC2_7899D 0x00c3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_ADAPTEC2_7899P 0x00cf
 #define PCI_DEVICE_ID_ADAPTEC2_OBSIDIAN 0x0500
 #define PCI_DEVICE_ID_ADAPTEC2_SCAMP 0x0503
-
 #define PCI_VENDOR_ID_HOLTEK 0x9412
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_HOLTEK_6565 0x6565
-
 #define PCI_VENDOR_ID_NETMOS 0x9710
 #define PCI_DEVICE_ID_NETMOS_9705 0x9705
 #define PCI_DEVICE_ID_NETMOS_9715 0x9715
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NETMOS_9735 0x9735
 #define PCI_DEVICE_ID_NETMOS_9745 0x9745
 #define PCI_DEVICE_ID_NETMOS_9755 0x9755
 #define PCI_DEVICE_ID_NETMOS_9805 0x9805
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_NETMOS_9815 0x9815
 #define PCI_DEVICE_ID_NETMOS_9835 0x9835
 #define PCI_DEVICE_ID_NETMOS_9845 0x9845
 #define PCI_DEVICE_ID_NETMOS_9855 0x9855
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SUBVENDOR_ID_EXSYS 0xd84d
 #define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014
 #define PCI_SUBDEVICE_ID_EXSYS_4055 0x4055
-
 #define PCI_VENDOR_ID_TIGERJET 0xe159
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_DEVICE_ID_TIGERJET_300 0x0001
 #define PCI_DEVICE_ID_TIGERJET_100 0x0002
-
 #define PCI_VENDOR_ID_TTTECH 0x0357
 #define PCI_DEVICE_ID_TTTECH_MC322 0x000A
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VENDOR_ID_XILINX_RME 0xea60
 #define PCI_DEVICE_ID_RME_DIGI32 0x9896
 #define PCI_DEVICE_ID_RME_DIGI32_PRO 0x9897
 #define PCI_DEVICE_ID_RME_DIGI32_8 0x9898
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/pci_regs.h b/libc/kernel/common/linux/pci_regs.h
index 93a21be..fdb6b50 100644
--- a/libc/kernel/common/linux/pci_regs.h
+++ b/libc/kernel/common/linux/pci_regs.h
@@ -7,416 +7,477 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_PCI_REGS_H
 #define LINUX_PCI_REGS_H
-
 #define PCI_VENDOR_ID 0x00  
 #define PCI_DEVICE_ID 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_COMMAND 0x04  
 #define PCI_COMMAND_IO 0x1  
 #define PCI_COMMAND_MEMORY 0x2  
 #define PCI_COMMAND_MASTER 0x4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_COMMAND_SPECIAL 0x8  
 #define PCI_COMMAND_INVALIDATE 0x10  
 #define PCI_COMMAND_VGA_PALETTE 0x20  
 #define PCI_COMMAND_PARITY 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_COMMAND_WAIT 0x80  
 #define PCI_COMMAND_SERR 0x100  
 #define PCI_COMMAND_FAST_BACK 0x200  
 #define PCI_COMMAND_INTX_DISABLE 0x400  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_STATUS 0x06  
 #define PCI_STATUS_CAP_LIST 0x10  
 #define PCI_STATUS_66MHZ 0x20  
 #define PCI_STATUS_UDF 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_STATUS_FAST_BACK 0x80  
 #define PCI_STATUS_PARITY 0x100  
 #define PCI_STATUS_DEVSEL_MASK 0x600  
 #define PCI_STATUS_DEVSEL_FAST 0x000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_STATUS_DEVSEL_MEDIUM 0x200
 #define PCI_STATUS_DEVSEL_SLOW 0x400
 #define PCI_STATUS_SIG_TARGET_ABORT 0x800  
 #define PCI_STATUS_REC_TARGET_ABORT 0x1000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_STATUS_REC_MASTER_ABORT 0x2000  
 #define PCI_STATUS_SIG_SYSTEM_ERROR 0x4000  
 #define PCI_STATUS_DETECTED_PARITY 0x8000  
-
 #define PCI_CLASS_REVISION 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_REVISION_ID 0x08  
 #define PCI_CLASS_PROG 0x09  
 #define PCI_CLASS_DEVICE 0x0a  
-
 #define PCI_CACHE_LINE_SIZE 0x0c  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_LATENCY_TIMER 0x0d  
 #define PCI_HEADER_TYPE 0x0e  
 #define PCI_HEADER_TYPE_NORMAL 0
 #define PCI_HEADER_TYPE_BRIDGE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_HEADER_TYPE_CARDBUS 2
-
 #define PCI_BIST 0x0f  
 #define PCI_BIST_CODE_MASK 0x0f  
 #define PCI_BIST_START 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BIST_CAPABLE 0x80  
-
 #define PCI_BASE_ADDRESS_0 0x10  
 #define PCI_BASE_ADDRESS_1 0x14  
 #define PCI_BASE_ADDRESS_2 0x18  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BASE_ADDRESS_3 0x1c  
 #define PCI_BASE_ADDRESS_4 0x20  
 #define PCI_BASE_ADDRESS_5 0x24  
 #define PCI_BASE_ADDRESS_SPACE 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BASE_ADDRESS_SPACE_IO 0x01
 #define PCI_BASE_ADDRESS_SPACE_MEMORY 0x00
 #define PCI_BASE_ADDRESS_MEM_TYPE_MASK 0x06
 #define PCI_BASE_ADDRESS_MEM_TYPE_32 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BASE_ADDRESS_MEM_TYPE_1M 0x02  
 #define PCI_BASE_ADDRESS_MEM_TYPE_64 0x04  
 #define PCI_BASE_ADDRESS_MEM_PREFETCH 0x08  
 #define PCI_BASE_ADDRESS_MEM_MASK (~0x0fUL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BASE_ADDRESS_IO_MASK (~0x03UL)
-
 #define PCI_CARDBUS_CIS 0x28
 #define PCI_SUBSYSTEM_VENDOR_ID 0x2c
 #define PCI_SUBSYSTEM_ID 0x2e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ROM_ADDRESS 0x30  
 #define PCI_ROM_ADDRESS_ENABLE 0x01
 #define PCI_ROM_ADDRESS_MASK (~0x7ffUL)
-
 #define PCI_CAPABILITY_LIST 0x34  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_INTERRUPT_LINE 0x3c  
 #define PCI_INTERRUPT_PIN 0x3d  
 #define PCI_MIN_GNT 0x3e  
 #define PCI_MAX_LAT 0x3f  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PRIMARY_BUS 0x18  
 #define PCI_SECONDARY_BUS 0x19  
 #define PCI_SUBORDINATE_BUS 0x1a  
 #define PCI_SEC_LATENCY_TIMER 0x1b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_IO_BASE 0x1c  
 #define PCI_IO_LIMIT 0x1d
 #define PCI_IO_RANGE_TYPE_MASK 0x0fUL  
 #define PCI_IO_RANGE_TYPE_16 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_IO_RANGE_TYPE_32 0x01
 #define PCI_IO_RANGE_MASK (~0x0fUL)
 #define PCI_SEC_STATUS 0x1e  
 #define PCI_MEMORY_BASE 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_MEMORY_LIMIT 0x22
 #define PCI_MEMORY_RANGE_TYPE_MASK 0x0fUL
 #define PCI_MEMORY_RANGE_MASK (~0x0fUL)
 #define PCI_PREF_MEMORY_BASE 0x24  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PREF_MEMORY_LIMIT 0x26
 #define PCI_PREF_RANGE_TYPE_MASK 0x0fUL
 #define PCI_PREF_RANGE_TYPE_32 0x00
 #define PCI_PREF_RANGE_TYPE_64 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PREF_RANGE_MASK (~0x0fUL)
 #define PCI_PREF_BASE_UPPER32 0x28  
 #define PCI_PREF_LIMIT_UPPER32 0x2c
 #define PCI_IO_BASE_UPPER16 0x30  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_IO_LIMIT_UPPER16 0x32
-
 #define PCI_ROM_ADDRESS1 0x38  
-
 #define PCI_BRIDGE_CONTROL 0x3e
 #define PCI_BRIDGE_CTL_PARITY 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BRIDGE_CTL_SERR 0x02  
 #define PCI_BRIDGE_CTL_NO_ISA 0x04  
 #define PCI_BRIDGE_CTL_VGA 0x08  
 #define PCI_BRIDGE_CTL_MASTER_ABORT 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_BRIDGE_CTL_BUS_RESET 0x40  
 #define PCI_BRIDGE_CTL_FAST_BACK 0x80  
-
 #define PCI_CB_CAPABILITY_LIST 0x14
-
 #define PCI_CB_SEC_STATUS 0x16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CB_PRIMARY_BUS 0x18  
 #define PCI_CB_CARD_BUS 0x19  
 #define PCI_CB_SUBORDINATE_BUS 0x1a  
 #define PCI_CB_LATENCY_TIMER 0x1b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CB_MEMORY_BASE_0 0x1c
 #define PCI_CB_MEMORY_LIMIT_0 0x20
 #define PCI_CB_MEMORY_BASE_1 0x24
 #define PCI_CB_MEMORY_LIMIT_1 0x28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CB_IO_BASE_0 0x2c
 #define PCI_CB_IO_BASE_0_HI 0x2e
 #define PCI_CB_IO_LIMIT_0 0x30
 #define PCI_CB_IO_LIMIT_0_HI 0x32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CB_IO_BASE_1 0x34
 #define PCI_CB_IO_BASE_1_HI 0x36
 #define PCI_CB_IO_LIMIT_1 0x38
 #define PCI_CB_IO_LIMIT_1_HI 0x3a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CB_IO_RANGE_MASK (~0x03UL)
-
 #define PCI_CB_BRIDGE_CONTROL 0x3e
 #define PCI_CB_BRIDGE_CTL_PARITY 0x01  
 #define PCI_CB_BRIDGE_CTL_SERR 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CB_BRIDGE_CTL_ISA 0x04
 #define PCI_CB_BRIDGE_CTL_VGA 0x08
 #define PCI_CB_BRIDGE_CTL_MASTER_ABORT 0x20
 #define PCI_CB_BRIDGE_CTL_CB_RESET 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CB_BRIDGE_CTL_16BIT_INT 0x80  
 #define PCI_CB_BRIDGE_CTL_PREFETCH_MEM0 0x100  
 #define PCI_CB_BRIDGE_CTL_PREFETCH_MEM1 0x200
 #define PCI_CB_BRIDGE_CTL_POST_WRITES 0x400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CB_SUBSYSTEM_VENDOR_ID 0x40
 #define PCI_CB_SUBSYSTEM_ID 0x42
 #define PCI_CB_LEGACY_MODE_BASE 0x44  
-
 #define PCI_CAP_LIST_ID 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CAP_ID_PM 0x01  
 #define PCI_CAP_ID_AGP 0x02  
 #define PCI_CAP_ID_VPD 0x03  
 #define PCI_CAP_ID_SLOTID 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CAP_ID_MSI 0x05  
 #define PCI_CAP_ID_CHSWP 0x06  
 #define PCI_CAP_ID_PCIX 0x07  
 #define PCI_CAP_ID_HT_IRQCONF 0x08  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CAP_ID_VNDR 0x09  
 #define PCI_CAP_ID_SHPC 0x0C  
 #define PCI_CAP_ID_EXP 0x10  
 #define PCI_CAP_ID_MSIX 0x11  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CAP_LIST_NEXT 1  
 #define PCI_CAP_FLAGS 2  
 #define PCI_CAP_SIZEOF 4
-
 #define PCI_PM_PMC 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PM_CAP_VER_MASK 0x0007  
 #define PCI_PM_CAP_PME_CLOCK 0x0008  
 #define PCI_PM_CAP_RESERVED 0x0010  
 #define PCI_PM_CAP_DSI 0x0020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PM_CAP_AUX_POWER 0x01C0  
 #define PCI_PM_CAP_D1 0x0200  
 #define PCI_PM_CAP_D2 0x0400  
 #define PCI_PM_CAP_PME 0x0800  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PM_CAP_PME_MASK 0xF800  
 #define PCI_PM_CAP_PME_D0 0x0800  
 #define PCI_PM_CAP_PME_D1 0x1000  
 #define PCI_PM_CAP_PME_D2 0x2000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PM_CAP_PME_D3 0x4000  
 #define PCI_PM_CAP_PME_D3cold 0x8000  
 #define PCI_PM_CTRL 4  
 #define PCI_PM_CTRL_STATE_MASK 0x0003  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PM_CTRL_NO_SOFT_RESET 0x0004  
 #define PCI_PM_CTRL_PME_ENABLE 0x0100  
 #define PCI_PM_CTRL_DATA_SEL_MASK 0x1e00  
 #define PCI_PM_CTRL_DATA_SCALE_MASK 0x6000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PM_CTRL_PME_STATUS 0x8000  
 #define PCI_PM_PPB_EXTENSIONS 6  
 #define PCI_PM_PPB_B2_B3 0x40  
 #define PCI_PM_BPCC_ENABLE 0x80  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PM_DATA_REGISTER 7  
 #define PCI_PM_SIZEOF 8
-
 #define PCI_AGP_VERSION 2  
 #define PCI_AGP_RFU 3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_AGP_STATUS 4  
 #define PCI_AGP_STATUS_RQ_MASK 0xff000000  
 #define PCI_AGP_STATUS_SBA 0x0200  
 #define PCI_AGP_STATUS_64BIT 0x0020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_AGP_STATUS_FW 0x0010  
 #define PCI_AGP_STATUS_RATE4 0x0004  
 #define PCI_AGP_STATUS_RATE2 0x0002  
 #define PCI_AGP_STATUS_RATE1 0x0001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_AGP_COMMAND 8  
 #define PCI_AGP_COMMAND_RQ_MASK 0xff000000  
 #define PCI_AGP_COMMAND_SBA 0x0200  
 #define PCI_AGP_COMMAND_AGP 0x0100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_AGP_COMMAND_64BIT 0x0020  
 #define PCI_AGP_COMMAND_FW 0x0010  
 #define PCI_AGP_COMMAND_RATE4 0x0004  
 #define PCI_AGP_COMMAND_RATE2 0x0002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_AGP_COMMAND_RATE1 0x0001  
 #define PCI_AGP_SIZEOF 12
-
 #define PCI_VPD_ADDR 2  
 #define PCI_VPD_ADDR_MASK 0x7fff  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VPD_ADDR_F 0x8000  
 #define PCI_VPD_DATA 4  
-
 #define PCI_SID_ESR 2  
 #define PCI_SID_ESR_NSLOTS 0x1f  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_SID_ESR_FIC 0x20  
 #define PCI_SID_CHASSIS_NR 3  
-
 #define PCI_MSI_FLAGS 2  
 #define PCI_MSI_FLAGS_64BIT 0x80  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_MSI_FLAGS_QSIZE 0x70  
 #define PCI_MSI_FLAGS_QMASK 0x0e  
 #define PCI_MSI_FLAGS_ENABLE 0x01  
 #define PCI_MSI_FLAGS_MASKBIT 0x100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_MSI_RFU 3  
 #define PCI_MSI_ADDRESS_LO 4  
 #define PCI_MSI_ADDRESS_HI 8  
 #define PCI_MSI_DATA_32 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_MSI_DATA_64 12  
 #define PCI_MSI_MASK_BIT 16  
-
 #define PCI_CHSWP_CSR 2  
 #define PCI_CHSWP_DHA 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CHSWP_EIM 0x02  
 #define PCI_CHSWP_PIE 0x04  
 #define PCI_CHSWP_LOO 0x08  
 #define PCI_CHSWP_PI 0x30  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_CHSWP_EXT 0x40  
 #define PCI_CHSWP_INS 0x80  
-
 #define PCI_X_CMD 2  
 #define PCI_X_CMD_DPERR_E 0x0001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_X_CMD_ERO 0x0002  
 #define PCI_X_CMD_MAX_READ 0x000c  
 #define PCI_X_CMD_MAX_SPLIT 0x0070  
 #define PCI_X_CMD_VERSION(x) (((x) >> 12) & 3)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_X_STATUS 4  
 #define PCI_X_STATUS_DEVFN 0x000000ff  
 #define PCI_X_STATUS_BUS 0x0000ff00  
 #define PCI_X_STATUS_64BIT 0x00010000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_X_STATUS_133MHZ 0x00020000  
 #define PCI_X_STATUS_SPL_DISC 0x00040000  
 #define PCI_X_STATUS_UNX_SPL 0x00080000  
 #define PCI_X_STATUS_COMPLEX 0x00100000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_X_STATUS_MAX_READ 0x00600000  
 #define PCI_X_STATUS_MAX_SPLIT 0x03800000  
 #define PCI_X_STATUS_MAX_CUM 0x1c000000  
 #define PCI_X_STATUS_SPL_ERR 0x20000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_X_STATUS_266MHZ 0x40000000  
 #define PCI_X_STATUS_533MHZ 0x80000000  
-
 #define PCI_EXP_FLAGS 2  
 #define PCI_EXP_FLAGS_VERS 0x000f  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_FLAGS_TYPE 0x00f0  
 #define PCI_EXP_TYPE_ENDPOINT 0x0  
 #define PCI_EXP_TYPE_LEG_END 0x1  
 #define PCI_EXP_TYPE_ROOT_PORT 0x4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_TYPE_UPSTREAM 0x5  
 #define PCI_EXP_TYPE_DOWNSTREAM 0x6  
 #define PCI_EXP_TYPE_PCI_BRIDGE 0x7  
 #define PCI_EXP_FLAGS_SLOT 0x0100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_FLAGS_IRQ 0x3e00  
 #define PCI_EXP_DEVCAP 4  
 #define PCI_EXP_DEVCAP_PAYLOAD 0x07  
 #define PCI_EXP_DEVCAP_PHANTOM 0x18  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_DEVCAP_EXT_TAG 0x20  
 #define PCI_EXP_DEVCAP_L0S 0x1c0  
 #define PCI_EXP_DEVCAP_L1 0xe00  
 #define PCI_EXP_DEVCAP_ATN_BUT 0x1000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_DEVCAP_ATN_IND 0x2000  
 #define PCI_EXP_DEVCAP_PWR_IND 0x4000  
 #define PCI_EXP_DEVCAP_PWR_VAL 0x3fc0000  
 #define PCI_EXP_DEVCAP_PWR_SCL 0xc000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_DEVCTL 8  
 #define PCI_EXP_DEVCTL_CERE 0x0001  
 #define PCI_EXP_DEVCTL_NFERE 0x0002  
 #define PCI_EXP_DEVCTL_FERE 0x0004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_DEVCTL_URRE 0x0008  
 #define PCI_EXP_DEVCTL_RELAX_EN 0x0010  
 #define PCI_EXP_DEVCTL_PAYLOAD 0x00e0  
 #define PCI_EXP_DEVCTL_EXT_TAG 0x0100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_DEVCTL_PHANTOM 0x0200  
 #define PCI_EXP_DEVCTL_AUX_PME 0x0400  
 #define PCI_EXP_DEVCTL_NOSNOOP_EN 0x0800  
 #define PCI_EXP_DEVCTL_READRQ 0x7000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_DEVSTA 10  
 #define PCI_EXP_DEVSTA_CED 0x01  
 #define PCI_EXP_DEVSTA_NFED 0x02  
 #define PCI_EXP_DEVSTA_FED 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_DEVSTA_URD 0x08  
 #define PCI_EXP_DEVSTA_AUXPD 0x10  
 #define PCI_EXP_DEVSTA_TRPND 0x20  
 #define PCI_EXP_LNKCAP 12  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_LNKCTL 16  
 #define PCI_EXP_LNKSTA 18  
 #define PCI_EXP_SLTCAP 20  
 #define PCI_EXP_SLTCTL 24  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_SLTSTA 26  
 #define PCI_EXP_RTCTL 28  
 #define PCI_EXP_RTCTL_SECEE 0x01  
 #define PCI_EXP_RTCTL_SENFEE 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_RTCTL_SEFEE 0x04  
 #define PCI_EXP_RTCTL_PMEIE 0x08  
 #define PCI_EXP_RTCTL_CRSSVE 0x10  
 #define PCI_EXP_RTCAP 30  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXP_RTSTA 32  
-
 #define PCI_EXT_CAP_ID(header) (header & 0x0000ffff)
 #define PCI_EXT_CAP_VER(header) ((header >> 16) & 0xf)
 #define PCI_EXT_CAP_NEXT(header) ((header >> 20) & 0xffc)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_EXT_CAP_ID_ERR 1
 #define PCI_EXT_CAP_ID_VC 2
 #define PCI_EXT_CAP_ID_DSN 3
 #define PCI_EXT_CAP_ID_PWR 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_UNCOR_STATUS 4  
 #define PCI_ERR_UNC_TRAIN 0x00000001  
 #define PCI_ERR_UNC_DLP 0x00000010  
 #define PCI_ERR_UNC_POISON_TLP 0x00001000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_UNC_FCP 0x00002000  
 #define PCI_ERR_UNC_COMP_TIME 0x00004000  
 #define PCI_ERR_UNC_COMP_ABORT 0x00008000  
 #define PCI_ERR_UNC_UNX_COMP 0x00010000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_UNC_RX_OVER 0x00020000  
 #define PCI_ERR_UNC_MALF_TLP 0x00040000  
 #define PCI_ERR_UNC_ECRC 0x00080000  
 #define PCI_ERR_UNC_UNSUP 0x00100000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_UNCOR_MASK 8  
-
 #define PCI_ERR_UNCOR_SEVER 12  
-
 #define PCI_ERR_COR_STATUS 16  
 #define PCI_ERR_COR_RCVR 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_COR_BAD_TLP 0x00000040  
 #define PCI_ERR_COR_BAD_DLLP 0x00000080  
 #define PCI_ERR_COR_REP_ROLL 0x00000100  
 #define PCI_ERR_COR_REP_TIMER 0x00001000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_COR_MASK 20  
-
 #define PCI_ERR_CAP 24  
 #define PCI_ERR_CAP_FEP(x) ((x) & 31)  
 #define PCI_ERR_CAP_ECRC_GENC 0x00000020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_CAP_ECRC_GENE 0x00000040  
 #define PCI_ERR_CAP_ECRC_CHKC 0x00000080  
 #define PCI_ERR_CAP_ECRC_CHKE 0x00000100  
 #define PCI_ERR_HEADER_LOG 28  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_ROOT_COMMAND 44  
-
 #define PCI_ERR_ROOT_CMD_COR_EN 0x00000001
-
 #define PCI_ERR_ROOT_CMD_NONFATAL_EN 0x00000002
-
 #define PCI_ERR_ROOT_CMD_FATAL_EN 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_ROOT_STATUS 48
 #define PCI_ERR_ROOT_COR_RCV 0x00000001  
-
 #define PCI_ERR_ROOT_MULTI_COR_RCV 0x00000002
-
 #define PCI_ERR_ROOT_UNCOR_RCV 0x00000004
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_ROOT_MULTI_UNCOR_RCV 0x00000008
 #define PCI_ERR_ROOT_FIRST_FATAL 0x00000010  
 #define PCI_ERR_ROOT_NONFATAL_RCV 0x00000020  
 #define PCI_ERR_ROOT_FATAL_RCV 0x00000040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_ERR_ROOT_COR_SRC 52
 #define PCI_ERR_ROOT_SRC 54
-
 #define PCI_VC_PORT_REG1 4
 #define PCI_VC_PORT_REG2 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VC_PORT_CTRL 12
 #define PCI_VC_PORT_STATUS 14
 #define PCI_VC_RES_CAP 16
 #define PCI_VC_RES_CTRL 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_VC_RES_STATUS 26
-
 #define PCI_PWR_DSR 4  
 #define PCI_PWR_DATA 8  
 #define PCI_PWR_DATA_BASE(x) ((x) & 0xff)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PWR_DATA_SCALE(x) (((x) >> 8) & 3)  
 #define PCI_PWR_DATA_PM_SUB(x) (((x) >> 10) & 7)  
 #define PCI_PWR_DATA_PM_STATE(x) (((x) >> 13) & 3)  
 #define PCI_PWR_DATA_TYPE(x) (((x) >> 15) & 7)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCI_PWR_DATA_RAIL(x) (((x) >> 18) & 7)  
 #define PCI_PWR_CAP 12  
 #define PCI_PWR_CAP_BUDGET(x) ((x) & 1)  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/percpu.h b/libc/kernel/common/linux/percpu.h
index c195616..9597e29 100644
--- a/libc/kernel/common/linux/percpu.h
+++ b/libc/kernel/common/linux/percpu.h
@@ -7,24 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_PERCPU_H
 #define __LINUX_PERCPU_H
 #include <linux/spinlock.h>  
 #include <linux/slab.h>  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/smp.h>
 #include <linux/string.h>  
 #include <asm/percpu.h>
-
 #ifndef PERCPU_ENOUGH_ROOM
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PERCPU_ENOUGH_ROOM 32768
 #endif
-
 #define get_cpu_var(var) (*({ preempt_disable(); &__get_cpu_var(var); }))
 #define put_cpu_var(var) preempt_enable()
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define per_cpu_ptr(ptr, cpu) ({ (void)(cpu); (ptr); })
-
 #define alloc_percpu(type) ((type *)(__alloc_percpu(sizeof(type))))
 #endif
diff --git a/libc/kernel/common/linux/percpu_counter.h b/libc/kernel/common/linux/percpu_counter.h
index 112375c..33073f8 100644
--- a/libc/kernel/common/linux/percpu_counter.h
+++ b/libc/kernel/common/linux/percpu_counter.h
@@ -7,19 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PERCPU_COUNTER_H
 #define _LINUX_PERCPU_COUNTER_H
-
 #include <linux/spinlock.h>
 #include <linux/smp.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/threads.h>
 #include <linux/percpu.h>
 #include <linux/types.h>
-
 struct percpu_counter {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  s64 count;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/perf_event.h b/libc/kernel/common/linux/perf_event.h
index 9d3cd14..f039a6d 100644
--- a/libc/kernel/common/linux/perf_event.h
+++ b/libc/kernel/common/linux/perf_event.h
@@ -7,234 +7,228 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PERF_EVENT_H
 #define _LINUX_PERF_EVENT_H
-
 #include <linux/types.h>
 #include <linux/ioctl.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/byteorder.h>
-
 enum perf_type_id {
  PERF_TYPE_HARDWARE = 0,
  PERF_TYPE_SOFTWARE = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_TYPE_TRACEPOINT = 2,
  PERF_TYPE_HW_CACHE = 3,
  PERF_TYPE_RAW = 4,
  PERF_TYPE_BREAKPOINT = 5,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_TYPE_MAX,
 };
-
 enum perf_hw_id {
-
  PERF_COUNT_HW_CPU_CYCLES = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_COUNT_HW_INSTRUCTIONS = 1,
  PERF_COUNT_HW_CACHE_REFERENCES = 2,
  PERF_COUNT_HW_CACHE_MISSES = 3,
  PERF_COUNT_HW_BRANCH_INSTRUCTIONS = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_COUNT_HW_BRANCH_MISSES = 5,
  PERF_COUNT_HW_BUS_CYCLES = 6,
-
  PERF_COUNT_HW_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum perf_hw_cache_id {
  PERF_COUNT_HW_CACHE_L1D = 0,
  PERF_COUNT_HW_CACHE_L1I = 1,
  PERF_COUNT_HW_CACHE_LL = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_COUNT_HW_CACHE_DTLB = 3,
  PERF_COUNT_HW_CACHE_ITLB = 4,
  PERF_COUNT_HW_CACHE_BPU = 5,
-
  PERF_COUNT_HW_CACHE_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum perf_hw_cache_op_id {
  PERF_COUNT_HW_CACHE_OP_READ = 0,
  PERF_COUNT_HW_CACHE_OP_WRITE = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_COUNT_HW_CACHE_OP_PREFETCH = 2,
-
  PERF_COUNT_HW_CACHE_OP_MAX,
 };
-
 enum perf_hw_cache_op_result_id {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_COUNT_HW_CACHE_RESULT_ACCESS = 0,
  PERF_COUNT_HW_CACHE_RESULT_MISS = 1,
-
  PERF_COUNT_HW_CACHE_RESULT_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum perf_sw_ids {
  PERF_COUNT_SW_CPU_CLOCK = 0,
  PERF_COUNT_SW_TASK_CLOCK = 1,
  PERF_COUNT_SW_PAGE_FAULTS = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_COUNT_SW_CONTEXT_SWITCHES = 3,
  PERF_COUNT_SW_CPU_MIGRATIONS = 4,
  PERF_COUNT_SW_PAGE_FAULTS_MIN = 5,
  PERF_COUNT_SW_PAGE_FAULTS_MAJ = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_COUNT_SW_ALIGNMENT_FAULTS = 7,
  PERF_COUNT_SW_EMULATION_FAULTS = 8,
-
  PERF_COUNT_SW_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum perf_event_sample_format {
  PERF_SAMPLE_IP = 1U << 0,
  PERF_SAMPLE_TID = 1U << 1,
  PERF_SAMPLE_TIME = 1U << 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_SAMPLE_ADDR = 1U << 3,
  PERF_SAMPLE_READ = 1U << 4,
  PERF_SAMPLE_CALLCHAIN = 1U << 5,
  PERF_SAMPLE_ID = 1U << 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_SAMPLE_CPU = 1U << 7,
  PERF_SAMPLE_PERIOD = 1U << 8,
  PERF_SAMPLE_STREAM_ID = 1U << 9,
  PERF_SAMPLE_RAW = 1U << 10,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_SAMPLE_MAX = 1U << 11,
 };
-
 enum perf_event_read_format {
  PERF_FORMAT_TOTAL_TIME_ENABLED = 1U << 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
  PERF_FORMAT_ID = 1U << 2,
  PERF_FORMAT_GROUP = 1U << 3,
-
  PERF_FORMAT_MAX = 1U << 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define PERF_ATTR_SIZE_VER0 64  
-
 struct perf_event_attr {
-
  __u32 type;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 size;
-
  __u64 config;
-
  union {
  __u64 sample_period;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 sample_freq;
  };
-
  __u64 sample_type;
  __u64 read_format;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 disabled : 1,
  inherit : 1,
  pinned : 1,
  exclusive : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  exclude_user : 1,
  exclude_kernel : 1,
  exclude_hv : 1,
  exclude_idle : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  mmap : 1,
  comm : 1,
  freq : 1,
  inherit_stat : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  enable_on_exec : 1,
  task : 1,
  watermark : 1,
-
  precise_ip : 2,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __reserved_1 : 47;
-
  union {
  __u32 wakeup_events;
  __u32 wakeup_watermark;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  };
-
  __u32 bp_type;
  __u64 bp_addr;
  __u64 bp_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define PERF_EVENT_IOC_ENABLE _IO ('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO ('$', 1)
 #define PERF_EVENT_IOC_REFRESH _IO ('$', 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PERF_EVENT_IOC_RESET _IO ('$', 3)
 #define PERF_EVENT_IOC_PERIOD _IOW('$', 4, __u64)
 #define PERF_EVENT_IOC_SET_OUTPUT _IO ('$', 5)
 #define PERF_EVENT_IOC_SET_FILTER _IOW('$', 6, char *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum perf_event_ioc_flags {
  PERF_IOC_FLAG_GROUP = 1U << 0,
 };
-
 struct perf_event_mmap_page {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 version;
  __u32 compat_version;
-
  __u32 lock;
  __u32 index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s64 offset;
  __u64 time_enabled;
  __u64 time_running;
-
  __u64 __reserved[123];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 data_head;
  __u64 data_tail;
 };
-
 #define PERF_RECORD_MISC_CPUMODE_MASK (7 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PERF_RECORD_MISC_CPUMODE_UNKNOWN (0 << 0)
 #define PERF_RECORD_MISC_KERNEL (1 << 0)
 #define PERF_RECORD_MISC_USER (2 << 0)
 #define PERF_RECORD_MISC_HYPERVISOR (3 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PERF_RECORD_MISC_GUEST_KERNEL (4 << 0)
 #define PERF_RECORD_MISC_GUEST_USER (5 << 0)
-
 #define PERF_RECORD_MISC_EXACT_IP (1 << 14)
-
 #define PERF_RECORD_MISC_EXT_RESERVED (1 << 15)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct perf_event_header {
  __u32 type;
  __u16 misc;
  __u16 size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum perf_event_type {
-
  PERF_RECORD_MMAP = 1,
-
  PERF_RECORD_LOST = 2,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_RECORD_COMM = 3,
-
  PERF_RECORD_EXIT = 4,
-
  PERF_RECORD_THROTTLE = 5,
  PERF_RECORD_UNTHROTTLE = 6,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_RECORD_FORK = 7,
-
  PERF_RECORD_READ = 8,
-
  PERF_RECORD_SAMPLE = 9,
-
  PERF_RECORD_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum perf_callchain_context {
  PERF_CONTEXT_HV = (__u64)-32,
  PERF_CONTEXT_KERNEL = (__u64)-128,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_CONTEXT_USER = (__u64)-512,
-
  PERF_CONTEXT_GUEST = (__u64)-2048,
  PERF_CONTEXT_GUEST_KERNEL = (__u64)-2176,
  PERF_CONTEXT_GUEST_USER = (__u64)-2560,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PERF_CONTEXT_MAX = (__u64)-4095,
 };
-
 #define PERF_FLAG_FD_NO_GROUP (1U << 0)
 #define PERF_FLAG_FD_OUTPUT (1U << 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/personality.h b/libc/kernel/common/linux/personality.h
index 1f84b4e..bb55b75 100644
--- a/libc/kernel/common/linux/personality.h
+++ b/libc/kernel/common/linux/personality.h
@@ -7,77 +7,65 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PERSONALITY_H
 #define _LINUX_PERSONALITY_H
-
-struct exec_domain;
-struct pt_regs;
-
 enum {
+ UNAME26 = 0x0020000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ADDR_NO_RANDOMIZE = 0x0040000,
  FDPIC_FUNCPTRS = 0x0080000,
  MMAP_PAGE_ZERO = 0x0100000,
  ADDR_COMPAT_LAYOUT = 0x0200000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  READ_IMPLIES_EXEC = 0x0400000,
  ADDR_LIMIT_32BIT = 0x0800000,
  SHORT_INODE = 0x1000000,
  WHOLE_SECONDS = 0x2000000,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  STICKY_TIMEOUTS = 0x4000000,
  ADDR_LIMIT_3GB = 0x8000000,
 };
-
-#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC|ADDR_NO_RANDOMIZE)
-
+#define PER_CLEAR_ON_SETID (READ_IMPLIES_EXEC |   ADDR_NO_RANDOMIZE |   ADDR_COMPAT_LAYOUT |   MMAP_PAGE_ZERO)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  PER_LINUX = 0x0000,
  PER_LINUX_32BIT = 0x0000 | ADDR_LIMIT_32BIT,
  PER_LINUX_FDPIC = 0x0000 | FDPIC_FUNCPTRS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PER_SVR4 = 0x0001 | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
  PER_SVR3 = 0x0002 | STICKY_TIMEOUTS | SHORT_INODE,
  PER_SCOSVR3 = 0x0003 | STICKY_TIMEOUTS |
  WHOLE_SECONDS | SHORT_INODE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PER_OSR5 = 0x0003 | STICKY_TIMEOUTS | WHOLE_SECONDS,
  PER_WYSEV386 = 0x0004 | STICKY_TIMEOUTS | SHORT_INODE,
  PER_ISCR4 = 0x0005 | STICKY_TIMEOUTS,
  PER_BSD = 0x0006,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PER_SUNOS = 0x0006 | STICKY_TIMEOUTS,
  PER_XENIX = 0x0007 | STICKY_TIMEOUTS | SHORT_INODE,
  PER_LINUX32 = 0x0008,
  PER_LINUX32_3GB = 0x0008 | ADDR_LIMIT_3GB,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PER_IRIX32 = 0x0009 | STICKY_TIMEOUTS,
  PER_IRIXN32 = 0x000a | STICKY_TIMEOUTS,
  PER_IRIX64 = 0x000b | STICKY_TIMEOUTS,
  PER_RISCOS = 0x000c,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PER_SOLARIS = 0x000d | STICKY_TIMEOUTS,
  PER_UW7 = 0x000e | STICKY_TIMEOUTS | MMAP_PAGE_ZERO,
  PER_OSF4 = 0x000f,
  PER_HPUX = 0x0010,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PER_MASK = 0x00ff,
 };
-
-typedef void (*handler_t)(int, struct pt_regs *);
-
-struct exec_domain {
- const char *name;
- handler_t handler;
- unsigned char pers_low;
- unsigned char pers_high;
- unsigned long *signal_map;
- unsigned long *signal_invmap;
- struct map_segment *err_map;
- struct map_segment *socktype_map;
- struct map_segment *sockopt_map;
- struct map_segment *af_map;
- struct module *module;
- struct exec_domain *next;
-};
-
-#define personality(pers) (pers & PER_MASK)
-
-#define get_personality (current->personality)
-
-#define set_personality(pers)   ((current->personality == pers) ? 0 : __set_personality(pers))
-
 #endif
diff --git a/libc/kernel/common/linux/pfkeyv2.h b/libc/kernel/common/linux/pfkeyv2.h
index 3ac9488..68e43ce 100644
--- a/libc/kernel/common/linux/pfkeyv2.h
+++ b/libc/kernel/common/linux/pfkeyv2.h
@@ -7,300 +7,338 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PFKEY2_H
 #define _LINUX_PFKEY2_H
-
 #include <linux/types.h>
-
 #define PF_KEY_V2 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PFKEYV2_REVISION 199806L
-
 struct sadb_msg {
  uint8_t sadb_msg_version;
  uint8_t sadb_msg_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t sadb_msg_errno;
  uint8_t sadb_msg_satype;
  uint16_t sadb_msg_len;
  uint16_t sadb_msg_reserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t sadb_msg_seq;
  uint32_t sadb_msg_pid;
 } __attribute__((packed));
-
 struct sadb_ext {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_ext_len;
  uint16_t sadb_ext_type;
 } __attribute__((packed));
-
 struct sadb_sa {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_sa_len;
  uint16_t sadb_sa_exttype;
  uint32_t sadb_sa_spi;
  uint8_t sadb_sa_replay;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t sadb_sa_state;
  uint8_t sadb_sa_auth;
  uint8_t sadb_sa_encrypt;
  uint32_t sadb_sa_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 struct sadb_lifetime {
  uint16_t sadb_lifetime_len;
  uint16_t sadb_lifetime_exttype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t sadb_lifetime_allocations;
  uint64_t sadb_lifetime_bytes;
  uint64_t sadb_lifetime_addtime;
  uint64_t sadb_lifetime_usetime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 struct sadb_address {
  uint16_t sadb_address_len;
  uint16_t sadb_address_exttype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t sadb_address_proto;
  uint8_t sadb_address_prefixlen;
  uint16_t sadb_address_reserved;
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sadb_key {
  uint16_t sadb_key_len;
  uint16_t sadb_key_exttype;
  uint16_t sadb_key_bits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_key_reserved;
 } __attribute__((packed));
-
 struct sadb_ident {
  uint16_t sadb_ident_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_ident_exttype;
  uint16_t sadb_ident_type;
  uint16_t sadb_ident_reserved;
  uint64_t sadb_ident_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 struct sadb_sens {
  uint16_t sadb_sens_len;
  uint16_t sadb_sens_exttype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t sadb_sens_dpd;
  uint8_t sadb_sens_sens_level;
  uint8_t sadb_sens_sens_len;
  uint8_t sadb_sens_integ_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t sadb_sens_integ_len;
  uint32_t sadb_sens_reserved;
 } __attribute__((packed));
-
 struct sadb_prop {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_prop_len;
  uint16_t sadb_prop_exttype;
  uint8_t sadb_prop_replay;
  uint8_t sadb_prop_reserved[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 struct sadb_comb {
  uint8_t sadb_comb_auth;
  uint8_t sadb_comb_encrypt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_comb_flags;
  uint16_t sadb_comb_auth_minbits;
  uint16_t sadb_comb_auth_maxbits;
  uint16_t sadb_comb_encrypt_minbits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_comb_encrypt_maxbits;
  uint32_t sadb_comb_reserved;
  uint32_t sadb_comb_soft_allocations;
  uint32_t sadb_comb_hard_allocations;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint64_t sadb_comb_soft_bytes;
  uint64_t sadb_comb_hard_bytes;
  uint64_t sadb_comb_soft_addtime;
  uint64_t sadb_comb_hard_addtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint64_t sadb_comb_soft_usetime;
  uint64_t sadb_comb_hard_usetime;
 } __attribute__((packed));
-
 struct sadb_supported {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_supported_len;
  uint16_t sadb_supported_exttype;
  uint32_t sadb_supported_reserved;
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sadb_alg {
  uint8_t sadb_alg_id;
  uint8_t sadb_alg_ivlen;
  uint16_t sadb_alg_minbits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_alg_maxbits;
  uint16_t sadb_alg_reserved;
 } __attribute__((packed));
-
 struct sadb_spirange {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_spirange_len;
  uint16_t sadb_spirange_exttype;
  uint32_t sadb_spirange_min;
  uint32_t sadb_spirange_max;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t sadb_spirange_reserved;
 } __attribute__((packed));
-
 struct sadb_x_kmprivate {
  uint16_t sadb_x_kmprivate_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_x_kmprivate_exttype;
  uint32_t sadb_x_kmprivate_reserved;
 } __attribute__((packed));
-
 struct sadb_x_sa2 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_x_sa2_len;
  uint16_t sadb_x_sa2_exttype;
  uint8_t sadb_x_sa2_mode;
  uint8_t sadb_x_sa2_reserved1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_x_sa2_reserved2;
  uint32_t sadb_x_sa2_sequence;
  uint32_t sadb_x_sa2_reqid;
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sadb_x_policy {
  uint16_t sadb_x_policy_len;
  uint16_t sadb_x_policy_exttype;
  uint16_t sadb_x_policy_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t sadb_x_policy_dir;
  uint8_t sadb_x_policy_reserved;
  uint32_t sadb_x_policy_id;
  uint32_t sadb_x_policy_priority;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 struct sadb_x_ipsecrequest {
  uint16_t sadb_x_ipsecrequest_len;
  uint16_t sadb_x_ipsecrequest_proto;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t sadb_x_ipsecrequest_mode;
  uint8_t sadb_x_ipsecrequest_level;
  uint16_t sadb_x_ipsecrequest_reserved1;
  uint32_t sadb_x_ipsecrequest_reqid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t sadb_x_ipsecrequest_reserved2;
 } __attribute__((packed));
-
 struct sadb_x_nat_t_type {
  uint16_t sadb_x_nat_t_type_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_x_nat_t_type_exttype;
  uint8_t sadb_x_nat_t_type_type;
  uint8_t sadb_x_nat_t_type_reserved[3];
 } __attribute__((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sadb_x_nat_t_port {
  uint16_t sadb_x_nat_t_port_len;
  uint16_t sadb_x_nat_t_port_exttype;
  uint16_t sadb_x_nat_t_port_port;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_x_nat_t_port_reserved;
 } __attribute__((packed));
-
 struct sadb_x_sec_ctx {
  uint16_t sadb_x_sec_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t sadb_x_sec_exttype;
  uint8_t sadb_x_ctx_alg;
  uint8_t sadb_x_ctx_doi;
  uint16_t sadb_x_ctx_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__((packed));
-
 #define SADB_RESERVED 0
 #define SADB_GETSPI 1
 #define SADB_UPDATE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_ADD 3
 #define SADB_DELETE 4
 #define SADB_GET 5
 #define SADB_ACQUIRE 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_REGISTER 7
 #define SADB_EXPIRE 8
 #define SADB_FLUSH 9
 #define SADB_DUMP 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_X_PROMISC 11
 #define SADB_X_PCHANGE 12
 #define SADB_X_SPDUPDATE 13
 #define SADB_X_SPDADD 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_X_SPDDELETE 15
 #define SADB_X_SPDGET 16
 #define SADB_X_SPDACQUIRE 17
 #define SADB_X_SPDDUMP 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_X_SPDFLUSH 19
 #define SADB_X_SPDSETIDX 20
 #define SADB_X_SPDEXPIRE 21
 #define SADB_X_SPDDELETE2 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_X_NAT_T_NEW_MAPPING 23
 #define SADB_MAX 23
-
 #define SADB_SAFLAGS_PFS 1
 #define SADB_SAFLAGS_NOPMTUDISC 0x20000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_SAFLAGS_DECAP_DSCP 0x40000000
 #define SADB_SAFLAGS_NOECN 0x80000000
-
 #define SADB_SASTATE_LARVAL 0
 #define SADB_SASTATE_MATURE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_SASTATE_DYING 2
 #define SADB_SASTATE_DEAD 3
 #define SADB_SASTATE_MAX 3
-
 #define SADB_SATYPE_UNSPEC 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_SATYPE_AH 2
 #define SADB_SATYPE_ESP 3
 #define SADB_SATYPE_RSVP 5
 #define SADB_SATYPE_OSPFV2 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_SATYPE_RIPV2 7
 #define SADB_SATYPE_MIP 8
 #define SADB_X_SATYPE_IPCOMP 9
 #define SADB_SATYPE_MAX 9
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_AALG_NONE 0
 #define SADB_AALG_MD5HMAC 2
 #define SADB_AALG_SHA1HMAC 3
 #define SADB_X_AALG_SHA2_256HMAC 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_X_AALG_SHA2_384HMAC 6
 #define SADB_X_AALG_SHA2_512HMAC 7
 #define SADB_X_AALG_RIPEMD160HMAC 8
 #define SADB_X_AALG_NULL 251  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_AALG_MAX 251
-
 #define SADB_EALG_NONE 0
 #define SADB_EALG_DESCBC 2
 #define SADB_EALG_3DESCBC 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_X_EALG_CASTCBC 6
 #define SADB_X_EALG_BLOWFISHCBC 7
 #define SADB_EALG_NULL 11
 #define SADB_X_EALG_AESCBC 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_EALG_MAX 253  
-
 #define SADB_X_EALG_SERPENTCBC 252  
 #define SADB_X_EALG_TWOFISHCBC 253  
-
 #define SADB_X_CALG_NONE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_X_CALG_OUI 1
 #define SADB_X_CALG_DEFLATE 2
 #define SADB_X_CALG_LZS 3
 #define SADB_X_CALG_LZJH 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_X_CALG_MAX 4
-
 #define SADB_EXT_RESERVED 0
 #define SADB_EXT_SA 1
 #define SADB_EXT_LIFETIME_CURRENT 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_EXT_LIFETIME_HARD 3
 #define SADB_EXT_LIFETIME_SOFT 4
 #define SADB_EXT_ADDRESS_SRC 5
 #define SADB_EXT_ADDRESS_DST 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_EXT_ADDRESS_PROXY 7
 #define SADB_EXT_KEY_AUTH 8
 #define SADB_EXT_KEY_ENCRYPT 9
 #define SADB_EXT_IDENTITY_SRC 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_EXT_IDENTITY_DST 11
 #define SADB_EXT_SENSITIVITY 12
 #define SADB_EXT_PROPOSAL 13
 #define SADB_EXT_SUPPORTED_AUTH 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_EXT_SUPPORTED_ENCRYPT 15
 #define SADB_EXT_SPIRANGE 16
 #define SADB_X_EXT_KMPRIVATE 17
 #define SADB_X_EXT_POLICY 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_X_EXT_SA2 19
-
 #define SADB_X_EXT_NAT_T_TYPE 20
 #define SADB_X_EXT_NAT_T_SPORT 21
 #define SADB_X_EXT_NAT_T_DPORT 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_X_EXT_NAT_T_OA 23
 #define SADB_X_EXT_SEC_CTX 24
 #define SADB_EXT_MAX 24
-
 #define SADB_IDENTTYPE_RESERVED 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SADB_IDENTTYPE_PREFIX 1
 #define SADB_IDENTTYPE_FQDN 2
 #define SADB_IDENTTYPE_USERFQDN 3
 #define SADB_IDENTTYPE_MAX 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/pkt_cls.h b/libc/kernel/common/linux/pkt_cls.h
index ffa29f7..1af512e 100644
--- a/libc/kernel/common/linux/pkt_cls.h
+++ b/libc/kernel/common/linux/pkt_cls.h
@@ -7,427 +7,460 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_PKT_CLS_H
 #define __LINUX_PKT_CLS_H
-
 #include <linux/types.h>
 #include <linux/pkt_sched.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _TC_MAKE32(x) ((x))
-
 #define _TC_MAKEMASK1(n) (_TC_MAKE32(1) << _TC_MAKE32(n))
 #define _TC_MAKEMASK(v,n) (_TC_MAKE32((_TC_MAKE32(1)<<(v))-1) << _TC_MAKE32(n))
 #define _TC_MAKEVALUE(v,n) (_TC_MAKE32(v) << _TC_MAKE32(n))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _TC_GETVALUE(v,n,m) ((_TC_MAKE32(v) & _TC_MAKE32(m)) >> _TC_MAKE32(n))
-
 #define TC_MUNGED _TC_MAKEMASK1(0)
 #define SET_TC_MUNGED(v) ( TC_MUNGED | (v & ~TC_MUNGED))
 #define CLR_TC_MUNGED(v) ( v & ~TC_MUNGED)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_OK2MUNGE _TC_MAKEMASK1(1)
 #define SET_TC_OK2MUNGE(v) ( TC_OK2MUNGE | (v & ~TC_OK2MUNGE))
 #define CLR_TC_OK2MUNGE(v) ( v & ~TC_OK2MUNGE)
-
 #define S_TC_VERD _TC_MAKE32(2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define M_TC_VERD _TC_MAKEMASK(4,S_TC_VERD)
 #define G_TC_VERD(x) _TC_GETVALUE(x,S_TC_VERD,M_TC_VERD)
 #define V_TC_VERD(x) _TC_MAKEVALUE(x,S_TC_VERD)
 #define SET_TC_VERD(v,n) ((V_TC_VERD(n)) | (v & ~M_TC_VERD))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_TC_FROM _TC_MAKE32(6)
 #define M_TC_FROM _TC_MAKEMASK(2,S_TC_FROM)
 #define G_TC_FROM(x) _TC_GETVALUE(x,S_TC_FROM,M_TC_FROM)
 #define V_TC_FROM(x) _TC_MAKEVALUE(x,S_TC_FROM)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SET_TC_FROM(v,n) ((V_TC_FROM(n)) | (v & ~M_TC_FROM))
 #define AT_STACK 0x0
 #define AT_INGRESS 0x1
 #define AT_EGRESS 0x2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_NCLS _TC_MAKEMASK1(8)
 #define SET_TC_NCLS(v) ( TC_NCLS | (v & ~TC_NCLS))
 #define CLR_TC_NCLS(v) ( v & ~TC_NCLS)
-
 #define S_TC_RTTL _TC_MAKE32(9)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define M_TC_RTTL _TC_MAKEMASK(3,S_TC_RTTL)
 #define G_TC_RTTL(x) _TC_GETVALUE(x,S_TC_RTTL,M_TC_RTTL)
 #define V_TC_RTTL(x) _TC_MAKEVALUE(x,S_TC_RTTL)
 #define SET_TC_RTTL(v,n) ((V_TC_RTTL(n)) | (v & ~M_TC_RTTL))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_TC_AT _TC_MAKE32(12)
 #define M_TC_AT _TC_MAKEMASK(2,S_TC_AT)
 #define G_TC_AT(x) _TC_GETVALUE(x,S_TC_AT,M_TC_AT)
 #define V_TC_AT(x) _TC_MAKEVALUE(x,S_TC_AT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SET_TC_AT(v,n) ((V_TC_AT(n)) | (v & ~M_TC_AT))
-
 enum
 {
  TCA_ACT_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_ACT_KIND,
  TCA_ACT_OPTIONS,
  TCA_ACT_INDEX,
  TCA_ACT_STATS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __TCA_ACT_MAX
 };
-
 #define TCA_ACT_MAX __TCA_ACT_MAX
 #define TCA_OLD_COMPAT (TCA_ACT_MAX+1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_ACT_MAX_PRIO 32
 #define TCA_ACT_BIND 1
 #define TCA_ACT_NOBIND 0
 #define TCA_ACT_UNBIND 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_ACT_NOUNBIND 0
 #define TCA_ACT_REPLACE 1
 #define TCA_ACT_NOREPLACE 0
 #define MAX_REC_LOOP 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_RED_LOOP 4
-
 #define TC_ACT_UNSPEC (-1)
 #define TC_ACT_OK 0
 #define TC_ACT_RECLASSIFY 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_ACT_SHOT 2
 #define TC_ACT_PIPE 3
 #define TC_ACT_STOLEN 4
 #define TC_ACT_QUEUED 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_ACT_REPEAT 6
 #define TC_ACT_JUMP 0x10000000
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_ID_UNSPEC=0,
  TCA_ID_POLICE=1,
-
  __TCA_ID_MAX=255
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_ID_MAX __TCA_ID_MAX
-
 struct tc_police
 {
  __u32 index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int action;
 #define TC_POLICE_UNSPEC TC_ACT_UNSPEC
 #define TC_POLICE_OK TC_ACT_OK
 #define TC_POLICE_RECLASSIFY TC_ACT_RECLASSIFY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_POLICE_SHOT TC_ACT_SHOT
 #define TC_POLICE_PIPE TC_ACT_PIPE
-
  __u32 limit;
  __u32 burst;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 mtu;
  struct tc_ratespec rate;
  struct tc_ratespec peakrate;
  int refcnt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int bindcnt;
  __u32 capab;
 };
-
 struct tcf_t
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u64 install;
  __u64 lastuse;
  __u64 expires;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_cnt
 {
  int refcnt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int bindcnt;
 };
-
 #define tc_gen   __u32 index;   __u32 capab;   int action;   int refcnt;   int bindcnt
-
 enum
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  TCA_POLICE_UNSPEC,
  TCA_POLICE_TBF,
  TCA_POLICE_RATE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_POLICE_PEAKRATE,
  TCA_POLICE_AVRATE,
  TCA_POLICE_RESULT,
  __TCA_POLICE_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_POLICE_RESULT TCA_POLICE_RESULT
 };
-
 #define TCA_POLICE_MAX (__TCA_POLICE_MAX - 1)
-
 #define TC_U32_HTID(h) ((h)&0xFFF00000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_U32_USERHTID(h) (TC_U32_HTID(h)>>20)
 #define TC_U32_HASH(h) (((h)>>12)&0xFF)
 #define TC_U32_NODE(h) ((h)&0xFFF)
 #define TC_U32_KEY(h) ((h)&0xFFFFF)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_U32_UNSPEC 0
 #define TC_U32_ROOT (0xFFF00000)
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_U32_UNSPEC,
  TCA_U32_CLASSID,
  TCA_U32_HASH,
  TCA_U32_LINK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_U32_DIVISOR,
  TCA_U32_SEL,
  TCA_U32_POLICE,
  TCA_U32_ACT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_U32_INDEV,
  TCA_U32_PCNT,
  TCA_U32_MARK,
  __TCA_U32_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TCA_U32_MAX (__TCA_U32_MAX - 1)
-
 struct tc_u32_key
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __be32 mask;
  __be32 val;
  int off;
  int offmask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_u32_sel
 {
  unsigned char flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char offshift;
  unsigned char nkeys;
-
  __be16 offmask;
  __u16 off;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  short offoff;
-
  short hoff;
  __be32 hmask;
  struct tc_u32_key keys[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_u32_mark
 {
  __u32 val;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 mask;
  __u32 success;
 };
-
 struct tc_u32_pcnt
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u64 rcnt;
  __u64 rhit;
  __u64 kcnts[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TC_U32_TERMINAL 1
 #define TC_U32_OFFSET 2
 #define TC_U32_VAROFFSET 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_U32_EAT 8
-
 #define TC_U32_MAXDEPTH 8
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_RSVP_UNSPEC,
  TCA_RSVP_CLASSID,
  TCA_RSVP_DST,
  TCA_RSVP_SRC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_RSVP_PINFO,
  TCA_RSVP_POLICE,
  TCA_RSVP_ACT,
  __TCA_RSVP_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TCA_RSVP_MAX (__TCA_RSVP_MAX - 1 )
-
 struct tc_rsvp_gpi
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 key;
  __u32 mask;
  int offset;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_rsvp_pinfo
 {
  struct tc_rsvp_gpi dpi;
  struct tc_rsvp_gpi spi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 protocol;
  __u8 tunnelid;
  __u8 tunnelhdr;
  __u8 pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum
 {
  TCA_ROUTE4_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_ROUTE4_CLASSID,
  TCA_ROUTE4_TO,
  TCA_ROUTE4_FROM,
  TCA_ROUTE4_IIF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_ROUTE4_POLICE,
  TCA_ROUTE4_ACT,
  __TCA_ROUTE4_MAX
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_ROUTE4_MAX (__TCA_ROUTE4_MAX - 1)
-
 enum
 {
  TCA_FW_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_FW_CLASSID,
  TCA_FW_POLICE,
  TCA_FW_INDEV,
  TCA_FW_ACT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_FW_MASK,
  __TCA_FW_MAX
 };
-
 #define TCA_FW_MAX (__TCA_FW_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  TCA_TCINDEX_UNSPEC,
  TCA_TCINDEX_HASH,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_TCINDEX_MASK,
  TCA_TCINDEX_SHIFT,
  TCA_TCINDEX_FALL_THROUGH,
  TCA_TCINDEX_CLASSID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_TCINDEX_POLICE,
  TCA_TCINDEX_ACT,
  __TCA_TCINDEX_MAX
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_TCINDEX_MAX (__TCA_TCINDEX_MAX - 1)
-
 enum
 {
  FLOW_KEY_SRC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FLOW_KEY_DST,
  FLOW_KEY_PROTO,
  FLOW_KEY_PROTO_SRC,
  FLOW_KEY_PROTO_DST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FLOW_KEY_IIF,
  FLOW_KEY_PRIORITY,
  FLOW_KEY_MARK,
  FLOW_KEY_NFCT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FLOW_KEY_NFCT_SRC,
  FLOW_KEY_NFCT_DST,
  FLOW_KEY_NFCT_PROTO_SRC,
  FLOW_KEY_NFCT_PROTO_DST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FLOW_KEY_RTCLASSID,
  FLOW_KEY_SKUID,
  FLOW_KEY_SKGID,
  FLOW_KEY_VLAN_TAG,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __FLOW_KEY_MAX,
 };
-
 #define FLOW_KEY_MAX (__FLOW_KEY_MAX - 1)
-
 enum
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  FLOW_MODE_MAP,
  FLOW_MODE_HASH,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  TCA_FLOW_UNSPEC,
  TCA_FLOW_KEYS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_FLOW_MODE,
  TCA_FLOW_BASECLASS,
  TCA_FLOW_RSHIFT,
  TCA_FLOW_ADDEND,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_FLOW_MASK,
  TCA_FLOW_XOR,
  TCA_FLOW_DIVISOR,
  TCA_FLOW_ACT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_FLOW_POLICE,
  TCA_FLOW_EMATCHES,
  TCA_FLOW_PERTURB,
  __TCA_FLOW_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TCA_FLOW_MAX (__TCA_FLOW_MAX - 1)
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_BASIC_UNSPEC,
  TCA_BASIC_CLASSID,
  TCA_BASIC_EMATCHES,
  TCA_BASIC_ACT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_BASIC_POLICE,
  __TCA_BASIC_MAX
 };
-
 #define TCA_BASIC_MAX (__TCA_BASIC_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  TCA_CGROUP_UNSPEC,
  TCA_CGROUP_ACT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_CGROUP_POLICE,
  TCA_CGROUP_EMATCHES,
  __TCA_CGROUP_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_CGROUP_MAX (__TCA_CGROUP_MAX - 1)
-
 struct tcf_ematch_tree_hdr
 {
  __u16 nmatches;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 progid;
 };
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_EMATCH_TREE_UNSPEC,
  TCA_EMATCH_TREE_HDR,
  TCA_EMATCH_TREE_LIST,
  __TCA_EMATCH_TREE_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TCA_EMATCH_TREE_MAX (__TCA_EMATCH_TREE_MAX - 1)
-
 struct tcf_ematch_hdr
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 matchid;
  __u16 kind;
  __u16 flags;
  __u16 pad;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TCF_EM_REL_END 0
 #define TCF_EM_REL_AND (1<<0)
 #define TCF_EM_REL_OR (1<<1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCF_EM_INVERT (1<<2)
 #define TCF_EM_SIMPLE (1<<3)
-
 #define TCF_EM_REL_MASK 3
 #define TCF_EM_REL_VALID(v) (((v) & TCF_EM_REL_MASK) != TCF_EM_REL_MASK)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  TCF_LAYER_LINK,
  TCF_LAYER_NETWORK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCF_LAYER_TRANSPORT,
  __TCF_LAYER_MAX
 };
 #define TCF_LAYER_MAX (__TCF_LAYER_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCF_EM_CONTAINER 0
 #define TCF_EM_CMP 1
 #define TCF_EM_NBYTE 2
 #define TCF_EM_U32 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCF_EM_META 4
 #define TCF_EM_TEXT 5
 #define TCF_EM_VLAN 6
 #define TCF_EM_MAX 6
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  TCF_EM_PROG_TC
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  TCF_EM_OPND_EQ,
  TCF_EM_OPND_GT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCF_EM_OPND_LT
 };
-
 #endif
diff --git a/libc/kernel/common/linux/pkt_sched.h b/libc/kernel/common/linux/pkt_sched.h
index 0b2966a..edf5fe5 100644
--- a/libc/kernel/common/linux/pkt_sched.h
+++ b/libc/kernel/common/linux/pkt_sched.h
@@ -7,447 +7,484 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_PKT_SCHED_H
 #define __LINUX_PKT_SCHED_H
-
 #include <linux/types.h>
-
 #define TC_PRIO_BESTEFFORT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_PRIO_FILLER 1
 #define TC_PRIO_BULK 2
 #define TC_PRIO_INTERACTIVE_BULK 4
 #define TC_PRIO_INTERACTIVE 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_PRIO_CONTROL 7
-
 #define TC_PRIO_MAX 15
-
 struct tc_stats
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 bytes;
  __u32 packets;
  __u32 drops;
  __u32 overlimits;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 bps;
  __u32 pps;
  __u32 qlen;
  __u32 backlog;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_estimator
 {
  signed char interval;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char ewma_log;
 };
-
 #define TC_H_MAJ_MASK (0xFFFF0000U)
 #define TC_H_MIN_MASK (0x0000FFFFU)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_H_MAJ(h) ((h)&TC_H_MAJ_MASK)
 #define TC_H_MIN(h) ((h)&TC_H_MIN_MASK)
 #define TC_H_MAKE(maj,min) (((maj)&TC_H_MAJ_MASK)|((min)&TC_H_MIN_MASK))
-
 #define TC_H_UNSPEC (0U)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_H_ROOT (0xFFFFFFFFU)
 #define TC_H_INGRESS (0xFFFFFFF1U)
-
 struct tc_ratespec
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char cell_log;
  unsigned char __reserved;
  unsigned short overhead;
  short cell_align;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short mpu;
  __u32 rate;
 };
-
 #define TC_RTAB_SIZE 1024
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_sizespec {
  unsigned char cell_log;
  unsigned char size_log;
  short cell_align;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int overhead;
  unsigned int linklayer;
  unsigned int mpu;
  unsigned int mtu;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int tsize;
 };
-
 enum {
  TCA_STAB_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_STAB_BASE,
  TCA_STAB_DATA,
  __TCA_STAB_MAX
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_STAB_MAX (__TCA_STAB_MAX - 1)
-
 struct tc_fifo_qopt
 {
  __u32 limit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TCQ_PRIO_BANDS 16
 #define TCQ_MIN_PRIO_BANDS 2
-
 struct tc_prio_qopt
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  int bands;
  __u8 priomap[TC_PRIO_MAX+1];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_multiq_qopt {
  __u16 bands;
  __u16 max_bands;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_tbf_qopt
 {
  struct tc_ratespec rate;
  struct tc_ratespec peakrate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 limit;
  __u32 buffer;
  __u32 mtu;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  TCA_TBF_UNSPEC,
  TCA_TBF_PARMS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_TBF_RTAB,
  TCA_TBF_PTAB,
  __TCA_TBF_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_TBF_MAX (__TCA_TBF_MAX - 1)
-
 struct tc_sfq_qopt
 {
  unsigned quantum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int perturb_period;
  __u32 limit;
  unsigned divisor;
  unsigned flows;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_sfq_xstats
 {
  __s32 allot;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum
 {
  TCA_RED_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_RED_PARMS,
  TCA_RED_STAB,
  __TCA_RED_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_RED_MAX (__TCA_RED_MAX - 1)
-
 struct tc_red_qopt
 {
  __u32 limit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 qth_min;
  __u32 qth_max;
  unsigned char Wlog;
  unsigned char Plog;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char Scell_log;
  unsigned char flags;
 #define TC_RED_ECN 1
 #define TC_RED_HARDDROP 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_red_xstats
 {
  __u32 early;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 pdrop;
  __u32 other;
  __u32 marked;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_DPs 16
-
 enum
 {
  TCA_GRED_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_GRED_PARMS,
  TCA_GRED_STAB,
  TCA_GRED_DPS,
  __TCA_GRED_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
-
 struct tc_gred_qopt
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 limit;
  __u32 qth_min;
  __u32 qth_max;
  __u32 DP;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 backlog;
  __u32 qave;
  __u32 forced;
  __u32 early;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 other;
  __u32 pdrop;
  __u8 Wlog;
  __u8 Plog;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 Scell_log;
  __u8 prio;
  __u32 packets;
  __u32 bytesin;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_gred_sopt
 {
  __u32 DPs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 def_DP;
  __u8 grio;
  __u8 flags;
  __u16 pad1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TC_HTB_NUMPRIO 8
 #define TC_HTB_MAXDEPTH 8
 #define TC_HTB_PROTOVER 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_htb_opt
 {
  struct tc_ratespec rate;
  struct tc_ratespec ceil;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 buffer;
  __u32 cbuffer;
  __u32 quantum;
  __u32 level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 prio;
 };
 struct tc_htb_glob
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 version;
  __u32 rate2quantum;
  __u32 defcls;
  __u32 debug;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 direct_pkts;
 };
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_HTB_UNSPEC,
  TCA_HTB_PARMS,
  TCA_HTB_INIT,
  TCA_HTB_CTAB,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_HTB_RTAB,
  __TCA_HTB_MAX,
 };
-
 #define TCA_HTB_MAX (__TCA_HTB_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_htb_xstats
 {
  __u32 lends;
  __u32 borrows;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 giants;
  __u32 tokens;
  __u32 ctokens;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_hfsc_qopt
 {
  __u16 defcls;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_service_curve
 {
  __u32 m1;
  __u32 d;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 m2;
 };
-
 struct tc_hfsc_stats
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 work;
  __u64 rtwork;
  __u32 period;
  __u32 level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum
 {
  TCA_HFSC_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_HFSC_RSC,
  TCA_HFSC_FSC,
  TCA_HFSC_USC,
  __TCA_HFSC_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1)
-
 #define TC_CBQ_MAXPRIO 8
 #define TC_CBQ_MAXLEVEL 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_CBQ_DEF_EWMA 5
-
 struct tc_cbq_lssopt
 {
  unsigned char change;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char flags;
 #define TCF_CBQ_LSS_BOUNDED 1
 #define TCF_CBQ_LSS_ISOLATED 2
  unsigned char ewma_log;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char level;
 #define TCF_CBQ_LSS_FLAGS 1
 #define TCF_CBQ_LSS_EWMA 2
 #define TCF_CBQ_LSS_MAXIDLE 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCF_CBQ_LSS_MINIDLE 8
 #define TCF_CBQ_LSS_OFFTIME 0x10
 #define TCF_CBQ_LSS_AVPKT 0x20
  __u32 maxidle;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 minidle;
  __u32 offtime;
  __u32 avpkt;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_cbq_wrropt
 {
  unsigned char flags;
  unsigned char priority;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char cpriority;
  unsigned char __reserved;
  __u32 allot;
  __u32 weight;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_cbq_ovl
 {
  unsigned char strategy;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_CBQ_OVL_CLASSIC 0
 #define TC_CBQ_OVL_DELAY 1
 #define TC_CBQ_OVL_LOWPRIO 2
 #define TC_CBQ_OVL_DROP 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TC_CBQ_OVL_RCLASSIC 4
  unsigned char priority2;
  __u16 pad;
  __u32 penalty;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_cbq_police
 {
  unsigned char police;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char __res1;
  unsigned short __res2;
 };
-
 struct tc_cbq_fopt
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u32 split;
  __u32 defmap;
  __u32 defchange;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_cbq_xstats
 {
  __u32 borrows;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 overactions;
  __s32 avgidle;
  __s32 undertime;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  TCA_CBQ_UNSPEC,
  TCA_CBQ_LSSOPT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_CBQ_WRROPT,
  TCA_CBQ_FOPT,
  TCA_CBQ_OVL_STRATEGY,
  TCA_CBQ_RATE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_CBQ_RTAB,
  TCA_CBQ_POLICE,
  __TCA_CBQ_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1)
-
 enum {
  TCA_DSMARK_UNSPEC,
  TCA_DSMARK_INDICES,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_DSMARK_DEFAULT_INDEX,
  TCA_DSMARK_SET_TC_INDEX,
  TCA_DSMARK_MASK,
  TCA_DSMARK_VALUE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __TCA_DSMARK_MAX,
 };
-
 #define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1)
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_ATM_UNSPEC,
  TCA_ATM_FD,
  TCA_ATM_PTR,
  TCA_ATM_HDR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_ATM_EXCESS,
  TCA_ATM_ADDR,
  TCA_ATM_STATE,
  __TCA_ATM_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TCA_ATM_MAX (__TCA_ATM_MAX - 1)
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_NETEM_UNSPEC,
  TCA_NETEM_CORR,
  TCA_NETEM_DELAY_DIST,
  TCA_NETEM_REORDER,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_NETEM_CORRUPT,
  __TCA_NETEM_MAX,
 };
-
 #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_netem_qopt
 {
  __u32 latency;
  __u32 limit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 loss;
  __u32 gap;
  __u32 duplicate;
  __u32 jitter;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tc_netem_corr
 {
  __u32 delay_corr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 loss_corr;
  __u32 dup_corr;
 };
-
 struct tc_netem_reorder
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u32 probability;
  __u32 correlation;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tc_netem_corrupt
 {
  __u32 probability;
  __u32 correlation;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define NETEM_DIST_SCALE 8192
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_DRR_UNSPEC,
  TCA_DRR_QUANTUM,
  __TCA_DRR_MAX
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_DRR_MAX (__TCA_DRR_MAX - 1)
-
 struct tc_drr_stats
 {
  __u32 deficit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/platform_device.h b/libc/kernel/common/linux/platform_device.h
index a761b5b..28223fe 100644
--- a/libc/kernel/common/linux/platform_device.h
+++ b/libc/kernel/common/linux/platform_device.h
@@ -7,33 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _PLATFORM_DEVICE_H_
 #define _PLATFORM_DEVICE_H_
-
 #include <linux/device.h>
-
 struct platform_device {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  const char * name;
  u32 id;
  struct device dev;
  u32 num_resources;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct resource * resource;
 };
-
 #define to_platform_device(x) container_of((x), struct platform_device, dev)
-
 struct platform_driver {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*probe)(struct platform_device *);
  int (*remove)(struct platform_device *);
  void (*shutdown)(struct platform_device *);
  int (*suspend)(struct platform_device *, pm_message_t state);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*resume)(struct platform_device *);
  struct device_driver driver;
 };
-
 #define platform_get_drvdata(_dev) dev_get_drvdata(&(_dev)->dev)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define platform_set_drvdata(_dev,data) dev_set_drvdata(&(_dev)->dev, (data))
-
 #endif
diff --git a/libc/kernel/common/linux/plist.h b/libc/kernel/common/linux/plist.h
index 5d65783..01f63d7 100644
--- a/libc/kernel/common/linux/plist.h
+++ b/libc/kernel/common/linux/plist.h
@@ -7,38 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PLIST_H_
 #define _LINUX_PLIST_H_
-
 #include <linux/kernel.h>
 #include <linux/list.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/spinlock_types.h>
-
 struct plist_head {
  struct list_head prio_list;
  struct list_head node_list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct plist_node {
  int prio;
  struct plist_head plist;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define PLIST_HEAD_LOCK_INIT(_lock)
-
 #define PLIST_HEAD_INIT(head, _lock)  {   .prio_list = LIST_HEAD_INIT((head).prio_list),   .node_list = LIST_HEAD_INIT((head).node_list),   PLIST_HEAD_LOCK_INIT(&(_lock))  }
-
 #define PLIST_NODE_INIT(node, __prio)  {   .prio = (__prio),   .plist = PLIST_HEAD_INIT((node).plist, NULL),  }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define plist_for_each(pos, head)   list_for_each_entry(pos, &(head)->node_list, plist.node_list)
-
 #define plist_for_each_safe(pos, n, head)   list_for_each_entry_safe(pos, n, &(head)->node_list, plist.node_list)
-
 #define plist_for_each_entry(pos, head, mem)   list_for_each_entry(pos, &(head)->node_list, mem.plist.node_list)
-
 #define plist_for_each_entry_safe(pos, n, head, m)   list_for_each_entry_safe(pos, n, &(head)->node_list, m.plist.node_list)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define plist_first_entry(head, type, member)   container_of(plist_first(head), type, member)
 #endif
diff --git a/libc/kernel/common/linux/pm.h b/libc/kernel/common/linux/pm.h
index 0548791..5ca163c 100644
--- a/libc/kernel/common/linux/pm.h
+++ b/libc/kernel/common/linux/pm.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PM_H
 #define _LINUX_PM_H
-
 #endif
diff --git a/libc/kernel/common/linux/pn544.h b/libc/kernel/common/linux/pn544.h
index 900c373..92d7c80 100644
--- a/libc/kernel/common/linux/pn544.h
+++ b/libc/kernel/common/linux/pn544.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #define PN544_MAGIC 0xE9
-
-#define PN544_SET_PWR _IOW(0xE9, 0x01, unsigned int)
-
+#define PN544_SET_PWR _IOW(PN544_MAGIC, 0x01, unsigned int)
 struct pn544_i2c_platform_data {
  unsigned int irq_gpio;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int ven_gpio;
  unsigned int firm_gpio;
 };
-
diff --git a/libc/kernel/common/linux/pnp.h b/libc/kernel/common/linux/pnp.h
index 30b0af7..1cc367f 100644
--- a/libc/kernel/common/linux/pnp.h
+++ b/libc/kernel/common/linux/pnp.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PNP_H
 #define _LINUX_PNP_H
-
 #endif
diff --git a/libc/kernel/common/linux/poll.h b/libc/kernel/common/linux/poll.h
index 6822509..0f1ee6c 100644
--- a/libc/kernel/common/linux/poll.h
+++ b/libc/kernel/common/linux/poll.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_POLL_H
 #define _LINUX_POLL_H
-
 #include <asm/poll.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/posix_acl.h b/libc/kernel/common/linux/posix_acl.h
index bdaee5b..3f909a9 100644
--- a/libc/kernel/common/linux/posix_acl.h
+++ b/libc/kernel/common/linux/posix_acl.h
@@ -7,41 +7,45 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_POSIX_ACL_H
 #define __LINUX_POSIX_ACL_H
-
 #include <linux/slab.h>
-
 #define ACL_UNDEFINED_ID (-1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ACL_TYPE_ACCESS (0x8000)
 #define ACL_TYPE_DEFAULT (0x4000)
-
 #define ACL_USER_OBJ (0x01)
 #define ACL_USER (0x02)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ACL_GROUP_OBJ (0x04)
 #define ACL_GROUP (0x08)
 #define ACL_MASK (0x10)
 #define ACL_OTHER (0x20)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ACL_READ (0x04)
 #define ACL_WRITE (0x02)
 #define ACL_EXECUTE (0x01)
-
 struct posix_acl_entry {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  short e_tag;
  unsigned short e_perm;
  unsigned int e_id;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct posix_acl {
  atomic_t a_refcount;
  unsigned int a_count;
  struct posix_acl_entry a_entries[0];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define FOREACH_ACL_ENTRY(pa, acl, pe)   for(pa=(acl)->a_entries, pe=pa+(acl)->a_count; pa<pe; pa++)
-
 #endif
diff --git a/libc/kernel/common/linux/posix_types.h b/libc/kernel/common/linux/posix_types.h
index d7d0ad2..d629e22 100644
--- a/libc/kernel/common/linux/posix_types.h
+++ b/libc/kernel/common/linux/posix_types.h
@@ -7,37 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_POSIX_TYPES_H
 #define _LINUX_POSIX_TYPES_H
-
 #include <linux/stddef.h>
-
 #undef __NFDBITS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __NFDBITS (8 * sizeof(unsigned long))
-
 #undef __FD_SETSIZE
 #define __FD_SETSIZE 1024
-
 #undef __FDSET_LONGS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __FDSET_LONGS (__FD_SETSIZE/__NFDBITS)
-
 #undef __FDELT
 #define __FDELT(d) ((d) / __NFDBITS)
-
 #undef __FDMASK
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __FDMASK(d) (1UL << ((d) % __NFDBITS))
-
 typedef struct {
  unsigned long fds_bits [__FDSET_LONGS];
 } __kernel_fd_set;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef void (*__kernel_sighandler_t)(int);
-
 typedef int __kernel_key_t;
 typedef int __kernel_mqd_t;
-
 #include <asm/posix_types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/ppdev.h b/libc/kernel/common/linux/ppdev.h
index c43f8b9..2fa785c 100644
--- a/libc/kernel/common/linux/ppdev.h
+++ b/libc/kernel/common/linux/ppdev.h
@@ -7,65 +7,58 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #define PP_IOCTL 'p'
-
 #define PPSETMODE _IOW(PP_IOCTL, 0x80, int)
-
 #define PPRSTATUS _IOR(PP_IOCTL, 0x81, unsigned char)
 #define PPWSTATUS OBSOLETE__IOW(PP_IOCTL, 0x82, unsigned char)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPRCONTROL _IOR(PP_IOCTL, 0x83, unsigned char)
 #define PPWCONTROL _IOW(PP_IOCTL, 0x84, unsigned char)
-
 struct ppdev_frob_struct {
  unsigned char mask;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char val;
 };
 #define PPFCONTROL _IOW(PP_IOCTL, 0x8e, struct ppdev_frob_struct)
-
 #define PPRDATA _IOR(PP_IOCTL, 0x85, unsigned char)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPWDATA _IOW(PP_IOCTL, 0x86, unsigned char)
-
 #define PPRECONTROL OBSOLETE__IOR(PP_IOCTL, 0x87, unsigned char)
 #define PPWECONTROL OBSOLETE__IOW(PP_IOCTL, 0x88, unsigned char)
-
 #define PPRFIFO OBSOLETE__IOR(PP_IOCTL, 0x89, unsigned char)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPWFIFO OBSOLETE__IOW(PP_IOCTL, 0x8a, unsigned char)
-
 #define PPCLAIM _IO(PP_IOCTL, 0x8b)
-
 #define PPRELEASE _IO(PP_IOCTL, 0x8c)
-
 #define PPYIELD _IO(PP_IOCTL, 0x8d)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPEXCL _IO(PP_IOCTL, 0x8f)
-
 #define PPDATADIR _IOW(PP_IOCTL, 0x90, int)
-
 #define PPNEGOT _IOW(PP_IOCTL, 0x91, int)
-
 #define PPWCTLONIRQ _IOW(PP_IOCTL, 0x92, unsigned char)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPCLRIRQ _IOR(PP_IOCTL, 0x93, int)
-
 #define PPSETPHASE _IOW(PP_IOCTL, 0x94, int)
-
 #define PPGETTIME _IOR(PP_IOCTL, 0x95, struct timeval)
 #define PPSETTIME _IOW(PP_IOCTL, 0x96, struct timeval)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPGETMODES _IOR(PP_IOCTL, 0x97, unsigned int)
-
 #define PPGETMODE _IOR(PP_IOCTL, 0x98, int)
 #define PPGETPHASE _IOR(PP_IOCTL, 0x99, int)
-
 #define PPGETFLAGS _IOR(PP_IOCTL, 0x9a, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPSETFLAGS _IOW(PP_IOCTL, 0x9b, int)
-
 #define PP_FASTWRITE (1<<2)
 #define PP_FASTREAD (1<<3)
 #define PP_W91284PIC (1<<4)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PP_FLAGMASK (PP_FASTWRITE | PP_FASTREAD | PP_W91284PIC)
-
diff --git a/libc/kernel/common/linux/ppp_defs.h b/libc/kernel/common/linux/ppp_defs.h
index da54ac7..ed115fd 100644
--- a/libc/kernel/common/linux/ppp_defs.h
+++ b/libc/kernel/common/linux/ppp_defs.h
@@ -7,115 +7,127 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _PPP_DEFS_H_
 #define _PPP_DEFS_H_
-
 #define PPP_HDRLEN 4  
 #define PPP_FCSLEN 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_MRU 1500  
-
 #define PPP_ADDRESS(p) (((__u8 *)(p))[0])
 #define PPP_CONTROL(p) (((__u8 *)(p))[1])
 #define PPP_PROTOCOL(p) ((((__u8 *)(p))[2] << 8) + ((__u8 *)(p))[3])
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_ALLSTATIONS 0xff  
 #define PPP_UI 0x03  
 #define PPP_FLAG 0x7e  
 #define PPP_ESCAPE 0x7d  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_TRANS 0x20  
-
 #define PPP_IP 0x21  
 #define PPP_AT 0x29  
 #define PPP_IPX 0x2b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_VJC_COMP 0x2d  
 #define PPP_VJC_UNCOMP 0x2f  
 #define PPP_MP 0x3d  
 #define PPP_IPV6 0x57  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_COMPFRAG 0xfb  
 #define PPP_COMP 0xfd  
 #define PPP_MPLS_UC 0x0281  
 #define PPP_MPLS_MC 0x0283  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_IPCP 0x8021  
 #define PPP_ATCP 0x8029  
 #define PPP_IPXCP 0x802b  
 #define PPP_IPV6CP 0x8057  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_CCPFRAG 0x80fb  
 #define PPP_CCP 0x80fd  
 #define PPP_MPLSCP 0x80fd  
 #define PPP_LCP 0xc021  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_PAP 0xc023  
 #define PPP_LQR 0xc025  
 #define PPP_CHAP 0xc223  
 #define PPP_CBCP 0xc029  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PPP_INITFCS 0xffff  
 #define PPP_GOODFCS 0xf0b8  
-
 typedef __u32 ext_accm[8];
-
 enum NPmode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NPMODE_PASS,
  NPMODE_DROP,
  NPMODE_ERROR,
  NPMODE_QUEUE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct pppstat {
  __u32 ppp_discards;
-
  __u32 ppp_ibytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ppp_ioctects;
  __u32 ppp_ipackets;
  __u32 ppp_ierrors;
  __u32 ppp_ilqrs;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ppp_obytes;
  __u32 ppp_ooctects;
  __u32 ppp_opackets;
  __u32 ppp_oerrors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ppp_olqrs;
 };
-
 struct vjstat {
  __u32 vjs_packets;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 vjs_compressed;
  __u32 vjs_searches;
  __u32 vjs_misses;
  __u32 vjs_uncompressedin;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 vjs_compressedin;
  __u32 vjs_errorin;
  __u32 vjs_tossed;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct compstat {
  __u32 unc_bytes;
  __u32 unc_packets;
  __u32 comp_bytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 comp_packets;
  __u32 inc_bytes;
  __u32 inc_packets;
-
  __u32 in_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 bytes_out;
-
  double ratio;
 };
-
 struct ppp_stats {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct pppstat p;
  struct vjstat vj;
 };
-
 struct ppp_comp_stats {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct compstat c;
  struct compstat d;
 };
-
 struct ppp_idle {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  time_t xmit_idle;
  time_t recv_idle;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/prctl.h b/libc/kernel/common/linux/prctl.h
index a7631a2..8906639 100644
--- a/libc/kernel/common/linux/prctl.h
+++ b/libc/kernel/common/linux/prctl.h
@@ -7,55 +7,62 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PRCTL_H
 #define _LINUX_PRCTL_H
-
 #define PR_SET_PDEATHSIG 1  
 #define PR_GET_PDEATHSIG 2  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_GET_DUMPABLE 3
 #define PR_SET_DUMPABLE 4
-
 #define PR_GET_UNALIGN 5
 #define PR_SET_UNALIGN 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_UNALIGN_NOPRINT 1  
 #define PR_UNALIGN_SIGBUS 2  
-
 #define PR_GET_KEEPCAPS 7
 #define PR_SET_KEEPCAPS 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_GET_FPEMU 9
 #define PR_SET_FPEMU 10
 #define PR_FPEMU_NOPRINT 1  
 #define PR_FPEMU_SIGFPE 2  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_GET_FPEXC 11
 #define PR_SET_FPEXC 12
 #define PR_FP_EXC_SW_ENABLE 0x80  
 #define PR_FP_EXC_DIV 0x010000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_FP_EXC_OVF 0x020000  
 #define PR_FP_EXC_UND 0x040000  
 #define PR_FP_EXC_RES 0x080000  
 #define PR_FP_EXC_INV 0x100000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_FP_EXC_DISABLED 0  
 #define PR_FP_EXC_NONRECOV 1  
 #define PR_FP_EXC_ASYNC 2  
 #define PR_FP_EXC_PRECISE 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_GET_TIMING 13
 #define PR_SET_TIMING 14
 #define PR_TIMING_STATISTICAL 0  
 #define PR_TIMING_TIMESTAMP 1  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_SET_NAME 15  
 #define PR_GET_NAME 16  
-
 #define PR_GET_ENDIAN 19
 #define PR_SET_ENDIAN 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PR_ENDIAN_BIG 0
 #define PR_ENDIAN_LITTLE 1  
 #define PR_ENDIAN_PPC_LITTLE 2  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/preempt.h b/libc/kernel/common/linux/preempt.h
index b703dd3..1c0f1fe 100644
--- a/libc/kernel/common/linux/preempt.h
+++ b/libc/kernel/common/linux/preempt.h
@@ -7,25 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_PREEMPT_H
 #define __LINUX_PREEMPT_H
-
 #include <linux/thread_info.h>
 #include <linux/linkage.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define add_preempt_count(val) do { preempt_count() += (val); } while (0)
 #define sub_preempt_count(val) do { preempt_count() -= (val); } while (0)
-
 #define inc_preempt_count() add_preempt_count(1)
 #define dec_preempt_count() sub_preempt_count(1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define preempt_count() (current_thread_info()->preempt_count)
-
 #define preempt_disable() do { } while (0)
 #define preempt_enable_no_resched() do { } while (0)
 #define preempt_enable() do { } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define preempt_check_resched() do { } while (0)
-
 #endif
diff --git a/libc/kernel/common/linux/proc_fs.h b/libc/kernel/common/linux/proc_fs.h
index ccb22ac..2d83349 100644
--- a/libc/kernel/common/linux/proc_fs.h
+++ b/libc/kernel/common/linux/proc_fs.h
@@ -7,71 +7,100 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PROC_FS_H
 #define _LINUX_PROC_FS_H
-
 #include <linux/slab.h>
 #include <linux/fs.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/spinlock.h>
 #include <asm/atomic.h>
-
 #define FIRST_PROCESS_ENTRY 256
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PROC_ROOT_INO = 1,
 };
-
 #define PROC_SUPER_MAGIC 0x9fa0
-
 typedef int (read_proc_t)(char *page, char **start, off_t off,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int count, int *eof, void *data);
 typedef int (write_proc_t)(struct file *file, const char __user *buffer,
  unsigned long count, void *data);
 typedef int (get_info_t)(char *, char **, off_t, int);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct proc_dir_entry {
  unsigned int low_ino;
  unsigned short namelen;
  const char *name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  mode_t mode;
  nlink_t nlink;
  uid_t uid;
  gid_t gid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  loff_t size;
  struct inode_operations * proc_iops;
  const struct file_operations * proc_fops;
  get_info_t *get_info;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct module *owner;
  struct proc_dir_entry *next, *parent, *subdir;
  void *data;
  read_proc_t *read_proc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  write_proc_t *write_proc;
  atomic_t count;
  int deleted;
  void *set;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct kcore_list {
  struct kcore_list *next;
  unsigned long addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t size;
 };
-
 struct vmcore {
  struct list_head list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long long paddr;
  unsigned long long size;
  loff_t offset;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define proc_root_driver NULL
 #define proc_net NULL
 #define proc_bus NULL
-
 #define proc_net_fops_create(name, mode, fops) ({ (void)(mode), NULL; })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define proc_net_create(name, mode, info) ({ (void)(mode), NULL; })
 #define remove_proc_entry(name, parent) do {} while (0)
-
+struct tty_driver;
+struct proc_inode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct pid *pid;
+ int fd;
+ union {
+ int (*proc_get_link)(struct inode *, struct dentry **, struct vfsmount **);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int (*proc_read)(struct task_struct *task, char *page);
+ } op;
+ struct proc_dir_entry *pde;
+ struct inode vfs_inode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct proc_maps_private {
+ struct pid *pid;
+ struct task_struct *task;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct vm_area_struct *tail_vma;
+};
 #endif
diff --git a/libc/kernel/common/linux/ptrace.h b/libc/kernel/common/linux/ptrace.h
index 079c0c8..e61a0e5 100644
--- a/libc/kernel/common/linux/ptrace.h
+++ b/libc/kernel/common/linux/ptrace.h
@@ -7,49 +7,55 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_PTRACE_H
 #define _LINUX_PTRACE_H
-
 #define PTRACE_TRACEME 0
 #define PTRACE_PEEKTEXT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_PEEKDATA 2
 #define PTRACE_PEEKUSR 3
 #define PTRACE_POKETEXT 4
 #define PTRACE_POKEDATA 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_POKEUSR 6
 #define PTRACE_CONT 7
 #define PTRACE_KILL 8
 #define PTRACE_SINGLESTEP 9
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_ATTACH 0x10
 #define PTRACE_DETACH 0x11
-
 #define PTRACE_SYSCALL 24
-
 #define PTRACE_SETOPTIONS 0x4200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_GETEVENTMSG 0x4201
 #define PTRACE_GETSIGINFO 0x4202
 #define PTRACE_SETSIGINFO 0x4203
-
 #define PTRACE_O_TRACESYSGOOD 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_O_TRACEFORK 0x00000002
 #define PTRACE_O_TRACEVFORK 0x00000004
 #define PTRACE_O_TRACECLONE 0x00000008
 #define PTRACE_O_TRACEEXEC 0x00000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_O_TRACEVFORKDONE 0x00000020
 #define PTRACE_O_TRACEEXIT 0x00000040
-
 #define PTRACE_O_MASK 0x0000007f
-
 #define PTRACE_EVENT_FORK 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_EVENT_VFORK 2
 #define PTRACE_EVENT_CLONE 3
 #define PTRACE_EVENT_EXEC 4
 #define PTRACE_EVENT_VFORK_DONE 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PTRACE_EVENT_EXIT 6
-
 #include <asm/ptrace.h>
-
 #endif
diff --git a/libc/kernel/common/linux/qic117.h b/libc/kernel/common/linux/qic117.h
index e077090..23f599a 100644
--- a/libc/kernel/common/linux/qic117.h
+++ b/libc/kernel/common/linux/qic117.h
@@ -7,117 +7,128 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _QIC117_H
 #define _QIC117_H
-
 typedef enum {
  QIC_NO_COMMAND = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QIC_RESET = 1,
  QIC_REPORT_NEXT_BIT = 2,
  QIC_PAUSE = 3,
  QIC_MICRO_STEP_PAUSE = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QIC_ALTERNATE_TIMEOUT = 5,
  QIC_REPORT_DRIVE_STATUS = 6,
  QIC_REPORT_ERROR_CODE = 7,
  QIC_REPORT_DRIVE_CONFIGURATION = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QIC_REPORT_ROM_VERSION = 9,
  QIC_LOGICAL_FORWARD = 10,
  QIC_PHYSICAL_REVERSE = 11,
  QIC_PHYSICAL_FORWARD = 12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QIC_SEEK_HEAD_TO_TRACK = 13,
  QIC_SEEK_LOAD_POINT = 14,
  QIC_ENTER_FORMAT_MODE = 15,
  QIC_WRITE_REFERENCE_BURST = 16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QIC_ENTER_VERIFY_MODE = 17,
  QIC_STOP_TAPE = 18,
-
  QIC_MICRO_STEP_HEAD_UP = 21,
  QIC_MICRO_STEP_HEAD_DOWN = 22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QIC_SOFT_SELECT = 23,
  QIC_SOFT_DESELECT = 24,
  QIC_SKIP_REVERSE = 25,
  QIC_SKIP_FORWARD = 26,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QIC_SELECT_RATE = 27,
-
  QIC_ENTER_DIAGNOSTIC_1 = 28,
  QIC_ENTER_DIAGNOSTIC_2 = 29,
  QIC_ENTER_PRIMARY_MODE = 30,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QIC_REPORT_VENDOR_ID = 32,
  QIC_REPORT_TAPE_STATUS = 33,
  QIC_SKIP_EXTENDED_REVERSE = 34,
  QIC_SKIP_EXTENDED_FORWARD = 35,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QIC_CALIBRATE_TAPE_LENGTH = 36,
  QIC_REPORT_FORMAT_SEGMENTS = 37,
  QIC_SET_FORMAT_SEGMENTS = 38,
-
  QIC_PHANTOM_SELECT = 46,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  QIC_PHANTOM_DESELECT = 47
 } qic117_cmd_t;
-
 typedef enum {
  discretional = 0, required, ccs1, ccs2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } qic_compatibility;
-
 typedef enum {
  unused, mode, motion, report
 } command_types;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct qic117_command_table {
  char *name;
  __u8 mask;
  __u8 state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 cmd_type;
  __u8 non_intr;
  __u8 level;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIC117_COMMANDS {         {NULL, 0x00, 0x00, mode, 0, discretional},   {"soft reset", 0x00, 0x00, motion, 1, required},   {"report next bit", 0x00, 0x00, report, 0, required},   {"pause", 0x36, 0x24, motion, 1, required},   {"micro step pause", 0x36, 0x24, motion, 1, required},   {"alternate command timeout", 0x00, 0x00, mode, 0, required},   {"report drive status", 0x00, 0x00, report, 0, required},   {"report error code", 0x01, 0x01, report, 0, required},   {"report drive configuration",0x00, 0x00, report, 0, required},   {"report rom version", 0x00, 0x00, report, 0, required},   {"logical forward", 0x37, 0x25, motion, 0, required},   {"physical reverse", 0x17, 0x05, motion, 0, required},   {"physical forward", 0x17, 0x05, motion, 0, required},   {"seek head to track", 0x37, 0x25, motion, 0, required},   {"seek load point", 0x17, 0x05, motion, 1, required},   {"enter format mode", 0x1f, 0x05, mode, 0, required},   {"write reference burst", 0x1f, 0x05, motion, 1, required},   {"enter verify mode", 0x37, 0x25, mode, 0, required},   {"stop tape", 0x00, 0x00, motion, 1, required},   {"reserved (19)", 0x00, 0x00, unused, 0, discretional},   {"reserved (20)", 0x00, 0x00, unused, 0, discretional},   {"micro step head up", 0x02, 0x00, motion, 0, required},   {"micro step head down", 0x02, 0x00, motion, 0, required},   {"soft select", 0x00, 0x00, mode, 0, discretional},   {"soft deselect", 0x00, 0x00, mode, 0, discretional},   {"skip segments reverse", 0x36, 0x24, motion, 1, required},   {"skip segments forward", 0x36, 0x24, motion, 1, required},   {"select rate or format", 0x03, 0x01, mode, 0, required  },   {"enter diag mode 1", 0x00, 0x00, mode, 0, discretional},   {"enter diag mode 2", 0x00, 0x00, mode, 0, discretional},   {"enter primary mode", 0x00, 0x00, mode, 0, required},   {"vendor unique (31)", 0x00, 0x00, unused, 0, discretional},   {"report vendor id", 0x00, 0x00, report, 0, required},   {"report tape status", 0x04, 0x04, report, 0, ccs1},   {"skip extended reverse", 0x36, 0x24, motion, 1, ccs1},   {"skip extended forward", 0x36, 0x24, motion, 1, ccs1},   {"calibrate tape length", 0x17, 0x05, motion, 1, ccs2},   {"report format segments", 0x17, 0x05, report, 0, ccs2},   {"set format segments", 0x17, 0x05, mode, 0, ccs2},   {"reserved (39)", 0x00, 0x00, unused, 0, discretional},   {"vendor unique (40)", 0x00, 0x00, unused, 0, discretional},   {"vendor unique (41)", 0x00, 0x00, unused, 0, discretional},   {"vendor unique (42)", 0x00, 0x00, unused, 0, discretional},   {"vendor unique (43)", 0x00, 0x00, unused, 0, discretional},   {"vendor unique (44)", 0x00, 0x00, unused, 0, discretional},   {"vendor unique (45)", 0x00, 0x00, unused, 0, discretional},   {"phantom select", 0x00, 0x00, mode, 0, discretional},   {"phantom deselect", 0x00, 0x00, mode, 0, discretional}, }
-
 #define QIC_STATUS_READY 0x01  
 #define QIC_STATUS_ERROR 0x02  
 #define QIC_STATUS_CARTRIDGE_PRESENT 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIC_STATUS_WRITE_PROTECT 0x08  
 #define QIC_STATUS_NEW_CARTRIDGE 0x10  
 #define QIC_STATUS_REFERENCED 0x20  
 #define QIC_STATUS_AT_BOT 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIC_STATUS_AT_EOT 0x80  
-
 #define QIC_CONFIG_RATE_MASK 0x18
 #define QIC_CONFIG_RATE_SHIFT 3
 #define QIC_CONFIG_RATE_250 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIC_CONFIG_RATE_500 2
 #define QIC_CONFIG_RATE_1000 3
 #define QIC_CONFIG_RATE_2000 1
 #define QIC_CONFIG_RATE_4000 0  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIC_CONFIG_LONG 0x40  
 #define QIC_CONFIG_80 0x80  
-
 #define QIC_TAPE_STD_MASK 0x0f
 #define QIC_TAPE_QIC40 0x01
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIC_TAPE_QIC80 0x02
 #define QIC_TAPE_QIC3020 0x03
 #define QIC_TAPE_QIC3010 0x04
-
 #define QIC_TAPE_LEN_MASK 0x70
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIC_TAPE_205FT 0x10
 #define QIC_TAPE_307FT 0x20
 #define QIC_TAPE_VARIABLE 0x30
 #define QIC_TAPE_1100FT 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIC_TAPE_FLEX 0x60
-
 #define QIC_TAPE_WIDE 0x80
-
 #define QIC_TOP_TAPE_LEN 1500
-
 typedef struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char *message;
  unsigned int fatal:1;
 } ftape_error;
-
 #define QIC117_ERRORS {    { "No error", 0, },    { "Command Received while Drive Not Ready", 0, },    { "Cartridge Not Present or Removed", 1, },    { "Motor Speed Error (not within 1%)", 1, },    { "Motor Speed Fault (jammed, or gross speed error", 1, },    { "Cartridge Write Protected", 1, },    { "Undefined or Reserved Command Code", 1, },    { "Illegal Track Address Specified for Seek", 1, },    { "Illegal Command in Report Subcontext", 0, },    { "Illegal Entry into a Diagnostic Mode", 1, },    { "Broken Tape Detected (based on hole sensor)", 1, },    { "Warning--Read Gain Setting Error", 1, },    { "Command Received While Error Status Pending (obs)", 1, },    { "Command Received While New Cartridge Pending", 1, },    { "Command Illegal or Undefined in Primary Mode", 1, },    { "Command Illegal or Undefined in Format Mode", 1, },    { "Command Illegal or Undefined in Verify Mode", 1, },    { "Logical Forward Not at Logical BOT or no Format Segments in Format Mode", 1, },    { "Logical EOT Before All Segments generated", 1, },    { "Command Illegal When Cartridge Not Referenced", 1, },    { "Self-Diagnostic Failed (cannot be cleared)", 1, },    { "Warning EEPROM Not Initialized, Defaults Set", 1, },    { "EEPROM Corrupted or Hardware Failure", 1, },    { "Motion Time-out Error", 1, },    { "Data Segment Too Long -- Logical Forward or Pause", 1, },    { "Transmit Overrun (obs)", 1, },    { "Power On Reset Occurred", 0, },    { "Software Reset Occurred", 0, },    { "Diagnostic Mode 1 Error", 1, },    { "Diagnostic Mode 2 Error", 1, },    { "Command Received During Non-Interruptible Process", 1, },    { "Rate or Format Selection Error", 1, },    { "Illegal Command While in High Speed Mode", 1, },    { "Illegal Seek Segment Value", 1, },    { "Invalid Media", 1, },    { "Head Positioning Failure", 1, },    { "Write Reference Burst Failure", 1, },    { "Prom Code Missing", 1, },    { "Invalid Format", 1, },    { "EOT/BOT System Failure", 1, },    { "Prom A Checksum Error", 1, },    { "Drive Wakeup Reset Occurred", 1, },    { "Prom B Checksum Error", 1, },    { "Illegal Entry into Format Mode", 1, }, }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/qnxtypes.h b/libc/kernel/common/linux/qnxtypes.h
index 53cd20c..686febd 100644
--- a/libc/kernel/common/linux/qnxtypes.h
+++ b/libc/kernel/common/linux/qnxtypes.h
@@ -7,23 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _QNX4TYPES_H
 #define _QNX4TYPES_H
-
 typedef __le16 qnx4_nxtnt_t;
 typedef __u8 qnx4_ftype_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  __le32 xtnt_blk;
  __le32 xtnt_size;
 } qnx4_xtnt_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __le16 qnx4_mode_t;
 typedef __le16 qnx4_muid_t;
 typedef __le16 qnx4_mgid_t;
 typedef __le32 qnx4_off_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __le16 qnx4_nlink_t;
-
 #endif
diff --git a/libc/kernel/common/linux/quota.h b/libc/kernel/common/linux/quota.h
index 054af5a..3918bdc 100644
--- a/libc/kernel/common/linux/quota.h
+++ b/libc/kernel/common/linux/quota.h
@@ -7,81 +7,88 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_QUOTA_
 #define _LINUX_QUOTA_
-
 #include <linux/errno.h>
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __DQUOT_VERSION__ "dquot_6.5.1"
 #define __DQUOT_NUM_VERSION__ 6*10000+5*100+1
-
 typedef __kernel_uid32_t qid_t;
 typedef __u64 qsize_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QUOTABLOCK_BITS 10
 #define QUOTABLOCK_SIZE (1 << QUOTABLOCK_BITS)
-
 #define qb2kb(x) ((x) << (QUOTABLOCK_BITS-10))
 #define kb2qb(x) ((x) >> (QUOTABLOCK_BITS-10))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define toqb(x) (((x) + QUOTABLOCK_SIZE - 1) >> QUOTABLOCK_BITS)
-
 #define MAXQUOTAS 2
 #define USRQUOTA 0  
 #define GRPQUOTA 1  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INITQFNAMES {   "user",     "group",     "undefined",  };
-
 #define SUBCMDMASK 0x00ff
 #define SUBCMDSHIFT 8
 #define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Q_SYNC 0x800001  
 #define Q_QUOTAON 0x800002  
 #define Q_QUOTAOFF 0x800003  
 #define Q_GETFMT 0x800004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Q_GETINFO 0x800005  
 #define Q_SETINFO 0x800006  
 #define Q_GETQUOTA 0x800007  
 #define Q_SETQUOTA 0x800008  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIF_BLIMITS 1
 #define QIF_SPACE 2
 #define QIF_ILIMITS 4
 #define QIF_INODES 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIF_BTIME 16
 #define QIF_ITIME 32
 #define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS)
 #define QIF_USAGE (QIF_SPACE | QIF_INODES)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QIF_TIMES (QIF_BTIME | QIF_ITIME)
 #define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
-
 struct if_dqblk {
  __u64 dqb_bhardlimit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 dqb_bsoftlimit;
  __u64 dqb_curspace;
  __u64 dqb_ihardlimit;
  __u64 dqb_isoftlimit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 dqb_curinodes;
  __u64 dqb_btime;
  __u64 dqb_itime;
  __u32 dqb_valid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define IIF_BGRACE 1
 #define IIF_IGRACE 2
 #define IIF_FLAGS 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
-
 struct if_dqinfo {
  __u64 dqi_bgrace;
  __u64 dqi_igrace;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 dqi_flags;
  __u32 dqi_valid;
 };
-
 #include <sys/cdefs.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/raid/md.h b/libc/kernel/common/linux/raid/md.h
index d609c06..7e9bfc5 100644
--- a/libc/kernel/common/linux/raid/md.h
+++ b/libc/kernel/common/linux/raid/md.h
@@ -7,43 +7,52 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MD_H
 #define _MD_H
-
 #include <linux/blkdev.h>
 #include <asm/semaphore.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/major.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
 #include <linux/bitops.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/module.h>
 #include <linux/hdreg.h>
 #include <linux/proc_fs.h>
 #include <linux/seq_file.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/smp_lock.h>
 #include <linux/delay.h>
 #include <net/checksum.h>
 #include <linux/random.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/kernel_stat.h>
 #include <asm/io.h>
 #include <linux/completion.h>
 #include <linux/mempool.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/list.h>
 #include <linux/reboot.h>
 #include <linux/vmalloc.h>
 #include <linux/blkpg.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/bio.h>
-
 #include <linux/raid/md_p.h>
 #include <linux/raid/md_u.h>
 #include <linux/raid/md_k.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_MAJOR_VERSION 0
 #define MD_MINOR_VERSION 90
-
 #define MD_PATCHLEVEL_VERSION 3
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/raid/md_k.h b/libc/kernel/common/linux/raid/md_k.h
index c8b858c..2298b55 100644
--- a/libc/kernel/common/linux/raid/md_k.h
+++ b/libc/kernel/common/linux/raid/md_k.h
@@ -7,178 +7,210 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MD_K_H
 #define _MD_K_H
-
 #include "../../../drivers/md/dm-bio-list.h"
-
 #define LEVEL_MULTIPATH (-4)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LEVEL_LINEAR (-1)
 #define LEVEL_FAULTY (-5)
-
 #define LEVEL_NONE (-1000000)
-
 #define MaxSector (~(sector_t)0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_THREAD_NAME_MAX 14
-
 typedef struct mddev_s mddev_t;
 typedef struct mdk_rdev_s mdk_rdev_t;
-
 #define MAX_MD_DEVS 256  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_CHUNK_SIZE (1<<30)
-
 struct mdk_rdev_s
 {
  struct list_head same_set;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t size;
  mddev_t *mddev;
  unsigned long last_events;
-
  struct block_device *bdev;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page *sb_page;
  int sb_loaded;
  __u64 sb_events;
  sector_t data_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t sb_offset;
  int sb_size;
  int preferred_minor;
-
  struct kobject kobj;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long flags;
 #define Faulty 1  
 #define In_sync 2  
 #define WriteMostly 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define BarriersNotsupp 5  
-
  int desc_nr;
  int raid_disk;
  int saved_raid_disk;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t recovery_offset;
-
  atomic_t nr_pending;
  atomic_t read_errors;
  atomic_t corrected_errors;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct mddev_s
 {
  void *private;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mdk_personality *pers;
  dev_t unit;
  int md_minor;
  struct list_head disks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int sb_dirty;
  int ro;
-
  struct gendisk *gendisk;
-
  struct kobject kobj;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int major_version,
  minor_version,
  patch_version;
  int persistent;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int chunk_size;
  time_t ctime, utime;
  int level, layout;
  char clevel[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int raid_disks;
  int max_disks;
  sector_t size;
  sector_t array_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 events;
-
  char uuid[16];
-
  sector_t reshape_position;
  int delta_disks, new_level, new_layout, new_chunk;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct mdk_thread_s *thread;
  struct mdk_thread_s *sync_thread;
  sector_t curr_resync;
  unsigned long resync_mark;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t resync_mark_cnt;
  sector_t curr_mark_cnt;
-
  sector_t resync_max_sectors;
-
  sector_t resync_mismatches;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sector_t suspend_lo;
  sector_t suspend_hi;
-
  int sync_speed_min;
  int sync_speed_max;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ok_start_degraded;
-
 #define MD_RECOVERY_RUNNING 0
 #define MD_RECOVERY_SYNC 1
 #define MD_RECOVERY_ERR 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_RECOVERY_INTR 3
 #define MD_RECOVERY_DONE 4
 #define MD_RECOVERY_NEEDED 5
 #define MD_RECOVERY_REQUESTED 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_RECOVERY_CHECK 7
 #define MD_RECOVERY_RESHAPE 8
 #define MD_RECOVERY_FROZEN 9
-
  unsigned long recovery;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int in_sync;
  struct mutex reconfig_mutex;
  atomic_t active;
-
  int changed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int degraded;
  int barriers_work;
  struct bio *biolist;
-
  atomic_t recovery_active;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  wait_queue_head_t recovery_wait;
  sector_t recovery_cp;
-
  spinlock_t write_lock;
  wait_queue_head_t sb_wait;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t pending_writes;
-
  unsigned int safemode;
  unsigned int safemode_delay;
  struct timer_list safemode_timer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t writes_pending;
  request_queue_t *queue;
-
  atomic_t write_behind;
  unsigned int max_write_behind;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct bitmap *bitmap;
  struct file *bitmap_file;
  long bitmap_offset;
  long default_bitmap_offset;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct list_head all_mddevs;
 };
-
+struct mdk_personality
+{
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char *name;
+ int level;
+ struct list_head list;
+ struct module *owner;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int (*make_request)(request_queue_t *q, struct bio *bio);
+ int (*run)(mddev_t *mddev);
+ int (*stop)(mddev_t *mddev);
+ void (*status)(struct seq_file *seq, mddev_t *mddev);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ void (*error_handler)(mddev_t *mddev, mdk_rdev_t *rdev);
+ int (*hot_add_disk) (mddev_t *mddev, mdk_rdev_t *rdev);
+ int (*hot_remove_disk) (mddev_t *mddev, int number);
+ int (*spare_active) (mddev_t *mddev);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ sector_t (*sync_request)(mddev_t *mddev, sector_t sector_nr, int *skipped, int go_faster);
+ int (*resize) (mddev_t *mddev, sector_t sectors);
+ int (*check_reshape) (mddev_t *mddev);
+ int (*start_reshape) (mddev_t *mddev);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int (*reconfig) (mddev_t *mddev, int layout, int chunk_size);
+ void (*quiesce) (mddev_t *mddev, int state);
+};
 struct md_sysfs_entry {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct attribute attr;
  ssize_t (*show)(mddev_t *, char *);
  ssize_t (*store)(mddev_t *, const char *, size_t);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ITERATE_RDEV_GENERIC(head,rdev,tmp)     for ((tmp) = (head).next;   (rdev) = (list_entry((tmp), mdk_rdev_t, same_set)),   (tmp) = (tmp)->next, (tmp)->prev != &(head)   ; )
 #define ITERATE_RDEV(mddev,rdev,tmp)   ITERATE_RDEV_GENERIC((mddev)->disks,rdev,tmp)
 #define ITERATE_RDEV_PENDING(rdev,tmp)   ITERATE_RDEV_GENERIC(pending_raid_disks,rdev,tmp)
-
+typedef struct mdk_thread_s {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ void (*run) (mddev_t *mddev);
+ mddev_t *mddev;
+ wait_queue_head_t wqueue;
+ unsigned long flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct task_struct *tsk;
+ unsigned long timeout;
+} mdk_thread_t;
 #define THREAD_WAKEUP 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __wait_event_lock_irq(wq, condition, lock, cmd)  do {   wait_queue_t __wait;   init_waitqueue_entry(&__wait, current);     add_wait_queue(&wq, &__wait);   for (;;) {   set_current_state(TASK_UNINTERRUPTIBLE);   if (condition)   break;   spin_unlock_irq(&lock);   cmd;   schedule();   spin_lock_irq(&lock);   }   current->state = TASK_RUNNING;   remove_wait_queue(&wq, &__wait);  } while (0)
-
 #define wait_event_lock_irq(wq, condition, lock, cmd)  do {   if (condition)   break;   __wait_event_lock_irq(wq, condition, lock, cmd);  } while (0)
-
 #endif
diff --git a/libc/kernel/common/linux/raid/md_p.h b/libc/kernel/common/linux/raid/md_p.h
index ab856a7..a30e293 100644
--- a/libc/kernel/common/linux/raid/md_p.h
+++ b/libc/kernel/common/linux/raid/md_p.h
@@ -7,129 +7,182 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MD_P_H
 #define _MD_P_H
-
 #define MD_RESERVED_BYTES (64 * 1024)
 #define MD_RESERVED_SECTORS (MD_RESERVED_BYTES / 512)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_RESERVED_BLOCKS (MD_RESERVED_BYTES / BLOCK_SIZE)
-
 #define MD_NEW_SIZE_SECTORS(x) ((x & ~(MD_RESERVED_SECTORS - 1)) - MD_RESERVED_SECTORS)
 #define MD_NEW_SIZE_BLOCKS(x) ((x & ~(MD_RESERVED_BLOCKS - 1)) - MD_RESERVED_BLOCKS)
-
 #define MD_SB_BYTES 4096
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_WORDS (MD_SB_BYTES / 4)
 #define MD_SB_BLOCKS (MD_SB_BYTES / BLOCK_SIZE)
 #define MD_SB_SECTORS (MD_SB_BYTES / 512)
-
 #define MD_SB_GENERIC_OFFSET 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_PERSONALITY_OFFSET 64
 #define MD_SB_DISKS_OFFSET 128
 #define MD_SB_DESCRIPTOR_OFFSET 992
-
 #define MD_SB_GENERIC_CONSTANT_WORDS 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_GENERIC_STATE_WORDS 32
 #define MD_SB_GENERIC_WORDS (MD_SB_GENERIC_CONSTANT_WORDS + MD_SB_GENERIC_STATE_WORDS)
 #define MD_SB_PERSONALITY_WORDS 64
 #define MD_SB_DESCRIPTOR_WORDS 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_DISKS 27
 #define MD_SB_DISKS_WORDS (MD_SB_DISKS*MD_SB_DESCRIPTOR_WORDS)
 #define MD_SB_RESERVED_WORDS (1024 - MD_SB_GENERIC_WORDS - MD_SB_PERSONALITY_WORDS - MD_SB_DISKS_WORDS - MD_SB_DESCRIPTOR_WORDS)
 #define MD_SB_EQUAL_WORDS (MD_SB_GENERIC_WORDS + MD_SB_PERSONALITY_WORDS + MD_SB_DISKS_WORDS)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_DISK_FAULTY 0  
 #define MD_DISK_ACTIVE 1  
 #define MD_DISK_SYNC 2  
 #define MD_DISK_REMOVED 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_DISK_WRITEMOSTLY 9  
-
 typedef struct mdp_device_descriptor_s {
  __u32 number;
  __u32 major;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 minor;
  __u32 raid_disk;
  __u32 state;
  __u32 reserved[MD_SB_DESCRIPTOR_WORDS - 5];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mdp_disk_t;
-
 #define MD_SB_MAGIC 0xa92b4efc
-
 #define MD_SB_CLEAN 0
 #define MD_SB_ERRORS 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_SB_BITMAP_PRESENT 8  
-
 typedef struct mdp_superblock_s {
-
  __u32 md_magic;
  __u32 major_version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 minor_version;
  __u32 patch_version;
  __u32 gvalid_words;
  __u32 set_uuid0;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ctime;
  __u32 level;
  __u32 size;
  __u32 nr_disks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 raid_disks;
  __u32 md_minor;
  __u32 not_persistent;
  __u32 set_uuid1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 set_uuid2;
  __u32 set_uuid3;
  __u32 gstate_creserved[MD_SB_GENERIC_CONSTANT_WORDS - 16];
-
  __u32 utime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 state;
  __u32 active_disks;
  __u32 working_disks;
  __u32 failed_disks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 spare_disks;
  __u32 sb_csum;
 #ifdef __BIG_ENDIAN
  __u32 events_hi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 events_lo;
  __u32 cp_events_hi;
  __u32 cp_events_lo;
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 events_lo;
  __u32 events_hi;
  __u32 cp_events_lo;
  __u32 cp_events_hi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
  __u32 recovery_cp;
-
  __u64 reshape_position;
  __u32 new_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 delta_disks;
  __u32 new_layout;
  __u32 new_chunk;
  __u32 gstate_sreserved[MD_SB_GENERIC_STATE_WORDS - 18];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 layout;
  __u32 chunk_size;
  __u32 root_pv;
  __u32 root_block;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 pstate_reserved[MD_SB_PERSONALITY_WORDS - 4];
-
  mdp_disk_t disks[MD_SB_DISKS];
-
  __u32 reserved[MD_SB_RESERVED_WORDS];
-
  mdp_disk_t this_disk;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mdp_super_t;
-
+struct mdp_superblock_1 {
+ __u32 magic;
+ __u32 major_version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 feature_map;
+ __u32 pad0;
+ __u8 set_uuid[16];
+ char set_name[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 ctime;
+ __u32 level;
+ __u32 layout;
+ __u64 size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 chunksize;
+ __u32 raid_disks;
+ __u32 bitmap_offset;
+ __u32 new_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 reshape_position;
+ __u32 delta_disks;
+ __u32 new_layout;
+ __u32 new_chunk;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u8 pad1[128-124];
+ __u64 data_offset;
+ __u64 data_size;
+ __u64 super_offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 recovery_offset;
+ __u32 dev_number;
+ __u32 cnt_corrected_read;
+ __u8 device_uuid[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u8 devflags;
 #define WriteMostly1 1  
-
+ __u8 pad2[64-57];
+ __u64 utime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u64 events;
+ __u64 resync_offset;
+ __u32 sb_csum;
+ __u32 max_dev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u8 pad3[64-32];
+ __u16 dev_roles[0];
+};
 #define MD_FEATURE_BITMAP_OFFSET 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MD_FEATURE_RECOVERY_OFFSET 2  
 #define MD_FEATURE_RESHAPE_ACTIVE 4
-
 #define MD_FEATURE_ALL (1|2|4)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/raid/md_u.h b/libc/kernel/common/linux/raid/md_u.h
index 3671187..fd86ba5 100644
--- a/libc/kernel/common/linux/raid/md_u.h
+++ b/libc/kernel/common/linux/raid/md_u.h
@@ -7,98 +7,104 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _MD_U_H
 #define _MD_U_H
-
 #define RAID_VERSION _IOR (MD_MAJOR, 0x10, mdu_version_t)
 #define GET_ARRAY_INFO _IOR (MD_MAJOR, 0x11, mdu_array_info_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GET_DISK_INFO _IOR (MD_MAJOR, 0x12, mdu_disk_info_t)
 #define PRINT_RAID_DEBUG _IO (MD_MAJOR, 0x13)
 #define RAID_AUTORUN _IO (MD_MAJOR, 0x14)
 #define GET_BITMAP_FILE _IOR (MD_MAJOR, 0x15, mdu_bitmap_file_t)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLEAR_ARRAY _IO (MD_MAJOR, 0x20)
 #define ADD_NEW_DISK _IOW (MD_MAJOR, 0x21, mdu_disk_info_t)
 #define HOT_REMOVE_DISK _IO (MD_MAJOR, 0x22)
 #define SET_ARRAY_INFO _IOW (MD_MAJOR, 0x23, mdu_array_info_t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SET_DISK_INFO _IO (MD_MAJOR, 0x24)
 #define WRITE_RAID_INFO _IO (MD_MAJOR, 0x25)
 #define UNPROTECT_ARRAY _IO (MD_MAJOR, 0x26)
 #define PROTECT_ARRAY _IO (MD_MAJOR, 0x27)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HOT_ADD_DISK _IO (MD_MAJOR, 0x28)
 #define SET_DISK_FAULTY _IO (MD_MAJOR, 0x29)
 #define HOT_GENERATE_ERROR _IO (MD_MAJOR, 0x2a)
 #define SET_BITMAP_FILE _IOW (MD_MAJOR, 0x2b, int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RUN_ARRAY _IOW (MD_MAJOR, 0x30, mdu_param_t)
 #define START_ARRAY _IO (MD_MAJOR, 0x31)
 #define STOP_ARRAY _IO (MD_MAJOR, 0x32)
 #define STOP_ARRAY_RO _IO (MD_MAJOR, 0x33)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RESTART_ARRAY_RW _IO (MD_MAJOR, 0x34)
-
 typedef struct mdu_version_s {
  int major;
  int minor;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int patchlevel;
 } mdu_version_t;
-
 typedef struct mdu_array_info_s {
-
  int major_version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int minor_version;
  int patch_version;
  int ctime;
  int level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int size;
  int nr_disks;
  int raid_disks;
  int md_minor;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int not_persistent;
-
  int utime;
  int state;
  int active_disks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int working_disks;
  int failed_disks;
  int spare_disks;
-
  int layout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int chunk_size;
-
 } mdu_array_info_t;
-
 typedef struct mdu_disk_info_s {
-
  int number;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int major;
  int minor;
  int raid_disk;
  int state;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mdu_disk_info_t;
-
 typedef struct mdu_start_info_s {
-
  int major;
  int minor;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int raid_disk;
  int state;
-
 } mdu_start_info_t;
-
 typedef struct mdu_bitmap_file_s
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  char pathname[4096];
 } mdu_bitmap_file_t;
-
 typedef struct mdu_param_s
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  int personality;
  int chunk_size;
  int max_fault;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } mdu_param_t;
-
 #endif
-
diff --git a/libc/kernel/common/linux/raid/xor.h b/libc/kernel/common/linux/raid/xor.h
index 01e9f45..0c8bca9 100644
--- a/libc/kernel/common/linux/raid/xor.h
+++ b/libc/kernel/common/linux/raid/xor.h
@@ -7,26 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _XOR_H
 #define _XOR_H
-
 #include <linux/raid/md.h>
-
 #define MAX_XOR_BLOCKS 5
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct xor_block_template {
  struct xor_block_template *next;
  const char *name;
  int speed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*do_2)(unsigned long, unsigned long *, unsigned long *);
  void (*do_3)(unsigned long, unsigned long *, unsigned long *,
  unsigned long *);
  void (*do_4)(unsigned long, unsigned long *, unsigned long *,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long *, unsigned long *);
  void (*do_5)(unsigned long, unsigned long *, unsigned long *,
  unsigned long *, unsigned long *, unsigned long *);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/random.h b/libc/kernel/common/linux/random.h
index d2bef97..adb80e2 100644
--- a/libc/kernel/common/linux/random.h
+++ b/libc/kernel/common/linux/random.h
@@ -7,29 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_RANDOM_H
 #define _LINUX_RANDOM_H
-
 #include <linux/ioctl.h>
-
 #define RNDGETENTCNT _IOR( 'R', 0x00, int )
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RNDADDTOENTCNT _IOW( 'R', 0x01, int )
-
 #define RNDGETPOOL _IOR( 'R', 0x02, int [2] )
-
 #define RNDADDENTROPY _IOW( 'R', 0x03, int [2] )
-
 #define RNDZAPENTCNT _IO( 'R', 0x04 )
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RNDCLEARPOOL _IO( 'R', 0x06 )
-
 struct rand_pool_info {
  int entropy_count;
  int buf_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 buf[0];
 };
-
 #endif
diff --git a/libc/kernel/common/linux/rbtree.h b/libc/kernel/common/linux/rbtree.h
index 714ffe9..ac4b5a5 100644
--- a/libc/kernel/common/linux/rbtree.h
+++ b/libc/kernel/common/linux/rbtree.h
@@ -7,39 +7,47 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_RBTREE_H
 #define _LINUX_RBTREE_H
-
 #include <linux/kernel.h>
 #include <linux/stddef.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rb_node
 {
  unsigned long rb_parent_color;
 #define RB_RED 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RB_BLACK 1
  struct rb_node *rb_right;
  struct rb_node *rb_left;
 } __attribute__((aligned(sizeof(long))));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rb_root
 {
  struct rb_node *rb_node;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rb_parent(r) ((struct rb_node *)((r)->rb_parent_color & ~3))
 #define rb_color(r) ((r)->rb_parent_color & 1)
 #define rb_is_red(r) (!rb_color(r))
 #define rb_is_black(r) rb_color(r)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rb_set_red(r) do { (r)->rb_parent_color &= ~1; } while (0)
 #define rb_set_black(r) do { (r)->rb_parent_color |= 1; } while (0)
-
 #define RB_ROOT (struct rb_root) { NULL, }
 #define rb_entry(ptr, type, member) container_of(ptr, type, member)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RB_EMPTY_ROOT(root) ((root)->rb_node == NULL)
 #define RB_EMPTY_NODE(node) (rb_parent(node) != node)
 #define RB_CLEAR_NODE(node) (rb_set_parent(node, node))
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/rcupdate.h b/libc/kernel/common/linux/rcupdate.h
index 5547a4d..59e2f57 100644
--- a/libc/kernel/common/linux/rcupdate.h
+++ b/libc/kernel/common/linux/rcupdate.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_RCUPDATE_H
 #define __LINUX_RCUPDATE_H
-
 #endif
diff --git a/libc/kernel/common/linux/reboot.h b/libc/kernel/common/linux/reboot.h
index e10ff14..c86d81d 100644
--- a/libc/kernel/common/linux/reboot.h
+++ b/libc/kernel/common/linux/reboot.h
@@ -7,24 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_REBOOT_H
 #define _LINUX_REBOOT_H
-
 #define LINUX_REBOOT_MAGIC1 0xfee1dead
 #define LINUX_REBOOT_MAGIC2 672274793
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LINUX_REBOOT_MAGIC2A 85072278
 #define LINUX_REBOOT_MAGIC2B 369367448
 #define LINUX_REBOOT_MAGIC2C 537993216
-
 #define LINUX_REBOOT_CMD_RESTART 0x01234567
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LINUX_REBOOT_CMD_HALT 0xCDEF0123
 #define LINUX_REBOOT_CMD_CAD_ON 0x89ABCDEF
 #define LINUX_REBOOT_CMD_CAD_OFF 0x00000000
 #define LINUX_REBOOT_CMD_POWER_OFF 0x4321FEDC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LINUX_REBOOT_CMD_RESTART2 0xA1B2C3D4
 #define LINUX_REBOOT_CMD_SW_SUSPEND 0xD000FCE2
 #define LINUX_REBOOT_CMD_KEXEC 0x45584543
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/relay.h b/libc/kernel/common/linux/relay.h
index 09f7219..755adf1 100644
--- a/libc/kernel/common/linux/relay.h
+++ b/libc/kernel/common/linux/relay.h
@@ -7,85 +7,94 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_RELAY_H
 #define _LINUX_RELAY_H
-
 #include <linux/types.h>
 #include <linux/sched.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/wait.h>
 #include <linux/list.h>
 #include <linux/fs.h>
 #include <linux/poll.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/kref.h>
-
 #define FIX_SIZE(x) ((((x) - 1) & PAGE_MASK) + PAGE_SIZE)
-
 #define RELAYFS_CHANNEL_VERSION 6
-
 struct rchan_buf
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  void *start;
  void *data;
  size_t offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t subbufs_produced;
  size_t subbufs_consumed;
  struct rchan *chan;
  wait_queue_head_t read_wait;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct work_struct wake_readers;
  struct dentry *dentry;
  struct kref kref;
  struct page **page_array;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int page_count;
  unsigned int finalized;
  size_t *padding;
  size_t prev_padding;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t bytes_consumed;
  unsigned int cpu;
 } ____cacheline_aligned;
-
 struct rchan
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  u32 version;
  size_t subbuf_size;
  size_t n_subbufs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t alloc_size;
  struct rchan_callbacks *cb;
  struct kref kref;
  void *private_data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t last_toobig;
  struct rchan_buf *buf[NR_CPUS];
 };
-
 struct rchan_callbacks
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
-
  int (*subbuf_start) (struct rchan_buf *buf,
  void *subbuf,
  void *prev_subbuf,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t prev_padding);
-
  void (*buf_mapped)(struct rchan_buf *buf,
  struct file *filp);
-
  void (*buf_unmapped)(struct rchan_buf *buf,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct file *filp);
-
  struct dentry *(*create_buf_file)(const char *filename,
  struct dentry *parent,
  int mode,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rchan_buf *buf,
  int *is_global);
-
  int (*remove_buf_file)(struct dentry *dentry);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rchan *relay_open(const char *base_filename,
  struct dentry *parent,
  size_t subbuf_size,
  size_t n_subbufs,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rchan_callbacks *cb);
-
 #endif
-
diff --git a/libc/kernel/common/linux/resource.h b/libc/kernel/common/linux/resource.h
index 347b524..3b2941f 100644
--- a/libc/kernel/common/linux/resource.h
+++ b/libc/kernel/common/linux/resource.h
@@ -7,54 +7,59 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_RESOURCE_H
 #define _LINUX_RESOURCE_H
-
 #include <linux/time.h>
-
 struct task_struct;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RUSAGE_SELF 0
 #define RUSAGE_CHILDREN (-1)
 #define RUSAGE_BOTH (-2)  
-
 struct rusage {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct timeval ru_utime;
  struct timeval ru_stime;
  long ru_maxrss;
  long ru_ixrss;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ru_idrss;
  long ru_isrss;
  long ru_minflt;
  long ru_majflt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ru_nswap;
  long ru_inblock;
  long ru_oublock;
  long ru_msgsnd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long ru_msgrcv;
  long ru_nsignals;
  long ru_nvcsw;
  long ru_nivcsw;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct rlimit {
  unsigned long rlim_cur;
  unsigned long rlim_max;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define PRIO_MIN (-20)
 #define PRIO_MAX 20
-
 #define PRIO_PROCESS 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PRIO_PGRP 1
 #define PRIO_USER 2
-
 #define _STK_LIM (8*1024*1024)
-
 #define MLOCK_LIMIT (8 * PAGE_SIZE)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/resource.h>
-
 #endif
diff --git a/libc/kernel/common/linux/route.h b/libc/kernel/common/linux/route.h
index cdb8744..41e5a08 100644
--- a/libc/kernel/common/linux/route.h
+++ b/libc/kernel/common/linux/route.h
@@ -7,43 +7,53 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_ROUTE_H
 #define _LINUX_ROUTE_H
-
 #include <linux/if.h>
 #include <linux/compiler.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rtentry
 {
  unsigned long rt_pad1;
  struct sockaddr rt_dst;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sockaddr rt_gateway;
  struct sockaddr rt_genmask;
  unsigned short rt_flags;
  short rt_pad2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long rt_pad3;
  void *rt_pad4;
  short rt_metric;
  char __user *rt_dev;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long rt_mtu;
 #define rt_mss rt_mtu  
  unsigned long rt_window;
  unsigned short rt_irtt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define RTF_UP 0x0001  
 #define RTF_GATEWAY 0x0002  
 #define RTF_HOST 0x0004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTF_REINSTATE 0x0008  
 #define RTF_DYNAMIC 0x0010  
 #define RTF_MODIFIED 0x0020  
 #define RTF_MTU 0x0040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTF_MSS RTF_MTU  
 #define RTF_WINDOW 0x0080  
 #define RTF_IRTT 0x0100  
 #define RTF_REJECT 0x0200  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/rpmsg_omx.h b/libc/kernel/common/linux/rpmsg_omx.h
index 2a757bc..742b9ef 100644
--- a/libc/kernel/common/linux/rpmsg_omx.h
+++ b/libc/kernel/common/linux/rpmsg_omx.h
@@ -42,4 +42,3 @@
 };
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
diff --git a/libc/kernel/common/linux/rtc.h b/libc/kernel/common/linux/rtc.h
index b51bc71..e437060 100644
--- a/libc/kernel/common/linux/rtc.h
+++ b/libc/kernel/common/linux/rtc.h
@@ -7,66 +7,77 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_RTC_H_
 #define _LINUX_RTC_H_
-
 struct rtc_time {
  int tm_sec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int tm_min;
  int tm_hour;
  int tm_mday;
  int tm_mon;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int tm_year;
  int tm_wday;
  int tm_yday;
  int tm_isdst;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct rtc_wkalrm {
  unsigned char enabled;
  unsigned char pending;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rtc_time time;
 };
-
 struct rtc_pll_info {
  int pll_ctrl;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int pll_value;
  int pll_max;
  int pll_min;
  int pll_posmult;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int pll_negmult;
  long pll_clock;
 };
-
 #define RTC_AIE_ON _IO('p', 0x01)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_AIE_OFF _IO('p', 0x02)  
 #define RTC_UIE_ON _IO('p', 0x03)  
 #define RTC_UIE_OFF _IO('p', 0x04)  
 #define RTC_PIE_ON _IO('p', 0x05)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_PIE_OFF _IO('p', 0x06)  
 #define RTC_WIE_ON _IO('p', 0x0f)  
 #define RTC_WIE_OFF _IO('p', 0x10)  
-
 #define RTC_ALM_SET _IOW('p', 0x07, struct rtc_time)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_ALM_READ _IOR('p', 0x08, struct rtc_time)  
 #define RTC_RD_TIME _IOR('p', 0x09, struct rtc_time)  
 #define RTC_SET_TIME _IOW('p', 0x0a, struct rtc_time)  
 #define RTC_IRQP_READ _IOR('p', 0x0b, unsigned long)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_IRQP_SET _IOW('p', 0x0c, unsigned long)  
 #define RTC_EPOCH_READ _IOR('p', 0x0d, unsigned long)  
 #define RTC_EPOCH_SET _IOW('p', 0x0e, unsigned long)  
-
 #define RTC_WKALM_SET _IOW('p', 0x0f, struct rtc_wkalrm) 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_WKALM_RD _IOR('p', 0x10, struct rtc_wkalrm) 
-
 #define RTC_PLL_GET _IOR('p', 0x11, struct rtc_pll_info)  
 #define RTC_PLL_SET _IOW('p', 0x12, struct rtc_pll_info)  
-
 #define RTC_IRQF 0x80  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTC_PF 0x40
 #define RTC_AF 0x20
 #define RTC_UF 0x10
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/rtnetlink.h b/libc/kernel/common/linux/rtnetlink.h
index bbd991a..2d04e4e 100644
--- a/libc/kernel/common/linux/rtnetlink.h
+++ b/libc/kernel/common/linux/rtnetlink.h
@@ -7,500 +7,539 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_RTNETLINK_H
 #define __LINUX_RTNETLINK_H
-
 #include <linux/types.h>
 #include <linux/netlink.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/if_link.h>
 #include <linux/if_addr.h>
 #include <linux/neighbour.h>
-
 #define RTNL_FAMILY_IPMR 128
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNL_FAMILY_IP6MR 129
 #define RTNL_FAMILY_MAX 129
-
 enum {
  RTM_BASE = 16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_BASE RTM_BASE
-
  RTM_NEWLINK = 16,
 #define RTM_NEWLINK RTM_NEWLINK
  RTM_DELLINK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELLINK RTM_DELLINK
  RTM_GETLINK,
 #define RTM_GETLINK RTM_GETLINK
  RTM_SETLINK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_SETLINK RTM_SETLINK
-
  RTM_NEWADDR = 20,
 #define RTM_NEWADDR RTM_NEWADDR
  RTM_DELADDR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELADDR RTM_DELADDR
  RTM_GETADDR,
 #define RTM_GETADDR RTM_GETADDR
-
  RTM_NEWROUTE = 24,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWROUTE RTM_NEWROUTE
  RTM_DELROUTE,
 #define RTM_DELROUTE RTM_DELROUTE
  RTM_GETROUTE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETROUTE RTM_GETROUTE
-
  RTM_NEWNEIGH = 28,
 #define RTM_NEWNEIGH RTM_NEWNEIGH
  RTM_DELNEIGH,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELNEIGH RTM_DELNEIGH
  RTM_GETNEIGH,
 #define RTM_GETNEIGH RTM_GETNEIGH
-
  RTM_NEWRULE = 32,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWRULE RTM_NEWRULE
  RTM_DELRULE,
 #define RTM_DELRULE RTM_DELRULE
  RTM_GETRULE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETRULE RTM_GETRULE
-
  RTM_NEWQDISC = 36,
 #define RTM_NEWQDISC RTM_NEWQDISC
  RTM_DELQDISC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELQDISC RTM_DELQDISC
  RTM_GETQDISC,
 #define RTM_GETQDISC RTM_GETQDISC
-
  RTM_NEWTCLASS = 40,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWTCLASS RTM_NEWTCLASS
  RTM_DELTCLASS,
 #define RTM_DELTCLASS RTM_DELTCLASS
  RTM_GETTCLASS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETTCLASS RTM_GETTCLASS
-
  RTM_NEWTFILTER = 44,
 #define RTM_NEWTFILTER RTM_NEWTFILTER
  RTM_DELTFILTER,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_DELTFILTER RTM_DELTFILTER
  RTM_GETTFILTER,
 #define RTM_GETTFILTER RTM_GETTFILTER
-
  RTM_NEWACTION = 48,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWACTION RTM_NEWACTION
  RTM_DELACTION,
 #define RTM_DELACTION RTM_DELACTION
  RTM_GETACTION,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETACTION RTM_GETACTION
-
  RTM_NEWPREFIX = 52,
 #define RTM_NEWPREFIX RTM_NEWPREFIX
-
  RTM_GETMULTICAST = 58,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETMULTICAST RTM_GETMULTICAST
-
  RTM_GETANYCAST = 62,
 #define RTM_GETANYCAST RTM_GETANYCAST
-
  RTM_NEWNEIGHTBL = 64,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWNEIGHTBL RTM_NEWNEIGHTBL
  RTM_GETNEIGHTBL = 66,
 #define RTM_GETNEIGHTBL RTM_GETNEIGHTBL
  RTM_SETNEIGHTBL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_SETNEIGHTBL RTM_SETNEIGHTBL
-
  RTM_NEWNDUSEROPT = 68,
 #define RTM_NEWNDUSEROPT RTM_NEWNDUSEROPT
-
  RTM_NEWADDRLABEL = 72,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL
  RTM_DELADDRLABEL,
 #define RTM_DELADDRLABEL RTM_DELADDRLABEL
  RTM_GETADDRLABEL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_GETADDRLABEL RTM_GETADDRLABEL
-
  RTM_GETDCB = 78,
 #define RTM_GETDCB RTM_GETDCB
  RTM_SETDCB,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_SETDCB RTM_SETDCB
-
  __RTM_MAX,
 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_NR_MSGTYPES (RTM_MAX + 1 - RTM_BASE)
 #define RTM_NR_FAMILIES (RTM_NR_MSGTYPES >> 2)
 #define RTM_FAM(cmd) (((cmd) - RTM_BASE) >> 2)
-
 struct rtattr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short rta_len;
  unsigned short rta_type;
 };
-
 #define RTA_ALIGNTO 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTA_ALIGN(len) ( ((len)+RTA_ALIGNTO-1) & ~(RTA_ALIGNTO-1) )
 #define RTA_OK(rta,len) ((len) >= (int)sizeof(struct rtattr) &&   (rta)->rta_len >= sizeof(struct rtattr) &&   (rta)->rta_len <= (len))
 #define RTA_NEXT(rta,attrlen) ((attrlen) -= RTA_ALIGN((rta)->rta_len),   (struct rtattr*)(((char*)(rta)) + RTA_ALIGN((rta)->rta_len)))
 #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTA_SPACE(len) RTA_ALIGN(RTA_LENGTH(len))
 #define RTA_DATA(rta) ((void*)(((char*)(rta)) + RTA_LENGTH(0)))
 #define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
-
 struct rtmsg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char rtm_family;
  unsigned char rtm_dst_len;
  unsigned char rtm_src_len;
  unsigned char rtm_tos;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char rtm_table;
  unsigned char rtm_protocol;
  unsigned char rtm_scope;
  unsigned char rtm_type;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned rtm_flags;
 };
-
 enum {
  RTN_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTN_UNICAST,
  RTN_LOCAL,
  RTN_BROADCAST,
  RTN_ANYCAST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTN_MULTICAST,
  RTN_BLACKHOLE,
  RTN_UNREACHABLE,
  RTN_PROHIBIT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTN_THROW,
  RTN_NAT,
  RTN_XRESOLVE,
  __RTN_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define RTN_MAX (__RTN_MAX - 1)
-
 #define RTPROT_UNSPEC 0
 #define RTPROT_REDIRECT 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTPROT_KERNEL 2  
 #define RTPROT_BOOT 3  
 #define RTPROT_STATIC 4  
-
 #define RTPROT_GATED 8  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTPROT_RA 9  
 #define RTPROT_MRT 10  
 #define RTPROT_ZEBRA 11  
 #define RTPROT_BIRD 12  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTPROT_DNROUTED 13  
 #define RTPROT_XORP 14  
 #define RTPROT_NTK 15  
 #define RTPROT_DHCP 16  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum rt_scope_t {
  RT_SCOPE_UNIVERSE=0,
-
  RT_SCOPE_SITE=200,
  RT_SCOPE_LINK=253,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RT_SCOPE_HOST=254,
  RT_SCOPE_NOWHERE=255
 };
-
 #define RTM_F_NOTIFY 0x100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_F_CLONED 0x200  
 #define RTM_F_EQUALIZE 0x400  
 #define RTM_F_PREFIX 0x800  
-
 enum rt_class_t {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RT_TABLE_UNSPEC=0,
-
  RT_TABLE_COMPAT=252,
  RT_TABLE_DEFAULT=253,
  RT_TABLE_MAIN=254,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RT_TABLE_LOCAL=255,
  RT_TABLE_MAX=0xFFFFFFFF
 };
-
 enum rtattr_type_t {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTA_UNSPEC,
  RTA_DST,
  RTA_SRC,
  RTA_IIF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTA_OIF,
  RTA_GATEWAY,
  RTA_PRIORITY,
  RTA_PREFSRC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTA_METRICS,
  RTA_MULTIPATH,
  RTA_PROTOINFO,
  RTA_FLOW,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTA_CACHEINFO,
  RTA_SESSION,
  RTA_MP_ALGO,
  RTA_TABLE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTA_MARK,
  __RTA_MAX
 };
-
 #define RTA_MAX (__RTA_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTM_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct rtmsg))))
 #define RTM_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct rtmsg))
-
 struct rtnexthop {
  unsigned short rtnh_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char rtnh_flags;
  unsigned char rtnh_hops;
  int rtnh_ifindex;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNH_F_DEAD 1  
 #define RTNH_F_PERVASIVE 2  
 #define RTNH_F_ONLINK 4  
-
 #define RTNH_ALIGNTO 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNH_ALIGN(len) ( ((len)+RTNH_ALIGNTO-1) & ~(RTNH_ALIGNTO-1) )
 #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) &&   ((int)(rtnh)->rtnh_len) <= (len))
 #define RTNH_NEXT(rtnh) ((struct rtnexthop*)(((char*)(rtnh)) + RTNH_ALIGN((rtnh)->rtnh_len)))
 #define RTNH_LENGTH(len) (RTNH_ALIGN(sizeof(struct rtnexthop)) + (len))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNH_SPACE(len) RTNH_ALIGN(RTNH_LENGTH(len))
 #define RTNH_DATA(rtnh) ((struct rtattr*)(((char*)(rtnh)) + RTNH_LENGTH(0)))
-
 struct rta_cacheinfo {
  __u32 rta_clntref;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 rta_lastuse;
  __s32 rta_expires;
  __u32 rta_error;
  __u32 rta_used;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNETLINK_HAVE_PEERINFO 1
  __u32 rta_id;
  __u32 rta_ts;
  __u32 rta_tsage;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  RTAX_UNSPEC,
 #define RTAX_UNSPEC RTAX_UNSPEC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTAX_LOCK,
 #define RTAX_LOCK RTAX_LOCK
  RTAX_MTU,
 #define RTAX_MTU RTAX_MTU
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTAX_WINDOW,
 #define RTAX_WINDOW RTAX_WINDOW
  RTAX_RTT,
 #define RTAX_RTT RTAX_RTT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTAX_RTTVAR,
 #define RTAX_RTTVAR RTAX_RTTVAR
  RTAX_SSTHRESH,
 #define RTAX_SSTHRESH RTAX_SSTHRESH
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTAX_CWND,
 #define RTAX_CWND RTAX_CWND
  RTAX_ADVMSS,
 #define RTAX_ADVMSS RTAX_ADVMSS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTAX_REORDERING,
 #define RTAX_REORDERING RTAX_REORDERING
  RTAX_HOPLIMIT,
 #define RTAX_HOPLIMIT RTAX_HOPLIMIT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTAX_INITCWND,
 #define RTAX_INITCWND RTAX_INITCWND
  RTAX_FEATURES,
 #define RTAX_FEATURES RTAX_FEATURES
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTAX_RTO_MIN,
 #define RTAX_RTO_MIN RTAX_RTO_MIN
  RTAX_INITRWND,
 #define RTAX_INITRWND RTAX_INITRWND
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __RTAX_MAX
 };
-
 #define RTAX_MAX (__RTAX_MAX - 1)
-
 #define RTAX_FEATURE_ECN 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTAX_FEATURE_SACK 0x00000002
 #define RTAX_FEATURE_TIMESTAMP 0x00000004
 #define RTAX_FEATURE_ALLFRAG 0x00000008
-
 struct rta_session {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 proto;
  __u8 pad1;
  __u16 pad2;
-
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  __u16 sport;
  __u16 dport;
  } ports;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct {
  __u8 type;
  __u8 code;
  __u16 ident;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } icmpt;
-
  __u32 spi;
  } u;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rtgenmsg {
  unsigned char rtgen_family;
 };
-
 struct ifinfomsg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char ifi_family;
  unsigned char __ifi_pad;
  unsigned short ifi_type;
  int ifi_index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned ifi_flags;
  unsigned ifi_change;
 };
-
 struct prefixmsg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char prefix_family;
  unsigned char prefix_pad1;
  unsigned short prefix_pad2;
  int prefix_ifindex;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char prefix_type;
  unsigned char prefix_len;
  unsigned char prefix_flags;
  unsigned char prefix_pad3;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum
 {
  PREFIX_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  PREFIX_ADDRESS,
  PREFIX_CACHEINFO,
  __PREFIX_MAX
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PREFIX_MAX (__PREFIX_MAX - 1)
-
 struct prefix_cacheinfo {
  __u32 preferred_time;
  __u32 valid_time;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tcmsg {
  unsigned char tcm_family;
  unsigned char tcm__pad1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short tcm__pad2;
  int tcm_ifindex;
  __u32 tcm_handle;
  __u32 tcm_parent;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tcm_info;
 };
-
 enum {
  TCA_UNSPEC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_KIND,
  TCA_OPTIONS,
  TCA_STATS,
  TCA_XSTATS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCA_RATE,
  TCA_FCNT,
  TCA_STATS2,
  TCA_STAB,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __TCA_MAX
 };
-
 #define TCA_MAX (__TCA_MAX - 1)
-
 #define TCA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcmsg))))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcmsg))
-
 struct nduseroptmsg {
  unsigned char nduseropt_family;
  unsigned char nduseropt_pad1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short nduseropt_opts_len;
  int nduseropt_ifindex;
  __u8 nduseropt_icmp_type;
  __u8 nduseropt_icmp_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short nduseropt_pad2;
  unsigned int nduseropt_pad3;
-
 };
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NDUSEROPT_UNSPEC,
  NDUSEROPT_SRCADDR,
  __NDUSEROPT_MAX
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NDUSEROPT_MAX (__NDUSEROPT_MAX - 1)
-
 #define RTMGRP_LINK 1
 #define RTMGRP_NOTIFY 2
 #define RTMGRP_NEIGH 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_TC 8
-
 #define RTMGRP_IPV4_IFADDR 0x10
 #define RTMGRP_IPV4_MROUTE 0x20
 #define RTMGRP_IPV4_ROUTE 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_IPV4_RULE 0x80
-
 #define RTMGRP_IPV6_IFADDR 0x100
 #define RTMGRP_IPV6_MROUTE 0x200
 #define RTMGRP_IPV6_ROUTE 0x400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTMGRP_IPV6_IFINFO 0x800
-
 #define RTMGRP_DECnet_IFADDR 0x1000
 #define RTMGRP_DECnet_ROUTE 0x4000
-
 #define RTMGRP_IPV6_PREFIX 0x20000
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum rtnetlink_groups {
  RTNLGRP_NONE,
 #define RTNLGRP_NONE RTNLGRP_NONE
  RTNLGRP_LINK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNLGRP_LINK RTNLGRP_LINK
  RTNLGRP_NOTIFY,
 #define RTNLGRP_NOTIFY RTNLGRP_NOTIFY
  RTNLGRP_NEIGH,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNLGRP_NEIGH RTNLGRP_NEIGH
  RTNLGRP_TC,
 #define RTNLGRP_TC RTNLGRP_TC
  RTNLGRP_IPV4_IFADDR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNLGRP_IPV4_IFADDR RTNLGRP_IPV4_IFADDR
  RTNLGRP_IPV4_MROUTE,
 #define RTNLGRP_IPV4_MROUTE RTNLGRP_IPV4_MROUTE
  RTNLGRP_IPV4_ROUTE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNLGRP_IPV4_ROUTE RTNLGRP_IPV4_ROUTE
  RTNLGRP_IPV4_RULE,
 #define RTNLGRP_IPV4_RULE RTNLGRP_IPV4_RULE
  RTNLGRP_IPV6_IFADDR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNLGRP_IPV6_IFADDR RTNLGRP_IPV6_IFADDR
  RTNLGRP_IPV6_MROUTE,
 #define RTNLGRP_IPV6_MROUTE RTNLGRP_IPV6_MROUTE
  RTNLGRP_IPV6_ROUTE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNLGRP_IPV6_ROUTE RTNLGRP_IPV6_ROUTE
  RTNLGRP_IPV6_IFINFO,
 #define RTNLGRP_IPV6_IFINFO RTNLGRP_IPV6_IFINFO
  RTNLGRP_DECnet_IFADDR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNLGRP_DECnet_IFADDR RTNLGRP_DECnet_IFADDR
  RTNLGRP_NOP2,
  RTNLGRP_DECnet_ROUTE,
 #define RTNLGRP_DECnet_ROUTE RTNLGRP_DECnet_ROUTE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RTNLGRP_DECnet_RULE,
 #define RTNLGRP_DECnet_RULE RTNLGRP_DECnet_RULE
  RTNLGRP_NOP4,
  RTNLGRP_IPV6_PREFIX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNLGRP_IPV6_PREFIX RTNLGRP_IPV6_PREFIX
  RTNLGRP_IPV6_RULE,
 #define RTNLGRP_IPV6_RULE RTNLGRP_IPV6_RULE
  RTNLGRP_ND_USEROPT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNLGRP_ND_USEROPT RTNLGRP_ND_USEROPT
  RTNLGRP_PHONET_IFADDR,
 #define RTNLGRP_PHONET_IFADDR RTNLGRP_PHONET_IFADDR
  RTNLGRP_PHONET_ROUTE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RTNLGRP_PHONET_ROUTE RTNLGRP_PHONET_ROUTE
  __RTNLGRP_MAX
 };
 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tcamsg {
  unsigned char tca_family;
  unsigned char tca__pad1;
  unsigned short tca__pad2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define TA_RTA(r) ((struct rtattr*)(((char*)(r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
 #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct tcamsg))
 #define TCA_ACT_TAB 1   
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCAA_MAX 1
-
 #endif
-
diff --git a/libc/kernel/common/linux/rwsem.h b/libc/kernel/common/linux/rwsem.h
index e64c4c8..b5b1554 100644
--- a/libc/kernel/common/linux/rwsem.h
+++ b/libc/kernel/common/linux/rwsem.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_RWSEM_H
 #define _LINUX_RWSEM_H
-
 #include <linux/linkage.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/sched.h b/libc/kernel/common/linux/sched.h
index 6b781eb..c06b8ec 100644
--- a/libc/kernel/common/linux/sched.h
+++ b/libc/kernel/common/linux/sched.h
@@ -7,35 +7,44 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SCHED_H
 #define _LINUX_SCHED_H
-
 #include <linux/auxvec.h>  
-
 #define CSIGNAL 0x000000ff  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLONE_VM 0x00000100  
 #define CLONE_FS 0x00000200  
 #define CLONE_FILES 0x00000400  
 #define CLONE_SIGHAND 0x00000800  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLONE_PTRACE 0x00002000  
 #define CLONE_VFORK 0x00004000  
 #define CLONE_PARENT 0x00008000  
 #define CLONE_THREAD 0x00010000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLONE_NEWNS 0x00020000  
 #define CLONE_SYSVSEM 0x00040000  
 #define CLONE_SETTLS 0x00080000  
 #define CLONE_PARENT_SETTID 0x00100000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLONE_CHILD_CLEARTID 0x00200000  
 #define CLONE_DETACHED 0x00400000  
 #define CLONE_UNTRACED 0x00800000  
 #define CLONE_CHILD_SETTID 0x01000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLONE_STOPPED 0x02000000  
-
 #define SCHED_NORMAL 0
 #define SCHED_FIFO 1
 #define SCHED_RR 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCHED_BATCH 3
-
 #endif
diff --git a/libc/kernel/common/linux/sem.h b/libc/kernel/common/linux/sem.h
index dfa531b..5c15194 100644
--- a/libc/kernel/common/linux/sem.h
+++ b/libc/kernel/common/linux/sem.h
@@ -7,76 +7,85 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SEM_H
 #define _LINUX_SEM_H
-
 #include <linux/ipc.h>
-
 #define SEM_UNDO 0x1000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GETPID 11  
 #define GETVAL 12  
 #define GETALL 13  
 #define GETNCNT 14  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GETZCNT 15  
 #define SETVAL 16  
 #define SETALL 17  
-
 #define SEM_STAT 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEM_INFO 19
-
 struct semid_ds {
  struct ipc_perm sem_perm;
  __kernel_time_t sem_otime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t sem_ctime;
  struct sem *sem_base;
  struct sem_queue *sem_pending;
  struct sem_queue **sem_pending_last;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sem_undo *undo;
  unsigned short sem_nsems;
 };
-
 #include <asm/sembuf.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sembuf {
  unsigned short sem_num;
  short sem_op;
  short sem_flg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 union semun {
  int val;
  struct semid_ds __user *buf;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short __user *array;
  struct seminfo __user *__buf;
  void __user *__pad;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct seminfo {
  int semmap;
  int semmni;
  int semmns;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int semmnu;
  int semmsl;
  int semopm;
  int semume;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int semusz;
  int semvmx;
  int semaem;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEMMNI 128  
 #define SEMMSL 250  
 #define SEMMNS (SEMMNI*SEMMSL)  
 #define SEMOPM 32  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEMVMX 32767  
 #define SEMAEM SEMVMX  
-
 #define SEMUME SEMOPM  
 #define SEMMNU SEMMNS  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEMMAP SEMMNS  
 #define SEMUSZ 20  
-
 #endif
diff --git a/libc/kernel/common/linux/seq_file.h b/libc/kernel/common/linux/seq_file.h
index 81e314d..294685c 100644
--- a/libc/kernel/common/linux/seq_file.h
+++ b/libc/kernel/common/linux/seq_file.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SEQ_FILE_H
diff --git a/libc/kernel/common/linux/seqlock.h b/libc/kernel/common/linux/seqlock.h
index a1e05d4..713bafa 100644
--- a/libc/kernel/common/linux/seqlock.h
+++ b/libc/kernel/common/linux/seqlock.h
@@ -7,36 +7,44 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_SEQLOCK_H
 #define __LINUX_SEQLOCK_H
-
 #include <linux/spinlock.h>
 #include <linux/preempt.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  unsigned sequence;
  spinlock_t lock;
 } seqlock_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __SEQLOCK_UNLOCKED(lockname)   { 0, __SPIN_LOCK_UNLOCKED(lockname) }
-
 #define SEQLOCK_UNLOCKED   __SEQLOCK_UNLOCKED(old_style_seqlock_init)
-
 #define seqlock_init(x)   do { *(x) = (seqlock_t) __SEQLOCK_UNLOCKED(x); } while (0)
-
 #define DEFINE_SEQLOCK(x)   seqlock_t x = __SEQLOCK_UNLOCKED(x)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+typedef struct seqcount {
+ unsigned sequence;
+} seqcount_t;
 #define SEQCNT_ZERO { 0 }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define seqcount_init(x) do { *(x) = (seqcount_t) SEQCNT_ZERO; } while (0)
-
 #define write_seqlock_irqsave(lock, flags)   do { local_irq_save(flags); write_seqlock(lock); } while (0)
 #define write_seqlock_irq(lock)   do { local_irq_disable(); write_seqlock(lock); } while (0)
 #define write_seqlock_bh(lock)   do { local_bh_disable(); write_seqlock(lock); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define write_sequnlock_irqrestore(lock, flags)   do { write_sequnlock(lock); local_irq_restore(flags); } while(0)
 #define write_sequnlock_irq(lock)   do { write_sequnlock(lock); local_irq_enable(); } while(0)
 #define write_sequnlock_bh(lock)   do { write_sequnlock(lock); local_bh_enable(); } while(0)
 #define read_seqbegin_irqsave(lock, flags)   ({ local_irq_save(flags); read_seqbegin(lock); })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define read_seqretry_irqrestore(lock, iv, flags)   ({   int ret = read_seqretry(lock, iv);   local_irq_restore(flags);   ret;   })
 #endif
diff --git a/libc/kernel/common/linux/serial_core.h b/libc/kernel/common/linux/serial_core.h
index 79f0375..57b973d 100644
--- a/libc/kernel/common/linux/serial_core.h
+++ b/libc/kernel/common/linux/serial_core.h
@@ -7,89 +7,82 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef LINUX_SERIAL_CORE_H
 #define LINUX_SERIAL_CORE_H
-
 #define PORT_UNKNOWN 0
 #define PORT_8250 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_16450 2
 #define PORT_16550 3
 #define PORT_16550A 4
 #define PORT_CIRRUS 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_16650 6
 #define PORT_16650V2 7
 #define PORT_16750 8
 #define PORT_STARTECH 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_16C950 10
 #define PORT_16654 11
 #define PORT_16850 12
 #define PORT_RSA 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_NS16550A 14
 #define PORT_XSCALE 15
 #define PORT_MAX_8250 15  
-
 #define PORT_PXA 31
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_AMBA 32
 #define PORT_CLPS711X 33
 #define PORT_SA1100 34
 #define PORT_UART00 35
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_21285 37
-
 #define PORT_SUNZILOG 38
 #define PORT_SUNSAB 39
-
 #define PORT_V850E_UART 40
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_DZ 47
-
 #define PORT_MUX 48
-
 #define PORT_AT91 49
-
 #define PORT_MAC_ZILOG 50  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_PMAC_ZILOG 51
-
 #define PORT_SCI 52
 #define PORT_SCIF 53
 #define PORT_IRDA 54
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_S3C2410 55
-
 #define PORT_IP22ZILOG 56
-
 #define PORT_LH7A40X 57
-
 #define PORT_CPM 58
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_MPC52xx 59
-
 #define PORT_ICOM 60
-
 #define PORT_S3C2440 61
-
 #define PORT_IMX 62
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_MPSC 63
-
 #define PORT_TXX9 64
-
 #define PORT_VR41XX_SIU 65
 #define PORT_VR41XX_DSIU 66
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_S3C2400 67
-
 #define PORT_M32R_SIO 68
-
 #define PORT_JSM 69
-
 #define PORT_IP3106 70
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PORT_NETX 71
-
 #define PORT_SUNHV 72
-
 #define PORT_S3C2412 73
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/serial_reg.h b/libc/kernel/common/linux/serial_reg.h
index 97b149a..f31700b 100644
--- a/libc/kernel/common/linux/serial_reg.h
+++ b/libc/kernel/common/linux/serial_reg.h
@@ -7,243 +7,255 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SERIAL_REG_H
 #define _LINUX_SERIAL_REG_H
-
 #define UART_RX 0  
 #define UART_TX 0  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_IER 1  
 #define UART_IER_MSI 0x08  
 #define UART_IER_RLSI 0x04  
 #define UART_IER_THRI 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_IER_RDI 0x01  
-
 #define UART_IERX_SLEEP 0x10  
-
 #define UART_IIR 2  
 #define UART_IIR_NO_INT 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_IIR_ID 0x06  
 #define UART_IIR_MSI 0x00  
 #define UART_IIR_THRI 0x02  
 #define UART_IIR_RDI 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_IIR_RLSI 0x06  
-
 #define UART_FCR 2  
 #define UART_FCR_ENABLE_FIFO 0x01  
 #define UART_FCR_CLEAR_RCVR 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_CLEAR_XMIT 0x04  
 #define UART_FCR_DMA_SELECT 0x08  
-
 #define UART_FCR_R_TRIG_00 0x00
 #define UART_FCR_R_TRIG_01 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_R_TRIG_10 0x80
 #define UART_FCR_R_TRIG_11 0xc0
 #define UART_FCR_T_TRIG_00 0x00
 #define UART_FCR_T_TRIG_01 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_T_TRIG_10 0x20
 #define UART_FCR_T_TRIG_11 0x30
-
 #define UART_FCR_TRIGGER_MASK 0xC0  
 #define UART_FCR_TRIGGER_1 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_TRIGGER_4 0x40  
 #define UART_FCR_TRIGGER_8 0x80  
 #define UART_FCR_TRIGGER_14 0xC0  
-
 #define UART_FCR6_R_TRIGGER_8 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR6_R_TRIGGER_16 0x40  
 #define UART_FCR6_R_TRIGGER_24 0x80  
 #define UART_FCR6_R_TRIGGER_28 0xC0  
 #define UART_FCR6_T_TRIGGER_16 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR6_T_TRIGGER_8 0x10  
 #define UART_FCR6_T_TRIGGER_24 0x20  
 #define UART_FCR6_T_TRIGGER_30 0x30  
 #define UART_FCR7_64BYTE 0x20  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LCR 3  
-
 #define UART_LCR_DLAB 0x80  
 #define UART_LCR_SBC 0x40  
 #define UART_LCR_SPAR 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LCR_EPAR 0x10  
 #define UART_LCR_PARITY 0x08  
 #define UART_LCR_STOP 0x04  
 #define UART_LCR_WLEN5 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LCR_WLEN6 0x01  
 #define UART_LCR_WLEN7 0x02  
 #define UART_LCR_WLEN8 0x03  
-
 #define UART_MCR 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MCR_CLKSEL 0x80  
 #define UART_MCR_TCRTLR 0x40  
 #define UART_MCR_XONANY 0x20  
 #define UART_MCR_AFE 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MCR_LOOP 0x10  
 #define UART_MCR_OUT2 0x08  
 #define UART_MCR_OUT1 0x04  
 #define UART_MCR_RTS 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MCR_DTR 0x01  
-
 #define UART_LSR 5  
 #define UART_LSR_TEMT 0x40  
 #define UART_LSR_THRE 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LSR_BI 0x10  
 #define UART_LSR_FE 0x08  
 #define UART_LSR_PE 0x04  
 #define UART_LSR_OE 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_LSR_DR 0x01  
-
 #define UART_MSR 6  
 #define UART_MSR_DCD 0x80  
 #define UART_MSR_RI 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MSR_DSR 0x20  
 #define UART_MSR_CTS 0x10  
 #define UART_MSR_DDCD 0x08  
 #define UART_MSR_TERI 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_MSR_DDSR 0x02  
 #define UART_MSR_DCTS 0x01  
 #define UART_MSR_ANY_DELTA 0x0F  
-
 #define UART_SCR 7  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_DLL 0  
 #define UART_DLM 1  
-
 #define UART_EFR 2  
 #define UART_EFR_CTS 0x80  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_EFR_RTS 0x40  
 #define UART_EFR_SCD 0x20  
 #define UART_EFR_ECB 0x10  
-
 #define UART_XON1 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_XON2 5  
 #define UART_XOFF1 6  
 #define UART_XOFF2 7  
-
 #define UART_TI752_TCR 6  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TI752_TLR 7  
-
 #define UART_TRG 0  
-
 #define UART_TRG_1 0x01
 #define UART_TRG_4 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TRG_8 0x08
 #define UART_TRG_16 0x10
 #define UART_TRG_32 0x20
 #define UART_TRG_64 0x40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_TRG_96 0x60
 #define UART_TRG_120 0x78
 #define UART_TRG_128 0x80
-
 #define UART_FCTR 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_RTS_NODELAY 0x00  
 #define UART_FCTR_RTS_4DELAY 0x01
 #define UART_FCTR_RTS_6DELAY 0x02
 #define UART_FCTR_RTS_8DELAY 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_IRDA 0x04  
 #define UART_FCTR_TX_INT 0x08  
 #define UART_FCTR_TRGA 0x00  
 #define UART_FCTR_TRGB 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_TRGC 0x20  
 #define UART_FCTR_TRGD 0x30  
 #define UART_FCTR_SCR_SWAP 0x40  
 #define UART_FCTR_RX 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCTR_TX 0x80  
-
 #define UART_EMSR 7  
 #define UART_EMSR_FIFO_COUNT 0x01  
 #define UART_EMSR_ALT_COUNT 0x02  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_IER_DMAE 0x80  
 #define UART_IER_UUE 0x40  
 #define UART_IER_NRZE 0x20  
 #define UART_IER_RTOIE 0x10  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_IIR_TOD 0x08  
-
 #define UART_FCR_PXAR1 0x00  
 #define UART_FCR_PXAR8 0x40  
 #define UART_FCR_PXAR16 0x80  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCR_PXAR32 0xc0  
-
 #define UART_ASR 0x01  
 #define UART_RFL 0x03  
 #define UART_TFL 0x04  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_ICR 0x05  
-
 #define UART_ACR 0x00  
 #define UART_CPR 0x01  
 #define UART_TCR 0x02  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_CKS 0x03  
 #define UART_TTL 0x04  
 #define UART_RTL 0x05  
 #define UART_FCL 0x06  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_FCH 0x07  
 #define UART_ID1 0x08  
 #define UART_ID2 0x09  
 #define UART_ID3 0x0A  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_REV 0x0B  
 #define UART_CSR 0x0C  
 #define UART_NMR 0x0D  
 #define UART_CTR 0xFF
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_ACR_RXDIS 0x01  
 #define UART_ACR_TXDIS 0x02  
 #define UART_ACR_DSRFC 0x04  
 #define UART_ACR_TLENB 0x20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_ACR_ICRRD 0x40  
 #define UART_ACR_ASREN 0x80  
-
 #define UART_RSA_BASE (-8)
-
 #define UART_RSA_MSR ((UART_RSA_BASE) + 0)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_MSR_SWAP (1 << 0)  
 #define UART_RSA_MSR_FIFO (1 << 2)  
 #define UART_RSA_MSR_FLOW (1 << 3)  
 #define UART_RSA_MSR_ITYP (1 << 4)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_IER ((UART_RSA_BASE) + 1)  
-
 #define UART_RSA_IER_Rx_FIFO_H (1 << 0)  
 #define UART_RSA_IER_Tx_FIFO_H (1 << 1)  
 #define UART_RSA_IER_Tx_FIFO_E (1 << 2)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_IER_Rx_TOUT (1 << 3)  
 #define UART_RSA_IER_TIMER (1 << 4)  
-
 #define UART_RSA_SRR ((UART_RSA_BASE) + 2)  
-
 #define UART_RSA_SRR_Tx_FIFO_NEMP (1 << 0)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_SRR_Tx_FIFO_NHFL (1 << 1)  
 #define UART_RSA_SRR_Tx_FIFO_NFUL (1 << 2)  
 #define UART_RSA_SRR_Rx_FIFO_NEMP (1 << 3)  
 #define UART_RSA_SRR_Rx_FIFO_NHFL (1 << 4)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_SRR_Rx_FIFO_NFUL (1 << 5)  
 #define UART_RSA_SRR_Rx_TOUT (1 << 6)  
 #define UART_RSA_SRR_TIMER (1 << 7)  
-
 #define UART_RSA_FRR ((UART_RSA_BASE) + 2)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_RSA_TIVSR ((UART_RSA_BASE) + 3)  
-
 #define UART_RSA_TCR ((UART_RSA_BASE) + 4)  
-
 #define UART_RSA_TCR_SWITCH (1 << 0)  
-
 #define SERIAL_RSA_BAUD_BASE (921600)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIAL_RSA_BAUD_BASE_LO (SERIAL_RSA_BAUD_BASE / 8)
-
 #define UART_OMAP_MDR1 0x08  
 #define UART_OMAP_MDR2 0x09  
 #define UART_OMAP_SCR 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_OMAP_SSR 0x11  
 #define UART_OMAP_EBLR 0x12  
 #define UART_OMAP_OSC_12M_SEL 0x13  
 #define UART_OMAP_MVER 0x14  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UART_OMAP_SYSC 0x15  
 #define UART_OMAP_SYSS 0x16  
-
 #endif
-
diff --git a/libc/kernel/common/linux/serio.h b/libc/kernel/common/linux/serio.h
index 7f04987..5c7c3a8 100644
--- a/libc/kernel/common/linux/serio.h
+++ b/libc/kernel/common/linux/serio.h
@@ -7,54 +7,65 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _SERIO_H
 #define _SERIO_H
-
 #include <linux/ioctl.h>
-
 #define SPIOCSTYPE _IOW('q', 0x01, unsigned long)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIO_TIMEOUT 1
 #define SERIO_PARITY 2
 #define SERIO_FRAME 4
-
 #define SERIO_XT 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIO_8042 0x01
 #define SERIO_RS232 0x02
 #define SERIO_HIL_MLC 0x03
 #define SERIO_PS_PSTHRU 0x05
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIO_8042_XL 0x06
-
 #define SERIO_UNKNOWN 0x00
 #define SERIO_MSC 0x01
 #define SERIO_SUN 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIO_MS 0x03
 #define SERIO_MP 0x04
 #define SERIO_MZ 0x05
 #define SERIO_MZP 0x06
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIO_MZPP 0x07
 #define SERIO_VSXXXAA 0x08
 #define SERIO_SUNKBD 0x10
 #define SERIO_WARRIOR 0x18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIO_SPACEORB 0x19
 #define SERIO_MAGELLAN 0x1a
 #define SERIO_SPACEBALL 0x1b
 #define SERIO_GUNZE 0x1c
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIO_IFORCE 0x1d
 #define SERIO_STINGER 0x1e
 #define SERIO_NEWTON 0x1f
 #define SERIO_STOWAWAY 0x20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIO_H3600 0x21
 #define SERIO_PS2SER 0x22
 #define SERIO_TWIDKBD 0x23
 #define SERIO_TWIDJOY 0x24
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIO_HIL 0x25
 #define SERIO_SNES232 0x26
 #define SERIO_SEMTECH 0x27
 #define SERIO_LKKBD 0x28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SERIO_ELO 0x29
 #define SERIO_MICROTOUCH 0x30
-
 #endif
diff --git a/libc/kernel/common/linux/sfh7743.h b/libc/kernel/common/linux/sfh7743.h
index b6c363d..938cea4 100644
--- a/libc/kernel/common/linux/sfh7743.h
+++ b/libc/kernel/common/linux/sfh7743.h
@@ -7,16 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SFH7743_H_
 #define _LINUX_SFH7743_H_
-
 #include <linux/ioctl.h>
-
 #define SFH7743_IO 0xA2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SFH7743_IOCTL_GET_ENABLE _IOR(SFH7743_IO, 0x00, char)
 #define SFH7743_IOCTL_SET_ENABLE _IOW(SFH7743_IO, 0x01, char)
-
 #endif
diff --git a/libc/kernel/common/linux/shm.h b/libc/kernel/common/linux/shm.h
index a7056db..ecee3e8 100644
--- a/libc/kernel/common/linux/shm.h
+++ b/libc/kernel/common/linux/shm.h
@@ -7,68 +7,75 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SHM_H_
 #define _LINUX_SHM_H_
-
 #include <linux/ipc.h>
 #include <linux/errno.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/page.h>
-
 #define SHMMAX 0x2000000  
 #define SHMMIN 1  
 #define SHMMNI 4096  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHMALL (SHMMAX/PAGE_SIZE*(SHMMNI/16))  
 #define SHMSEG SHMMNI  
-
 #include <asm/shmparam.h>
-
 struct shmid_ds {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ipc_perm shm_perm;
  int shm_segsz;
  __kernel_time_t shm_atime;
  __kernel_time_t shm_dtime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_time_t shm_ctime;
  __kernel_ipc_pid_t shm_cpid;
  __kernel_ipc_pid_t shm_lpid;
  unsigned short shm_nattch;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short shm_unused;
  void *shm_unused2;
  void *shm_unused3;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/shmbuf.h>
-
 #define SHM_R 0400  
 #define SHM_W 0200  
-
 #define SHM_RDONLY 010000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHM_RND 020000  
 #define SHM_REMAP 040000  
 #define SHM_EXEC 0100000  
-
 #define SHM_LOCK 11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SHM_UNLOCK 12
-
 #define SHM_STAT 13
 #define SHM_INFO 14
-
 struct shminfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int shmmax;
  int shmmin;
  int shmmni;
  int shmseg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int shmall;
 };
-
 struct shm_info {
  int used_ids;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long shm_tot;
  unsigned long shm_rss;
  unsigned long shm_swp;
  unsigned long swap_attempts;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long swap_successes;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/signal.h b/libc/kernel/common/linux/signal.h
index 4577e54..4697ead 100644
--- a/libc/kernel/common/linux/signal.h
+++ b/libc/kernel/common/linux/signal.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SIGNAL_H
 #define _LINUX_SIGNAL_H
-
 #include <asm/signal.h>
 #include <asm/siginfo.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/skbuff.h b/libc/kernel/common/linux/skbuff.h
index 82140a6..d52b46c 100644
--- a/libc/kernel/common/linux/skbuff.h
+++ b/libc/kernel/common/linux/skbuff.h
@@ -7,158 +7,160 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SKBUFF_H
 #define _LINUX_SKBUFF_H
-
 #include <linux/kernel.h>
 #include <linux/compiler.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/time.h>
 #include <linux/cache.h>
-
 #include <asm/atomic.h>
 #include <asm/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/spinlock.h>
 #include <linux/mm.h>
 #include <linux/highmem.h>
 #include <linux/poll.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/net.h>
 #include <linux/textsearch.h>
 #include <net/checksum.h>
 #include <linux/dmaengine.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define HAVE_ALLOC_SKB  
 #define HAVE_ALIGNABLE_SKB  
-
 #define CHECKSUM_NONE 0
 #define CHECKSUM_HW 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CHECKSUM_UNNECESSARY 2
-
 #define SKB_DATA_ALIGN(X) (((X) + (SMP_CACHE_BYTES - 1)) &   ~(SMP_CACHE_BYTES - 1))
 #define SKB_MAX_ORDER(X, ORDER) (((PAGE_SIZE << (ORDER)) - (X) -   sizeof(struct skb_shared_info)) &   ~(SMP_CACHE_BYTES - 1))
 #define SKB_MAX_HEAD(X) (SKB_MAX_ORDER((X), 0))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SKB_MAX_ALLOC (SKB_MAX_ORDER(0, 2))
-
 struct net_device;
-
 struct sk_buff_head {
-
  struct sk_buff *next;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sk_buff *prev;
-
  __u32 qlen;
  spinlock_t lock;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sk_buff;
-
 #define MAX_SKB_FRAGS (65536/PAGE_SIZE + 2)
-
 typedef struct skb_frag_struct skb_frag_t;
-
 struct skb_frag_struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page *page;
  __u16 page_offset;
  __u16 size;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct skb_shared_info {
  atomic_t dataref;
  unsigned short nr_frags;
  unsigned short gso_size;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short gso_segs;
  unsigned short gso_type;
  unsigned int ip6_frag_id;
  struct sk_buff *frag_list;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  skb_frag_t frags[MAX_SKB_FRAGS];
 };
-
 #define SKB_DATAREF_SHIFT 16
 #define SKB_DATAREF_MASK ((1 << SKB_DATAREF_SHIFT) - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct skb_timeval {
  u32 off_sec;
  u32 off_usec;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  SKB_FCLONE_UNAVAILABLE,
  SKB_FCLONE_ORIG,
  SKB_FCLONE_CLONE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  SKB_GSO_TCPV4 = 1 << 0,
  SKB_GSO_UDP = 1 << 1,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SKB_GSO_DODGY = 1 << 2,
-
  SKB_GSO_TCP_ECN = 1 << 3,
-
  SKB_GSO_TCPV6 = 1 << 4,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sk_buff {
-
  struct sk_buff *next;
  struct sk_buff *prev;
-
  struct sock *sk;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct skb_timeval tstamp;
  struct net_device *dev;
  struct net_device *input_dev;
-
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct tcphdr *th;
  struct udphdr *uh;
  struct icmphdr *icmph;
  struct igmphdr *igmph;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct iphdr *ipiph;
  struct ipv6hdr *ipv6h;
  unsigned char *raw;
  } h;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  struct iphdr *iph;
  struct ipv6hdr *ipv6h;
  struct arphdr *arph;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char *raw;
  } nh;
-
  union {
  unsigned char *raw;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } mac;
-
  struct dst_entry *dst;
  struct sec_path *sp;
-
  char cb[48];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int len,
  data_len,
  mac_len,
  csum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 priority;
  __u8 local_df:1,
  cloned:1,
  ip_summed:2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  nohdr:1,
  nfctinfo:3;
  __u8 pkt_type:3,
  fclone:2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ipvs_property:1;
  __be16 protocol;
-
  void (*destructor)(struct sk_buff *skb);
-
  unsigned int truesize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t users;
  unsigned char *head,
  *data,
  *tail,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  *end;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/slab.h b/libc/kernel/common/linux/slab.h
index f165a93..f3c1408 100644
--- a/libc/kernel/common/linux/slab.h
+++ b/libc/kernel/common/linux/slab.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SLAB_H
 #define _LINUX_SLAB_H
-
 #endif
diff --git a/libc/kernel/common/linux/smb.h b/libc/kernel/common/linux/smb.h
index 72c8967..68ec88b 100644
--- a/libc/kernel/common/linux/smb.h
+++ b/libc/kernel/common/linux/smb.h
@@ -7,55 +7,60 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SMB_H
 #define _LINUX_SMB_H
-
 #include <linux/types.h>
-
 enum smb_protocol {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SMB_PROTOCOL_NONE,
  SMB_PROTOCOL_CORE,
  SMB_PROTOCOL_COREPLUS,
  SMB_PROTOCOL_LANMAN1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SMB_PROTOCOL_LANMAN2,
  SMB_PROTOCOL_NT1
 };
-
 enum smb_case_hndl {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  SMB_CASE_DEFAULT,
  SMB_CASE_LOWER,
  SMB_CASE_UPPER
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct smb_dskattr {
  __u16 total;
  __u16 allocblocks;
  __u16 blocksize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 free;
 };
-
 struct smb_conn_opt {
-
  unsigned int fd;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  enum smb_protocol protocol;
  enum smb_case_hndl case_handling;
-
  __u32 max_xmit;
  __u16 server_uid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 tid;
-
  __u16 secmode;
  __u16 maxmux;
  __u16 maxvcs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 rawmode;
  __u32 sesskey;
-
  __u32 maxraw;
  __u32 capabilities;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s16 serverzone;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/smp.h b/libc/kernel/common/linux/smp.h
index ab4982d..615f32a 100644
--- a/libc/kernel/common/linux/smp.h
+++ b/libc/kernel/common/linux/smp.h
@@ -7,20 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_SMP_H
 #define __LINUX_SMP_H
-
 #define raw_smp_processor_id() 0
 #define hard_smp_processor_id() 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define smp_call_function(func,info,retry,wait) (up_smp_call_function())
 #define on_each_cpu(func,info,retry,wait)   ({   local_irq_disable();   func(info);   local_irq_enable();   0;   })
 #define num_booting_cpus() 1
 #define smp_prepare_boot_cpu() do {} while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define smp_processor_id() raw_smp_processor_id()
 #define get_cpu() ({ preempt_disable(); smp_processor_id(); })
 #define put_cpu() preempt_enable()
 #define put_cpu_no_resched() preempt_enable_no_resched()
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/smp_lock.h b/libc/kernel/common/linux/smp_lock.h
index 523a970..359e72f 100644
--- a/libc/kernel/common/linux/smp_lock.h
+++ b/libc/kernel/common/linux/smp_lock.h
@@ -7,15 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_SMPLOCK_H
 #define __LINUX_SMPLOCK_H
-
 #define lock_kernel() do { } while(0)
 #define unlock_kernel() do { } while(0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define release_kernel_lock(task) do { } while(0)
 #define reacquire_kernel_lock(task) 0
 #define kernel_locked() 1
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/socket.h b/libc/kernel/common/linux/socket.h
index c30dae0..99146f3 100644
--- a/libc/kernel/common/linux/socket.h
+++ b/libc/kernel/common/linux/socket.h
@@ -7,223 +7,243 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SOCKET_H
 #define _LINUX_SOCKET_H
-
 #define _K_SS_MAXSIZE 128  
 #define _K_SS_ALIGNSIZE (__alignof__ (struct sockaddr *))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct __kernel_sockaddr_storage {
  unsigned short ss_family;
-
  char __data[_K_SS_MAXSIZE - sizeof(unsigned short)];
-
 } __attribute__ ((aligned(_K_SS_ALIGNSIZE)));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if !defined(__GLIBC__) || __GLIBC__ < 2
-
 #include <asm/socket.h>  
 #include <linux/sockios.h>  
 #include <linux/uio.h>  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/types.h>  
 #include <linux/compiler.h>  
-
 typedef unsigned short sa_family_t;
-
 struct sockaddr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sa_family_t sa_family;
  char sa_data[14];
 };
-
 struct linger {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int l_onoff;
  int l_linger;
 };
-
 #define sockaddr_storage __kernel_sockaddr_storage
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msghdr {
  void * msg_name;
  int msg_namelen;
  struct iovec * msg_iov;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_size_t msg_iovlen;
  void * msg_control;
  __kernel_size_t msg_controllen;
  unsigned msg_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct cmsghdr {
  __kernel_size_t cmsg_len;
  int cmsg_level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int cmsg_type;
 };
-
 #define __CMSG_NXTHDR(ctl, len, cmsg) __cmsg_nxthdr((ctl),(len),(cmsg))
 #define CMSG_NXTHDR(mhdr, cmsg) cmsg_nxthdr((mhdr), (cmsg))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMSG_ALIGN(len) ( ((len)+sizeof(long)-1) & ~(sizeof(long)-1) )
-
 #define CMSG_DATA(cmsg) ((void *)((char *)(cmsg) + CMSG_ALIGN(sizeof(struct cmsghdr))))
 #define CMSG_SPACE(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(len))
 #define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __CMSG_FIRSTHDR(ctl,len) ((len) >= sizeof(struct cmsghdr) ?   (struct cmsghdr *)(ctl) :   (struct cmsghdr *)NULL)
 #define CMSG_FIRSTHDR(msg) __CMSG_FIRSTHDR((msg)->msg_control, (msg)->msg_controllen)
 #define CMSG_OK(mhdr, cmsg) ((cmsg)->cmsg_len >= sizeof(struct cmsghdr) &&   (cmsg)->cmsg_len <= (unsigned long)   ((mhdr)->msg_controllen -   ((char *)(cmsg) - (char *)(mhdr)->msg_control)))
-
 #ifdef __GNUC__
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KINLINE static __inline__
 #elif defined(__cplusplus)
 #define __KINLINE static inline
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __KINLINE static
 #endif
-
 __KINLINE struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size,
  struct cmsghdr *__cmsg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  struct cmsghdr * __ptr;
-
  __ptr = (struct cmsghdr*)(((unsigned char *) __cmsg) + CMSG_ALIGN(__cmsg->cmsg_len));
  if ((unsigned long)((char*)(__ptr+1) - (char *) __ctl) > __size)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  return (struct cmsghdr *)0;
-
  return __ptr;
 }
-
 __KINLINE struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg);
 }
-
 #define SCM_RIGHTS 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SCM_CREDENTIALS 0x02  
 #define SCM_SECURITY 0x03  
-
 struct ucred {
  __u32 pid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 uid;
  __u32 gid;
 };
-
 #define AF_UNSPEC 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AF_UNIX 1  
 #define AF_LOCAL 1  
 #define AF_INET 2  
 #define AF_AX25 3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AF_IPX 4  
 #define AF_APPLETALK 5  
 #define AF_NETROM 6  
 #define AF_BRIDGE 7  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AF_ATMPVC 8  
 #define AF_X25 9  
 #define AF_INET6 10  
 #define AF_ROSE 11  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AF_DECnet 12  
 #define AF_NETBEUI 13  
 #define AF_SECURITY 14  
 #define AF_KEY 15  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AF_NETLINK 16
 #define AF_ROUTE AF_NETLINK  
 #define AF_PACKET 17  
 #define AF_ASH 18  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AF_ECONET 19  
 #define AF_ATMSVC 20  
 #define AF_SNA 22  
 #define AF_IRDA 23  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AF_PPPOX 24  
 #define AF_WANPIPE 25  
 #define AF_LLC 26  
 #define AF_TIPC 30  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AF_BLUETOOTH 31  
 #define AF_CAIF 38  
 #define AF_MAX 39  
-
 #define PF_UNSPEC AF_UNSPEC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_UNIX AF_UNIX
 #define PF_LOCAL AF_LOCAL
 #define PF_INET AF_INET
 #define PF_AX25 AF_AX25
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_IPX AF_IPX
 #define PF_APPLETALK AF_APPLETALK
 #define PF_NETROM AF_NETROM
 #define PF_BRIDGE AF_BRIDGE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_ATMPVC AF_ATMPVC
 #define PF_X25 AF_X25
 #define PF_INET6 AF_INET6
 #define PF_ROSE AF_ROSE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_DECnet AF_DECnet
 #define PF_NETBEUI AF_NETBEUI
 #define PF_SECURITY AF_SECURITY
 #define PF_KEY AF_KEY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_NETLINK AF_NETLINK
 #define PF_ROUTE AF_ROUTE
 #define PF_PACKET AF_PACKET
 #define PF_ASH AF_ASH
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_ECONET AF_ECONET
 #define PF_ATMSVC AF_ATMSVC
 #define PF_SNA AF_SNA
 #define PF_IRDA AF_IRDA
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_PPPOX AF_PPPOX
 #define PF_WANPIPE AF_WANPIPE
 #define PF_LLC AF_LLC
 #define PF_TIPC AF_TIPC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PF_BLUETOOTH AF_BLUETOOTH
 #define PF_CAIF AF_CAIF
 #define PF_MAX AF_MAX
-
 #define SOMAXCONN 128
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSG_OOB 1
 #define MSG_PEEK 2
 #define MSG_DONTROUTE 4
 #define MSG_TRYHARD 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSG_CTRUNC 8
 #define MSG_PROBE 0x10  
 #define MSG_TRUNC 0x20
 #define MSG_DONTWAIT 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSG_EOR 0x80  
 #define MSG_WAITALL 0x100  
 #define MSG_FIN 0x200
 #define MSG_SYN 0x400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSG_CONFIRM 0x800  
 #define MSG_RST 0x1000
 #define MSG_ERRQUEUE 0x2000  
 #define MSG_NOSIGNAL 0x4000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSG_MORE 0x8000  
-
 #define MSG_EOF MSG_FIN
-
 #define MSG_CMSG_COMPAT 0  
-
 #define SOL_IP 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOL_TCP 6
 #define SOL_UDP 17
 #define SOL_IPV6 41
 #define SOL_ICMPV6 58
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOL_SCTP 132
 #define SOL_RAW 255
 #define SOL_IPX 256
 #define SOL_AX25 257
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOL_ATALK 258
 #define SOL_NETROM 259
 #define SOL_ROSE 260
 #define SOL_DECNET 261
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOL_X25 262
 #define SOL_PACKET 263
 #define SOL_ATM 264  
 #define SOL_AAL 265  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOL_IRDA 266
 #define SOL_NETBEUI 267
 #define SOL_LLC 268
 #define SOL_DCCP 269
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOL_NETLINK 270
 #define SOL_TIPC 271
-
 #define IPX_TYPE 1
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/sockios.h b/libc/kernel/common/linux/sockios.h
index d111359..0c93e40 100644
--- a/libc/kernel/common/linux/sockios.h
+++ b/libc/kernel/common/linux/sockios.h
@@ -7,101 +7,109 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SOCKIOS_H
 #define _LINUX_SOCKIOS_H
-
 #include <asm/sockios.h>
-
 #define SIOCINQ FIONREAD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCOUTQ TIOCOUTQ
-
 #define SIOCADDRT 0x890B  
 #define SIOCDELRT 0x890C  
 #define SIOCRTMSG 0x890D  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGIFNAME 0x8910  
 #define SIOCSIFLINK 0x8911  
 #define SIOCGIFCONF 0x8912  
 #define SIOCGIFFLAGS 0x8913  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIFFLAGS 0x8914  
 #define SIOCGIFADDR 0x8915  
 #define SIOCSIFADDR 0x8916  
 #define SIOCGIFDSTADDR 0x8917  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIFDSTADDR 0x8918  
 #define SIOCGIFBRDADDR 0x8919  
 #define SIOCSIFBRDADDR 0x891a  
 #define SIOCGIFNETMASK 0x891b  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIFNETMASK 0x891c  
 #define SIOCGIFMETRIC 0x891d  
 #define SIOCSIFMETRIC 0x891e  
 #define SIOCGIFMEM 0x891f  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIFMEM 0x8920  
 #define SIOCGIFMTU 0x8921  
 #define SIOCSIFMTU 0x8922  
 #define SIOCSIFNAME 0x8923  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIFHWADDR 0x8924  
 #define SIOCGIFENCAP 0x8925  
 #define SIOCSIFENCAP 0x8926 
 #define SIOCGIFHWADDR 0x8927  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGIFSLAVE 0x8929  
 #define SIOCSIFSLAVE 0x8930
 #define SIOCADDMULTI 0x8931  
 #define SIOCDELMULTI 0x8932
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGIFINDEX 0x8933  
 #define SIOGIFINDEX SIOCGIFINDEX  
 #define SIOCSIFPFLAGS 0x8934  
 #define SIOCGIFPFLAGS 0x8935
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCDIFADDR 0x8936  
 #define SIOCSIFHWBROADCAST 0x8937  
 #define SIOCGIFCOUNT 0x8938  
 #define SIOCKILLADDR 0x8939  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGIFBR 0x8940  
 #define SIOCSIFBR 0x8941  
-
 #define SIOCGIFTXQLEN 0x8942  
 #define SIOCSIFTXQLEN 0x8943  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCETHTOOL 0x8946  
-
 #define SIOCGMIIPHY 0x8947  
 #define SIOCGMIIREG 0x8948  
 #define SIOCSMIIREG 0x8949  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCWANDEV 0x894A  
-
 #define SIOCDARP 0x8953  
 #define SIOCGARP 0x8954  
 #define SIOCSARP 0x8955  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCDRARP 0x8960  
 #define SIOCGRARP 0x8961  
 #define SIOCSRARP 0x8962  
-
 #define SIOCGIFMAP 0x8970  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIFMAP 0x8971  
-
 #define SIOCADDDLCI 0x8980  
 #define SIOCDELDLCI 0x8981  
-
 #define SIOCGIFVLAN 0x8982  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIFVLAN 0x8983  
-
 #define SIOCBONDENSLAVE 0x8990  
 #define SIOCBONDRELEASE 0x8991  
 #define SIOCBONDSETHWADDR 0x8992  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCBONDSLAVEINFOQUERY 0x8993  
 #define SIOCBONDINFOQUERY 0x8994  
 #define SIOCBONDCHANGEACTIVE 0x8995  
-
 #define SIOCBRADDBR 0x89a0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCBRDELBR 0x89a1  
 #define SIOCBRADDIF 0x89a2  
 #define SIOCBRDELIF 0x89a3  
-
 #define SIOCDEVPRIVATE 0x89F0  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCPROTOPRIVATE 0x89E0  
 #endif
diff --git a/libc/kernel/common/linux/soundcard.h b/libc/kernel/common/linux/soundcard.h
index 8c69c28..9093646 100644
--- a/libc/kernel/common/linux/soundcard.h
+++ b/libc/kernel/common/linux/soundcard.h
@@ -7,825 +7,865 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef SOUNDCARD_H
 #define SOUNDCARD_H
-
 #define SOUND_VERSION 0x030802
 #define OPEN_SOUND_SYSTEM
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/ioctl.h>
-
 #include <endian.h>
-
 #define SNDCARD_ADLIB 1
 #define SNDCARD_SB 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCARD_PAS 3
 #define SNDCARD_GUS 4
 #define SNDCARD_MPU401 5
 #define SNDCARD_SB16 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCARD_SB16MIDI 7
 #define SNDCARD_UART6850 8
 #define SNDCARD_GUS16 9
 #define SNDCARD_MSS 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCARD_PSS 11
 #define SNDCARD_SSCAPE 12
 #define SNDCARD_PSS_MPU 13
 #define SNDCARD_PSS_MSS 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCARD_SSCAPE_MSS 15
 #define SNDCARD_TRXPRO 16
 #define SNDCARD_TRXPRO_SB 17
 #define SNDCARD_TRXPRO_MPU 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCARD_MAD16 19
 #define SNDCARD_MAD16_MPU 20
 #define SNDCARD_CS4232 21
 #define SNDCARD_CS4232_MPU 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCARD_MAUI 23
 #define SNDCARD_PSEUDO_MSS 24
 #define SNDCARD_GUSPNP 25
 #define SNDCARD_UART401 26
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef _SIOWR
 #if defined(_IOWR) && (defined(_AIX) || !defined(sun) && !defined(sparc) && !defined(__sparc__) && !defined(__INCioctlh) && !defined(__Lynx__))
-
 #define SIOCPARM_MASK IOCPARM_MASK
 #define SIOC_VOID IOC_VOID
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOC_OUT IOC_OUT
 #define SIOC_IN IOC_IN
 #define SIOC_INOUT IOC_INOUT
 #define _SIOC_SIZE _IOC_SIZE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _SIOC_DIR _IOC_DIR
 #define _SIOC_NONE _IOC_NONE
 #define _SIOC_READ _IOC_READ
 #define _SIOC_WRITE _IOC_WRITE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _SIO _IO
 #define _SIOR _IOR
 #define _SIOW _IOW
 #define _SIOWR _IOWR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
-
 #define SIOCPARM_MASK 0x1fff  
 #define SIOC_VOID 0x00000000  
 #define SIOC_OUT 0x20000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOC_IN 0x40000000  
 #define SIOC_INOUT (SIOC_IN|SIOC_OUT)
-
 #define _SIO(x,y) ((int)(SIOC_VOID|(x<<8)|y))
 #define _SIOR(x,y,t) ((int)(SIOC_OUT|((sizeof(t)&SIOCPARM_MASK)<<16)|(x<<8)|y))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _SIOW(x,y,t) ((int)(SIOC_IN|((sizeof(t)&SIOCPARM_MASK)<<16)|(x<<8)|y))
-
 #define _SIOWR(x,y,t) ((int)(SIOC_INOUT|((sizeof(t)&SIOCPARM_MASK)<<16)|(x<<8)|y))
 #define _SIOC_SIZE(x) ((x>>16)&SIOCPARM_MASK) 
 #define _SIOC_DIR(x) (x & 0xf0000000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _SIOC_NONE SIOC_VOID
 #define _SIOC_READ SIOC_OUT
 #define _SIOC_WRITE SIOC_IN
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define SNDCTL_SEQ_RESET _SIO ('Q', 0)
 #define SNDCTL_SEQ_SYNC _SIO ('Q', 1)
 #define SNDCTL_SYNTH_INFO _SIOWR('Q', 2, struct synth_info)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_SEQ_CTRLRATE _SIOWR('Q', 3, int)  
 #define SNDCTL_SEQ_GETOUTCOUNT _SIOR ('Q', 4, int)
 #define SNDCTL_SEQ_GETINCOUNT _SIOR ('Q', 5, int)
 #define SNDCTL_SEQ_PERCMODE _SIOW ('Q', 6, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_FM_LOAD_INSTR _SIOW ('Q', 7, struct sbi_instrument)  
 #define SNDCTL_SEQ_TESTMIDI _SIOW ('Q', 8, int)
 #define SNDCTL_SEQ_RESETSAMPLES _SIOW ('Q', 9, int)
 #define SNDCTL_SEQ_NRSYNTHS _SIOR ('Q',10, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_SEQ_NRMIDIS _SIOR ('Q',11, int)
 #define SNDCTL_MIDI_INFO _SIOWR('Q',12, struct midi_info)
 #define SNDCTL_SEQ_THRESHOLD _SIOW ('Q',13, int)
 #define SNDCTL_SYNTH_MEMAVL _SIOWR('Q',14, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_FM_4OP_ENABLE _SIOW ('Q',15, int)  
 #define SNDCTL_SEQ_PANIC _SIO ('Q',17)
 #define SNDCTL_SEQ_OUTOFBAND _SIOW ('Q',18, struct seq_event_rec)
 #define SNDCTL_SEQ_GETTIME _SIOR ('Q',19, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_SYNTH_ID _SIOWR('Q',20, struct synth_info)
 #define SNDCTL_SYNTH_CONTROL _SIOWR('Q',21, struct synth_control)
 #define SNDCTL_SYNTH_REMOVESAMPLE _SIOWR('Q',22, struct remove_sample)
-
 typedef struct synth_control
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  int devno;
  char data[4000];
 }synth_control;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct remove_sample
 {
  int devno;
  int bankno;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int instrno;
 } remove_sample;
-
 typedef struct seq_event_rec {
  unsigned char arr[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } seq_event_rec;
-
 #define SNDCTL_TMR_TIMEBASE _SIOWR('T', 1, int)
 #define SNDCTL_TMR_START _SIO ('T', 2)
 #define SNDCTL_TMR_STOP _SIO ('T', 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_TMR_CONTINUE _SIO ('T', 4)
 #define SNDCTL_TMR_TEMPO _SIOWR('T', 5, int)
 #define SNDCTL_TMR_SOURCE _SIOWR('T', 6, int)
 #define TMR_INTERNAL 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TMR_EXTERNAL 0x00000002
 #define TMR_MODE_MIDI 0x00000010
 #define TMR_MODE_FSK 0x00000020
 #define TMR_MODE_CLS 0x00000040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TMR_MODE_SMPTE 0x00000080
 #define SNDCTL_TMR_METRONOME _SIOW ('T', 7, int)
 #define SNDCTL_TMR_SELECT _SIOW ('T', 8, int)
-
 #define _LINUX_PATCHKEY_H_INDIRECT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/patchkey.h>
 #undef _LINUX_PATCHKEY_H_INDIRECT
-
 #ifdef __BYTE_ORDER
 #if __BYTE_ORDER == __BIG_ENDIAN
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_S16_NE AFMT_S16_BE
 #elif __BYTE_ORDER == __LITTLE_ENDIAN
 #define AFMT_S16_NE AFMT_S16_LE
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error "could not determine byte order"
 #endif
 #endif
-
 struct patch_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short key;
 #define WAVE_PATCH _PATCHKEY(0x04)
 #define GUS_PATCH WAVE_PATCH
 #define WAVEFRONT_PATCH _PATCHKEY(0x06)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  short device_no;
  short instr_no;
-
  unsigned int mode;
-
 #define WAVE_16_BITS 0x01  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_UNSIGNED 0x02  
 #define WAVE_LOOPING 0x04  
 #define WAVE_BIDIR_LOOP 0x08  
 #define WAVE_LOOP_BACK 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_SUSTAIN_ON 0x20  
 #define WAVE_ENVELOPES 0x40  
 #define WAVE_FAST_RELEASE 0x80  
-
 #define WAVE_VIBRATO 0x00010000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_TREMOLO 0x00020000  
 #define WAVE_SCALE 0x00040000  
 #define WAVE_FRACTIONS 0x00080000  
-
 #define WAVE_ROM 0x40000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAVE_MULAW 0x20000000  
-
  int len;
  int loop_start, loop_end;
-
  unsigned int base_freq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int base_note;
  unsigned int high_note;
  unsigned int low_note;
  int panning;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int detuning;
-
  unsigned char env_rate[ 6 ];
  unsigned char env_offset[ 6 ];
-
  unsigned char tremolo_sweep;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char tremolo_rate;
  unsigned char tremolo_depth;
-
  unsigned char vibrato_sweep;
  unsigned char vibrato_rate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char vibrato_depth;
-
  int scale_frequency;
  unsigned int scale_factor;
-
  int volume;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int fractions;
  int reserved1;
  int spare[2];
  char data[1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  };
-
 struct sysex_info {
  short key;
 #define SYSEX_PATCH _PATCHKEY(0x05)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAUI_PATCH _PATCHKEY(0x06)
  short device_no;
  int len;
  unsigned char data[1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  };
-
 #define SEQ_NOTEOFF 0
 #define SEQ_FMNOTEOFF SEQ_NOTEOFF  
 #define SEQ_NOTEON 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_FMNOTEON SEQ_NOTEON
 #define SEQ_WAIT TMR_WAIT_ABS
 #define SEQ_PGMCHANGE 3
 #define SEQ_FMPGMCHANGE SEQ_PGMCHANGE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_SYNCTIMER TMR_START
 #define SEQ_MIDIPUTC 5
 #define SEQ_DRUMON 6  
 #define SEQ_DRUMOFF 7  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_ECHO TMR_ECHO  
 #define SEQ_AFTERTOUCH 9
 #define SEQ_CONTROLLER 10
-
 #define CTL_BANK_SELECT 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_MODWHEEL 0x01
 #define CTL_BREATH 0x02
-
 #define CTL_FOOT 0x04
 #define CTL_PORTAMENTO_TIME 0x05
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_DATA_ENTRY 0x06
 #define CTL_MAIN_VOLUME 0x07
 #define CTL_BALANCE 0x08
-
 #define CTL_PAN 0x0a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_EXPRESSION 0x0b
-
 #define CTL_GENERAL_PURPOSE1 0x10
 #define CTL_GENERAL_PURPOSE2 0x11
 #define CTL_GENERAL_PURPOSE3 0x12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_GENERAL_PURPOSE4 0x13
-
 #define CTL_DAMPER_PEDAL 0x40
 #define CTL_SUSTAIN 0x40  
 #define CTL_HOLD 0x40  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_PORTAMENTO 0x41
 #define CTL_SOSTENUTO 0x42
 #define CTL_SOFT_PEDAL 0x43
-
 #define CTL_HOLD2 0x45
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_GENERAL_PURPOSE5 0x50
 #define CTL_GENERAL_PURPOSE6 0x51
 #define CTL_GENERAL_PURPOSE7 0x52
 #define CTL_GENERAL_PURPOSE8 0x53
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_EXT_EFF_DEPTH 0x5b
 #define CTL_TREMOLO_DEPTH 0x5c
 #define CTL_CHORUS_DEPTH 0x5d
 #define CTL_DETUNE_DEPTH 0x5e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_CELESTE_DEPTH 0x5e  
 #define CTL_PHASER_DEPTH 0x5f
 #define CTL_DATA_INCREMENT 0x60
 #define CTL_DATA_DECREMENT 0x61
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTL_NONREG_PARM_NUM_LSB 0x62
 #define CTL_NONREG_PARM_NUM_MSB 0x63
 #define CTL_REGIST_PARM_NUM_LSB 0x64
 #define CTL_REGIST_PARM_NUM_MSB 0x65
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CTRL_PITCH_BENDER 255
 #define CTRL_PITCH_BENDER_RANGE 254
 #define CTRL_EXPRESSION 253  
 #define CTRL_MAIN_VOLUME 252  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_BALANCE 11
 #define SEQ_VOLMODE 12
-
 #define VOL_METHOD_ADAGIO 1
 #define VOL_METHOD_LINEAR 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_FULLSIZE 0xfd  
-
 #define SEQ_PRIVATE 0xfe  
 #define SEQ_EXTENDED 0xff  
-
 typedef unsigned char sbi_instr_data[32];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sbi_instrument {
  unsigned short key;
 #define FM_PATCH _PATCHKEY(0x01)
 #define OPL3_PATCH _PATCHKEY(0x03)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  short device;
  int channel;
  sbi_instr_data operators;
  };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct synth_info {
  char name[30];
  int device;
  int synth_type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYNTH_TYPE_FM 0
 #define SYNTH_TYPE_SAMPLE 1
 #define SYNTH_TYPE_MIDI 2  
-
  int synth_subtype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FM_TYPE_ADLIB 0x00
 #define FM_TYPE_OPL3 0x01
 #define MIDI_TYPE_MPU401 0x401
-
 #define SAMPLE_TYPE_BASIC 0x10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SAMPLE_TYPE_GUS SAMPLE_TYPE_BASIC
 #define SAMPLE_TYPE_WAVEFRONT 0x11
-
  int perc_mode;
  int nr_voices;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int nr_drums;
  int instr_bank_size;
  unsigned int capabilities;
 #define SYNTH_CAP_PERCMODE 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYNTH_CAP_OPL3 0x00000002  
 #define SYNTH_CAP_INPUT 0x00000004  
  int dummies[19];
  };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sound_timer_info {
  char name[32];
  int caps;
  };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MIDI_CAP_MPU401 1  
-
 struct midi_info {
  char name[30];
  int device;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int capabilities;
  int dev_type;
  int dummies[18];
  };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  unsigned char cmd;
  char nr_args, nr_returns;
  unsigned char data[30];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } mpu_command_rec;
-
 #define SNDCTL_MIDI_PRETIME _SIOWR('m', 0, int)
 #define SNDCTL_MIDI_MPUMODE _SIOWR('m', 1, int)
 #define SNDCTL_MIDI_MPUCMD _SIOWR('m', 2, mpu_command_rec)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_DSP_RESET _SIO ('P', 0)
 #define SNDCTL_DSP_SYNC _SIO ('P', 1)
 #define SNDCTL_DSP_SPEED _SIOWR('P', 2, int)
 #define SNDCTL_DSP_STEREO _SIOWR('P', 3, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_DSP_GETBLKSIZE _SIOWR('P', 4, int)
 #define SNDCTL_DSP_SAMPLESIZE SNDCTL_DSP_SETFMT
 #define SNDCTL_DSP_CHANNELS _SIOWR('P', 6, int)
 #define SOUND_PCM_WRITE_CHANNELS SNDCTL_DSP_CHANNELS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_WRITE_FILTER _SIOWR('P', 7, int)
 #define SNDCTL_DSP_POST _SIO ('P', 8)
 #define SNDCTL_DSP_SUBDIVIDE _SIOWR('P', 9, int)
 #define SNDCTL_DSP_SETFRAGMENT _SIOWR('P',10, int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_DSP_GETFMTS _SIOR ('P',11, int)  
 #define SNDCTL_DSP_SETFMT _SIOWR('P',5, int)  
 #define AFMT_QUERY 0x00000000  
 #define AFMT_MU_LAW 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_A_LAW 0x00000002
 #define AFMT_IMA_ADPCM 0x00000004
 #define AFMT_U8 0x00000008
 #define AFMT_S16_LE 0x00000010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_S16_BE 0x00000020  
 #define AFMT_S8 0x00000040
 #define AFMT_U16_LE 0x00000080  
 #define AFMT_U16_BE 0x00000100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define AFMT_MPEG 0x00000200  
 #define AFMT_AC3 0x00000400  
-
 typedef struct audio_buf_info {
  int fragments;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int fragstotal;
  int fragsize;
-
  int bytes;
-
  } audio_buf_info;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_DSP_GETOSPACE _SIOR ('P',12, audio_buf_info)
 #define SNDCTL_DSP_GETISPACE _SIOR ('P',13, audio_buf_info)
 #define SNDCTL_DSP_NONBLOCK _SIO ('P',14)
 #define SNDCTL_DSP_GETCAPS _SIOR ('P',15, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_CAP_REVISION 0x000000ff  
 #define DSP_CAP_DUPLEX 0x00000100  
 #define DSP_CAP_REALTIME 0x00000200  
 #define DSP_CAP_BATCH 0x00000400  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_CAP_COPROC 0x00000800  
-
 #define DSP_CAP_TRIGGER 0x00001000  
 #define DSP_CAP_MMAP 0x00002000  
 #define DSP_CAP_MULTI 0x00004000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_CAP_BIND 0x00008000  
-
 #define SNDCTL_DSP_GETTRIGGER _SIOR ('P',16, int)
 #define SNDCTL_DSP_SETTRIGGER _SIOW ('P',16, int)
 #define PCM_ENABLE_INPUT 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PCM_ENABLE_OUTPUT 0x00000002
-
 typedef struct count_info {
  int bytes;
  int blocks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ptr;
  } count_info;
-
 #define SNDCTL_DSP_GETIPTR _SIOR ('P',17, count_info)
 #define SNDCTL_DSP_GETOPTR _SIOR ('P',18, count_info)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct buffmem_desc {
  unsigned *buffer;
  int size;
  } buffmem_desc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_DSP_MAPINBUF _SIOR ('P', 19, buffmem_desc)
 #define SNDCTL_DSP_MAPOUTBUF _SIOR ('P', 20, buffmem_desc)
 #define SNDCTL_DSP_SETSYNCRO _SIO ('P', 21)
 #define SNDCTL_DSP_SETDUPLEX _SIO ('P', 22)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_DSP_GETODELAY _SIOR ('P', 23, int)
-
 #define SNDCTL_DSP_GETCHANNELMASK _SIOWR('P', 64, int)
 #define SNDCTL_DSP_BIND_CHANNEL _SIOWR('P', 65, int)
 #define DSP_BIND_QUERY 0x00000000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_BIND_FRONT 0x00000001
 #define DSP_BIND_SURR 0x00000002
 #define DSP_BIND_CENTER_LFE 0x00000004
 #define DSP_BIND_HANDSET 0x00000008
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_BIND_MIC 0x00000010
 #define DSP_BIND_MODEM1 0x00000020
 #define DSP_BIND_MODEM2 0x00000040
 #define DSP_BIND_I2S 0x00000080
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DSP_BIND_SPDIF 0x00000100
-
 #define SNDCTL_DSP_SETSPDIF _SIOW ('P', 66, int)
 #define SNDCTL_DSP_GETSPDIF _SIOR ('P', 67, int)
 #define SPDIF_PRO 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPDIF_N_AUD 0x0002
 #define SPDIF_COPY 0x0004
 #define SPDIF_PRE 0x0008
 #define SPDIF_CC 0x07f0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPDIF_L 0x0800
 #define SPDIF_DRS 0x4000
 #define SPDIF_V 0x8000
-
 #define SNDCTL_DSP_PROFILE _SIOW ('P', 23, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define APF_NORMAL 0  
 #define APF_NETWORK 1  
 #define APF_CPUINTENS 2  
-
 #define SOUND_PCM_READ_RATE _SIOR ('P', 2, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_READ_CHANNELS _SIOR ('P', 6, int)
 #define SOUND_PCM_READ_BITS _SIOR ('P', 5, int)
 #define SOUND_PCM_READ_FILTER _SIOR ('P', 7, int)
-
 #define SOUND_PCM_WRITE_BITS SNDCTL_DSP_SETFMT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_WRITE_RATE SNDCTL_DSP_SPEED
 #define SOUND_PCM_POST SNDCTL_DSP_POST
 #define SOUND_PCM_RESET SNDCTL_DSP_RESET
 #define SOUND_PCM_SYNC SNDCTL_DSP_SYNC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_SUBDIVIDE SNDCTL_DSP_SUBDIVIDE
 #define SOUND_PCM_SETFRAGMENT SNDCTL_DSP_SETFRAGMENT
 #define SOUND_PCM_GETFMTS SNDCTL_DSP_GETFMTS
 #define SOUND_PCM_SETFMT SNDCTL_DSP_SETFMT
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_GETOSPACE SNDCTL_DSP_GETOSPACE
 #define SOUND_PCM_GETISPACE SNDCTL_DSP_GETISPACE
 #define SOUND_PCM_NONBLOCK SNDCTL_DSP_NONBLOCK
 #define SOUND_PCM_GETCAPS SNDCTL_DSP_GETCAPS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_GETTRIGGER SNDCTL_DSP_GETTRIGGER
 #define SOUND_PCM_SETTRIGGER SNDCTL_DSP_SETTRIGGER
 #define SOUND_PCM_SETSYNCRO SNDCTL_DSP_SETSYNCRO
 #define SOUND_PCM_GETIPTR SNDCTL_DSP_GETIPTR
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_PCM_GETOPTR SNDCTL_DSP_GETOPTR
 #define SOUND_PCM_MAPINBUF SNDCTL_DSP_MAPINBUF
 #define SOUND_PCM_MAPOUTBUF SNDCTL_DSP_MAPOUTBUF
-
 typedef struct copr_buffer {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int command;
  int flags;
 #define CPF_NONE 0x0000
 #define CPF_FIRST 0x0001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPF_LAST 0x0002  
  int len;
  int offs;
-
  unsigned char data[4000];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } copr_buffer;
-
 typedef struct copr_debug_buf {
  int command;
  int parm1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int parm2;
  int flags;
  int len;
  } copr_debug_buf;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct copr_msg {
  int len;
  unsigned char data[4000];
  } copr_msg;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_COPR_RESET _SIO ('C', 0)
 #define SNDCTL_COPR_LOAD _SIOWR('C', 1, copr_buffer)
 #define SNDCTL_COPR_RDATA _SIOWR('C', 2, copr_debug_buf)
 #define SNDCTL_COPR_RCODE _SIOWR('C', 3, copr_debug_buf)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_COPR_WDATA _SIOW ('C', 4, copr_debug_buf)
 #define SNDCTL_COPR_WCODE _SIOW ('C', 5, copr_debug_buf)
 #define SNDCTL_COPR_RUN _SIOWR('C', 6, copr_debug_buf)
 #define SNDCTL_COPR_HALT _SIOWR('C', 7, copr_debug_buf)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SNDCTL_COPR_SENDMSG _SIOWR('C', 8, copr_msg)
 #define SNDCTL_COPR_RCVMSG _SIOR ('C', 9, copr_msg)
-
 #define SOUND_MIXER_NRDEVICES 25
 #define SOUND_MIXER_VOLUME 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_BASS 1
 #define SOUND_MIXER_TREBLE 2
 #define SOUND_MIXER_SYNTH 3
 #define SOUND_MIXER_PCM 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_SPEAKER 5
 #define SOUND_MIXER_LINE 6
 #define SOUND_MIXER_MIC 7
 #define SOUND_MIXER_CD 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_IMIX 9  
 #define SOUND_MIXER_ALTPCM 10
 #define SOUND_MIXER_RECLEV 11  
 #define SOUND_MIXER_IGAIN 12  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_OGAIN 13  
-
 #define SOUND_MIXER_LINE1 14  
 #define SOUND_MIXER_LINE2 15  
 #define SOUND_MIXER_LINE3 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_DIGITAL1 17  
 #define SOUND_MIXER_DIGITAL2 18  
 #define SOUND_MIXER_DIGITAL3 19  
 #define SOUND_MIXER_PHONEIN 20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_PHONEOUT 21  
 #define SOUND_MIXER_VIDEO 22  
 #define SOUND_MIXER_RADIO 23  
 #define SOUND_MIXER_MONITOR 24  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_ONOFF_MIN 28
 #define SOUND_ONOFF_MAX 30
-
 #define SOUND_MIXER_NONE 31
-
 #define SOUND_MIXER_ENHANCE SOUND_MIXER_NONE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_MUTE SOUND_MIXER_NONE
 #define SOUND_MIXER_LOUD SOUND_MIXER_NONE
-
 #define SOUND_DEVICE_LABELS {"Vol  ", "Bass ", "Trebl", "Synth", "Pcm  ", "Spkr ", "Line ",   "Mic  ", "CD   ", "Mix  ", "Pcm2 ", "Rec  ", "IGain", "OGain",   "Line1", "Line2", "Line3", "Digital1", "Digital2", "Digital3",   "PhoneIn", "PhoneOut", "Video", "Radio", "Monitor"}
-
 #define SOUND_DEVICE_NAMES {"vol", "bass", "treble", "synth", "pcm", "speaker", "line",   "mic", "cd", "mix", "pcm2", "rec", "igain", "ogain",   "line1", "line2", "line3", "dig1", "dig2", "dig3",   "phin", "phout", "video", "radio", "monitor"}
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_RECSRC 0xff  
 #define SOUND_MIXER_DEVMASK 0xfe  
 #define SOUND_MIXER_RECMASK 0xfd  
 #define SOUND_MIXER_CAPS 0xfc
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_CAP_EXCL_INPUT 0x00000001  
 #define SOUND_MIXER_STEREODEVS 0xfb  
 #define SOUND_MIXER_OUTSRC 0xfa  
 #define SOUND_MIXER_OUTMASK 0xf9  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_VOLUME (1 << SOUND_MIXER_VOLUME)
 #define SOUND_MASK_BASS (1 << SOUND_MIXER_BASS)
 #define SOUND_MASK_TREBLE (1 << SOUND_MIXER_TREBLE)
 #define SOUND_MASK_SYNTH (1 << SOUND_MIXER_SYNTH)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_PCM (1 << SOUND_MIXER_PCM)
 #define SOUND_MASK_SPEAKER (1 << SOUND_MIXER_SPEAKER)
 #define SOUND_MASK_LINE (1 << SOUND_MIXER_LINE)
 #define SOUND_MASK_MIC (1 << SOUND_MIXER_MIC)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_CD (1 << SOUND_MIXER_CD)
 #define SOUND_MASK_IMIX (1 << SOUND_MIXER_IMIX)
 #define SOUND_MASK_ALTPCM (1 << SOUND_MIXER_ALTPCM)
 #define SOUND_MASK_RECLEV (1 << SOUND_MIXER_RECLEV)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_IGAIN (1 << SOUND_MIXER_IGAIN)
 #define SOUND_MASK_OGAIN (1 << SOUND_MIXER_OGAIN)
 #define SOUND_MASK_LINE1 (1 << SOUND_MIXER_LINE1)
 #define SOUND_MASK_LINE2 (1 << SOUND_MIXER_LINE2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_LINE3 (1 << SOUND_MIXER_LINE3)
 #define SOUND_MASK_DIGITAL1 (1 << SOUND_MIXER_DIGITAL1)
 #define SOUND_MASK_DIGITAL2 (1 << SOUND_MIXER_DIGITAL2)
 #define SOUND_MASK_DIGITAL3 (1 << SOUND_MIXER_DIGITAL3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_PHONEIN (1 << SOUND_MIXER_PHONEIN)
 #define SOUND_MASK_PHONEOUT (1 << SOUND_MIXER_PHONEOUT)
 #define SOUND_MASK_RADIO (1 << SOUND_MIXER_RADIO)
 #define SOUND_MASK_VIDEO (1 << SOUND_MIXER_VIDEO)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MASK_MONITOR (1 << SOUND_MIXER_MONITOR)
-
 #define SOUND_MASK_MUTE (1 << SOUND_MIXER_MUTE)
 #define SOUND_MASK_ENHANCE (1 << SOUND_MIXER_ENHANCE)
 #define SOUND_MASK_LOUD (1 << SOUND_MIXER_LOUD)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MIXER_READ(dev) _SIOR('M', dev, int)
 #define SOUND_MIXER_READ_VOLUME MIXER_READ(SOUND_MIXER_VOLUME)
 #define SOUND_MIXER_READ_BASS MIXER_READ(SOUND_MIXER_BASS)
 #define SOUND_MIXER_READ_TREBLE MIXER_READ(SOUND_MIXER_TREBLE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_SYNTH MIXER_READ(SOUND_MIXER_SYNTH)
 #define SOUND_MIXER_READ_PCM MIXER_READ(SOUND_MIXER_PCM)
 #define SOUND_MIXER_READ_SPEAKER MIXER_READ(SOUND_MIXER_SPEAKER)
 #define SOUND_MIXER_READ_LINE MIXER_READ(SOUND_MIXER_LINE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_MIC MIXER_READ(SOUND_MIXER_MIC)
 #define SOUND_MIXER_READ_CD MIXER_READ(SOUND_MIXER_CD)
 #define SOUND_MIXER_READ_IMIX MIXER_READ(SOUND_MIXER_IMIX)
 #define SOUND_MIXER_READ_ALTPCM MIXER_READ(SOUND_MIXER_ALTPCM)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_RECLEV MIXER_READ(SOUND_MIXER_RECLEV)
 #define SOUND_MIXER_READ_IGAIN MIXER_READ(SOUND_MIXER_IGAIN)
 #define SOUND_MIXER_READ_OGAIN MIXER_READ(SOUND_MIXER_OGAIN)
 #define SOUND_MIXER_READ_LINE1 MIXER_READ(SOUND_MIXER_LINE1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_LINE2 MIXER_READ(SOUND_MIXER_LINE2)
 #define SOUND_MIXER_READ_LINE3 MIXER_READ(SOUND_MIXER_LINE3)
-
 #define SOUND_MIXER_READ_MUTE MIXER_READ(SOUND_MIXER_MUTE)
 #define SOUND_MIXER_READ_ENHANCE MIXER_READ(SOUND_MIXER_ENHANCE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_LOUD MIXER_READ(SOUND_MIXER_LOUD)
-
 #define SOUND_MIXER_READ_RECSRC MIXER_READ(SOUND_MIXER_RECSRC)
 #define SOUND_MIXER_READ_DEVMASK MIXER_READ(SOUND_MIXER_DEVMASK)
 #define SOUND_MIXER_READ_RECMASK MIXER_READ(SOUND_MIXER_RECMASK)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_READ_STEREODEVS MIXER_READ(SOUND_MIXER_STEREODEVS)
 #define SOUND_MIXER_READ_CAPS MIXER_READ(SOUND_MIXER_CAPS)
-
 #define MIXER_WRITE(dev) _SIOWR('M', dev, int)
 #define SOUND_MIXER_WRITE_VOLUME MIXER_WRITE(SOUND_MIXER_VOLUME)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_BASS MIXER_WRITE(SOUND_MIXER_BASS)
 #define SOUND_MIXER_WRITE_TREBLE MIXER_WRITE(SOUND_MIXER_TREBLE)
 #define SOUND_MIXER_WRITE_SYNTH MIXER_WRITE(SOUND_MIXER_SYNTH)
 #define SOUND_MIXER_WRITE_PCM MIXER_WRITE(SOUND_MIXER_PCM)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_SPEAKER MIXER_WRITE(SOUND_MIXER_SPEAKER)
 #define SOUND_MIXER_WRITE_LINE MIXER_WRITE(SOUND_MIXER_LINE)
 #define SOUND_MIXER_WRITE_MIC MIXER_WRITE(SOUND_MIXER_MIC)
 #define SOUND_MIXER_WRITE_CD MIXER_WRITE(SOUND_MIXER_CD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_IMIX MIXER_WRITE(SOUND_MIXER_IMIX)
 #define SOUND_MIXER_WRITE_ALTPCM MIXER_WRITE(SOUND_MIXER_ALTPCM)
 #define SOUND_MIXER_WRITE_RECLEV MIXER_WRITE(SOUND_MIXER_RECLEV)
 #define SOUND_MIXER_WRITE_IGAIN MIXER_WRITE(SOUND_MIXER_IGAIN)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_OGAIN MIXER_WRITE(SOUND_MIXER_OGAIN)
 #define SOUND_MIXER_WRITE_LINE1 MIXER_WRITE(SOUND_MIXER_LINE1)
 #define SOUND_MIXER_WRITE_LINE2 MIXER_WRITE(SOUND_MIXER_LINE2)
 #define SOUND_MIXER_WRITE_LINE3 MIXER_WRITE(SOUND_MIXER_LINE3)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_WRITE_MUTE MIXER_WRITE(SOUND_MIXER_MUTE)
 #define SOUND_MIXER_WRITE_ENHANCE MIXER_WRITE(SOUND_MIXER_ENHANCE)
 #define SOUND_MIXER_WRITE_LOUD MIXER_WRITE(SOUND_MIXER_LOUD)
-
 #define SOUND_MIXER_WRITE_RECSRC MIXER_WRITE(SOUND_MIXER_RECSRC)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct mixer_info
 {
  char id[16];
  char name[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int modify_counter;
  int fillers[10];
 } mixer_info;
-
 typedef struct _old_mixer_info
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  char id[16];
  char name[32];
 } _old_mixer_info;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_INFO _SIOR ('M', 101, mixer_info)
 #define SOUND_OLD_MIXER_INFO _SIOR ('M', 101, _old_mixer_info)
-
 typedef unsigned char mixer_record[128];
-
 #define SOUND_MIXER_ACCESS _SIOWR('M', 102, mixer_record)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_AGC _SIOWR('M', 103, int)
 #define SOUND_MIXER_3DSE _SIOWR('M', 104, int)
-
 #define SOUND_MIXER_PRIVATE1 _SIOWR('M', 111, int)
 #define SOUND_MIXER_PRIVATE2 _SIOWR('M', 112, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_PRIVATE3 _SIOWR('M', 113, int)
 #define SOUND_MIXER_PRIVATE4 _SIOWR('M', 114, int)
 #define SOUND_MIXER_PRIVATE5 _SIOWR('M', 115, int)
-
 typedef struct mixer_vol_table {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int num;
  char name[32];
  int levels[32];
 } mixer_vol_table;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOUND_MIXER_GETLEVELS _SIOWR('M', 116, mixer_vol_table)
 #define SOUND_MIXER_SETLEVELS _SIOWR('M', 117, mixer_vol_table)
-
 #define OSS_GETVERSION _SIOR ('M', 118, int)
-
 #define EV_SEQ_LOCAL 0x80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_TIMING 0x81
 #define EV_CHN_COMMON 0x92
 #define EV_CHN_VOICE 0x93
 #define EV_SYSEX 0x94
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MIDI_NOTEOFF 0x80
 #define MIDI_NOTEON 0x90
 #define MIDI_KEY_PRESSURE 0xA0
-
 #define MIDI_CTL_CHANGE 0xB0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MIDI_PGM_CHANGE 0xC0
 #define MIDI_CHN_PRESSURE 0xD0
 #define MIDI_PITCH_BEND 0xE0
-
 #define MIDI_SYSTEM_PREFIX 0xF0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TMR_WAIT_REL 1  
 #define TMR_WAIT_ABS 2  
 #define TMR_STOP 3
 #define TMR_START 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TMR_CONTINUE 5
 #define TMR_TEMPO 6
 #define TMR_ECHO 8
 #define TMR_CLOCK 9  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TMR_SPP 10  
 #define TMR_TIMESIG 11  
-
 #define LOCL_STARTAUDIO 1
-
 #if !defined(__KERNEL__) && !defined(KERNEL) && !defined(INKERNEL) && !defined(_KERNEL) || defined(USE_SEQ_MACROS)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_DECLAREBUF() SEQ_USE_EXTBUF()
-
 #define SEQ_PM_DEFINES int __foo_bar___
 #ifdef OSSLIB
 #define SEQ_USE_EXTBUF()   extern unsigned char *_seqbuf;   extern int _seqbuflen;extern int _seqbufptr
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_DEFINEBUF(len) SEQ_USE_EXTBUF();static int _requested_seqbuflen=len
 #define _SEQ_ADVBUF(len) OSS_seq_advbuf(len, seqfd, _seqbuf, _seqbuflen)
 #define _SEQ_NEEDBUF(len) OSS_seq_needbuf(len, seqfd, _seqbuf, _seqbuflen)
 #define SEQ_DUMPBUF() OSS_seqbuf_dump(seqfd, _seqbuf, _seqbuflen)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_LOAD_GMINSTR(dev, instr)   OSS_patch_caching(dev, -1, instr, seqfd, _seqbuf, _seqbuflen)
 #define SEQ_LOAD_GMDRUM(dev, drum)   OSS_drum_caching(dev, -1, drum, seqfd, _seqbuf, _seqbuflen)
 #else
-
 #define SEQ_LOAD_GMINSTR(dev, instr)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_LOAD_GMDRUM(dev, drum)
-
 #define SEQ_USE_EXTBUF()   extern unsigned char _seqbuf[];   extern int _seqbuflen;extern int _seqbufptr
-
 #ifndef USE_SIMPLE_MACROS
-
 #define SEQ_DEFINEBUF(len) unsigned char _seqbuf[len]; int _seqbuflen = len;int _seqbufptr = 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _SEQ_NEEDBUF(len) if ((_seqbufptr+(len)) > _seqbuflen) seqbuf_dump()
 #define _SEQ_ADVBUF(len) _seqbufptr += len
 #define SEQ_DUMPBUF seqbuf_dump
 #else
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _SEQ_NEEDBUF(len)  
 #endif
 #endif
-
 #define SEQ_VOLUME_MODE(dev, mode) {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr] = SEQ_EXTENDED;  _seqbuf[_seqbufptr+1] = SEQ_VOLMODE;  _seqbuf[_seqbufptr+2] = (dev);  _seqbuf[_seqbufptr+3] = (mode);  _seqbuf[_seqbufptr+4] = 0;  _seqbuf[_seqbufptr+5] = 0;  _seqbuf[_seqbufptr+6] = 0;  _seqbuf[_seqbufptr+7] = 0;  _SEQ_ADVBUF(8);}
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _CHN_VOICE(dev, event, chn, note, parm)   {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr] = EV_CHN_VOICE;  _seqbuf[_seqbufptr+1] = (dev);  _seqbuf[_seqbufptr+2] = (event);  _seqbuf[_seqbufptr+3] = (chn);  _seqbuf[_seqbufptr+4] = (note);  _seqbuf[_seqbufptr+5] = (parm);  _seqbuf[_seqbufptr+6] = (0);  _seqbuf[_seqbufptr+7] = 0;  _SEQ_ADVBUF(8);}
-
 #define SEQ_START_NOTE(dev, chn, note, vol)   _CHN_VOICE(dev, MIDI_NOTEON, chn, note, vol)
-
 #define SEQ_STOP_NOTE(dev, chn, note, vol)   _CHN_VOICE(dev, MIDI_NOTEOFF, chn, note, vol)
-
 #define SEQ_KEY_PRESSURE(dev, chn, note, pressure)   _CHN_VOICE(dev, MIDI_KEY_PRESSURE, chn, note, pressure)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _CHN_COMMON(dev, event, chn, p1, p2, w14)   {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr] = EV_CHN_COMMON;  _seqbuf[_seqbufptr+1] = (dev);  _seqbuf[_seqbufptr+2] = (event);  _seqbuf[_seqbufptr+3] = (chn);  _seqbuf[_seqbufptr+4] = (p1);  _seqbuf[_seqbufptr+5] = (p2);  *(short *)&_seqbuf[_seqbufptr+6] = (w14);  _SEQ_ADVBUF(8);}
-
 #define SEQ_SYSEX(dev, buf, len)   {int ii, ll=(len);   unsigned char *bufp=buf;  if (ll>6)ll=6;  _SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr] = EV_SYSEX;  _seqbuf[_seqbufptr+1] = (dev);  for(ii=0;ii<ll;ii++)  _seqbuf[_seqbufptr+ii+2] = bufp[ii];  for(ii=ll;ii<6;ii++)  _seqbuf[_seqbufptr+ii+2] = 0xff;  _SEQ_ADVBUF(8);}
-
 #define SEQ_CHN_PRESSURE(dev, chn, pressure)   _CHN_COMMON(dev, MIDI_CHN_PRESSURE, chn, pressure, 0, 0)
-
 #define SEQ_SET_PATCH SEQ_PGM_CHANGE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef OSSLIB
 #define SEQ_PGM_CHANGE(dev, chn, patch)   {OSS_patch_caching(dev, chn, patch, seqfd, _seqbuf, _seqbuflen);   _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0);}
 #else
 #define SEQ_PGM_CHANGE(dev, chn, patch)   _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define SEQ_CONTROL(dev, chn, controller, value)   _CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value)
-
 #define SEQ_BENDER(dev, chn, value)   _CHN_COMMON(dev, MIDI_PITCH_BEND, chn, 0, 0, value)
-
 #define SEQ_V2_X_CONTROL(dev, voice, controller, value) {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr] = SEQ_EXTENDED;  _seqbuf[_seqbufptr+1] = SEQ_CONTROLLER;  _seqbuf[_seqbufptr+2] = (dev);  _seqbuf[_seqbufptr+3] = (voice);  _seqbuf[_seqbufptr+4] = (controller);  _seqbuf[_seqbufptr+5] = ((value)&0xff);  _seqbuf[_seqbufptr+6] = ((value>>8)&0xff);  _seqbuf[_seqbufptr+7] = 0;  _SEQ_ADVBUF(8);}
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_PITCHBEND(dev, voice, value) SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER, value)
 #define SEQ_BENDER_RANGE(dev, voice, value) SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER_RANGE, value)
 #define SEQ_EXPRESSION(dev, voice, value) SEQ_CONTROL(dev, voice, CTL_EXPRESSION, value*128)
 #define SEQ_MAIN_VOLUME(dev, voice, value) SEQ_CONTROL(dev, voice, CTL_MAIN_VOLUME, (value*16383)/100)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_PANNING(dev, voice, pos) SEQ_CONTROL(dev, voice, CTL_PAN, (pos+128) / 2)
-
 #define _TIMER_EVENT(ev, parm) {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr+0] = EV_TIMING;   _seqbuf[_seqbufptr+1] = (ev);   _seqbuf[_seqbufptr+2] = 0;  _seqbuf[_seqbufptr+3] = 0;  *(unsigned int *)&_seqbuf[_seqbufptr+4] = (parm);   _SEQ_ADVBUF(8);}
-
 #define SEQ_START_TIMER() _TIMER_EVENT(TMR_START, 0)
 #define SEQ_STOP_TIMER() _TIMER_EVENT(TMR_STOP, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_CONTINUE_TIMER() _TIMER_EVENT(TMR_CONTINUE, 0)
 #define SEQ_WAIT_TIME(ticks) _TIMER_EVENT(TMR_WAIT_ABS, ticks)
 #define SEQ_DELTA_TIME(ticks) _TIMER_EVENT(TMR_WAIT_REL, ticks)
 #define SEQ_ECHO_BACK(key) _TIMER_EVENT(TMR_ECHO, key)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_SET_TEMPO(value) _TIMER_EVENT(TMR_TEMPO, value)
 #define SEQ_SONGPOS(pos) _TIMER_EVENT(TMR_SPP, pos)
 #define SEQ_TIME_SIGNATURE(sig) _TIMER_EVENT(TMR_TIMESIG, sig)
-
 #define _LOCAL_EVENT(ev, parm) {_SEQ_NEEDBUF(8);  _seqbuf[_seqbufptr+0] = EV_SEQ_LOCAL;   _seqbuf[_seqbufptr+1] = (ev);   _seqbuf[_seqbufptr+2] = 0;  _seqbuf[_seqbufptr+3] = 0;  *(unsigned int *)&_seqbuf[_seqbufptr+4] = (parm);   _SEQ_ADVBUF(8);}
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_PLAYAUDIO(devmask) _LOCAL_EVENT(LOCL_STARTAUDIO, devmask)
-
 #define SEQ_MIDIOUT(device, byte) {_SEQ_NEEDBUF(4);  _seqbuf[_seqbufptr] = SEQ_MIDIPUTC;  _seqbuf[_seqbufptr+1] = (byte);  _seqbuf[_seqbufptr+2] = (device);  _seqbuf[_seqbufptr+3] = 0;  _SEQ_ADVBUF(4);}
-
 #ifdef OSSLIB
 #define SEQ_WRPATCH(patchx, len)   OSS_write_patch(seqfd, (char*)(patchx), len)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SEQ_WRPATCH2(patchx, len)   OSS_write_patch2(seqfd, (char*)(patchx), len)
 #else
 #define SEQ_WRPATCH(patchx, len)   {if (_seqbufptr) SEQ_DUMPBUF();  if (write(seqfd, (char*)(patchx), len)==-1)   perror("Write patch: /dev/sequencer");}
 #define SEQ_WRPATCH2(patchx, len)   (SEQ_DUMPBUF(), write(seqfd, (char*)(patchx), len))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #endif
 #endif
diff --git a/libc/kernel/common/linux/spi/cpcap.h b/libc/kernel/common/linux/spi/cpcap.h
index 24bc918..8b729b0 100644
--- a/libc/kernel/common/linux/spi/cpcap.h
+++ b/libc/kernel/common/linux/spi/cpcap.h
@@ -7,581 +7,647 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SPI_CPCAP_H
 #define _LINUX_SPI_CPCAP_H
-
 #include <linux/ioctl.h>
-
 #define CPCAP_DEV_NAME "cpcap"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_NUM_REG_CPCAP (CPCAP_REG_END - CPCAP_REG_START + 1)
-
 #define CPCAP_IRQ_INT1_INDEX 0
 #define CPCAP_IRQ_INT2_INDEX 16
 #define CPCAP_IRQ_INT3_INDEX 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_IRQ_INT4_INDEX 48
 #define CPCAP_IRQ_INT5_INDEX 64
-
 #define CPCAP_HWCFG_NUM 2  
-
 #define CPCAP_HWCFG0_SEC_STBY_SW1 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_HWCFG0_SEC_STBY_SW2 0x0002
 #define CPCAP_HWCFG0_SEC_STBY_SW3 0x0004
 #define CPCAP_HWCFG0_SEC_STBY_SW4 0x0008
 #define CPCAP_HWCFG0_SEC_STBY_SW5 0x0010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_HWCFG0_SEC_STBY_VAUDIO 0x0020
 #define CPCAP_HWCFG0_SEC_STBY_VCAM 0x0040
 #define CPCAP_HWCFG0_SEC_STBY_VCSI 0x0080
 #define CPCAP_HWCFG0_SEC_STBY_VDAC 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_HWCFG0_SEC_STBY_VDIG 0x0200
 #define CPCAP_HWCFG0_SEC_STBY_VHVIO 0x0400
 #define CPCAP_HWCFG0_SEC_STBY_VPLL 0x0800
 #define CPCAP_HWCFG0_SEC_STBY_VRF1 0x1000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_HWCFG0_SEC_STBY_VRF2 0x2000
 #define CPCAP_HWCFG0_SEC_STBY_VRFREF 0x4000
 #define CPCAP_HWCFG0_SEC_STBY_VSDIO 0x8000
-
 #define CPCAP_HWCFG1_SEC_STBY_VWLAN1 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_HWCFG1_SEC_STBY_VWLAN2 0x0002
 #define CPCAP_HWCFG1_SEC_STBY_VSIM 0x0004
 #define CPCAP_HWCFG1_SEC_STBY_VSIMCARD 0x0008
-
 #define CPCAP_WHISPER_MODE_PU 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_WHISPER_ENABLE_UART 0x00000002
 #define CPCAP_WHISPER_ACCY_MASK 0xF8000000
 #define CPCAP_WHISPER_ACCY_SHFT 27
 #define CPCAP_WHISPER_ID_SIZE 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_WHISPER_PROP_SIZE 7
-
 enum cpcap_regulator_id {
  CPCAP_SW2,
  CPCAP_SW4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_SW5,
  CPCAP_VCAM,
  CPCAP_VCSI,
  CPCAP_VDAC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_VDIG,
  CPCAP_VFUSE,
  CPCAP_VHVIO,
  CPCAP_VSDIO,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_VPLL,
  CPCAP_VRF1,
  CPCAP_VRF2,
  CPCAP_VRFREF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_VWLAN1,
  CPCAP_VWLAN2,
  CPCAP_VSIM,
  CPCAP_VSIMCARD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_VVIB,
  CPCAP_VUSB,
  CPCAP_VAUDIO,
  CPCAP_NUM_REGULATORS
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum cpcap_reg {
  CPCAP_REG_START,
-
  CPCAP_REG_INT1 = CPCAP_REG_START,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_INT2,
  CPCAP_REG_INT3,
  CPCAP_REG_INT4,
  CPCAP_REG_INTM1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_INTM2,
  CPCAP_REG_INTM3,
  CPCAP_REG_INTM4,
  CPCAP_REG_INTS1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_INTS2,
  CPCAP_REG_INTS3,
  CPCAP_REG_INTS4,
  CPCAP_REG_ASSIGN1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_ASSIGN2,
  CPCAP_REG_ASSIGN3,
  CPCAP_REG_ASSIGN4,
  CPCAP_REG_ASSIGN5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_ASSIGN6,
  CPCAP_REG_VERSC1,
  CPCAP_REG_VERSC2,
-
  CPCAP_REG_MI1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_MIM1,
  CPCAP_REG_MI2,
  CPCAP_REG_MIM2,
  CPCAP_REG_UCC1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_UCC2,
  CPCAP_REG_PC1,
  CPCAP_REG_PC2,
  CPCAP_REG_BPEOL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_PGC,
  CPCAP_REG_MT1,
  CPCAP_REG_MT2,
  CPCAP_REG_MT3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_PF,
-
  CPCAP_REG_SCC,
  CPCAP_REG_SW1,
  CPCAP_REG_SW2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_UCTM,
  CPCAP_REG_TOD1,
  CPCAP_REG_TOD2,
  CPCAP_REG_TODA1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_TODA2,
  CPCAP_REG_DAY,
  CPCAP_REG_DAYA,
  CPCAP_REG_VAL1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_VAL2,
-
  CPCAP_REG_SDVSPLL,
  CPCAP_REG_SI2CC1,
  CPCAP_REG_Si2CC2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_S1C1,
  CPCAP_REG_S1C2,
  CPCAP_REG_S2C1,
  CPCAP_REG_S2C2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_S3C,
  CPCAP_REG_S4C1,
  CPCAP_REG_S4C2,
  CPCAP_REG_S5C,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_S6C,
  CPCAP_REG_VCAMC,
  CPCAP_REG_VCSIC,
  CPCAP_REG_VDACC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_VDIGC,
  CPCAP_REG_VFUSEC,
  CPCAP_REG_VHVIOC,
  CPCAP_REG_VSDIOC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_VPLLC,
  CPCAP_REG_VRF1C,
  CPCAP_REG_VRF2C,
  CPCAP_REG_VRFREFC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_VWLAN1C,
  CPCAP_REG_VWLAN2C,
  CPCAP_REG_VSIMC,
  CPCAP_REG_VVIBC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_VUSBC,
  CPCAP_REG_VUSBINT1C,
  CPCAP_REG_VUSBINT2C,
  CPCAP_REG_URT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_URM1,
  CPCAP_REG_URM2,
-
  CPCAP_REG_VAUDIOC,
  CPCAP_REG_CC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_CDI,
  CPCAP_REG_SDAC,
  CPCAP_REG_SDACDI,
  CPCAP_REG_TXI,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_TXMP,
  CPCAP_REG_RXOA,
  CPCAP_REG_RXVC,
  CPCAP_REG_RXCOA,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_RXSDOA,
  CPCAP_REG_RXEPOA,
  CPCAP_REG_RXLL,
  CPCAP_REG_A2LA,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_MIPIS1,
  CPCAP_REG_MIPIS2,
  CPCAP_REG_MIPIS3,
  CPCAP_REG_LVAB,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_CCC1,
  CPCAP_REG_CRM,
  CPCAP_REG_CCCC2,
  CPCAP_REG_CCS1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_CCS2,
  CPCAP_REG_CCA1,
  CPCAP_REG_CCA2,
  CPCAP_REG_CCM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_CCO,
  CPCAP_REG_CCI,
-
  CPCAP_REG_ADCC1,
  CPCAP_REG_ADCC2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_ADCD0,
  CPCAP_REG_ADCD1,
  CPCAP_REG_ADCD2,
  CPCAP_REG_ADCD3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_ADCD4,
  CPCAP_REG_ADCD5,
  CPCAP_REG_ADCD6,
  CPCAP_REG_ADCD7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_ADCAL1,
  CPCAP_REG_ADCAL2,
-
  CPCAP_REG_USBC1,
  CPCAP_REG_USBC2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_USBC3,
  CPCAP_REG_UVIDL,
  CPCAP_REG_UVIDH,
  CPCAP_REG_UPIDL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_UPIDH,
  CPCAP_REG_UFC1,
  CPCAP_REG_UFC2,
  CPCAP_REG_UFC3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_UIC1,
  CPCAP_REG_UIC2,
  CPCAP_REG_UIC3,
  CPCAP_REG_USBOTG1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_USBOTG2,
  CPCAP_REG_USBOTG3,
  CPCAP_REG_UIER1,
  CPCAP_REG_UIER2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_UIER3,
  CPCAP_REG_UIEF1,
  CPCAP_REG_UIEF2,
  CPCAP_REG_UIEF3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_UIS,
  CPCAP_REG_UIL,
  CPCAP_REG_USBD,
  CPCAP_REG_SCR1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_SCR2,
  CPCAP_REG_SCR3,
  CPCAP_REG_VMC,
  CPCAP_REG_OWDC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_GPIO0,
  CPCAP_REG_GPIO1,
  CPCAP_REG_GPIO2,
  CPCAP_REG_GPIO3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_GPIO4,
  CPCAP_REG_GPIO5,
  CPCAP_REG_GPIO6,
-
  CPCAP_REG_MDLC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_KLC,
  CPCAP_REG_ADLC,
  CPCAP_REG_REDC,
  CPCAP_REG_GREENC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_BLUEC,
  CPCAP_REG_CFC,
  CPCAP_REG_ABC,
  CPCAP_REG_BLEDC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_CLEDC,
-
  CPCAP_REG_OW1C,
  CPCAP_REG_OW1D,
  CPCAP_REG_OW1I,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_OW1IE,
  CPCAP_REG_OW1,
  CPCAP_REG_OW2C,
  CPCAP_REG_OW2D,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_OW2I,
  CPCAP_REG_OW2IE,
  CPCAP_REG_OW2,
  CPCAP_REG_OW3C,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_OW3D,
  CPCAP_REG_OW3I,
  CPCAP_REG_OW3IE,
  CPCAP_REG_OW3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_GCAIC,
  CPCAP_REG_GCAIM,
  CPCAP_REG_LGDIR,
  CPCAP_REG_LGPU,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_LGPIN,
  CPCAP_REG_LGMASK,
  CPCAP_REG_LDEB,
  CPCAP_REG_LGDET,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REG_LMISC,
  CPCAP_REG_LMACE,
-
  CPCAP_REG_END = CPCAP_REG_LMACE,
-
  CPCAP_REG_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  = CPCAP_REG_END,
-
  CPCAP_REG_SIZE = CPCAP_REG_MAX + 1,
  CPCAP_REG_UNUSED = CPCAP_REG_MAX + 2,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  CPCAP_IOCTL_NUM_TEST__START,
  CPCAP_IOCTL_NUM_TEST_READ_REG,
  CPCAP_IOCTL_NUM_TEST_WRITE_REG,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IOCTL_NUM_TEST__END,
-
  CPCAP_IOCTL_NUM_ADC__START,
  CPCAP_IOCTL_NUM_ADC_PHASE,
  CPCAP_IOCTL_NUM_ADC__END,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IOCTL_NUM_BATT__START,
  CPCAP_IOCTL_NUM_BATT_DISPLAY_UPDATE,
  CPCAP_IOCTL_NUM_BATT_ATOD_ASYNC,
  CPCAP_IOCTL_NUM_BATT_ATOD_SYNC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IOCTL_NUM_BATT_ATOD_READ,
  CPCAP_IOCTL_NUM_BATT__END,
-
  CPCAP_IOCTL_NUM_UC__START,
  CPCAP_IOCTL_NUM_UC_MACRO_START,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IOCTL_NUM_UC_MACRO_STOP,
  CPCAP_IOCTL_NUM_UC_GET_VENDOR,
  CPCAP_IOCTL_NUM_UC_SET_TURBO_MODE,
  CPCAP_IOCTL_NUM_UC__END,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IOCTL_NUM_ACCY__START,
  CPCAP_IOCTL_NUM_ACCY_WHISPER,
  CPCAP_IOCTL_NUM_ACCY__END,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum cpcap_irqs {
  CPCAP_IRQ__START,
  CPCAP_IRQ_HSCLK = CPCAP_IRQ_INT1_INDEX,
  CPCAP_IRQ_PRIMAC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_SECMAC,
  CPCAP_IRQ_LOWBPL,
  CPCAP_IRQ_SEC2PRI,
  CPCAP_IRQ_LOWBPH,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_EOL,
  CPCAP_IRQ_TS,
  CPCAP_IRQ_ADCDONE,
  CPCAP_IRQ_HS,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_MB2,
  CPCAP_IRQ_VBUSOV,
  CPCAP_IRQ_RVRS_CHRG,
  CPCAP_IRQ_CHRG_DET,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_IDFLOAT,
  CPCAP_IRQ_IDGND,
-
  CPCAP_IRQ_SE1 = CPCAP_IRQ_INT2_INDEX,
  CPCAP_IRQ_SESSEND,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_SESSVLD,
  CPCAP_IRQ_VBUSVLD,
  CPCAP_IRQ_CHRG_CURR1,
  CPCAP_IRQ_CHRG_CURR2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_RVRS_MODE,
  CPCAP_IRQ_ON,
  CPCAP_IRQ_ON2,
  CPCAP_IRQ_CLK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_1HZ,
  CPCAP_IRQ_PTT,
  CPCAP_IRQ_SE0CONN,
  CPCAP_IRQ_CHRG_SE1B,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_UART_ECHO_OVERRUN,
  CPCAP_IRQ_EXTMEMHD,
-
  CPCAP_IRQ_WARM = CPCAP_IRQ_INT3_INDEX,
  CPCAP_IRQ_SYSRSTR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_SOFTRST,
  CPCAP_IRQ_DIEPWRDWN,
  CPCAP_IRQ_DIETEMPH,
  CPCAP_IRQ_PC,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_OFLOWSW,
  CPCAP_IRQ_TODA,
  CPCAP_IRQ_OPT_SEL_DTCH,
  CPCAP_IRQ_OPT_SEL_STATE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_ONEWIRE1,
  CPCAP_IRQ_ONEWIRE2,
  CPCAP_IRQ_ONEWIRE3,
  CPCAP_IRQ_UCRESET,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_PWRGOOD,
  CPCAP_IRQ_USBDPLLCLK,
-
  CPCAP_IRQ_DPI = CPCAP_IRQ_INT4_INDEX,
  CPCAP_IRQ_DMI,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_UCBUSY,
  CPCAP_IRQ_GCAI_CURR1,
  CPCAP_IRQ_GCAI_CURR2,
  CPCAP_IRQ_SB_MAX_RETRANSMIT_ERR,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_BATTDETB,
  CPCAP_IRQ_PRIHALT,
  CPCAP_IRQ_SECHALT,
  CPCAP_IRQ_CC_CAL,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_UC_PRIROMR = CPCAP_IRQ_INT5_INDEX,
  CPCAP_IRQ_UC_PRIRAMW,
  CPCAP_IRQ_UC_PRIRAMR,
  CPCAP_IRQ_UC_USEROFF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_UC_PRIMACRO_4,
  CPCAP_IRQ_UC_PRIMACRO_5,
  CPCAP_IRQ_UC_PRIMACRO_6,
  CPCAP_IRQ_UC_PRIMACRO_7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_UC_PRIMACRO_8,
  CPCAP_IRQ_UC_PRIMACRO_9,
  CPCAP_IRQ_UC_PRIMACRO_10,
  CPCAP_IRQ_UC_PRIMACRO_11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ_UC_PRIMACRO_12,
  CPCAP_IRQ_UC_PRIMACRO_13,
  CPCAP_IRQ_UC_PRIMACRO_14,
  CPCAP_IRQ_UC_PRIMACRO_15,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_IRQ__NUM
 };
-
 enum cpcap_adc_bank0 {
  CPCAP_ADC_AD0_BATTDETB,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_ADC_BATTP,
  CPCAP_ADC_VBUS,
  CPCAP_ADC_AD3,
  CPCAP_ADC_BPLUS_AD4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_ADC_CHG_ISENSE,
  CPCAP_ADC_BATTI_ADC,
  CPCAP_ADC_USB_ID,
-
  CPCAP_ADC_BANK0_NUM,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum cpcap_adc_bank1 {
  CPCAP_ADC_AD8,
  CPCAP_ADC_AD9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_ADC_LICELL,
  CPCAP_ADC_HV_BATTP,
  CPCAP_ADC_TSX1_AD12,
  CPCAP_ADC_TSX2_AD13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_ADC_TSY1_AD14,
  CPCAP_ADC_TSY2_AD15,
-
  CPCAP_ADC_BANK1_NUM,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum cpcap_adc_format {
  CPCAP_ADC_FORMAT_RAW,
  CPCAP_ADC_FORMAT_PHASED,
  CPCAP_ADC_FORMAT_CONVERTED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum cpcap_adc_timing {
  CPCAP_ADC_TIMING_IMM,
  CPCAP_ADC_TIMING_IN,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_ADC_TIMING_OUT,
 };
-
 enum cpcap_adc_type {
  CPCAP_ADC_TYPE_BANK_0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_ADC_TYPE_BANK_1,
  CPCAP_ADC_TYPE_BATT_PI,
 };
-
 enum cpcap_macro {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_MACRO_ROMR,
  CPCAP_MACRO_RAMW,
  CPCAP_MACRO_RAMR,
  CPCAP_MACRO_USEROFF,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_MACRO_4,
  CPCAP_MACRO_5,
  CPCAP_MACRO_6,
  CPCAP_MACRO_7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_MACRO_8,
  CPCAP_MACRO_9,
  CPCAP_MACRO_10,
  CPCAP_MACRO_11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_MACRO_12,
  CPCAP_MACRO_13,
  CPCAP_MACRO_14,
  CPCAP_MACRO_15,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_MACRO__END,
 };
-
 enum cpcap_vendor {
  CPCAP_VENDOR_ST,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_VENDOR_TI,
 };
-
 enum cpcap_revision {
  CPCAP_REVISION_1_0 = 0x08,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CPCAP_REVISION_1_1 = 0x09,
  CPCAP_REVISION_2_0 = 0x10,
  CPCAP_REVISION_2_1 = 0x11,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum cpcap_batt_usb_model {
  CPCAP_BATT_USB_MODEL_NONE,
  CPCAP_BATT_USB_MODEL_USB,
  CPCAP_BATT_USB_MODEL_FACTORY,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct cpcap_spi_init_data {
  enum cpcap_reg reg;
  unsigned short data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct cpcap_adc_ato {
  unsigned short ato_in;
  unsigned short atox_in;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short adc_ps_factor_in;
  unsigned short atox_ps_factor_in;
  unsigned short ato_out;
  unsigned short atox_out;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short adc_ps_factor_out;
  unsigned short atox_ps_factor_out;
 };
-
 struct cpcap_batt_data {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int status;
  int health;
  int present;
  int capacity;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int batt_volt;
  int batt_temp;
 };
-
 struct cpcap_batt_ac_data {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int online;
 };
-
 struct cpcap_batt_usb_data {
  int online;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int current_now;
  enum cpcap_batt_usb_model model;
 };
-
 struct cpcap_device;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct cpcap_adc_us_request {
  enum cpcap_adc_format format;
  enum cpcap_adc_timing timing;
  enum cpcap_adc_type type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int status;
  int result[CPCAP_ADC_BANK0_NUM];
 };
-
 struct cpcap_adc_phase {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  signed char offset_batti;
  unsigned char slope_batti;
  signed char offset_chrgi;
  unsigned char slope_chrgi;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  signed char offset_battp;
  unsigned char slope_battp;
  signed char offset_bp;
  unsigned char slope_bp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  signed char offset_battt;
  unsigned char slope_battt;
  signed char offset_chrgv;
  unsigned char slope_chrgv;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct cpcap_regacc {
  unsigned short reg;
  unsigned short value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short mask;
 };
-
 struct cpcap_whisper_request {
  unsigned int cmd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char dock_id[CPCAP_WHISPER_ID_SIZE];
  char dock_prop[CPCAP_WHISPER_PROP_SIZE];
 };
-
 #define CPCAP_IOCTL_TEST_READ_REG   _IOWR(0, CPCAP_IOCTL_NUM_TEST_READ_REG, struct cpcap_regacc*)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_IOCTL_TEST_WRITE_REG   _IOWR(0, CPCAP_IOCTL_NUM_TEST_WRITE_REG, struct cpcap_regacc*)
-
 #define CPCAP_IOCTL_ADC_PHASE   _IOWR(0, CPCAP_IOCTL_NUM_ADC_PHASE, struct cpcap_adc_phase*)
-
 #define CPCAP_IOCTL_BATT_DISPLAY_UPDATE   _IOW(0, CPCAP_IOCTL_NUM_BATT_DISPLAY_UPDATE, struct cpcap_batt_data*)
-
 #define CPCAP_IOCTL_BATT_ATOD_ASYNC   _IOW(0, CPCAP_IOCTL_NUM_BATT_ATOD_ASYNC, struct cpcap_adc_us_request*)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_IOCTL_BATT_ATOD_SYNC   _IOWR(0, CPCAP_IOCTL_NUM_BATT_ATOD_SYNC, struct cpcap_adc_us_request*)
-
 #define CPCAP_IOCTL_BATT_ATOD_READ   _IOWR(0, CPCAP_IOCTL_NUM_BATT_ATOD_READ, struct cpcap_adc_us_request*)
-
 #define CPCAP_IOCTL_UC_MACRO_START   _IOWR(0, CPCAP_IOCTL_NUM_UC_MACRO_START, enum cpcap_macro)
-
 #define CPCAP_IOCTL_UC_MACRO_STOP   _IOWR(0, CPCAP_IOCTL_NUM_UC_MACRO_STOP, enum cpcap_macro)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CPCAP_IOCTL_UC_GET_VENDOR   _IOWR(0, CPCAP_IOCTL_NUM_UC_GET_VENDOR, enum cpcap_vendor)
-
 #define CPCAP_IOCTL_UC_SET_TURBO_MODE   _IOW(0, CPCAP_IOCTL_NUM_UC_SET_TURBO_MODE, unsigned short)
-
 #define CPCAP_IOCTL_ACCY_WHISPER   _IOW(0, CPCAP_IOCTL_NUM_ACCY_WHISPER, struct cpcap_whisper_request*)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/spinlock.h b/libc/kernel/common/linux/spinlock.h
index 5504c9e..b1d64c6 100644
--- a/libc/kernel/common/linux/spinlock.h
+++ b/libc/kernel/common/linux/spinlock.h
@@ -7,106 +7,95 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_SPINLOCK_H
 #define __LINUX_SPINLOCK_H
-
 #include <linux/preempt.h>
 #include <linux/linkage.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/compiler.h>
 #include <linux/thread_info.h>
 #include <linux/kernel.h>
 #include <linux/stringify.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/system.h>
-
 #define LOCK_SECTION_NAME ".text.lock."KBUILD_BASENAME
-
 #define LOCK_SECTION_START(extra)   ".subsection 1\n\t"   extra   ".ifndef " LOCK_SECTION_NAME "\n\t"   LOCK_SECTION_NAME ":\n\t"   ".endif\n"
-
 #define LOCK_SECTION_END   ".previous\n\t"
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __lockfunc fastcall __attribute__((section(".spinlock.text")))
-
 #include <linux/spinlock_types.h>
-
 #include <linux/spinlock_up.h>
-
 #define spin_lock_init(lock)   do { *(lock) = SPIN_LOCK_UNLOCKED; } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rwlock_init(lock)   do { *(lock) = RW_LOCK_UNLOCKED; } while (0)
-
 #define spin_is_locked(lock) __raw_spin_is_locked(&(lock)->raw_lock)
-
 #define spin_unlock_wait(lock) __raw_spin_unlock_wait(&(lock)->raw_lock)
-
 #include <linux/spinlock_api_up.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _raw_spin_lock(lock) __raw_spin_lock(&(lock)->raw_lock)
 #define _raw_spin_lock_flags(lock, flags)   __raw_spin_lock_flags(&(lock)->raw_lock, *(flags))
 #define _raw_spin_trylock(lock) __raw_spin_trylock(&(lock)->raw_lock)
 #define _raw_spin_unlock(lock) __raw_spin_unlock(&(lock)->raw_lock)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _raw_read_lock(rwlock) __raw_read_lock(&(rwlock)->raw_lock)
 #define _raw_read_trylock(rwlock) __raw_read_trylock(&(rwlock)->raw_lock)
 #define _raw_read_unlock(rwlock) __raw_read_unlock(&(rwlock)->raw_lock)
 #define _raw_write_lock(rwlock) __raw_write_lock(&(rwlock)->raw_lock)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _raw_write_trylock(rwlock) __raw_write_trylock(&(rwlock)->raw_lock)
 #define _raw_write_unlock(rwlock) __raw_write_unlock(&(rwlock)->raw_lock)
-
 #define read_can_lock(rwlock) __raw_read_can_lock(&(rwlock)->raw_lock)
 #define write_can_lock(rwlock) __raw_write_can_lock(&(rwlock)->raw_lock)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define spin_trylock(lock) __cond_lock(_spin_trylock(lock))
 #define read_trylock(lock) __cond_lock(_read_trylock(lock))
 #define write_trylock(lock) __cond_lock(_write_trylock(lock))
-
 #define spin_lock(lock) _spin_lock(lock)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define spin_lock_nested(lock, subclass) _spin_lock(lock)
-
 #define write_lock(lock) _write_lock(lock)
 #define read_lock(lock) _read_lock(lock)
-
 #define spin_lock_irqsave(lock, flags) _spin_lock_irqsave(lock, flags)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define read_lock_irqsave(lock, flags) _read_lock_irqsave(lock, flags)
 #define write_lock_irqsave(lock, flags) _write_lock_irqsave(lock, flags)
-
 #define spin_lock_irq(lock) _spin_lock_irq(lock)
 #define spin_lock_bh(lock) _spin_lock_bh(lock)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define read_lock_irq(lock) _read_lock_irq(lock)
 #define read_lock_bh(lock) _read_lock_bh(lock)
-
 #define write_lock_irq(lock) _write_lock_irq(lock)
 #define write_lock_bh(lock) _write_lock_bh(lock)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define spin_unlock(lock) _spin_unlock(lock)
 #define read_unlock(lock) _read_unlock(lock)
 #define write_unlock(lock) _write_unlock(lock)
 #define spin_unlock_irq(lock) _spin_unlock_irq(lock)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define read_unlock_irq(lock) _read_unlock_irq(lock)
 #define write_unlock_irq(lock) _write_unlock_irq(lock)
-
 #define spin_unlock_irqrestore(lock, flags)   _spin_unlock_irqrestore(lock, flags)
 #define spin_unlock_bh(lock) _spin_unlock_bh(lock)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define read_unlock_irqrestore(lock, flags)   _read_unlock_irqrestore(lock, flags)
 #define read_unlock_bh(lock) _read_unlock_bh(lock)
-
 #define write_unlock_irqrestore(lock, flags)   _write_unlock_irqrestore(lock, flags)
 #define write_unlock_bh(lock) _write_unlock_bh(lock)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define spin_trylock_bh(lock) __cond_lock(_spin_trylock_bh(lock))
-
 #define spin_trylock_irq(lock)  ({   local_irq_disable();   _spin_trylock(lock) ?   1 : ({ local_irq_enable(); 0; });  })
-
 #define spin_trylock_irqsave(lock, flags)  ({   local_irq_save(flags);   _spin_trylock(lock) ?   1 : ({ local_irq_restore(flags); 0; });  })
-
 #include <asm/atomic.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define atomic_dec_and_lock(atomic, lock)   __cond_lock(_atomic_dec_and_lock(atomic, lock))
-
 #define spin_can_lock(lock) (!spin_is_locked(lock))
-
 #endif
diff --git a/libc/kernel/common/linux/spinlock_api_smp.h b/libc/kernel/common/linux/spinlock_api_smp.h
index 74d8cc9..407e473 100644
--- a/libc/kernel/common/linux/spinlock_api_smp.h
+++ b/libc/kernel/common/linux/spinlock_api_smp.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_SPINLOCK_API_SMP_H
 #define __LINUX_SPINLOCK_API_SMP_H
-
 #ifndef __LINUX_SPINLOCK_H
 #error "please don't include this file directly"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define assert_spin_locked(x) BUG_ON(!spin_is_locked(x))
-
 #endif
diff --git a/libc/kernel/common/linux/spinlock_api_up.h b/libc/kernel/common/linux/spinlock_api_up.h
index c9a5c01..9adb39a 100644
--- a/libc/kernel/common/linux/spinlock_api_up.h
+++ b/libc/kernel/common/linux/spinlock_api_up.h
@@ -7,63 +7,68 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_SPINLOCK_API_UP_H
 #define __LINUX_SPINLOCK_API_UP_H
-
 #ifndef __LINUX_SPINLOCK_H
 #error "please don't include this file directly"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define in_lock_functions(ADDR) 0
-
 #define assert_spin_locked(lock) do { (void)(lock); } while (0)
-
 #define __LOCK(lock)   do { preempt_disable(); __acquire(lock); (void)(lock); } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __LOCK_BH(lock)   do { local_bh_disable(); __LOCK(lock); } while (0)
-
 #define __LOCK_IRQ(lock)   do { local_irq_disable(); __LOCK(lock); } while (0)
-
 #define __LOCK_IRQSAVE(lock, flags)   do { local_irq_save(flags); __LOCK(lock); } while (0)
-
 #define __UNLOCK(lock)   do { preempt_enable(); __release(lock); (void)(lock); } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __UNLOCK_BH(lock)   do { preempt_enable_no_resched(); local_bh_enable(); __release(lock); (void)(lock); } while (0)
-
 #define __UNLOCK_IRQ(lock)   do { local_irq_enable(); __UNLOCK(lock); } while (0)
-
 #define __UNLOCK_IRQRESTORE(lock, flags)   do { local_irq_restore(flags); __UNLOCK(lock); } while (0)
-
 #define _spin_lock(lock) __LOCK(lock)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _spin_lock_nested(lock, subclass) __LOCK(lock)
 #define _read_lock(lock) __LOCK(lock)
 #define _write_lock(lock) __LOCK(lock)
 #define _spin_lock_bh(lock) __LOCK_BH(lock)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _read_lock_bh(lock) __LOCK_BH(lock)
 #define _write_lock_bh(lock) __LOCK_BH(lock)
 #define _spin_lock_irq(lock) __LOCK_IRQ(lock)
 #define _read_lock_irq(lock) __LOCK_IRQ(lock)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _write_lock_irq(lock) __LOCK_IRQ(lock)
 #define _spin_lock_irqsave(lock, flags) __LOCK_IRQSAVE(lock, flags)
 #define _read_lock_irqsave(lock, flags) __LOCK_IRQSAVE(lock, flags)
 #define _write_lock_irqsave(lock, flags) __LOCK_IRQSAVE(lock, flags)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _spin_trylock(lock) ({ __LOCK(lock); 1; })
 #define _read_trylock(lock) ({ __LOCK(lock); 1; })
 #define _write_trylock(lock) ({ __LOCK(lock); 1; })
 #define _spin_trylock_bh(lock) ({ __LOCK_BH(lock); 1; })
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _spin_unlock(lock) __UNLOCK(lock)
 #define _read_unlock(lock) __UNLOCK(lock)
 #define _write_unlock(lock) __UNLOCK(lock)
 #define _spin_unlock_bh(lock) __UNLOCK_BH(lock)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _write_unlock_bh(lock) __UNLOCK_BH(lock)
 #define _read_unlock_bh(lock) __UNLOCK_BH(lock)
 #define _spin_unlock_irq(lock) __UNLOCK_IRQ(lock)
 #define _read_unlock_irq(lock) __UNLOCK_IRQ(lock)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _write_unlock_irq(lock) __UNLOCK_IRQ(lock)
 #define _spin_unlock_irqrestore(lock, flags) __UNLOCK_IRQRESTORE(lock, flags)
 #define _read_unlock_irqrestore(lock, flags) __UNLOCK_IRQRESTORE(lock, flags)
 #define _write_unlock_irqrestore(lock, flags) __UNLOCK_IRQRESTORE(lock, flags)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/spinlock_types.h b/libc/kernel/common/linux/spinlock_types.h
index 0938b51..8b9d828 100644
--- a/libc/kernel/common/linux/spinlock_types.h
+++ b/libc/kernel/common/linux/spinlock_types.h
@@ -7,40 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_SPINLOCK_TYPES_H
 #define __LINUX_SPINLOCK_TYPES_H
-
 #include <linux/lockdep.h>
-
 #include <linux/spinlock_types_up.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  raw_spinlock_t raw_lock;
 } spinlock_t;
-
 #define SPINLOCK_MAGIC 0xdead4ead
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  raw_rwlock_t raw_lock;
 } rwlock_t;
-
 #define RWLOCK_MAGIC 0xdeaf1eed
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SPINLOCK_OWNER_INIT ((void *)-1L)
-
 #define SPIN_DEP_MAP_INIT(lockname)
-
 #define RW_DEP_MAP_INIT(lockname)
-
 #define __SPIN_LOCK_UNLOCKED(lockname)   (spinlock_t) { .raw_lock = __RAW_SPIN_LOCK_UNLOCKED,   SPIN_DEP_MAP_INIT(lockname) }
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __RW_LOCK_UNLOCKED(lockname)   (rwlock_t) { .raw_lock = __RAW_RW_LOCK_UNLOCKED,   RW_DEP_MAP_INIT(lockname) }
-
 #define SPIN_LOCK_UNLOCKED __SPIN_LOCK_UNLOCKED(old_style_spin_init)
 #define RW_LOCK_UNLOCKED __RW_LOCK_UNLOCKED(old_style_rw_init)
-
 #define DEFINE_SPINLOCK(x) spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DEFINE_RWLOCK(x) rwlock_t x = __RW_LOCK_UNLOCKED(x)
-
 #endif
diff --git a/libc/kernel/common/linux/spinlock_types_up.h b/libc/kernel/common/linux/spinlock_types_up.h
index 0db3037..1418306 100644
--- a/libc/kernel/common/linux/spinlock_types_up.h
+++ b/libc/kernel/common/linux/spinlock_types_up.h
@@ -7,23 +7,25 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_SPINLOCK_TYPES_UP_H
 #define __LINUX_SPINLOCK_TYPES_UP_H
-
 #ifndef __LINUX_SPINLOCK_TYPES_H
 #error "please don't include this file directly"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 typedef struct { } raw_spinlock_t;
-
 #define __RAW_SPIN_LOCK_UNLOCKED { }
-
 typedef struct {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } raw_rwlock_t;
-
 #define __RAW_RW_LOCK_UNLOCKED { }
-
 #endif
diff --git a/libc/kernel/common/linux/spinlock_up.h b/libc/kernel/common/linux/spinlock_up.h
index b4958dc..1b0294b 100644
--- a/libc/kernel/common/linux/spinlock_up.h
+++ b/libc/kernel/common/linux/spinlock_up.h
@@ -7,24 +7,28 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_SPINLOCK_UP_H
 #define __LINUX_SPINLOCK_UP_H
-
 #ifndef __LINUX_SPINLOCK_H
 #error "please don't include this file directly"
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #define __raw_spin_is_locked(lock) ((void)(lock), 0)
-
 #define __raw_spin_lock(lock) do { (void)(lock); } while (0)
 #define __raw_spin_unlock(lock) do { (void)(lock); } while (0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __raw_spin_trylock(lock) ({ (void)(lock); 1; })
-
 #define __raw_read_can_lock(lock) (((void)(lock), 1))
 #define __raw_write_can_lock(lock) (((void)(lock), 1))
-
 #define __raw_spin_unlock_wait(lock)   do { cpu_relax(); } while (__raw_spin_is_locked(lock))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/stacktrace.h b/libc/kernel/common/linux/stacktrace.h
index af7ecc8..da868ca 100644
--- a/libc/kernel/common/linux/stacktrace.h
+++ b/libc/kernel/common/linux/stacktrace.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_STACKTRACE_H
 #define __LINUX_STACKTRACE_H
-
 #define save_stack_trace(trace, task, all, skip) do { } while (0)
 #define print_stack_trace(trace) do { } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/stat.h b/libc/kernel/common/linux/stat.h
index 0d757f4..5ab82f2 100644
--- a/libc/kernel/common/linux/stat.h
+++ b/libc/kernel/common/linux/stat.h
@@ -7,48 +7,55 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_STAT_H
 #define _LINUX_STAT_H
-
 #if !defined(__GLIBC__) || __GLIBC__ < 2
-
 #define S_IFMT 00170000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_IFSOCK 0140000
 #define S_IFLNK 0120000
 #define S_IFREG 0100000
 #define S_IFBLK 0060000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_IFDIR 0040000
 #define S_IFCHR 0020000
 #define S_IFIFO 0010000
 #define S_ISUID 0004000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_ISGID 0002000
 #define S_ISVTX 0001000
-
 #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
 #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
 #define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
 #define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
 #define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
-
 #define S_IRWXU 00700
 #define S_IRUSR 00400
 #define S_IWUSR 00200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_IXUSR 00100
-
 #define S_IRWXG 00070
 #define S_IRGRP 00040
 #define S_IWGRP 00020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_IXGRP 00010
-
 #define S_IRWXO 00007
 #define S_IROTH 00004
 #define S_IWOTH 00002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define S_IXOTH 00001
-
 #endif
-
 #endif
diff --git a/libc/kernel/common/linux/statfs.h b/libc/kernel/common/linux/statfs.h
index 43a5d70..e108094 100644
--- a/libc/kernel/common/linux/statfs.h
+++ b/libc/kernel/common/linux/statfs.h
@@ -7,27 +7,34 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_STATFS_H
 #define _LINUX_STATFS_H
-
 #include <linux/types.h>
-
 #include <asm/statfs.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct kstatfs {
  long f_type;
  long f_bsize;
  u64 f_blocks;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u64 f_bfree;
  u64 f_bavail;
  u64 f_files;
  u64 f_ffree;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_fsid_t f_fsid;
  long f_namelen;
  long f_frsize;
  long f_spare[5];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/string.h b/libc/kernel/common/linux/string.h
index 6759068..8ba5456 100644
--- a/libc/kernel/common/linux/string.h
+++ b/libc/kernel/common/linux/string.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_STRING_H_
 #define _LINUX_STRING_H_
-
 #endif
diff --git a/libc/kernel/common/linux/stringify.h b/libc/kernel/common/linux/stringify.h
index cbb9e5b..53de5b3 100644
--- a/libc/kernel/common/linux/stringify.h
+++ b/libc/kernel/common/linux/stringify.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_STRINGIFY_H
 #define __LINUX_STRINGIFY_H
-
 #define __stringify_1(x) #x
 #define __stringify(x) __stringify_1(x)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/auth.h b/libc/kernel/common/linux/sunrpc/auth.h
index ae0a3d0..32ae3b6 100644
--- a/libc/kernel/common/linux/sunrpc/auth.h
+++ b/libc/kernel/common/linux/sunrpc/auth.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_AUTH_H
 #define _LINUX_SUNRPC_AUTH_H
-
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/auth_gss.h b/libc/kernel/common/linux/sunrpc/auth_gss.h
index a64f1f8..d1804da 100644
--- a/libc/kernel/common/linux/sunrpc/auth_gss.h
+++ b/libc/kernel/common/linux/sunrpc/auth_gss.h
@@ -7,10 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_AUTH_GSS_H
 #define _LINUX_SUNRPC_AUTH_GSS_H
-
 #endif
-
diff --git a/libc/kernel/common/linux/sunrpc/clnt.h b/libc/kernel/common/linux/sunrpc/clnt.h
index a562ad9..5420969 100644
--- a/libc/kernel/common/linux/sunrpc/clnt.h
+++ b/libc/kernel/common/linux/sunrpc/clnt.h
@@ -7,97 +7,110 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_CLNT_H
 #define _LINUX_SUNRPC_CLNT_H
-
 #include <linux/sunrpc/msg_prot.h>
 #include <linux/sunrpc/sched.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/sunrpc/xprt.h>
 #include <linux/sunrpc/auth.h>
 #include <linux/sunrpc/stats.h>
 #include <linux/sunrpc/xdr.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/sunrpc/timer.h>
 #include <asm/signal.h>
-
 struct rpc_portmap {
  __u32 pm_prog;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 pm_vers;
  __u32 pm_prot;
  __u16 pm_port;
  unsigned char pm_binding : 1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_wait_queue pm_bindwait;
 };
-
 struct rpc_inode;
-
 struct rpc_clnt {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  atomic_t cl_count;
  atomic_t cl_users;
  struct rpc_xprt * cl_xprt;
  struct rpc_procinfo * cl_procinfo;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 cl_maxproc;
-
  char * cl_server;
  char * cl_protname;
  struct rpc_auth * cl_auth;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_stat * cl_stats;
  struct rpc_iostats * cl_metrics;
-
  unsigned int cl_softrtry : 1,
  cl_intr : 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  cl_autobind : 1,
  cl_oneshot : 1,
  cl_dead : 1;
-
  struct rpc_rtt * cl_rtt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_portmap * cl_pmap;
-
  int cl_nodelen;
  char cl_nodename[UNX_MAXNODENAME];
  char cl_pathname[30];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vfsmount * cl_vfsmnt;
  struct dentry * cl_dentry;
  struct rpc_clnt * cl_parent;
  struct rpc_rtt cl_rtt_default;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_portmap cl_pmap_default;
  char cl_inline_name[32];
 };
 #define cl_timeout cl_xprt->timeout
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define cl_prog cl_pmap->pm_prog
 #define cl_vers cl_pmap->pm_vers
 #define cl_port cl_pmap->pm_port
 #define cl_prot cl_pmap->pm_prot
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_MAXVERSION 4
 struct rpc_program {
  char * name;
  u32 number;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int nrvers;
  struct rpc_version ** version;
  struct rpc_stat * stats;
  char * pipe_dir_name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct rpc_version {
  u32 number;
  unsigned int nrprocs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_procinfo * procs;
 };
-
 struct rpc_procinfo {
  u32 p_proc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  kxdrproc_t p_encode;
  kxdrproc_t p_decode;
  unsigned int p_bufsiz;
  unsigned int p_count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int p_timer;
  u32 p_statidx;
  char * p_name;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_CONGESTED(clnt) (RPCXPRT_CONGESTED((clnt)->cl_xprt))
 #define RPC_PEERADDR(clnt) (&(clnt)->cl_xprt->addr)
-
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/debug.h b/libc/kernel/common/linux/sunrpc/debug.h
index e2689f1..4c46190 100644
--- a/libc/kernel/common/linux/sunrpc/debug.h
+++ b/libc/kernel/common/linux/sunrpc/debug.h
@@ -7,36 +7,45 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_DEBUG_H_
 #define _LINUX_SUNRPC_DEBUG_H_
-
 #define RPCDBG_XPRT 0x0001
 #define RPCDBG_CALL 0x0002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPCDBG_DEBUG 0x0004
 #define RPCDBG_NFS 0x0008
 #define RPCDBG_AUTH 0x0010
 #define RPCDBG_PMAP 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPCDBG_SCHED 0x0040
 #define RPCDBG_TRANS 0x0080
 #define RPCDBG_SVCSOCK 0x0100
 #define RPCDBG_SVCDSP 0x0200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPCDBG_MISC 0x0400
 #define RPCDBG_CACHE 0x0800
 #define RPCDBG_ALL 0x7fff
-
 #define CTL_SUNRPC 7249  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  CTL_RPCDEBUG = 1,
  CTL_NFSDEBUG,
  CTL_NFSDDEBUG,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CTL_NLMDEBUG,
  CTL_SLOTTABLE_UDP,
  CTL_SLOTTABLE_TCP,
  CTL_MIN_RESVPORT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CTL_MAX_RESVPORT,
 };
-
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/gss_api.h b/libc/kernel/common/linux/sunrpc/gss_api.h
index cbc77c2..7210caa 100644
--- a/libc/kernel/common/linux/sunrpc/gss_api.h
+++ b/libc/kernel/common/linux/sunrpc/gss_api.h
@@ -7,10 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_GSS_API_H
 #define _LINUX_SUNRPC_GSS_API_H
-
 #endif
-
diff --git a/libc/kernel/common/linux/sunrpc/gss_asn1.h b/libc/kernel/common/linux/sunrpc/gss_asn1.h
index 8f18ba0..e81203f 100644
--- a/libc/kernel/common/linux/sunrpc/gss_asn1.h
+++ b/libc/kernel/common/linux/sunrpc/gss_asn1.h
@@ -7,29 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <linux/sunrpc/gss_api.h>
-
 #define SIZEOF_INT 4
-
 #define G_BAD_SERVICE_NAME (-2045022976L)
 #define G_BAD_STRING_UID (-2045022975L)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define G_NOUSER (-2045022974L)
 #define G_VALIDATE_FAILED (-2045022973L)
 #define G_BUFFER_ALLOC (-2045022972L)
 #define G_BAD_MSG_CTX (-2045022971L)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define G_WRONG_SIZE (-2045022970L)
 #define G_BAD_USAGE (-2045022969L)
 #define G_UNKNOWN_QOP (-2045022968L)
 #define G_NO_HOSTNAME (-2045022967L)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define G_BAD_HOSTNAME (-2045022966L)
 #define G_WRONG_MECH (-2045022965L)
 #define G_BAD_TOK_HEADER (-2045022964L)
 #define G_BAD_DIRECTION (-2045022963L)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define G_TOK_TRUNC (-2045022962L)
 #define G_REFLECT (-2045022961L)
 #define G_WRONG_TOKID (-2045022960L)
-
 #define g_OID_equal(o1,o2)   (((o1)->len == (o2)->len) &&   (memcmp((o1)->data,(o2)->data,(int) (o1)->len) == 0))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/sunrpc/gss_err.h b/libc/kernel/common/linux/sunrpc/gss_err.h
index 01fb1b4..f9d11bc 100644
--- a/libc/kernel/common/linux/sunrpc/gss_err.h
+++ b/libc/kernel/common/linux/sunrpc/gss_err.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_GSS_ERR_H
 #define _LINUX_SUNRPC_GSS_ERR_H
-
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/msg_prot.h b/libc/kernel/common/linux/sunrpc/msg_prot.h
index 52f4e76..4d2a74f 100644
--- a/libc/kernel/common/linux/sunrpc/msg_prot.h
+++ b/libc/kernel/common/linux/sunrpc/msg_prot.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_MSGPROT_H_
 #define _LINUX_SUNRPC_MSGPROT_H_
-
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/sched.h b/libc/kernel/common/linux/sunrpc/sched.h
index 859b2d8..4ca0c56 100644
--- a/libc/kernel/common/linux/sunrpc/sched.h
+++ b/libc/kernel/common/linux/sunrpc/sched.h
@@ -7,176 +7,185 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_SCHED_H_
 #define _LINUX_SUNRPC_SCHED_H_
-
 #include <linux/timer.h>
 #include <linux/sunrpc/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/spinlock.h>
 #include <linux/wait.h>
 #include <linux/workqueue.h>
 #include <linux/sunrpc/xdr.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rpc_procinfo;
 struct rpc_message {
  struct rpc_procinfo * rpc_proc;
  void * rpc_argp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void * rpc_resp;
  struct rpc_cred * rpc_cred;
 };
-
 struct rpc_call_ops;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rpc_wait_queue;
 struct rpc_wait {
  struct list_head list;
  struct list_head links;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_wait_queue * rpc_waitq;
 };
-
 struct rpc_task {
 #ifdef RPC_DEBUG
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long tk_magic;
 #endif
  atomic_t tk_count;
  struct list_head tk_task;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_clnt * tk_client;
  struct rpc_rqst * tk_rqstp;
  int tk_status;
-
  struct rpc_message tk_msg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 tk_garb_retry;
  __u8 tk_cred_retry;
-
  unsigned long tk_cookie;
-
  void (*tk_timeout_fn)(struct rpc_task *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*tk_callback)(struct rpc_task *);
  void (*tk_action)(struct rpc_task *);
  const struct rpc_call_ops *tk_ops;
  void * tk_calldata;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct timer_list tk_timer;
  unsigned long tk_timeout;
  unsigned short tk_flags;
  unsigned char tk_priority : 2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long tk_runstate;
  struct workqueue_struct *tk_workqueue;
  union {
  struct work_struct tk_work;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_wait tk_wait;
  } u;
-
  unsigned short tk_timeouts;
  size_t tk_bytes_sent;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long tk_start;
  long tk_rtt;
-
 #ifdef RPC_DEBUG
  unsigned short tk_pid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 };
 #define tk_auth tk_client->cl_auth
 #define tk_xprt tk_client->cl_xprt
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define task_for_each(task, pos, head)   list_for_each(pos, head)   if ((task=list_entry(pos, struct rpc_task, u.tk_wait.list)),1)
-
 #define task_for_first(task, head)   if (!list_empty(head) &&   ((task=list_entry((head)->next, struct rpc_task, u.tk_wait.list)),1))
-
 #define alltask_for_each(task, pos, head)   list_for_each(pos, head)   if ((task=list_entry(pos, struct rpc_task, tk_task)),1)
-
 typedef void (*rpc_action)(struct rpc_task *);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rpc_call_ops {
  void (*rpc_call_prepare)(struct rpc_task *, void *);
  void (*rpc_call_done)(struct rpc_task *, void *);
  void (*rpc_release)(void *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define RPC_TASK_ASYNC 0x0001  
 #define RPC_TASK_SWAPPER 0x0002  
 #define RPC_TASK_CHILD 0x0008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_CALL_MAJORSEEN 0x0020  
 #define RPC_TASK_ROOTCREDS 0x0040  
 #define RPC_TASK_DYNAMIC 0x0080  
 #define RPC_TASK_KILLED 0x0100  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_TASK_SOFT 0x0200  
 #define RPC_TASK_NOINTR 0x0400  
-
 #define RPC_IS_ASYNC(t) ((t)->tk_flags & RPC_TASK_ASYNC)
 #define RPC_IS_CHILD(t) ((t)->tk_flags & RPC_TASK_CHILD)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_IS_SWAPPER(t) ((t)->tk_flags & RPC_TASK_SWAPPER)
 #define RPC_DO_ROOTOVERRIDE(t) ((t)->tk_flags & RPC_TASK_ROOTCREDS)
 #define RPC_ASSASSINATED(t) ((t)->tk_flags & RPC_TASK_KILLED)
 #define RPC_DO_CALLBACK(t) ((t)->tk_callback != NULL)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_IS_SOFT(t) ((t)->tk_flags & RPC_TASK_SOFT)
 #define RPC_TASK_UNINTERRUPTIBLE(t) ((t)->tk_flags & RPC_TASK_NOINTR)
-
 #define RPC_TASK_RUNNING 0
 #define RPC_TASK_QUEUED 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_TASK_WAKEUP 2
 #define RPC_TASK_HAS_TIMER 3
 #define RPC_TASK_ACTIVE 4
-
 #define RPC_IS_RUNNING(t) (test_bit(RPC_TASK_RUNNING, &(t)->tk_runstate))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rpc_set_running(t) (set_bit(RPC_TASK_RUNNING, &(t)->tk_runstate))
 #define rpc_test_and_set_running(t)   (test_and_set_bit(RPC_TASK_RUNNING, &(t)->tk_runstate))
 #define rpc_clear_running(t)   do {   smp_mb__before_clear_bit();   clear_bit(RPC_TASK_RUNNING, &(t)->tk_runstate);   smp_mb__after_clear_bit();   } while (0)
-
 #define RPC_IS_QUEUED(t) (test_bit(RPC_TASK_QUEUED, &(t)->tk_runstate))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define rpc_set_queued(t) (set_bit(RPC_TASK_QUEUED, &(t)->tk_runstate))
 #define rpc_clear_queued(t)   do {   smp_mb__before_clear_bit();   clear_bit(RPC_TASK_QUEUED, &(t)->tk_runstate);   smp_mb__after_clear_bit();   } while (0)
-
 #define rpc_start_wakeup(t)   (test_and_set_bit(RPC_TASK_WAKEUP, &(t)->tk_runstate) == 0)
 #define rpc_finish_wakeup(t)   do {   smp_mb__before_clear_bit();   clear_bit(RPC_TASK_WAKEUP, &(t)->tk_runstate);   smp_mb__after_clear_bit();   } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_IS_ACTIVATED(t) (test_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate))
 #define rpc_set_active(t) (set_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate))
 #define rpc_clear_active(t)   do {   smp_mb__before_clear_bit();   clear_bit(RPC_TASK_ACTIVE, &(t)->tk_runstate);   smp_mb__after_clear_bit();   } while(0)
-
 #define RPC_PRIORITY_LOW 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_PRIORITY_NORMAL 1
 #define RPC_PRIORITY_HIGH 2
 #define RPC_NR_PRIORITY (RPC_PRIORITY_HIGH+1)
-
 struct rpc_wait_queue {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  spinlock_t lock;
  struct list_head tasks[RPC_NR_PRIORITY];
  unsigned long cookie;
  unsigned char maxpriority;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char priority;
  unsigned char count;
  unsigned char nr;
  unsigned short qlen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef RPC_DEBUG
  const char * name;
 #endif
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_BATCH_COUNT 16
-
 #ifndef RPC_DEBUG
 #define RPC_WAITQ_INIT(var,qname) {   .lock = SPIN_LOCK_UNLOCKED,   .tasks = {   [0] = LIST_HEAD_INIT(var.tasks[0]),   [1] = LIST_HEAD_INIT(var.tasks[1]),   [2] = LIST_HEAD_INIT(var.tasks[2]),   },   }
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_WAITQ_INIT(var,qname) {   .lock = SPIN_LOCK_UNLOCKED,   .tasks = {   [0] = LIST_HEAD_INIT(var.tasks[0]),   [1] = LIST_HEAD_INIT(var.tasks[1]),   [2] = LIST_HEAD_INIT(var.tasks[2]),   },   .name = qname,   }
 #endif
 #define RPC_WAITQ(var,qname) struct rpc_wait_queue var = RPC_WAITQ_INIT(var,qname)
-
 #define RPC_IS_PRIORITY(q) ((q)->maxpriority > 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rpc_task *rpc_new_task(struct rpc_clnt *, int flags,
  const struct rpc_call_ops *ops, void *data);
 struct rpc_task *rpc_run_task(struct rpc_clnt *clnt, int flags,
  const struct rpc_call_ops *ops, void *data);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rpc_task *rpc_new_child(struct rpc_clnt *, struct rpc_task *parent);
-
 struct rpc_task *rpc_wake_up_next(struct rpc_wait_queue *);
-
 #ifdef RPC_DEBUG
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef RPC_DEBUG
 #endif
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/stats.h b/libc/kernel/common/linux/sunrpc/stats.h
index 03e7338..2be4668 100644
--- a/libc/kernel/common/linux/sunrpc/stats.h
+++ b/libc/kernel/common/linux/sunrpc/stats.h
@@ -7,43 +7,49 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_STATS_H
 #define _LINUX_SUNRPC_STATS_H
-
 #include <linux/proc_fs.h>
-
 struct rpc_stat {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_program * program;
-
  unsigned int netcnt,
  netudpcnt,
  nettcpcnt,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  nettcpconn,
  netreconn;
  unsigned int rpccnt,
  rpcretrans,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  rpcauthrefresh,
  rpcgarbage;
 };
-
 struct svc_stat {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct svc_program * program;
-
  unsigned int netcnt,
  netudpcnt,
  nettcpcnt,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  nettcpconn;
  unsigned int rpccnt,
  rpcbadfmt,
  rpcbadauth,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  rpcbadclnt;
 };
-
 #ifdef MODULE
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define proc_net_rpc NULL
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/svc.h b/libc/kernel/common/linux/sunrpc/svc.h
index 7a0cc2d..1cff308 100644
--- a/libc/kernel/common/linux/sunrpc/svc.h
+++ b/libc/kernel/common/linux/sunrpc/svc.h
@@ -7,76 +7,143 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef SUNRPC_SVC_H
 #define SUNRPC_SVC_H
-
 #include <linux/in.h>
 #include <linux/sunrpc/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/sunrpc/xdr.h>
 #include <linux/sunrpc/svcauth.h>
 #include <linux/wait.h>
 #include <linux/mm.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct svc_serv {
  struct list_head sv_threads;
  struct list_head sv_sockets;
  struct svc_program * sv_program;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct svc_stat * sv_stats;
  spinlock_t sv_lock;
  unsigned int sv_nrthreads;
  unsigned int sv_bufsz;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int sv_xdrsize;
-
  struct list_head sv_permsocks;
  struct list_head sv_tempsocks;
  int sv_tmpcnt;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char * sv_name;
 };
-
 #define RPCSVC_MAXPAYLOAD (64*1024u)
-
 #define RPCSVC_MAXPAGES ((RPCSVC_MAXPAYLOAD+PAGE_SIZE-1)/PAGE_SIZE + 2)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct svc_rqst {
+ struct list_head rq_list;
+ struct svc_sock * rq_sock;
+ struct sockaddr_in rq_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int rq_addrlen;
+ struct svc_serv * rq_server;
+ struct svc_procedure * rq_procinfo;
+ struct auth_ops * rq_authop;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct svc_cred rq_cred;
+ struct sk_buff * rq_skbuff;
+ struct svc_deferred_req*rq_deferred;
+ struct xdr_buf rq_arg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct xdr_buf rq_res;
+ struct page * rq_argpages[RPCSVC_MAXPAGES];
+ struct page * rq_respages[RPCSVC_MAXPAGES];
+ int rq_restailpage;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ short rq_argused;
+ short rq_arghi;
+ short rq_resused;
+ u32 rq_xid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ u32 rq_prog;
+ u32 rq_vers;
+ u32 rq_proc;
+ u32 rq_prot;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned short
+ rq_secure : 1;
+ __u32 rq_daddr;
+ void * rq_argp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ void * rq_resp;
+ void * rq_auth_data;
+ int rq_reserved;
+ struct cache_req rq_chandle;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct auth_domain * rq_client;
+ struct svc_cacherep * rq_cacherep;
+ struct knfsd_fh * rq_reffh;
+ int rq_sendfile_ok;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ wait_queue_head_t rq_wait;
+};
+struct svc_deferred_req {
+ u32 prot;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ struct sockaddr_in addr;
+ struct svc_sock *svsk;
+ u32 daddr;
+ struct cache_deferred_req handle;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ int argslen;
+ u32 args[0];
+};
 struct svc_program {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct svc_program * pg_next;
  u32 pg_prog;
  unsigned int pg_lovers;
  unsigned int pg_hivers;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int pg_nvers;
  struct svc_version ** pg_vers;
  char * pg_name;
  char * pg_class;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct svc_stat * pg_stats;
  int (*pg_authenticate)(struct svc_rqst *);
 };
-
 struct svc_version {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  u32 vs_vers;
  u32 vs_nproc;
  struct svc_procedure * vs_proc;
  u32 vs_xdrsize;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*vs_dispatch)(struct svc_rqst *, u32 *);
 };
-
 typedef int (*svc_procfunc)(struct svc_rqst *, void *argp, void *resp);
 struct svc_procedure {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  svc_procfunc pc_func;
  kxdrproc_t pc_decode;
  kxdrproc_t pc_encode;
  kxdrproc_t pc_release;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int pc_argsize;
  unsigned int pc_ressize;
  unsigned int pc_count;
  unsigned int pc_cachetype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int pc_xdrressize;
 };
-
 typedef void (*svc_thread_fn)(struct svc_rqst *);
-
 struct svc_serv * svc_create(struct svc_program *, unsigned int);
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/svcauth.h b/libc/kernel/common/linux/sunrpc/svcauth.h
index 9b414d7..cfad05f 100644
--- a/libc/kernel/common/linux/sunrpc/svcauth.h
+++ b/libc/kernel/common/linux/sunrpc/svcauth.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_SVCAUTH_H_
 #define _LINUX_SUNRPC_SVCAUTH_H_
-
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/timer.h b/libc/kernel/common/linux/sunrpc/timer.h
index 8fb78e5..367e2f1 100644
--- a/libc/kernel/common/linux/sunrpc/timer.h
+++ b/libc/kernel/common/linux/sunrpc/timer.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_TIMER_H
 #define _LINUX_SUNRPC_TIMER_H
-
 #include <asm/atomic.h>
-
 struct rpc_rtt {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long timeo;
  unsigned long srtt[5];
  unsigned long sdrtt[5];
  int ntimeouts[5];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/types.h b/libc/kernel/common/linux/sunrpc/types.h
index ce52052..48dc968 100644
--- a/libc/kernel/common/linux/sunrpc/types.h
+++ b/libc/kernel/common/linux/sunrpc/types.h
@@ -7,16 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_TYPES_H_
 #define _LINUX_SUNRPC_TYPES_H_
-
 #include <linux/timer.h>
 #include <linux/workqueue.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/sunrpc/debug.h>
 #include <linux/list.h>
-
 #define signalled() (signal_pending(current))
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/sunrpc/xdr.h b/libc/kernel/common/linux/sunrpc/xdr.h
index d513843..c0a2bc5 100644
--- a/libc/kernel/common/linux/sunrpc/xdr.h
+++ b/libc/kernel/common/linux/sunrpc/xdr.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _SUNRPC_XDR_H_
 #define _SUNRPC_XDR_H_
-
 #endif
diff --git a/libc/kernel/common/linux/sunrpc/xprt.h b/libc/kernel/common/linux/sunrpc/xprt.h
index 145a26d..15b9124 100644
--- a/libc/kernel/common/linux/sunrpc/xprt.h
+++ b/libc/kernel/common/linux/sunrpc/xprt.h
@@ -7,166 +7,174 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SUNRPC_XPRT_H
 #define _LINUX_SUNRPC_XPRT_H
-
 #include <linux/uio.h>
 #include <linux/socket.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/in.h>
 #include <linux/sunrpc/sched.h>
 #include <linux/sunrpc/xdr.h>
-
 #define RPC_MIN_SLOT_TABLE (2U)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_DEF_SLOT_TABLE (16U)
 #define RPC_MAX_SLOT_TABLE (128U)
-
 #define RPC_CALLHDRSIZE 6
 #define RPC_REPHDRSIZE 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define RPC_MIN_RESVPORT (1U)
 #define RPC_MAX_RESVPORT (65535U)
 #define RPC_DEF_MIN_RESVPORT (665U)
 #define RPC_DEF_MAX_RESVPORT (1023U)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rpc_timeout {
  unsigned long to_initval,
  to_maxval,
  to_increment;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int to_retries;
  unsigned char to_exponential;
 };
-
 struct rpc_task;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct rpc_xprt;
 struct seq_file;
-
 struct rpc_rqst {
-
  struct rpc_xprt * rq_xprt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct xdr_buf rq_snd_buf;
  struct xdr_buf rq_rcv_buf;
-
  struct rpc_task * rq_task;
  __u32 rq_xid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int rq_cong;
  int rq_received;
  u32 rq_seqno;
  int rq_enc_pages_num;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct page **rq_enc_pages;
  void (*rq_release_snd_buf)(struct rpc_rqst *);
  struct list_head rq_list;
-
  __u32 * rq_buffer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t rq_bufsize;
-
  struct xdr_buf rq_private_buf;
  unsigned long rq_majortimeo;
  unsigned long rq_timeout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int rq_retries;
-
  u32 rq_bytes_sent;
-
  unsigned long rq_xtime;
  int rq_ntrans;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define rq_svec rq_snd_buf.head
 #define rq_slen rq_snd_buf.len
-
 struct rpc_xprt_ops {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*set_buffer_size)(struct rpc_xprt *xprt, size_t sndsize, size_t rcvsize);
  int (*reserve_xprt)(struct rpc_task *task);
  void (*release_xprt)(struct rpc_xprt *xprt, struct rpc_task *task);
  void (*set_port)(struct rpc_xprt *xprt, unsigned short port);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*connect)(struct rpc_task *task);
  void * (*buf_alloc)(struct rpc_task *task, size_t size);
  void (*buf_free)(struct rpc_task *task);
  int (*send_request)(struct rpc_task *task);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*set_retrans_timeout)(struct rpc_task *task);
  void (*timer)(struct rpc_task *task);
  void (*release_request)(struct rpc_task *task);
  void (*close)(struct rpc_xprt *xprt);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void (*destroy)(struct rpc_xprt *xprt);
  void (*print_stats)(struct rpc_xprt *xprt, struct seq_file *seq);
 };
-
 struct rpc_xprt {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_xprt_ops * ops;
  struct socket * sock;
  struct sock * inet;
-
  struct rpc_timeout timeout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sockaddr_in addr;
  int prot;
-
  unsigned long cong;
  unsigned long cwnd;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t rcvsize,
  sndsize;
-
  size_t max_payload;
  unsigned int tsh_size;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_wait_queue sending;
  struct rpc_wait_queue resend;
  struct rpc_wait_queue pending;
  struct rpc_wait_queue backlog;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct list_head free;
  struct rpc_rqst * slot;
  unsigned int max_reqs;
  unsigned long state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char shutdown : 1,
  resvport : 1;
-
  __u32 xid;
-
  u32 tcp_recm,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  tcp_xid,
  tcp_reclen,
  tcp_offset;
  unsigned long tcp_copied,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  tcp_flags;
-
  unsigned long connect_timeout,
  bind_timeout,
  reestablish_timeout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct work_struct connect_worker;
  unsigned short port;
-
  struct work_struct task_cleanup;
  struct timer_list timer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long last_used,
  idle_timeout;
-
  spinlock_t transport_lock;
  spinlock_t reserve_lock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct rpc_task * snd_task;
-
  struct list_head recv;
-
  struct {
  unsigned long bind_count,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  connect_count,
  connect_start,
  connect_time,
  sends,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  recvs,
  bad_xids;
-
  unsigned long long req_u,
  bklog_u;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  } stat;
-
  void (*old_data_ready)(struct sock *, int);
  void (*old_state_change)(struct sock *);
  void (*old_write_space)(struct sock *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define XPRT_LAST_FRAG (1 << 0)
 #define XPRT_COPY_RECM (1 << 1)
 #define XPRT_COPY_XID (1 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XPRT_COPY_DATA (1 << 3)
-
 #endif
diff --git a/libc/kernel/common/linux/swab.h b/libc/kernel/common/linux/swab.h
index 8f7d0d6..2a91797 100644
--- a/libc/kernel/common/linux/swab.h
+++ b/libc/kernel/common/linux/swab.h
@@ -7,74 +7,89 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SWAB_H
 #define _LINUX_SWAB_H
-
 #include <linux/types.h>
 #include <linux/compiler.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/swab.h>
-
 #define ___constant_swab16(x) ((__u16)(   (((__u16)(x) & (__u16)0x00ffU) << 8) |   (((__u16)(x) & (__u16)0xff00U) >> 8)))
-
 #define ___constant_swab32(x) ((__u32)(   (((__u32)(x) & (__u32)0x000000ffUL) << 24) |   (((__u32)(x) & (__u32)0x0000ff00UL) << 8) |   (((__u32)(x) & (__u32)0x00ff0000UL) >> 8) |   (((__u32)(x) & (__u32)0xff000000UL) >> 24)))
-
 #define ___constant_swab64(x) ((__u64)(   (((__u64)(x) & (__u64)0x00000000000000ffULL) << 56) |   (((__u64)(x) & (__u64)0x000000000000ff00ULL) << 40) |   (((__u64)(x) & (__u64)0x0000000000ff0000ULL) << 24) |   (((__u64)(x) & (__u64)0x00000000ff000000ULL) << 8) |   (((__u64)(x) & (__u64)0x000000ff00000000ULL) >> 8) |   (((__u64)(x) & (__u64)0x0000ff0000000000ULL) >> 24) |   (((__u64)(x) & (__u64)0x00ff000000000000ULL) >> 40) |   (((__u64)(x) & (__u64)0xff00000000000000ULL) >> 56)))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ___constant_swahw32(x) ((__u32)(   (((__u32)(x) & (__u32)0x0000ffffUL) << 16) |   (((__u32)(x) & (__u32)0xffff0000UL) >> 16)))
-
 #define ___constant_swahb32(x) ((__u32)(   (((__u32)(x) & (__u32)0x00ff00ffUL) << 8) |   (((__u32)(x) & (__u32)0xff00ff00UL) >> 8)))
-
 #ifdef __arch_swab16
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifdef __arch_swab32
 #else
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __arch_swab64
 #elif defined(__SWAB_64_THRU_32__)
 #else
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __arch_swahw32
 #else
 #endif
 #ifdef __arch_swahb32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #endif
 #define __swab16(x)   (__builtin_constant_p((__u16)(x)) ?   ___constant_swab16(x) :   __fswab16(x))
 #define __swab32(x)   (__builtin_constant_p((__u32)(x)) ?   ___constant_swab32(x) :   __fswab32(x))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __swab64(x)   (__builtin_constant_p((__u64)(x)) ?   ___constant_swab64(x) :   __fswab64(x))
 #define __swahw32(x)   (__builtin_constant_p((__u32)(x)) ?   ___constant_swahw32(x) :   __fswahw32(x))
 #define __swahb32(x)   (__builtin_constant_p((__u32)(x)) ?   ___constant_swahb32(x) :   __fswahb32(x))
 #ifdef __arch_swab16p
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #endif
 #ifdef __arch_swab32p
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifdef __arch_swab64p
 #else
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __arch_swahw32p
 #else
 #endif
 #ifdef __arch_swahb32p
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #endif
 #ifdef __arch_swab16s
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #ifdef __arch_swab32s
 #else
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifdef __arch_swab64s
 #else
 #endif
 #ifdef __arch_swahw32s
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #else
 #endif
 #ifdef __arch_swahb32s
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
 #endif
diff --git a/libc/kernel/common/linux/swap.h b/libc/kernel/common/linux/swap.h
index 63ba556..0f8e546 100644
--- a/libc/kernel/common/linux/swap.h
+++ b/libc/kernel/common/linux/swap.h
@@ -7,33 +7,58 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SWAP_H
 #define _LINUX_SWAP_H
-
 #include <linux/spinlock.h>
 #include <linux/linkage.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/mmzone.h>
 #include <linux/list.h>
 #include <linux/sched.h>
-
 #include <asm/atomic.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/page.h>
-
 #define SWAP_FLAG_PREFER 0x8000  
 #define SWAP_FLAG_PRIO_MASK 0x7fff
 #define SWAP_FLAG_PRIO_SHIFT 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_SWAPFILES_SHIFT 5
 #define MAX_SWAPFILES (1 << MAX_SWAPFILES_SHIFT)
-
+union swap_header {
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char reserved[PAGE_SIZE - 10];
+ char magic[10];
+ } magic;
+ struct {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ char bootbits[1024];
+ __u32 version;
+ __u32 last_page;
+ __u32 nr_badpages;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ unsigned char sws_uuid[16];
+ unsigned char sws_volume[16];
+ __u32 padding[117];
+ __u32 badpages[1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ } info;
+};
 typedef struct {
  unsigned long val;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } swp_entry_t;
-
 struct reclaim_state {
  unsigned long reclaimed_slab;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/sysctl.h b/libc/kernel/common/linux/sysctl.h
index 329e561..46e5e67 100644
--- a/libc/kernel/common/linux/sysctl.h
+++ b/libc/kernel/common/linux/sysctl.h
@@ -7,818 +7,940 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_SYSCTL_H
 #define _LINUX_SYSCTL_H
-
 #include <linux/kernel.h>
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/compiler.h>
-
 struct file;
 struct completion;
-
 #define CTL_MAXNAME 10  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct __sysctl_args {
  int __user *name;
  int nlen;
  void __user *oldval;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t __user *oldlenp;
  void __user *newval;
  size_t newlen;
  unsigned long __unused[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum
 {
  CTL_KERN=1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CTL_VM=2,
  CTL_NET=3,
-
  CTL_FS=5,
  CTL_DEBUG=6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  CTL_DEV=7,
  CTL_BUS=8,
  CTL_ABI=9,
  CTL_CPU=10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum
 {
  CTL_BUS_ISA=1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum
 {
  INOTIFY_MAX_USER_INSTANCES=1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  INOTIFY_MAX_USER_WATCHES=2,
  INOTIFY_MAX_QUEUED_EVENTS=3
 };
-
 enum
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  KERN_OSTYPE=1,
  KERN_OSRELEASE=2,
  KERN_OSREV=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_VERSION=4,
  KERN_SECUREMASK=5,
  KERN_PROF=6,
  KERN_NODENAME=7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_DOMAINNAME=8,
-
  KERN_CAP_BSET=14,
  KERN_PANIC=15,
  KERN_REALROOTDEV=16,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_SPARC_REBOOT=21,
  KERN_CTLALTDEL=22,
  KERN_PRINTK=23,
  KERN_NAMETRANS=24,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_PPC_HTABRECLAIM=25,
  KERN_PPC_ZEROPAGED=26,
  KERN_PPC_POWERSAVE_NAP=27,
  KERN_MODPROBE=28,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_SG_BIG_BUFF=29,
  KERN_ACCT=30,
  KERN_PPC_L2CR=31,
-
  KERN_RTSIGNR=32,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_RTSIGMAX=33,
-
  KERN_SHMMAX=34,
  KERN_MSGMAX=35,
  KERN_MSGMNB=36,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_MSGPOOL=37,
  KERN_SYSRQ=38,
  KERN_MAX_THREADS=39,
  KERN_RANDOM=40,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_SHMALL=41,
  KERN_MSGMNI=42,
  KERN_SEM=43,
  KERN_SPARC_STOP_A=44,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_SHMMNI=45,
  KERN_OVERFLOWUID=46,
  KERN_OVERFLOWGID=47,
  KERN_SHMPATH=48,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_HOTPLUG=49,
  KERN_IEEE_EMULATION_WARNINGS=50,
  KERN_S390_USER_DEBUG_LOGGING=51,
  KERN_CORE_USES_PID=52,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_TAINTED=53,
  KERN_CADPID=54,
  KERN_PIDMAX=55,
  KERN_CORE_PATTERN=56,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_PANIC_ON_OOPS=57,
  KERN_HPPA_PWRSW=58,
  KERN_HPPA_UNALIGNED=59,
  KERN_PRINTK_RATELIMIT=60,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_PRINTK_RATELIMIT_BURST=61,
  KERN_PTY=62,
  KERN_NGROUPS_MAX=63,
  KERN_SPARC_SCONS_PWROFF=64,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_HZ_TIMER=65,
  KERN_UNKNOWN_NMI_PANIC=66,
  KERN_BOOTLOADER_TYPE=67,
  KERN_RANDOMIZE=68,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_SETUID_DUMPABLE=69,
  KERN_SPIN_RETRY=70,
  KERN_ACPI_VIDEO_FLAGS=71,
  KERN_IA64_UNALIGNED=72,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  KERN_COMPAT_LOG=73,
  KERN_MAX_LOCK_DEPTH=74,
 };
-
 enum
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  VM_UNUSED1=1,
  VM_UNUSED2=2,
  VM_UNUSED3=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VM_UNUSED4=4,
  VM_OVERCOMMIT_MEMORY=5,
  VM_UNUSED5=6,
  VM_UNUSED7=7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VM_UNUSED8=8,
  VM_UNUSED9=9,
  VM_PAGE_CLUSTER=10,
  VM_DIRTY_BACKGROUND=11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VM_DIRTY_RATIO=12,
  VM_DIRTY_WB_CS=13,
  VM_DIRTY_EXPIRE_CS=14,
  VM_NR_PDFLUSH_THREADS=15,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VM_OVERCOMMIT_RATIO=16,
  VM_PAGEBUF=17,
  VM_HUGETLB_PAGES=18,
  VM_SWAPPINESS=19,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VM_LOWMEM_RESERVE_RATIO=20,
  VM_MIN_FREE_KBYTES=21,
  VM_MAX_MAP_COUNT=22,
  VM_LAPTOP_MODE=23,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VM_BLOCK_DUMP=24,
  VM_HUGETLB_GROUP=25,
  VM_VFS_CACHE_PRESSURE=26,
  VM_LEGACY_VA_LAYOUT=27,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VM_SWAP_TOKEN_TIMEOUT=28,
  VM_DROP_PAGECACHE=29,
  VM_PERCPU_PAGELIST_FRACTION=30,
  VM_ZONE_RECLAIM_MODE=31,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  VM_MIN_UNMAPPED=32,
  VM_PANIC_ON_OOM=33,
  VM_VDSO_ENABLED=34,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  NET_CORE=1,
  NET_ETHER=2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_802=3,
  NET_UNIX=4,
  NET_IPV4=5,
  NET_IPX=6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_ATALK=7,
  NET_NETROM=8,
  NET_AX25=9,
  NET_BRIDGE=10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_ROSE=11,
  NET_IPV6=12,
  NET_X25=13,
  NET_TR=14,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_DECNET=15,
  NET_ECONET=16,
  NET_SCTP=17,
  NET_LLC=18,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NETFILTER=19,
  NET_DCCP=20,
 };
-
 enum
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  RANDOM_POOLSIZE=1,
  RANDOM_ENTROPY_COUNT=2,
  RANDOM_READ_THRESH=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  RANDOM_WRITE_THRESH=4,
  RANDOM_BOOT_ID=5,
  RANDOM_UUID=6
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  PTY_MAX=1,
  PTY_NR=2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum
 {
  BUS_ISA_MEM_BASE=1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  BUS_ISA_PORT_BASE=2,
  BUS_ISA_PORT_SHIFT=3
 };
-
 enum
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  NET_CORE_WMEM_MAX=1,
  NET_CORE_RMEM_MAX=2,
  NET_CORE_WMEM_DEFAULT=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_CORE_RMEM_DEFAULT=4,
-
  NET_CORE_MAX_BACKLOG=6,
  NET_CORE_FASTROUTE=7,
  NET_CORE_MSG_COST=8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_CORE_MSG_BURST=9,
  NET_CORE_OPTMEM_MAX=10,
  NET_CORE_HOT_LIST_LENGTH=11,
  NET_CORE_DIVERT_VERSION=12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_CORE_NO_CONG_THRESH=13,
  NET_CORE_NO_CONG=14,
  NET_CORE_LO_CONG=15,
  NET_CORE_MOD_CONG=16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_CORE_DEV_WEIGHT=17,
  NET_CORE_SOMAXCONN=18,
  NET_CORE_BUDGET=19,
  NET_CORE_AEVENT_ETIME=20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_CORE_AEVENT_RSEQTH=21,
 };
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_UNIX_DESTROY_DELAY=1,
  NET_UNIX_DELETE_DELAY=2,
  NET_UNIX_MAX_DGRAM_QLEN=3,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  NET_NF_CONNTRACK_MAX=1,
  NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3,
  NET_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4,
  NET_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5,
  NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7,
  NET_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8,
  NET_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9,
  NET_NF_CONNTRACK_UDP_TIMEOUT=10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11,
  NET_NF_CONNTRACK_ICMP_TIMEOUT=12,
  NET_NF_CONNTRACK_GENERIC_TIMEOUT=13,
  NET_NF_CONNTRACK_BUCKETS=14,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NF_CONNTRACK_LOG_INVALID=15,
  NET_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16,
  NET_NF_CONNTRACK_TCP_LOOSE=17,
  NET_NF_CONNTRACK_TCP_BE_LIBERAL=18,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NF_CONNTRACK_TCP_MAX_RETRANS=19,
  NET_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20,
  NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21,
  NET_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23,
  NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24,
  NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25,
  NET_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NF_CONNTRACK_COUNT=27,
  NET_NF_CONNTRACK_ICMPV6_TIMEOUT=28,
  NET_NF_CONNTRACK_FRAG6_TIMEOUT=29,
  NET_NF_CONNTRACK_FRAG6_LOW_THRESH=30,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NF_CONNTRACK_FRAG6_HIGH_THRESH=31,
  NET_NF_CONNTRACK_CHECKSUM=32,
 };
-
 enum
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
-
  NET_IPV4_FORWARD=8,
  NET_IPV4_DYNADDR=9,
-
  NET_IPV4_CONF=16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_NEIGH=17,
  NET_IPV4_ROUTE=18,
  NET_IPV4_FIB_HASH=19,
  NET_IPV4_NETFILTER=20,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_TCP_TIMESTAMPS=33,
  NET_IPV4_TCP_WINDOW_SCALING=34,
  NET_IPV4_TCP_SACK=35,
  NET_IPV4_TCP_RETRANS_COLLAPSE=36,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_DEFAULT_TTL=37,
  NET_IPV4_AUTOCONFIG=38,
  NET_IPV4_NO_PMTU_DISC=39,
  NET_IPV4_TCP_SYN_RETRIES=40,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_IPFRAG_HIGH_THRESH=41,
  NET_IPV4_IPFRAG_LOW_THRESH=42,
  NET_IPV4_IPFRAG_TIME=43,
  NET_IPV4_TCP_MAX_KA_PROBES=44,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_TCP_KEEPALIVE_TIME=45,
  NET_IPV4_TCP_KEEPALIVE_PROBES=46,
  NET_IPV4_TCP_RETRIES1=47,
  NET_IPV4_TCP_RETRIES2=48,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_TCP_FIN_TIMEOUT=49,
  NET_IPV4_IP_MASQ_DEBUG=50,
  NET_TCP_SYNCOOKIES=51,
  NET_TCP_STDURG=52,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_TCP_RFC1337=53,
  NET_TCP_SYN_TAILDROP=54,
  NET_TCP_MAX_SYN_BACKLOG=55,
  NET_IPV4_LOCAL_PORT_RANGE=56,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_ICMP_ECHO_IGNORE_ALL=57,
  NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS=58,
  NET_IPV4_ICMP_SOURCEQUENCH_RATE=59,
  NET_IPV4_ICMP_DESTUNREACH_RATE=60,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_ICMP_TIMEEXCEED_RATE=61,
  NET_IPV4_ICMP_PARAMPROB_RATE=62,
  NET_IPV4_ICMP_ECHOREPLY_RATE=63,
  NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES=64,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_IGMP_MAX_MEMBERSHIPS=65,
  NET_TCP_TW_RECYCLE=66,
  NET_IPV4_ALWAYS_DEFRAG=67,
  NET_IPV4_TCP_KEEPALIVE_INTVL=68,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_INET_PEER_THRESHOLD=69,
  NET_IPV4_INET_PEER_MINTTL=70,
  NET_IPV4_INET_PEER_MAXTTL=71,
  NET_IPV4_INET_PEER_GC_MINTIME=72,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_INET_PEER_GC_MAXTIME=73,
  NET_TCP_ORPHAN_RETRIES=74,
  NET_TCP_ABORT_ON_OVERFLOW=75,
  NET_TCP_SYNACK_RETRIES=76,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_TCP_MAX_ORPHANS=77,
  NET_TCP_MAX_TW_BUCKETS=78,
  NET_TCP_FACK=79,
  NET_TCP_REORDERING=80,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_TCP_ECN=81,
  NET_TCP_DSACK=82,
  NET_TCP_MEM=83,
  NET_TCP_WMEM=84,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_TCP_RMEM=85,
  NET_TCP_APP_WIN=86,
  NET_TCP_ADV_WIN_SCALE=87,
  NET_IPV4_NONLOCAL_BIND=88,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_ICMP_RATELIMIT=89,
  NET_IPV4_ICMP_RATEMASK=90,
  NET_TCP_TW_REUSE=91,
  NET_TCP_FRTO=92,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_TCP_LOW_LATENCY=93,
  NET_IPV4_IPFRAG_SECRET_INTERVAL=94,
  NET_IPV4_IGMP_MAX_MSF=96,
  NET_TCP_NO_METRICS_SAVE=97,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_TCP_DEFAULT_WIN_SCALE=105,
  NET_TCP_MODERATE_RCVBUF=106,
  NET_TCP_TSO_WIN_DIVISOR=107,
  NET_TCP_BIC_BETA=108,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109,
  NET_TCP_CONG_CONTROL=110,
  NET_TCP_ABC=111,
  NET_IPV4_IPFRAG_MAX_DIST=112,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_TCP_MTU_PROBING=113,
  NET_TCP_BASE_MSS=114,
  NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS=115,
  NET_TCP_DMA_COPYBREAK=116,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_TCP_SLOW_START_AFTER_IDLE=117,
 };
-
 enum {
  NET_IPV4_ROUTE_FLUSH=1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_ROUTE_MIN_DELAY=2,
  NET_IPV4_ROUTE_MAX_DELAY=3,
  NET_IPV4_ROUTE_GC_THRESH=4,
  NET_IPV4_ROUTE_MAX_SIZE=5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_ROUTE_GC_MIN_INTERVAL=6,
  NET_IPV4_ROUTE_GC_TIMEOUT=7,
  NET_IPV4_ROUTE_GC_INTERVAL=8,
  NET_IPV4_ROUTE_REDIRECT_LOAD=9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_ROUTE_REDIRECT_NUMBER=10,
  NET_IPV4_ROUTE_REDIRECT_SILENCE=11,
  NET_IPV4_ROUTE_ERROR_COST=12,
  NET_IPV4_ROUTE_ERROR_BURST=13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_ROUTE_GC_ELASTICITY=14,
  NET_IPV4_ROUTE_MTU_EXPIRES=15,
  NET_IPV4_ROUTE_MIN_PMTU=16,
  NET_IPV4_ROUTE_MIN_ADVMSS=17,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_ROUTE_SECRET_INTERVAL=18,
  NET_IPV4_ROUTE_GC_MIN_INTERVAL_MS=19,
 };
-
 enum
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  NET_PROTO_CONF_ALL=-2,
  NET_PROTO_CONF_DEFAULT=-3
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum
 {
  NET_IPV4_CONF_FORWARDING=1,
  NET_IPV4_CONF_MC_FORWARDING=2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_CONF_PROXY_ARP=3,
  NET_IPV4_CONF_ACCEPT_REDIRECTS=4,
  NET_IPV4_CONF_SECURE_REDIRECTS=5,
  NET_IPV4_CONF_SEND_REDIRECTS=6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_CONF_SHARED_MEDIA=7,
  NET_IPV4_CONF_RP_FILTER=8,
  NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=9,
  NET_IPV4_CONF_BOOTP_RELAY=10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_CONF_LOG_MARTIANS=11,
  NET_IPV4_CONF_TAG=12,
  NET_IPV4_CONF_ARPFILTER=13,
  NET_IPV4_CONF_MEDIUM_ID=14,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_CONF_NOXFRM=15,
  NET_IPV4_CONF_NOPOLICY=16,
  NET_IPV4_CONF_FORCE_IGMP_VERSION=17,
  NET_IPV4_CONF_ARP_ANNOUNCE=18,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_CONF_ARP_IGNORE=19,
  NET_IPV4_CONF_PROMOTE_SECONDARIES=20,
  NET_IPV4_CONF_ARP_ACCEPT=21,
  __NET_IPV4_CONF_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum
 {
  NET_IPV4_NF_CONNTRACK_MAX=1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_SENT=2,
  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_SYN_RECV=3,
  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_ESTABLISHED=4,
  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_FIN_WAIT=5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE_WAIT=6,
  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_LAST_ACK=7,
  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_TIME_WAIT=8,
  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_CLOSE=9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT=10,
  NET_IPV4_NF_CONNTRACK_UDP_TIMEOUT_STREAM=11,
  NET_IPV4_NF_CONNTRACK_ICMP_TIMEOUT=12,
  NET_IPV4_NF_CONNTRACK_GENERIC_TIMEOUT=13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_NF_CONNTRACK_BUCKETS=14,
  NET_IPV4_NF_CONNTRACK_LOG_INVALID=15,
  NET_IPV4_NF_CONNTRACK_TCP_TIMEOUT_MAX_RETRANS=16,
  NET_IPV4_NF_CONNTRACK_TCP_LOOSE=17,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_NF_CONNTRACK_TCP_BE_LIBERAL=18,
  NET_IPV4_NF_CONNTRACK_TCP_MAX_RETRANS=19,
  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_CLOSED=20,
  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_WAIT=21,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_COOKIE_ECHOED=22,
  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_ESTABLISHED=23,
  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_SENT=24,
  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_RECD=25,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV4_NF_CONNTRACK_SCTP_TIMEOUT_SHUTDOWN_ACK_SENT=26,
  NET_IPV4_NF_CONNTRACK_COUNT=27,
  NET_IPV4_NF_CONNTRACK_CHECKSUM=28,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_IPV6_CONF=16,
  NET_IPV6_NEIGH=17,
  NET_IPV6_ROUTE=18,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV6_ICMP=19,
  NET_IPV6_BINDV6ONLY=20,
  NET_IPV6_IP6FRAG_HIGH_THRESH=21,
  NET_IPV6_IP6FRAG_LOW_THRESH=22,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV6_IP6FRAG_TIME=23,
  NET_IPV6_IP6FRAG_SECRET_INTERVAL=24,
  NET_IPV6_MLD_MAX_MSF=25,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_IPV6_ROUTE_FLUSH=1,
  NET_IPV6_ROUTE_GC_THRESH=2,
  NET_IPV6_ROUTE_MAX_SIZE=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV6_ROUTE_GC_MIN_INTERVAL=4,
  NET_IPV6_ROUTE_GC_TIMEOUT=5,
  NET_IPV6_ROUTE_GC_INTERVAL=6,
  NET_IPV6_ROUTE_GC_ELASTICITY=7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV6_ROUTE_MTU_EXPIRES=8,
  NET_IPV6_ROUTE_MIN_ADVMSS=9,
  NET_IPV6_ROUTE_GC_MIN_INTERVAL_MS=10
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_IPV6_FORWARDING=1,
  NET_IPV6_HOP_LIMIT=2,
  NET_IPV6_MTU=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV6_ACCEPT_RA=4,
  NET_IPV6_ACCEPT_REDIRECTS=5,
  NET_IPV6_AUTOCONF=6,
  NET_IPV6_DAD_TRANSMITS=7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV6_RTR_SOLICITS=8,
  NET_IPV6_RTR_SOLICIT_INTERVAL=9,
  NET_IPV6_RTR_SOLICIT_DELAY=10,
  NET_IPV6_USE_TEMPADDR=11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV6_TEMP_VALID_LFT=12,
  NET_IPV6_TEMP_PREFERED_LFT=13,
  NET_IPV6_REGEN_MAX_RETRY=14,
  NET_IPV6_MAX_DESYNC_FACTOR=15,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV6_MAX_ADDRESSES=16,
  NET_IPV6_FORCE_MLD_VERSION=17,
  NET_IPV6_ACCEPT_RA_DEFRTR=18,
  NET_IPV6_ACCEPT_RA_PINFO=19,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_IPV6_ACCEPT_RA_RTR_PREF=20,
  NET_IPV6_RTR_PROBE_INTERVAL=21,
  NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=22,
  __NET_IPV6_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  NET_IPV6_ICMP_RATELIMIT=1
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_NEIGH_MCAST_SOLICIT=1,
  NET_NEIGH_UCAST_SOLICIT=2,
  NET_NEIGH_APP_SOLICIT=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NEIGH_RETRANS_TIME=4,
  NET_NEIGH_REACHABLE_TIME=5,
  NET_NEIGH_DELAY_PROBE_TIME=6,
  NET_NEIGH_GC_STALE_TIME=7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NEIGH_UNRES_QLEN=8,
  NET_NEIGH_PROXY_QLEN=9,
  NET_NEIGH_ANYCAST_DELAY=10,
  NET_NEIGH_PROXY_DELAY=11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NEIGH_LOCKTIME=12,
  NET_NEIGH_GC_INTERVAL=13,
  NET_NEIGH_GC_THRESH1=14,
  NET_NEIGH_GC_THRESH2=15,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NEIGH_GC_THRESH3=16,
  NET_NEIGH_RETRANS_TIME_MS=17,
  NET_NEIGH_REACHABLE_TIME_MS=18,
  __NET_NEIGH_MAX
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  NET_DCCP_DEFAULT=1,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_DCCP_DEFAULT_SEQ_WINDOW = 1,
  NET_DCCP_DEFAULT_RX_CCID = 2,
  NET_DCCP_DEFAULT_TX_CCID = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_DCCP_DEFAULT_ACK_RATIO = 4,
  NET_DCCP_DEFAULT_SEND_ACKVEC = 5,
  NET_DCCP_DEFAULT_SEND_NDP = 6,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_IPX_PPROP_BROADCASTING=1,
  NET_IPX_FORWARDING=2
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_LLC2=1,
  NET_LLC_STATION=2,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_LLC2_TIMEOUT=1,
 };
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_LLC_STATION_ACK_TIMEOUT=1,
 };
-
 enum {
  NET_LLC2_ACK_TIMEOUT=1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_LLC2_P_TIMEOUT=2,
  NET_LLC2_REJ_TIMEOUT=3,
  NET_LLC2_BUSY_TIMEOUT=4,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_ATALK_AARP_EXPIRY_TIME=1,
  NET_ATALK_AARP_TICK_TIME=2,
  NET_ATALK_AARP_RETRANSMIT_LIMIT=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_ATALK_AARP_RESOLVE_TIME=4
 };
-
 enum {
  NET_NETROM_DEFAULT_PATH_QUALITY=1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER=2,
  NET_NETROM_NETWORK_TTL_INITIALISER=3,
  NET_NETROM_TRANSPORT_TIMEOUT=4,
  NET_NETROM_TRANSPORT_MAXIMUM_TRIES=5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY=6,
  NET_NETROM_TRANSPORT_BUSY_DELAY=7,
  NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8,
  NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_NETROM_ROUTING_CONTROL=10,
  NET_NETROM_LINK_FAILS_COUNT=11,
  NET_NETROM_RESET=12
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_AX25_IP_DEFAULT_MODE=1,
  NET_AX25_DEFAULT_MODE=2,
  NET_AX25_BACKOFF_TYPE=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_AX25_CONNECT_MODE=4,
  NET_AX25_STANDARD_WINDOW=5,
  NET_AX25_EXTENDED_WINDOW=6,
  NET_AX25_T1_TIMEOUT=7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_AX25_T2_TIMEOUT=8,
  NET_AX25_T3_TIMEOUT=9,
  NET_AX25_IDLE_TIMEOUT=10,
  NET_AX25_N2=11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_AX25_PACLEN=12,
  NET_AX25_PROTOCOL=13,
  NET_AX25_DAMA_SLAVE_TIMEOUT=14
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_ROSE_RESTART_REQUEST_TIMEOUT=1,
  NET_ROSE_CALL_REQUEST_TIMEOUT=2,
  NET_ROSE_RESET_REQUEST_TIMEOUT=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_ROSE_CLEAR_REQUEST_TIMEOUT=4,
  NET_ROSE_ACK_HOLD_BACK_TIMEOUT=5,
  NET_ROSE_ROUTING_CONTROL=6,
  NET_ROSE_LINK_FAIL_TIMEOUT=7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_ROSE_MAX_VCS=8,
  NET_ROSE_WINDOW_SIZE=9,
  NET_ROSE_NO_ACTIVITY_TIMEOUT=10
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_X25_RESTART_REQUEST_TIMEOUT=1,
  NET_X25_CALL_REQUEST_TIMEOUT=2,
  NET_X25_RESET_REQUEST_TIMEOUT=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_X25_CLEAR_REQUEST_TIMEOUT=4,
  NET_X25_ACK_HOLD_BACK_TIMEOUT=5
 };
-
 enum
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  NET_TR_RIF_TIMEOUT=1
 };
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_DECNET_NODE_TYPE = 1,
  NET_DECNET_NODE_ADDRESS = 2,
  NET_DECNET_NODE_NAME = 3,
  NET_DECNET_DEFAULT_DEVICE = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_DECNET_TIME_WAIT = 5,
  NET_DECNET_DN_COUNT = 6,
  NET_DECNET_DI_COUNT = 7,
  NET_DECNET_DR_COUNT = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_DECNET_DST_GC_INTERVAL = 9,
  NET_DECNET_CONF = 10,
  NET_DECNET_NO_FC_MAX_CWND = 11,
  NET_DECNET_MEM = 12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_DECNET_RMEM = 13,
  NET_DECNET_WMEM = 14,
  NET_DECNET_DEBUG_LEVEL = 255
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_DECNET_CONF_LOOPBACK = -2,
  NET_DECNET_CONF_DDCMP = -3,
  NET_DECNET_CONF_PPP = -4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_DECNET_CONF_X25 = -5,
  NET_DECNET_CONF_GRE = -6,
  NET_DECNET_CONF_ETHER = -7
-
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_DECNET_CONF_DEV_PRIORITY = 1,
  NET_DECNET_CONF_DEV_T1 = 2,
  NET_DECNET_CONF_DEV_T2 = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_DECNET_CONF_DEV_T3 = 4,
  NET_DECNET_CONF_DEV_FORWARDING = 5,
  NET_DECNET_CONF_DEV_BLKSIZE = 6,
  NET_DECNET_CONF_DEV_STATE = 7
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  NET_SCTP_RTO_INITIAL = 1,
  NET_SCTP_RTO_MIN = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_SCTP_RTO_MAX = 3,
  NET_SCTP_RTO_ALPHA = 4,
  NET_SCTP_RTO_BETA = 5,
  NET_SCTP_VALID_COOKIE_LIFE = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_SCTP_ASSOCIATION_MAX_RETRANS = 7,
  NET_SCTP_PATH_MAX_RETRANS = 8,
  NET_SCTP_MAX_INIT_RETRANSMITS = 9,
  NET_SCTP_HB_INTERVAL = 10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_SCTP_PRESERVE_ENABLE = 11,
  NET_SCTP_MAX_BURST = 12,
  NET_SCTP_ADDIP_ENABLE = 13,
  NET_SCTP_PRSCTP_ENABLE = 14,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_SCTP_SNDBUF_POLICY = 15,
  NET_SCTP_SACK_TIMEOUT = 16,
  NET_SCTP_RCVBUF_POLICY = 17,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  NET_BRIDGE_NF_CALL_ARPTABLES = 1,
  NET_BRIDGE_NF_CALL_IPTABLES = 2,
  NET_BRIDGE_NF_CALL_IP6TABLES = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  NET_BRIDGE_NF_FILTER_VLAN_TAGGED = 4,
 };
-
 enum
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FS_NRINODE=1,
  FS_STATINODE=2,
  FS_MAXINODE=3,
  FS_NRDQUOT=4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FS_MAXDQUOT=5,
  FS_NRFILE=6,
  FS_MAXFILE=7,
  FS_DENTRY=8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FS_NRSUPER=9,
  FS_MAXSUPER=10,
  FS_OVERFLOWUID=11,
  FS_OVERFLOWGID=12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FS_LEASES=13,
  FS_DIR_NOTIFY=14,
  FS_LEASE_TIME=15,
  FS_DQSTATS=16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FS_XFS=17,
  FS_AIO_NR=18,
  FS_AIO_MAX_NR=19,
  FS_INOTIFY=20,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  FS_DQ_LOOKUPS = 1,
  FS_DQ_DROPS = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FS_DQ_READS = 3,
  FS_DQ_WRITES = 4,
  FS_DQ_CACHE_HITS = 5,
  FS_DQ_ALLOCATED = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  FS_DQ_FREE = 7,
  FS_DQ_SYNCS = 8,
  FS_DQ_WARNINGS = 9,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  DEV_CDROM=1,
  DEV_HWMON=2,
  DEV_PARPORT=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEV_RAID=4,
  DEV_MAC_HID=5,
  DEV_SCSI=6,
  DEV_IPMI=7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  DEV_CDROM_INFO=1,
  DEV_CDROM_AUTOCLOSE=2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEV_CDROM_AUTOEJECT=3,
  DEV_CDROM_DEBUG=4,
  DEV_CDROM_LOCK=5,
  DEV_CDROM_CHECK_MEDIA=6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  DEV_PARPORT_DEFAULT=-3
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  DEV_RAID_SPEED_LIMIT_MIN=1,
  DEV_RAID_SPEED_LIMIT_MAX=2
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  DEV_PARPORT_DEFAULT_TIMESLICE=1,
  DEV_PARPORT_DEFAULT_SPINTIME=2
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  DEV_PARPORT_SPINTIME=1,
  DEV_PARPORT_BASE_ADDR=2,
  DEV_PARPORT_IRQ=3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEV_PARPORT_DMA=4,
  DEV_PARPORT_MODES=5,
  DEV_PARPORT_DEVICES=6,
  DEV_PARPORT_AUTOPROBE=16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  DEV_PARPORT_DEVICES_ACTIVE=-3,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  DEV_PARPORT_DEVICE_TIMESLICE=1,
 };
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES=1,
  DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES=2,
  DEV_MAC_HID_MOUSE_BUTTON_EMULATION=3,
  DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=5,
  DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6
 };
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  DEV_SCSI_LOGGING_LEVEL=1,
 };
-
 enum {
  DEV_IPMI_POWEROFF_POWERCYCLE=1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum
 {
  ABI_DEFHANDLER_COFF=1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ABI_DEFHANDLER_ELF=2,
  ABI_DEFHANDLER_LCALL7=3,
  ABI_DEFHANDLER_LIBCSO=4,
  ABI_TRACE=5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ABI_FAKE_UTSNAME=6,
 };
-
 #endif
diff --git a/libc/kernel/common/linux/sysdev.h b/libc/kernel/common/linux/sysdev.h
index 6ae2b26..937d90a 100644
--- a/libc/kernel/common/linux/sysdev.h
+++ b/libc/kernel/common/linux/sysdev.h
@@ -7,54 +7,59 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _SYSDEV_H_
 #define _SYSDEV_H_
-
 #include <linux/kobject.h>
 #include <linux/pm.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sys_device;
-
 struct sysdev_class {
  struct list_head drivers;
-
  int (*shutdown)(struct sys_device *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*suspend)(struct sys_device *, pm_message_t state);
  int (*resume)(struct sys_device *);
  struct kset kset;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sysdev_class_attribute {
  struct attribute attr;
  ssize_t (*show)(struct sysdev_class *, char *);
  ssize_t (*store)(struct sysdev_class *, const char *, size_t);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define SYSDEV_CLASS_ATTR(_name,_mode,_show,_store)  struct sysdev_class_attribute attr_##_name = {   .attr = {.name = __stringify(_name), .mode = _mode },   .show = _show,   .store = _store,  };
-
 struct sysdev_driver {
  struct list_head entry;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*add)(struct sys_device *);
  int (*remove)(struct sys_device *);
  int (*shutdown)(struct sys_device *);
  int (*suspend)(struct sys_device *, pm_message_t state);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*resume)(struct sys_device *);
 };
-
 struct sys_device {
  u32 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sysdev_class * cls;
  struct kobject kobj;
 };
-
 struct sysdev_attribute {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct attribute attr;
  ssize_t (*show)(struct sys_device *, char *);
  ssize_t (*store)(struct sys_device *, const char *, size_t);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYSDEV_ATTR(_name,_mode,_show,_store)  struct sysdev_attribute attr_##_name = {   .attr = {.name = __stringify(_name), .mode = _mode },   .show = _show,   .store = _store,  };
-
 #endif
diff --git a/libc/kernel/common/linux/sysfs.h b/libc/kernel/common/linux/sysfs.h
index 00b5f5a..9a9bec9 100644
--- a/libc/kernel/common/linux/sysfs.h
+++ b/libc/kernel/common/linux/sysfs.h
@@ -7,70 +7,75 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _SYSFS_H_
 #define _SYSFS_H_
-
 #include <asm/atomic.h>
-
 struct kobject;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct module;
-
 struct attribute {
  const char * name;
  struct module * owner;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  mode_t mode;
 };
-
 struct attribute_group {
  const char * name;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct attribute ** attrs;
 };
-
 #define __ATTR(_name,_mode,_show,_store) {   .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE },   .show = _show,   .store = _store,  }
-
 #define __ATTR_RO(_name) {   .attr = { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE },   .show = _name##_show,  }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __ATTR_NULL { .attr = { .name = NULL } }
-
 #define attr_name(_attr) (_attr).attr.name
-
 struct vm_area_struct;
-
 struct bin_attribute {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct attribute attr;
  size_t size;
  void *private;
  ssize_t (*read)(struct kobject *, char *, loff_t, size_t);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ssize_t (*write)(struct kobject *, char *, loff_t, size_t);
  int (*mmap)(struct kobject *, struct bin_attribute *attr,
  struct vm_area_struct *vma);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sysfs_ops {
  ssize_t (*show)(struct kobject *, struct attribute *,char *);
  ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sysfs_dirent {
  atomic_t s_count;
  struct list_head s_sibling;
  struct list_head s_children;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void * s_element;
  int s_type;
  umode_t s_mode;
  struct dentry * s_dentry;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct iattr * s_iattr;
  atomic_t s_event;
 };
-
 #define SYSFS_ROOT 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYSFS_DIR 0x0002
 #define SYSFS_KOBJ_ATTR 0x0004
 #define SYSFS_KOBJ_BIN_ATTR 0x0008
 #define SYSFS_KOBJ_DEVICE 0x0010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SYSFS_KOBJ_LINK 0x0020
 #define SYSFS_NOT_PINNED (SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR | SYSFS_KOBJ_DEVICE | SYSFS_KOBJ_LINK)
-
 #endif
diff --git a/libc/kernel/common/linux/taskstats.h b/libc/kernel/common/linux/taskstats.h
index 3e8ae4a..0e1cb67 100644
--- a/libc/kernel/common/linux/taskstats.h
+++ b/libc/kernel/common/linux/taskstats.h
@@ -7,66 +7,67 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TASKSTATS_H
 #define _LINUX_TASKSTATS_H
-
 #define TASKSTATS_VERSION 1
-
 struct taskstats {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 version;
  __u16 padding[3];
-
  __u64 cpu_count;
  __u64 cpu_delay_total;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 blkio_count;
  __u64 blkio_delay_total;
-
  __u64 swapin_count;
  __u64 swapin_delay_total;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 cpu_run_real_total;
-
  __u64 cpu_run_virtual_total;
-
 };
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TASKSTATS_CMD_UNSPEC = 0,
  TASKSTATS_CMD_GET,
  TASKSTATS_CMD_NEW,
  __TASKSTATS_CMD_MAX,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TASKSTATS_CMD_MAX (__TASKSTATS_CMD_MAX - 1)
-
 enum {
  TASKSTATS_TYPE_UNSPEC = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TASKSTATS_TYPE_PID,
  TASKSTATS_TYPE_TGID,
  TASKSTATS_TYPE_STATS,
  TASKSTATS_TYPE_AGGR_PID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TASKSTATS_TYPE_AGGR_TGID,
  __TASKSTATS_TYPE_MAX,
 };
-
 #define TASKSTATS_TYPE_MAX (__TASKSTATS_TYPE_MAX - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  TASKSTATS_CMD_ATTR_UNSPEC = 0,
  TASKSTATS_CMD_ATTR_PID,
  TASKSTATS_CMD_ATTR_TGID,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TASKSTATS_CMD_ATTR_REGISTER_CPUMASK,
  TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK,
  __TASKSTATS_CMD_ATTR_MAX,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TASKSTATS_CMD_ATTR_MAX (__TASKSTATS_CMD_ATTR_MAX - 1)
-
 #define TASKSTATS_GENL_NAME "TASKSTATS"
 #define TASKSTATS_GENL_VERSION 0x1
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/taskstats_kern.h b/libc/kernel/common/linux/taskstats_kern.h
index 4948410..64a68c1 100644
--- a/libc/kernel/common/linux/taskstats_kern.h
+++ b/libc/kernel/common/linux/taskstats_kern.h
@@ -7,13 +7,19 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TASKSTATS_KERN_H
 #define _LINUX_TASKSTATS_KERN_H
-
 #include <linux/taskstats.h>
 #include <linux/sched.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <net/genetlink.h>
-
 #endif
diff --git a/libc/kernel/common/linux/tcp.h b/libc/kernel/common/linux/tcp.h
index 3fa95f8..b51824a 100644
--- a/libc/kernel/common/linux/tcp.h
+++ b/libc/kernel/common/linux/tcp.h
@@ -7,141 +7,162 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TCP_H
 #define _LINUX_TCP_H
-
 #include <linux/types.h>
 #include <asm/byteorder.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tcphdr {
  __u16 source;
  __u16 dest;
  __u32 seq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ack_seq;
 #ifdef __LITTLE_ENDIAN_BITFIELD
  __u16 res1:4,
  doff:4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  fin:1,
  syn:1,
  rst:1,
  psh:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ack:1,
  urg:1,
  ece:1,
  cwr:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #elif defined(__BIG_ENDIAN_BITFIELD)
  __u16 doff:4,
  res1:4,
  cwr:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ece:1,
  urg:1,
  ack:1,
  psh:1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  rst:1,
  syn:1,
  fin:1;
 #else
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #error "Adjust your <asm/byteorder.h> defines"
 #endif
  __u16 window;
  __u16 check;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 urg_ptr;
 };
-
 union tcp_word_hdr {
  struct tcphdr hdr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 words[5];
 };
-
 #define tcp_flag_word(tp) ( ((union tcp_word_hdr *)(tp))->words [3]) 
-
 enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCP_FLAG_CWR = __constant_htonl(0x00800000),
  TCP_FLAG_ECE = __constant_htonl(0x00400000),
  TCP_FLAG_URG = __constant_htonl(0x00200000),
  TCP_FLAG_ACK = __constant_htonl(0x00100000),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCP_FLAG_PSH = __constant_htonl(0x00080000),
  TCP_FLAG_RST = __constant_htonl(0x00040000),
  TCP_FLAG_SYN = __constant_htonl(0x00020000),
  TCP_FLAG_FIN = __constant_htonl(0x00010000),
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCP_RESERVED_BITS = __constant_htonl(0x0F000000),
  TCP_DATA_OFFSET = __constant_htonl(0xF0000000)
 };
-
 #define TCP_NODELAY 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_MAXSEG 2  
 #define TCP_CORK 3  
 #define TCP_KEEPIDLE 4  
 #define TCP_KEEPINTVL 5  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_KEEPCNT 6  
 #define TCP_SYNCNT 7  
 #define TCP_LINGER2 8  
 #define TCP_DEFER_ACCEPT 9  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCP_WINDOW_CLAMP 10  
 #define TCP_INFO 11  
 #define TCP_QUICKACK 12  
 #define TCP_CONGESTION 13  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TCPI_OPT_TIMESTAMPS 1
 #define TCPI_OPT_SACK 2
 #define TCPI_OPT_WSCALE 4
 #define TCPI_OPT_ECN 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum tcp_ca_state
 {
  TCP_CA_Open = 0,
 #define TCPF_CA_Open (1<<TCP_CA_Open)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCP_CA_Disorder = 1,
 #define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
  TCP_CA_CWR = 2,
 #define TCPF_CA_CWR (1<<TCP_CA_CWR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TCP_CA_Recovery = 3,
 #define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
  TCP_CA_Loss = 4
 #define TCPF_CA_Loss (1<<TCP_CA_Loss)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tcp_info
 {
  __u8 tcpi_state;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 tcpi_ca_state;
  __u8 tcpi_retransmits;
  __u8 tcpi_probes;
  __u8 tcpi_backoff;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 tcpi_options;
  __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
-
  __u32 tcpi_rto;
  __u32 tcpi_ato;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tcpi_snd_mss;
  __u32 tcpi_rcv_mss;
-
  __u32 tcpi_unacked;
  __u32 tcpi_sacked;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tcpi_lost;
  __u32 tcpi_retrans;
  __u32 tcpi_fackets;
-
  __u32 tcpi_last_data_sent;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tcpi_last_ack_sent;
  __u32 tcpi_last_data_recv;
  __u32 tcpi_last_ack_recv;
-
  __u32 tcpi_pmtu;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tcpi_rcv_ssthresh;
  __u32 tcpi_rtt;
  __u32 tcpi_rttvar;
  __u32 tcpi_snd_ssthresh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tcpi_snd_cwnd;
  __u32 tcpi_advmss;
  __u32 tcpi_reordering;
-
  __u32 tcpi_rcv_rtt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tcpi_rcv_space;
-
  __u32 tcpi_total_retrans;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/tegra_audio.h b/libc/kernel/common/linux/tegra_audio.h
index e18ce11..fcdaf20 100644
--- a/libc/kernel/common/linux/tegra_audio.h
+++ b/libc/kernel/common/linux/tegra_audio.h
@@ -7,37 +7,39 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _TEGRA_AUDIO_H
 #define _TEGRA_AUDIO_H
-
 #include <linux/ioctl.h>
-
 #define TEGRA_AUDIO_MAGIC 't'
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_AUDIO_IN_START _IO(TEGRA_AUDIO_MAGIC, 0)
 #define TEGRA_AUDIO_IN_STOP _IO(TEGRA_AUDIO_MAGIC, 1)
-
 struct tegra_audio_in_config {
  int rate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int stereo;
 };
-
 #define TEGRA_AUDIO_IN_SET_CONFIG _IOW(TEGRA_AUDIO_MAGIC, 2,   const struct tegra_audio_in_config *)
 #define TEGRA_AUDIO_IN_GET_CONFIG _IOR(TEGRA_AUDIO_MAGIC, 3,   struct tegra_audio_in_config *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_AUDIO_IN_SET_NUM_BUFS _IOW(TEGRA_AUDIO_MAGIC, 4,   const unsigned int *)
 #define TEGRA_AUDIO_IN_GET_NUM_BUFS _IOW(TEGRA_AUDIO_MAGIC, 5,   unsigned int *)
 #define TEGRA_AUDIO_OUT_SET_NUM_BUFS _IOW(TEGRA_AUDIO_MAGIC, 6,   const unsigned int *)
 #define TEGRA_AUDIO_OUT_GET_NUM_BUFS _IOW(TEGRA_AUDIO_MAGIC, 7,   unsigned int *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_AUDIO_OUT_FLUSH _IO(TEGRA_AUDIO_MAGIC, 10)
-
 #define TEGRA_AUDIO_BIT_FORMAT_DEFAULT 0
 #define TEGRA_AUDIO_BIT_FORMAT_DSP 1
 #define TEGRA_AUDIO_SET_BIT_FORMAT _IOW(TEGRA_AUDIO_MAGIC, 11,   const unsigned int *)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_AUDIO_GET_BIT_FORMAT _IOR(TEGRA_AUDIO_MAGIC, 12,   unsigned int *)
-
 #endif
-
diff --git a/libc/kernel/common/linux/tegra_avp.h b/libc/kernel/common/linux/tegra_avp.h
index c4a0cbd..f3f39b9 100644
--- a/libc/kernel/common/linux/tegra_avp.h
+++ b/libc/kernel/common/linux/tegra_avp.h
@@ -7,32 +7,35 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_TEGRA_AVP_H
 #define __LINUX_TEGRA_AVP_H
-
 #include <linux/ioctl.h>
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_AVP_LIB_MAX_NAME 32
 #define TEGRA_AVP_LIB_MAX_ARGS 220  
-
 struct tegra_avp_lib {
  char name[TEGRA_AVP_LIB_MAX_NAME];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __user *args;
  size_t args_len;
  int greedy;
  unsigned long handle;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TEGRA_AVP_IOCTL_MAGIC 'r'
-
 #define TEGRA_AVP_IOCTL_LOAD_LIB _IOWR(TEGRA_AVP_IOCTL_MAGIC, 0x40, struct tegra_avp_lib)
 #define TEGRA_AVP_IOCTL_UNLOAD_LIB _IOW(TEGRA_AVP_IOCTL_MAGIC, 0x41, unsigned long)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_AVP_IOCTL_MIN_NR _IOC_NR(TEGRA_AVP_IOCTL_LOAD_LIB)
 #define TEGRA_AVP_IOCTL_MAX_NR _IOC_NR(TEGRA_AVP_IOCTL_UNLOAD_LIB)
-
 #endif
-
diff --git a/libc/kernel/common/linux/tegra_rpc.h b/libc/kernel/common/linux/tegra_rpc.h
index e3c8bf2..5d99d9e 100644
--- a/libc/kernel/common/linux/tegra_rpc.h
+++ b/libc/kernel/common/linux/tegra_rpc.h
@@ -7,29 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_TEGRA_RPC_H
 #define __LINUX_TEGRA_RPC_H
-
 #define TEGRA_RPC_MAX_MSG_LEN 256
-
 #define TEGRA_RPC_MAX_NAME_LEN 17
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct tegra_rpc_port_desc {
  char name[TEGRA_RPC_MAX_NAME_LEN];
  int notify_fd;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_RPC_IOCTL_MAGIC 'r'
-
 #define TEGRA_RPC_IOCTL_PORT_CREATE _IOW(TEGRA_RPC_IOCTL_MAGIC, 0x20, struct tegra_rpc_port_desc)
 #define TEGRA_RPC_IOCTL_PORT_GET_NAME _IOR(TEGRA_RPC_IOCTL_MAGIC, 0x21, char *)
 #define TEGRA_RPC_IOCTL_PORT_CONNECT _IOR(TEGRA_RPC_IOCTL_MAGIC, 0x22, long)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_RPC_IOCTL_PORT_LISTEN _IOR(TEGRA_RPC_IOCTL_MAGIC, 0x23, long)
-
 #define TEGRA_RPC_IOCTL_MIN_NR _IOC_NR(TEGRA_RPC_IOCTL_PORT_CREATE)
 #define TEGRA_RPC_IOCTL_MAX_NR _IOC_NR(TEGRA_RPC_IOCTL_PORT_LISTEN)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/tegra_sema.h b/libc/kernel/common/linux/tegra_sema.h
index bb11298..ad00238 100644
--- a/libc/kernel/common/linux/tegra_sema.h
+++ b/libc/kernel/common/linux/tegra_sema.h
@@ -7,18 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_TEGRA_SEMA_H
 #define __LINUX_TEGRA_SEMA_H
-
 #define TEGRA_SEMA_IOCTL_MAGIC 'r'
-
 #define TEGRA_SEMA_IOCTL_WAIT _IOW(TEGRA_SEMA_IOCTL_MAGIC, 0x30, long *)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_SEMA_IOCTL_SIGNAL _IO(TEGRA_SEMA_IOCTL_MAGIC, 0x31)
-
 #define TEGRA_SEMA_IOCTL_MIN_NR _IOC_NR(TEGRA_SEMA_IOCTL_WAIT)
 #define TEGRA_SEMA_IOCTL_MAX_NR _IOC_NR(TEGRA_SEMA_IOCTL_SIGNAL)
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/tegrafb.h b/libc/kernel/common/linux/tegrafb.h
index ea63e04..8bdf464 100644
--- a/libc/kernel/common/linux/tegrafb.h
+++ b/libc/kernel/common/linux/tegrafb.h
@@ -7,86 +7,99 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TEGRAFB_H_
 #define _LINUX_TEGRAFB_H_
-
 #include <linux/fb.h>
 #include <linux/types.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/ioctl.h>
-
 #define TEGRA_FB_WIN_FMT_P1 0
 #define TEGRA_FB_WIN_FMT_P2 1
 #define TEGRA_FB_WIN_FMT_P4 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_FB_WIN_FMT_P8 3
 #define TEGRA_FB_WIN_FMT_B4G4R4A4 4
 #define TEGRA_FB_WIN_FMT_B5G5R5A 5
 #define TEGRA_FB_WIN_FMT_B5G6R5 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_FB_WIN_FMT_AB5G5R5 7
 #define TEGRA_FB_WIN_FMT_B8G8R8A8 12
 #define TEGRA_FB_WIN_FMT_R8G8B8A8 13
 #define TEGRA_FB_WIN_FMT_B6x2G6x2R6x2A8 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_FB_WIN_FMT_R6x2G6x2B6x2A8 15
 #define TEGRA_FB_WIN_FMT_YCbCr422 16
 #define TEGRA_FB_WIN_FMT_YUV422 17
 #define TEGRA_FB_WIN_FMT_YCbCr420P 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_FB_WIN_FMT_YUV420P 19
 #define TEGRA_FB_WIN_FMT_YCbCr422P 20
 #define TEGRA_FB_WIN_FMT_YUV422P 21
 #define TEGRA_FB_WIN_FMT_YCbCr422R 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_FB_WIN_FMT_YUV422R 23
 #define TEGRA_FB_WIN_FMT_YCbCr422RA 24
 #define TEGRA_FB_WIN_FMT_YUV422RA 25
-
 #define TEGRA_FB_WIN_BLEND_NONE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_FB_WIN_BLEND_PREMULT 1
 #define TEGRA_FB_WIN_BLEND_COVERAGE 2
-
-#define TEGRA_FB_WIN_FLAG_INVERT_H (1<<0)
-#define TEGRA_FB_WIN_FLAG_INVERT_V (1<<1)
-#define TEGRA_FB_WIN_FLAG_TILED (1<<2)
-
+#define TEGRA_FB_WIN_FLAG_INVERT_H (1 << 0)
+#define TEGRA_FB_WIN_FLAG_INVERT_V (1 << 1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define TEGRA_FB_WIN_FLAG_TILED (1 << 2)
 struct tegra_fb_windowattr {
  __s32 index;
  __u32 buff_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 flags;
  __u32 blend;
  __u32 offset;
  __u32 offset_u;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 offset_v;
  __u32 stride;
  __u32 stride_uv;
  __u32 pixformat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 x;
  __u32 y;
  __u32 w;
  __u32 h;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 out_x;
  __u32 out_y;
  __u32 out_w;
  __u32 out_h;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 z;
  __u32 pre_syncpt_id;
  __u32 pre_syncpt_val;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_FB_FLIP_N_WINDOWS 3
-
 struct tegra_fb_flip_args {
  struct tegra_fb_windowattr win[TEGRA_FB_FLIP_N_WINDOWS];
  __u32 post_syncpt_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 post_syncpt_val;
 };
-
 struct tegra_fb_modedb {
  struct fb_var_screeninfo *modedb;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 modedb_len;
 };
-
 #define FBIO_TEGRA_SET_NVMAP_FD _IOW('F', 0x40, __u32)
 #define FBIO_TEGRA_FLIP _IOW('F', 0x41, struct tegra_fb_flip_args)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FBIO_TEGRA_GET_MODEDB _IOWR('F', 0x42, struct tegra_fb_modedb)
-
 #endif
-
diff --git a/libc/kernel/common/linux/telephony.h b/libc/kernel/common/linux/telephony.h
index 0c1d83d..f4c6d63 100644
--- a/libc/kernel/common/linux/telephony.h
+++ b/libc/kernel/common/linux/telephony.h
@@ -7,166 +7,184 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef TELEPHONY_H
 #define TELEPHONY_H
-
 #define TELEPHONY_VERSION 3013
-
 #define PHONE_VENDOR_IXJ 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_VENDOR_QUICKNET PHONE_VENDOR_IXJ
 #define PHONE_VENDOR_VOICETRONIX 2
 #define PHONE_VENDOR_ACULAB 3
 #define PHONE_VENDOR_DIGI 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_VENDOR_FRANKLIN 5
-
 #define QTI_PHONEJACK 100
 #define QTI_LINEJACK 300
 #define QTI_PHONEJACK_LITE 400
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define QTI_PHONEJACK_PCI 500
 #define QTI_PHONECARD 600
-
 typedef enum {
  vendor = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  device,
  port,
  codec,
  dsp
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } phone_cap;
-
 struct phone_capability {
  char desc[80];
  phone_cap captype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int cap;
  int handle;
 };
-
 typedef enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  pots = 0,
  pstn,
  handset,
  speaker
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } phone_ports;
-
 #define PHONE_CAPABILITIES _IO ('q', 0x80)
 #define PHONE_CAPABILITIES_LIST _IOR ('q', 0x81, struct phone_capability *)
 #define PHONE_CAPABILITIES_CHECK _IOW ('q', 0x82, struct phone_capability *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct {
  char month[3];
  char day[3];
  char hour[3];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char min[3];
  int numlen;
  char number[11];
  int namelen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[80];
 } PHONE_CID;
-
 #define PHONE_RING _IO ('q', 0x83)
 #define PHONE_HOOKSTATE _IO ('q', 0x84)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_MAXRINGS _IOW ('q', 0x85, char)
 #define PHONE_RING_CADENCE _IOW ('q', 0x86, short)
 #define OLD_PHONE_RING_START _IO ('q', 0x87)
 #define PHONE_RING_START _IOW ('q', 0x87, PHONE_CID *)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_RING_STOP _IO ('q', 0x88)
-
 #define USA_RING_CADENCE 0xC0C0
-
 #define PHONE_REC_CODEC _IOW ('q', 0x89, int)
 #define PHONE_REC_START _IO ('q', 0x8A)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_REC_STOP _IO ('q', 0x8B)
 #define PHONE_REC_DEPTH _IOW ('q', 0x8C, int)
 #define PHONE_FRAME _IOW ('q', 0x8D, int)
 #define PHONE_REC_VOLUME _IOW ('q', 0x8E, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_REC_VOLUME_LINEAR _IOW ('q', 0xDB, int)
 #define PHONE_REC_LEVEL _IO ('q', 0x8F)
-
 #define PHONE_PLAY_CODEC _IOW ('q', 0x90, int)
 #define PHONE_PLAY_START _IO ('q', 0x91)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_PLAY_STOP _IO ('q', 0x92)
 #define PHONE_PLAY_DEPTH _IOW ('q', 0x93, int)
 #define PHONE_PLAY_VOLUME _IOW ('q', 0x94, int)
 #define PHONE_PLAY_VOLUME_LINEAR _IOW ('q', 0xDC, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_PLAY_LEVEL _IO ('q', 0x95)
 #define PHONE_DTMF_READY _IOR ('q', 0x96, int)
 #define PHONE_GET_DTMF _IOR ('q', 0x97, int)
 #define PHONE_GET_DTMF_ASCII _IOR ('q', 0x98, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_DTMF_OOB _IOW ('q', 0x99, int)
 #define PHONE_EXCEPTION _IOR ('q', 0x9A, int)
 #define PHONE_PLAY_TONE _IOW ('q', 0x9B, char)
 #define PHONE_SET_TONE_ON_TIME _IOW ('q', 0x9C, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_SET_TONE_OFF_TIME _IOW ('q', 0x9D, int)
 #define PHONE_GET_TONE_ON_TIME _IO ('q', 0x9E)
 #define PHONE_GET_TONE_OFF_TIME _IO ('q', 0x9F)
 #define PHONE_GET_TONE_STATE _IO ('q', 0xA0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_BUSY _IO ('q', 0xA1)
 #define PHONE_RINGBACK _IO ('q', 0xA2)
 #define PHONE_DIALTONE _IO ('q', 0xA3)
 #define PHONE_CPT_STOP _IO ('q', 0xA4)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_PSTN_SET_STATE _IOW ('q', 0xA4, int)
 #define PHONE_PSTN_GET_STATE _IO ('q', 0xA5)
-
 #define PSTN_ON_HOOK 0
 #define PSTN_RINGING 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PSTN_OFF_HOOK 2
 #define PSTN_PULSE_DIAL 3
-
 #define PHONE_WINK_DURATION _IOW ('q', 0xA6, int)
 #define PHONE_WINK _IOW ('q', 0xAA, int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef enum {
  G723_63 = 1,
  G723_53 = 2,
  TS85 = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TS48 = 4,
  TS41 = 5,
  G728 = 6,
  G729 = 7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ULAW = 8,
  ALAW = 9,
  LINEAR16 = 10,
  LINEAR8 = 11,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  WSS = 12,
  G729B = 13
 } phone_codec;
-
 struct phone_codec_data
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  phone_codec type;
  unsigned short buf_min, buf_opt, buf_max;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PHONE_QUERY_CODEC _IOWR ('q', 0xA7, struct phone_codec_data *)
 #define PHONE_PSTN_LINETEST _IO ('q', 0xA8)
-
 #define PHONE_VAD _IOW ('q', 0xA9, int)
-
 struct phone_except
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned int dtmf_ready:1;
  unsigned int hookstate:1;
  unsigned int pstn_ring:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int caller_id:1;
  unsigned int pstn_wink:1;
  unsigned int f0:1;
  unsigned int f1:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int f2:1;
  unsigned int f3:1;
  unsigned int flash:1;
  unsigned int fc0:1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int fc1:1;
  unsigned int fc2:1;
  unsigned int fc3:1;
  unsigned int reserved:18;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 union telephony_exception {
  struct phone_except bits;
  unsigned int bytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/termios.h b/libc/kernel/common/linux/termios.h
index e28439d..bc4b27b 100644
--- a/libc/kernel/common/linux/termios.h
+++ b/libc/kernel/common/linux/termios.h
@@ -7,12 +7,18 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TERMIOS_H
 #define _LINUX_TERMIOS_H
-
 #include <linux/types.h>
 #include <asm/termios.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/textsearch.h b/libc/kernel/common/linux/textsearch.h
index a921cdd..2b71d09 100644
--- a/libc/kernel/common/linux/textsearch.h
+++ b/libc/kernel/common/linux/textsearch.h
@@ -7,9 +7,15 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_TEXTSEARCH_H
 #define __LINUX_TEXTSEARCH_H
-
 #endif
diff --git a/libc/kernel/common/linux/thread_info.h b/libc/kernel/common/linux/thread_info.h
index 074a1f9..d9457e7 100644
--- a/libc/kernel/common/linux/thread_info.h
+++ b/libc/kernel/common/linux/thread_info.h
@@ -7,17 +7,23 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_THREAD_INFO_H
 #define _LINUX_THREAD_INFO_H
-
 struct restart_block {
  long (*fn)(struct restart_block *);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long arg0, arg1, arg2, arg3;
 };
-
 #include <linux/bitops.h>
 #include <asm/thread_info.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/threads.h b/libc/kernel/common/linux/threads.h
index 5d85878..118bbe7 100644
--- a/libc/kernel/common/linux/threads.h
+++ b/libc/kernel/common/linux/threads.h
@@ -7,17 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_THREADS_H
 #define _LINUX_THREADS_H
-
 #define NR_CPUS 1
-
 #define MIN_THREADS_LEFT_FOR_ROOT 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PID_MAX_DEFAULT (CONFIG_BASE_SMALL ? 0x1000 : 0x8000)
-
 #define PID_MAX_LIMIT (CONFIG_BASE_SMALL ? PAGE_SIZE * 8 :   (sizeof(long) > 4 ? 4 * 1024 * 1024 : PID_MAX_DEFAULT))
-
 #endif
diff --git a/libc/kernel/common/linux/time.h b/libc/kernel/common/linux/time.h
index 3e6e440..00a556d 100644
--- a/libc/kernel/common/linux/time.h
+++ b/libc/kernel/common/linux/time.h
@@ -7,63 +7,68 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TIME_H
 #define _LINUX_TIME_H
-
 #include <linux/types.h>
-
 #ifndef _STRUCT_TIMESPEC
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define _STRUCT_TIMESPEC
 struct timespec {
  time_t tv_sec;
  long tv_nsec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
-
 struct timeval {
  time_t tv_sec;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  suseconds_t tv_usec;
 };
-
 struct timezone {
  int tz_minuteswest;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int tz_dsttime;
 };
-
 #define NFDBITS __NFDBITS
-
 #define FD_SETSIZE __FD_SETSIZE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FD_SET(fd,fdsetp) __FD_SET(fd,fdsetp)
 #define FD_CLR(fd,fdsetp) __FD_CLR(fd,fdsetp)
 #define FD_ISSET(fd,fdsetp) __FD_ISSET(fd,fdsetp)
 #define FD_ZERO(fdsetp) __FD_ZERO(fdsetp)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ITIMER_REAL 0
 #define ITIMER_VIRTUAL 1
 #define ITIMER_PROF 2
-
 struct itimerspec {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct timespec it_interval;
  struct timespec it_value;
 };
-
 struct itimerval {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct timeval it_interval;
  struct timeval it_value;
 };
-
 #define CLOCK_REALTIME 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CLOCK_MONOTONIC 1
 #define CLOCK_PROCESS_CPUTIME_ID 2
 #define CLOCK_THREAD_CPUTIME_ID 3
-
 #define CLOCK_SGI_CYCLE 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_CLOCKS 16
 #define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC)
 #define CLOCKS_MONO CLOCK_MONOTONIC
-
 #define TIMER_ABSTIME 0x01
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/timer.h b/libc/kernel/common/linux/timer.h
index 071a759..a113997 100644
--- a/libc/kernel/common/linux/timer.h
+++ b/libc/kernel/common/linux/timer.h
@@ -7,35 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TIMER_H
 #define _LINUX_TIMER_H
-
 #include <linux/list.h>
 #include <linux/spinlock.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/stddef.h>
-
 struct tvec_t_base_s;
-
 struct timer_list {
  struct list_head entry;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long expires;
-
  void (*function)(unsigned long);
  unsigned long data;
-
  struct tvec_t_base_s *base;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TIMER_INITIALIZER(_function, _expires, _data) {   .function = (_function),   .expires = (_expires),   .data = (_data),   .base = &boot_tvec_bases,   }
-
 #define DEFINE_TIMER(_name, _function, _expires, _data)   struct timer_list _name =   TIMER_INITIALIZER(_function, _expires, _data)
-
 #define try_to_del_timer_sync(t) del_timer(t)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define del_timer_sync(t) del_timer(t)
 #define del_singleshot_timer_sync(t) del_timer_sync(t)
-
 struct hrtimer;
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/times.h b/libc/kernel/common/linux/times.h
index 4ae415c..fe003f3 100644
--- a/libc/kernel/common/linux/times.h
+++ b/libc/kernel/common/linux/times.h
@@ -7,18 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TIMES_H
 #define _LINUX_TIMES_H
-
 #include <linux/types.h>
-
 struct tms {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  clock_t tms_utime;
  clock_t tms_stime;
  clock_t tms_cutime;
  clock_t tms_cstime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/linux/timex.h b/libc/kernel/common/linux/timex.h
index 342470b..a404591 100644
--- a/libc/kernel/common/linux/timex.h
+++ b/libc/kernel/common/linux/timex.h
@@ -7,102 +7,112 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TIMEX_H
 #define _LINUX_TIMEX_H
-
 #include <linux/compiler.h>
 #include <linux/time.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <asm/param.h>
-
 #define SHIFT_KG 6  
 #define SHIFT_KF 16  
 #define SHIFT_KH 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAXTC 6  
-
 #define SHIFT_SCALE 22  
 #define SHIFT_UPDATE (SHIFT_KG + MAXTC)  
 #define SHIFT_USEC 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FINENSEC (1L << (SHIFT_SCALE - 10))  
-
 #define MAXPHASE 512000L  
 #define MAXFREQ (512L << SHIFT_USEC)  
 #define MINSEC 16L  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAXSEC 1200L  
 #define NTP_PHASE_LIMIT (MAXPHASE << 5)  
-
 struct timex {
  unsigned int modes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long offset;
  long freq;
  long maxerror;
  long esterror;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int status;
  long constant;
  long precision;
  long tolerance;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct timeval time;
  long tick;
-
  long ppsfreq;
  long jitter;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int shift;
  long stabil;
  long jitcnt;
  long calcnt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  long errcnt;
  long stbcnt;
-
  int :32; int :32; int :32; int :32;
  int :32; int :32; int :32; int :32;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int :32; int :32; int :32; int :32;
 };
-
 #define ADJ_OFFSET 0x0001  
 #define ADJ_FREQUENCY 0x0002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADJ_MAXERROR 0x0004  
 #define ADJ_ESTERROR 0x0008  
 #define ADJ_STATUS 0x0010  
 #define ADJ_TIMECONST 0x0020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ADJ_TICK 0x4000  
 #define ADJ_OFFSET_SINGLESHOT 0x8001  
-
 #define MOD_OFFSET ADJ_OFFSET
 #define MOD_FREQUENCY ADJ_FREQUENCY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MOD_MAXERROR ADJ_MAXERROR
 #define MOD_ESTERROR ADJ_ESTERROR
 #define MOD_STATUS ADJ_STATUS
 #define MOD_TIMECONST ADJ_TIMECONST
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MOD_CLKB ADJ_TICK
 #define MOD_CLKA ADJ_OFFSET_SINGLESHOT  
-
 #define STA_PLL 0x0001  
 #define STA_PPSFREQ 0x0002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STA_PPSTIME 0x0004  
 #define STA_FLL 0x0008  
-
 #define STA_INS 0x0010  
 #define STA_DEL 0x0020  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STA_UNSYNC 0x0040  
 #define STA_FREQHOLD 0x0080  
-
 #define STA_PPSSIGNAL 0x0100  
 #define STA_PPSJITTER 0x0200  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STA_PPSWANDER 0x0400  
 #define STA_PPSERROR 0x0800  
-
 #define STA_CLOCKERR 0x1000  
-
 #define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER |   STA_PPSERROR | STA_CLOCKERR)  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIME_OK 0  
 #define TIME_INS 1  
 #define TIME_DEL 2  
 #define TIME_OOP 3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIME_WAIT 4  
 #define TIME_ERROR 5  
 #define TIME_BAD TIME_ERROR  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/tiocl.h b/libc/kernel/common/linux/tiocl.h
index db15a8d..2caa18c 100644
--- a/libc/kernel/common/linux/tiocl.h
+++ b/libc/kernel/common/linux/tiocl.h
@@ -7,41 +7,49 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TIOCL_H
 #define _LINUX_TIOCL_H
-
 #define TIOCL_SETSEL 2  
 #define TIOCL_SELCHAR 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCL_SELWORD 1  
 #define TIOCL_SELLINE 2  
 #define TIOCL_SELPOINTER 3  
 #define TIOCL_SELCLEAR 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCL_SELMOUSEREPORT 16  
 #define TIOCL_SELBUTTONMASK 15  
-
 struct tiocl_selection {
  unsigned short xs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short ys;
  unsigned short xe;
  unsigned short ye;
  unsigned short sel_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define TIOCL_PASTESEL 3  
 #define TIOCL_UNBLANKSCREEN 4  
-
 #define TIOCL_SELLOADLUT 5
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCL_GETSHIFTSTATE 6  
 #define TIOCL_GETMOUSEREPORTING 7  
 #define TIOCL_SETVESABLANK 10  
 #define TIOCL_SETKMSGREDIRECT 11  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCL_GETFGCONSOLE 12  
 #define TIOCL_SCROLLCONSOLE 13  
 #define TIOCL_BLANKSCREEN 14  
 #define TIOCL_BLANKEDSCREEN 15  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TIOCL_GETKMSGREDIRECT 17  
-
 #endif
diff --git a/libc/kernel/common/linux/tpa2018d1.h b/libc/kernel/common/linux/tpa2018d1.h
index 4ae31fc..a5e44d2 100644
--- a/libc/kernel/common/linux/tpa2018d1.h
+++ b/libc/kernel/common/linux/tpa2018d1.h
@@ -7,27 +7,32 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TPA2018D1_H
 #define _LINUX_TPA2018D1_H
-
 #include <linux/ioctl.h>
-
 enum tpa2018d1_mode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TPA2018_MODE_OFF,
  TPA2018_MODE_PLAYBACK,
  TPA2018_MODE_RINGTONE,
  TPA2018_MODE_VOICE_CALL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TPA2018_NUM_MODES,
 };
-
 #define TPA2018_IOCTL_MAGIC 'a'
 #define TPA2018_SET_CONFIG _IOW(TPA2018_IOCTL_MAGIC, 1, unsigned)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TPA2018_READ_CONFIG _IOR(TPA2018_IOCTL_MAGIC, 2, unsigned)
 #define TPA2018_SET_PARAM _IOW(TPA2018_IOCTL_MAGIC, 3, unsigned)
 #define TPA2018_SET_MODE _IOW(TPA2018_IOCTL_MAGIC, 4, unsigned)
-
 #endif
-
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/transport_class.h b/libc/kernel/common/linux/transport_class.h
index 71ad084..3d89c36 100644
--- a/libc/kernel/common/linux/transport_class.h
+++ b/libc/kernel/common/linux/transport_class.h
@@ -7,42 +7,45 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _TRANSPORT_CLASS_H_
 #define _TRANSPORT_CLASS_H_
-
 #include <linux/device.h>
 #include <linux/attribute_container.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct transport_container;
-
 struct transport_class {
  struct class class;
  int (*setup)(struct transport_container *, struct device *,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct class_device *);
  int (*configure)(struct transport_container *, struct device *,
  struct class_device *);
  int (*remove)(struct transport_container *, struct device *,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct class_device *);
 };
-
 #define DECLARE_TRANSPORT_CLASS(cls, nm, su, rm, cfg)  struct transport_class cls = {   .class = {   .name = nm,   },   .setup = su,   .remove = rm,   .configure = cfg,  }
-
 struct anon_transport_class {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct transport_class tclass;
  struct attribute_container container;
 };
-
 #define DECLARE_ANON_TRANSPORT_CLASS(cls, mtch, cfg)  struct anon_transport_class cls = {   .tclass = {   .configure = cfg,   },   . container = {   .match = mtch,   },  }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define class_to_transport_class(x)   container_of(x, struct transport_class, class)
-
 struct transport_container {
  struct attribute_container ac;
  struct attribute_group *statistics;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define attribute_container_to_transport_container(x)   container_of(x, struct transport_container, ac)
-
 #endif
diff --git a/libc/kernel/common/linux/tty.h b/libc/kernel/common/linux/tty.h
index b1f2eab..c850203 100644
--- a/libc/kernel/common/linux/tty.h
+++ b/libc/kernel/common/linux/tty.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TTY_H
 #define _LINUX_TTY_H
-
 #define N_CAIF 20  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/types.h b/libc/kernel/common/linux/types.h
index b118db0..90b0f6b 100644
--- a/libc/kernel/common/linux/types.h
+++ b/libc/kernel/common/linux/types.h
@@ -7,31 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_TYPES_H
 #define _LINUX_TYPES_H
-
 #include <linux/posix_types.h>
 #include <asm/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __bitwise__
 #define __bitwise
-
 typedef __u16 __bitwise __le16;
 typedef __u16 __bitwise __be16;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __u32 __bitwise __le32;
 typedef __u32 __bitwise __be32;
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
 typedef __u64 __bitwise __le64;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef __u64 __bitwise __be64;
 #endif
-
 struct ustat {
  __kernel_daddr_t f_tfree;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __kernel_ino_t f_tinode;
  char f_fname[6];
  char f_fpack[6];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/ublock.h b/libc/kernel/common/linux/ublock.h
index aa19a81..59a9aab 100644
--- a/libc/kernel/common/linux/ublock.h
+++ b/libc/kernel/common/linux/ublock.h
@@ -7,75 +7,80 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __UBLOCK_H_
 #define __UBLOCK_H_
-
 #include <linux/types.h>
-
 #define UBLOCK_VERSION 0
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  UBLOCK_INIT_IN = 0,
  UBLOCK_INIT_OUT = 1,
  UBLOCK_READY_IN = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  UBLOCK_READY_OUT = 3,
  UBLOCK_READ_IN = 4,
  UBLOCK_READ_OUT = 5,
  UBLOCK_WRITE_IN = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  UBLOCK_WRITE_OUT = 7,
 };
-
 struct ublock_in_header {
  __u32 seq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 opcode;
 };
-
 struct ublock_out_header {
  __u32 seq;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 opcode;
 };
-
 struct ublock_init_in {
  __u32 version;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 max_buf;
  __u32 index;
 };
-
 struct ublock_init_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 version;
  __u32 max_buf;
  __u64 size;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ublock_ready_in {
  __u32 _unused;
 };
-
 struct ublock_ready_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 _unused;
 };
-
 struct ublock_read_in {
  __u64 offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 length;
 };
-
 struct ublock_read_out {
  __s32 status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 data[];
 };
-
 struct ublock_write_in {
  __u64 offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 length;
  __u8 data[];
 };
-
 struct ublock_write_out {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 status;
 };
-
 #endif
-
diff --git a/libc/kernel/common/linux/udp.h b/libc/kernel/common/linux/udp.h
index e4bf864..53a78c4 100644
--- a/libc/kernel/common/linux/udp.h
+++ b/libc/kernel/common/linux/udp.h
@@ -7,24 +7,29 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_UDP_H
 #define _LINUX_UDP_H
-
 #include <linux/types.h>
-
 struct udphdr {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 source;
  __u16 dest;
  __u16 len;
  __u16 check;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define UDP_CORK 1  
 #define UDP_ENCAP 100  
-
 #define UDP_ENCAP_ESPINUDP_NON_IKE 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UDP_ENCAP_ESPINUDP 2  
-
 #endif
diff --git a/libc/kernel/common/linux/ufs_fs_i.h b/libc/kernel/common/linux/ufs_fs_i.h
index d71adb6..150a800 100644
--- a/libc/kernel/common/linux/ufs_fs_i.h
+++ b/libc/kernel/common/linux/ufs_fs_i.h
@@ -7,27 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_UFS_FS_I_H
 #define _LINUX_UFS_FS_I_H
-
 struct ufs_inode_info {
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __fs32 i_data[15];
  __u8 i_symlink[4*15];
  __fs64 u2_i_data[15];
  } i_u1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 i_flags;
  __u32 i_gen;
  __u32 i_shadow;
  __u32 i_unused1;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 i_unused2;
  __u32 i_oeftflag;
  __u16 i_osync;
  __u32 i_lastfrag;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 i_dir_start_lookup;
  struct inode vfs_inode;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/ufs_fs_sb.h b/libc/kernel/common/linux/ufs_fs_sb.h
index 9c7226d..3241d52 100644
--- a/libc/kernel/common/linux/ufs_fs_sb.h
+++ b/libc/kernel/common/linux/ufs_fs_sb.h
@@ -7,29 +7,37 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_UFS_FS_SB_H
 #define __LINUX_UFS_FS_SB_H
-
 #define UFS_MAX_GROUP_LOADED 8
 #define UFS_CGNO_EMPTY ((unsigned)-1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ufs_sb_private_info;
 struct ufs_cg_private_info;
 struct ufs_csum;
 #define UFS_MAXCSBUFS 31
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct ufs_sb_info {
  struct ufs_sb_private_info * s_uspi;
  struct ufs_csum * s_csp;
  unsigned s_bytesex;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned s_flags;
  struct buffer_head ** s_ucg;
  struct ufs_cg_private_info * s_ucpi[UFS_MAX_GROUP_LOADED];
  unsigned s_cgno[UFS_MAX_GROUP_LOADED];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short s_cg_loaded;
  unsigned s_mount_opt;
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/uinput.h b/libc/kernel/common/linux/uinput.h
index b7a6add..d6fa58b 100644
--- a/libc/kernel/common/linux/uinput.h
+++ b/libc/kernel/common/linux/uinput.h
@@ -7,61 +7,69 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __UINPUT_H_
 #define __UINPUT_H_
-
 #include <linux/input.h>
-
 #define UINPUT_VERSION 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uinput_ff_upload {
  int request_id;
  int retval;
  struct ff_effect effect;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct ff_effect old;
 };
-
 struct uinput_ff_erase {
  int request_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int retval;
  int effect_id;
 };
-
 #define UINPUT_IOCTL_BASE 'U'
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UI_DEV_CREATE _IO(UINPUT_IOCTL_BASE, 1)
 #define UI_DEV_DESTROY _IO(UINPUT_IOCTL_BASE, 2)
-
 #define UI_SET_EVBIT _IOW(UINPUT_IOCTL_BASE, 100, int)
 #define UI_SET_KEYBIT _IOW(UINPUT_IOCTL_BASE, 101, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UI_SET_RELBIT _IOW(UINPUT_IOCTL_BASE, 102, int)
 #define UI_SET_ABSBIT _IOW(UINPUT_IOCTL_BASE, 103, int)
 #define UI_SET_MSCBIT _IOW(UINPUT_IOCTL_BASE, 104, int)
 #define UI_SET_LEDBIT _IOW(UINPUT_IOCTL_BASE, 105, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UI_SET_SNDBIT _IOW(UINPUT_IOCTL_BASE, 106, int)
 #define UI_SET_FFBIT _IOW(UINPUT_IOCTL_BASE, 107, int)
 #define UI_SET_PHYS _IOW(UINPUT_IOCTL_BASE, 108, char*)
 #define UI_SET_SWBIT _IOW(UINPUT_IOCTL_BASE, 109, int)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UI_BEGIN_FF_UPLOAD _IOWR(UINPUT_IOCTL_BASE, 200, struct uinput_ff_upload)
 #define UI_END_FF_UPLOAD _IOW(UINPUT_IOCTL_BASE, 201, struct uinput_ff_upload)
 #define UI_BEGIN_FF_ERASE _IOWR(UINPUT_IOCTL_BASE, 202, struct uinput_ff_erase)
 #define UI_END_FF_ERASE _IOW(UINPUT_IOCTL_BASE, 203, struct uinput_ff_erase)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define EV_UINPUT 0x0101
 #define UI_FF_UPLOAD 1
 #define UI_FF_ERASE 2
-
 #define UINPUT_MAX_NAME_SIZE 80
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct uinput_user_dev {
  char name[UINPUT_MAX_NAME_SIZE];
  struct input_id id;
  int ff_effects_max;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int absmax[ABS_MAX + 1];
  int absmin[ABS_MAX + 1];
  int absfuzz[ABS_MAX + 1];
  int absflat[ABS_MAX + 1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #endif
-
diff --git a/libc/kernel/common/linux/uio.h b/libc/kernel/common/linux/uio.h
index b0895af..e37da21 100644
--- a/libc/kernel/common/linux/uio.h
+++ b/libc/kernel/common/linux/uio.h
@@ -7,21 +7,27 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_UIO_H
 #define __LINUX_UIO_H
-
 #include <linux/compiler.h>
 #include <linux/types.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct iovec
 {
  void __user *iov_base;
  __kernel_size_t iov_len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define UIO_FASTIOV 8
 #define UIO_MAXIOV 1024
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/un.h b/libc/kernel/common/linux/un.h
index 5b51b7c..c2baca6 100644
--- a/libc/kernel/common/linux/un.h
+++ b/libc/kernel/common/linux/un.h
@@ -7,16 +7,22 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_UN_H
 #define _LINUX_UN_H
-
 #define UNIX_PATH_MAX 108
-
 struct sockaddr_un {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  sa_family_t sun_family;
  char sun_path[UNIX_PATH_MAX];
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/unistd.h b/libc/kernel/common/linux/unistd.h
index 6a3ec4c..14023dc 100644
--- a/libc/kernel/common/linux/unistd.h
+++ b/libc/kernel/common/linux/unistd.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_UNISTD_H_
 #define _LINUX_UNISTD_H_
-
 #include <asm/unistd.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/usb.h b/libc/kernel/common/linux/usb.h
index ceee194..2dfbee3 100644
--- a/libc/kernel/common/linux/usb.h
+++ b/libc/kernel/common/linux/usb.h
@@ -7,15 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_USB_H
 #define __LINUX_USB_H
-
 #include <linux/mod_devicetable.h>
 #include <linux/usb_ch9.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_MAJOR 180
 #define USB_DEVICE_MAJOR 189
-
 #endif
diff --git a/libc/kernel/common/linux/usb/f_accessory.h b/libc/kernel/common/linux/usb/f_accessory.h
index 97346b7..52612e5 100644
--- a/libc/kernel/common/linux/usb/f_accessory.h
+++ b/libc/kernel/common/linux/usb/f_accessory.h
@@ -30,15 +30,16 @@
 #define ACCESSORY_STRING_URI 4
 #define ACCESSORY_STRING_SERIAL 5
 #define ACCESSORY_GET_PROTOCOL 51
-#define ACCESSORY_SEND_STRING 52
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ACCESSORY_SEND_STRING 52
 #define ACCESSORY_START 53
 #define ACCESSORY_GET_STRING_MANUFACTURER _IOW('M', 1, char[256])
 #define ACCESSORY_GET_STRING_MODEL _IOW('M', 2, char[256])
-#define ACCESSORY_GET_STRING_DESCRIPTION _IOW('M', 3, char[256])
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+#define ACCESSORY_GET_STRING_DESCRIPTION _IOW('M', 3, char[256])
 #define ACCESSORY_GET_STRING_VERSION _IOW('M', 4, char[256])
 #define ACCESSORY_GET_STRING_URI _IOW('M', 5, char[256])
 #define ACCESSORY_GET_STRING_SERIAL _IOW('M', 6, char[256])
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ACCESSORY_IS_START_REQUESTED _IO('M', 7)
 #endif
diff --git a/libc/kernel/common/linux/usb_ch9.h b/libc/kernel/common/linux/usb_ch9.h
index 74e31e7..b0265b5 100644
--- a/libc/kernel/common/linux/usb_ch9.h
+++ b/libc/kernel/common/linux/usb_ch9.h
@@ -7,382 +7,400 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_USB_CH9_H
 #define __LINUX_USB_CH9_H
-
 #include <linux/types.h>  
-
 #define USB_DIR_OUT 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DIR_IN 0x80  
-
 #define USB_TYPE_MASK (0x03 << 5)
 #define USB_TYPE_STANDARD (0x00 << 5)
 #define USB_TYPE_CLASS (0x01 << 5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_TYPE_VENDOR (0x02 << 5)
 #define USB_TYPE_RESERVED (0x03 << 5)
-
 #define USB_RECIP_MASK 0x1f
 #define USB_RECIP_DEVICE 0x00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_RECIP_INTERFACE 0x01
 #define USB_RECIP_ENDPOINT 0x02
 #define USB_RECIP_OTHER 0x03
-
 #define USB_RECIP_PORT 0x04
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_RECIP_RPIPE 0x05
-
 #define USB_REQ_GET_STATUS 0x00
 #define USB_REQ_CLEAR_FEATURE 0x01
 #define USB_REQ_SET_FEATURE 0x03
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_REQ_SET_ADDRESS 0x05
 #define USB_REQ_GET_DESCRIPTOR 0x06
 #define USB_REQ_SET_DESCRIPTOR 0x07
 #define USB_REQ_GET_CONFIGURATION 0x08
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_REQ_SET_CONFIGURATION 0x09
 #define USB_REQ_GET_INTERFACE 0x0A
 #define USB_REQ_SET_INTERFACE 0x0B
 #define USB_REQ_SYNCH_FRAME 0x0C
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_REQ_SET_ENCRYPTION 0x0D  
 #define USB_REQ_GET_ENCRYPTION 0x0E
 #define USB_REQ_RPIPE_ABORT 0x0E
 #define USB_REQ_SET_HANDSHAKE 0x0F
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_REQ_RPIPE_RESET 0x0F
 #define USB_REQ_GET_HANDSHAKE 0x10
 #define USB_REQ_SET_CONNECTION 0x11
 #define USB_REQ_SET_SECURITY_DATA 0x12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_REQ_GET_SECURITY_DATA 0x13
 #define USB_REQ_SET_WUSB_DATA 0x14
 #define USB_REQ_LOOPBACK_DATA_WRITE 0x15
 #define USB_REQ_LOOPBACK_DATA_READ 0x16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_REQ_SET_INTERFACE_DS 0x17
-
 #define USB_DEVICE_SELF_POWERED 0  
 #define USB_DEVICE_REMOTE_WAKEUP 1  
 #define USB_DEVICE_TEST_MODE 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DEVICE_BATTERY 2  
 #define USB_DEVICE_B_HNP_ENABLE 3  
 #define USB_DEVICE_WUSB_DEVICE 3  
 #define USB_DEVICE_A_HNP_SUPPORT 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DEVICE_A_ALT_HNP_SUPPORT 5  
 #define USB_DEVICE_DEBUG_MODE 6  
-
 #define USB_ENDPOINT_HALT 0  
-
 struct usb_ctrlrequest {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bRequestType;
  __u8 bRequest;
  __le16 wValue;
  __le16 wIndex;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 wLength;
 } __attribute__ ((packed));
-
 #define USB_DT_DEVICE 0x01
 #define USB_DT_CONFIG 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DT_STRING 0x03
 #define USB_DT_INTERFACE 0x04
 #define USB_DT_ENDPOINT 0x05
 #define USB_DT_DEVICE_QUALIFIER 0x06
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DT_OTHER_SPEED_CONFIG 0x07
 #define USB_DT_INTERFACE_POWER 0x08
-
 #define USB_DT_OTG 0x09
 #define USB_DT_DEBUG 0x0a
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DT_INTERFACE_ASSOCIATION 0x0b
-
 #define USB_DT_SECURITY 0x0c
 #define USB_DT_KEY 0x0d
 #define USB_DT_ENCRYPTION_TYPE 0x0e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DT_BOS 0x0f
 #define USB_DT_DEVICE_CAPABILITY 0x10
 #define USB_DT_WIRELESS_ENDPOINT_COMP 0x11
 #define USB_DT_WIRE_ADAPTER 0x21
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DT_RPIPE 0x22
-
 #define USB_DT_CS_DEVICE 0x21
 #define USB_DT_CS_CONFIG 0x22
 #define USB_DT_CS_STRING 0x23
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_DT_CS_INTERFACE 0x24
 #define USB_DT_CS_ENDPOINT 0x25
-
 struct usb_descriptor_header {
  __u8 bLength;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bDescriptorType;
 } __attribute__ ((packed));
-
 struct usb_device_descriptor {
  __u8 bLength;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bDescriptorType;
-
  __le16 bcdUSB;
  __u8 bDeviceClass;
  __u8 bDeviceSubClass;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bDeviceProtocol;
  __u8 bMaxPacketSize0;
  __le16 idVendor;
  __le16 idProduct;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 bcdDevice;
  __u8 iManufacturer;
  __u8 iProduct;
  __u8 iSerialNumber;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bNumConfigurations;
 } __attribute__ ((packed));
-
 #define USB_DT_DEVICE_SIZE 18
-
 #define USB_CLASS_PER_INTERFACE 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_CLASS_AUDIO 1
 #define USB_CLASS_COMM 2
 #define USB_CLASS_HID 3
 #define USB_CLASS_PHYSICAL 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_CLASS_STILL_IMAGE 6
 #define USB_CLASS_PRINTER 7
 #define USB_CLASS_MASS_STORAGE 8
 #define USB_CLASS_HUB 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_CLASS_CDC_DATA 0x0a
 #define USB_CLASS_CSCID 0x0b  
 #define USB_CLASS_CONTENT_SEC 0x0d  
 #define USB_CLASS_VIDEO 0x0e
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_CLASS_WIRELESS_CONTROLLER 0xe0
 #define USB_CLASS_APP_SPEC 0xfe
 #define USB_CLASS_VENDOR_SPEC 0xff
-
 struct usb_config_descriptor {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bLength;
  __u8 bDescriptorType;
-
  __le16 wTotalLength;
  __u8 bNumInterfaces;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bConfigurationValue;
  __u8 iConfiguration;
  __u8 bmAttributes;
  __u8 bMaxPower;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__ ((packed));
-
 #define USB_DT_CONFIG_SIZE 9
-
 #define USB_CONFIG_ATT_ONE (1 << 7)  
 #define USB_CONFIG_ATT_SELFPOWER (1 << 6)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_CONFIG_ATT_WAKEUP (1 << 5)  
 #define USB_CONFIG_ATT_BATTERY (1 << 4)  
-
 struct usb_string_descriptor {
  __u8 bLength;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bDescriptorType;
-
  __le16 wData[1];
 } __attribute__ ((packed));
-
 struct usb_interface_descriptor {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bLength;
  __u8 bDescriptorType;
-
  __u8 bInterfaceNumber;
  __u8 bAlternateSetting;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bNumEndpoints;
  __u8 bInterfaceClass;
  __u8 bInterfaceSubClass;
  __u8 bInterfaceProtocol;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 iInterface;
 } __attribute__ ((packed));
-
 #define USB_DT_INTERFACE_SIZE 9
-
 struct usb_endpoint_descriptor {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bLength;
  __u8 bDescriptorType;
-
  __u8 bEndpointAddress;
  __u8 bmAttributes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 wMaxPacketSize;
  __u8 bInterval;
-
  __u8 bRefresh;
  __u8 bSynchAddress;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__ ((packed));
-
 #define USB_DT_ENDPOINT_SIZE 7
 #define USB_DT_ENDPOINT_AUDIO_SIZE 9  
-
 #define USB_ENDPOINT_NUMBER_MASK 0x0f  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_ENDPOINT_DIR_MASK 0x80
-
 #define USB_ENDPOINT_XFERTYPE_MASK 0x03  
 #define USB_ENDPOINT_XFER_CONTROL 0
 #define USB_ENDPOINT_XFER_ISOC 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_ENDPOINT_XFER_BULK 2
 #define USB_ENDPOINT_XFER_INT 3
 #define USB_ENDPOINT_MAX_ADJUSTABLE 0x80
-
 struct usb_qualifier_descriptor {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bLength;
  __u8 bDescriptorType;
-
  __le16 bcdUSB;
  __u8 bDeviceClass;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bDeviceSubClass;
  __u8 bDeviceProtocol;
  __u8 bMaxPacketSize0;
  __u8 bNumConfigurations;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bRESERVED;
 } __attribute__ ((packed));
-
 struct usb_otg_descriptor {
  __u8 bLength;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bDescriptorType;
-
  __u8 bmAttributes;
 } __attribute__ ((packed));
-
 #define USB_OTG_SRP (1 << 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_OTG_HNP (1 << 1)  
-
 struct usb_debug_descriptor {
  __u8 bLength;
  __u8 bDescriptorType;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bDebugInEndpoint;
  __u8 bDebugOutEndpoint;
 };
-
 struct usb_interface_assoc_descriptor {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bLength;
  __u8 bDescriptorType;
-
  __u8 bFirstInterface;
  __u8 bInterfaceCount;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bFunctionClass;
  __u8 bFunctionSubClass;
  __u8 bFunctionProtocol;
  __u8 iFunction;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__ ((packed));
-
 struct usb_security_descriptor {
  __u8 bLength;
  __u8 bDescriptorType;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 wTotalLength;
  __u8 bNumEncryptionTypes;
 };
-
 struct usb_key_descriptor {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bLength;
  __u8 bDescriptorType;
-
  __u8 tTKID[3];
  __u8 bReserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bKeyData[0];
 };
-
 struct usb_encryption_descriptor {
  __u8 bLength;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bDescriptorType;
-
  __u8 bEncryptionType;
 #define USB_ENC_TYPE_UNSECURE 0
 #define USB_ENC_TYPE_WIRED 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_ENC_TYPE_CCM_1 2  
 #define USB_ENC_TYPE_RSA_1 3  
  __u8 bEncryptionValue;
  __u8 bAuthKeyIndex;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct usb_bos_descriptor {
  __u8 bLength;
  __u8 bDescriptorType;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __le16 wTotalLength;
  __u8 bNumDeviceCaps;
 };
-
 struct usb_dev_cap_header {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bLength;
  __u8 bDescriptorType;
  __u8 bDevCapabilityType;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_CAP_TYPE_WIRELESS_USB 1
-
 struct usb_wireless_cap_descriptor {
  __u8 bLength;
  __u8 bDescriptorType;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bDevCapabilityType;
-
  __u8 bmAttributes;
 #define USB_WIRELESS_P2P_DRD (1 << 1)
 #define USB_WIRELESS_BEACON_MASK (3 << 2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_WIRELESS_BEACON_SELF (1 << 2)
 #define USB_WIRELESS_BEACON_DIRECTED (2 << 2)
 #define USB_WIRELESS_BEACON_NONE (3 << 2)
  __le16 wPHYRates;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_WIRELESS_PHY_53 (1 << 0)  
 #define USB_WIRELESS_PHY_80 (1 << 1)
 #define USB_WIRELESS_PHY_107 (1 << 2)  
 #define USB_WIRELESS_PHY_160 (1 << 3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_WIRELESS_PHY_200 (1 << 4)  
 #define USB_WIRELESS_PHY_320 (1 << 5)
 #define USB_WIRELESS_PHY_400 (1 << 6)
 #define USB_WIRELESS_PHY_480 (1 << 7)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bmTFITXPowerInfo;
  __u8 bmFFITXPowerInfo;
  __le16 bmBandGroup;
  __u8 bReserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct usb_wireless_ep_comp_descriptor {
  __u8 bLength;
  __u8 bDescriptorType;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bMaxBurst;
  __u8 bMaxSequence;
  __le16 wMaxStreamDelay;
  __le16 wOverTheAirPacketSize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bOverTheAirInterval;
  __u8 bmCompAttributes;
 #define USB_ENDPOINT_SWITCH_MASK 0x03  
 #define USB_ENDPOINT_SWITCH_NO 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USB_ENDPOINT_SWITCH_SWITCH 1
 #define USB_ENDPOINT_SWITCH_SCALE 2
 };
-
 struct usb_handshake {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 bMessageNumber;
  __u8 bStatus;
  __u8 tTKID[3];
  __u8 bReserved;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 CDID[16];
  __u8 nonce[16];
  __u8 MIC[8];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usb_connection_context {
  __u8 CHID[16];
  __u8 CDID[16];
  __u8 CK[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum usb_device_speed {
  USB_SPEED_UNKNOWN = 0,
  USB_SPEED_LOW, USB_SPEED_FULL,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  USB_SPEED_HIGH,
  USB_SPEED_VARIABLE,
 };
-
 enum usb_device_state {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  USB_STATE_NOTATTACHED = 0,
-
  USB_STATE_ATTACHED,
  USB_STATE_POWERED,
  USB_STATE_UNAUTHENTICATED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  USB_STATE_RECONNECTING,
  USB_STATE_DEFAULT,
  USB_STATE_ADDRESS,
  USB_STATE_CONFIGURED,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  USB_STATE_SUSPENDED
-
 };
-
 #endif
diff --git a/libc/kernel/common/linux/usbdevice_fs.h b/libc/kernel/common/linux/usbdevice_fs.h
index f36efdc..3b586b1 100644
--- a/libc/kernel/common/linux/usbdevice_fs.h
+++ b/libc/kernel/common/linux/usbdevice_fs.h
@@ -7,117 +7,132 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_USBDEVICE_FS_H
 #define _LINUX_USBDEVICE_FS_H
-
 #include <linux/types.h>
-
 #define USBDEVICE_SUPER_MAGIC 0x9fa2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usbdevfs_ctrltransfer {
  __u8 bRequestType;
  __u8 bRequest;
  __u16 wValue;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 wIndex;
  __u16 wLength;
  __u32 timeout;
  void __user *data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct usbdevfs_bulktransfer {
  unsigned int ep;
  unsigned int len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int timeout;
  void __user *data;
 };
-
 struct usbdevfs_setinterface {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int interface;
  unsigned int altsetting;
 };
-
 struct usbdevfs_disconnectsignal {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int signr;
  void __user *context;
 };
-
 #define USBDEVFS_MAXDRIVERNAME 255
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usbdevfs_getdriver {
  unsigned int interface;
  char driver[USBDEVFS_MAXDRIVERNAME + 1];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct usbdevfs_connectinfo {
  unsigned int devnum;
  unsigned char slow;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_URB_SHORT_NOT_OK 1
 #define USBDEVFS_URB_ISO_ASAP 2
-
 #define USBDEVFS_URB_TYPE_ISO 0
 #define USBDEVFS_URB_TYPE_INTERRUPT 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_URB_TYPE_CONTROL 2
 #define USBDEVFS_URB_TYPE_BULK 3
-
 struct usbdevfs_iso_packet_desc {
  unsigned int length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int actual_length;
  unsigned int status;
 };
-
 struct usbdevfs_urb {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char type;
  unsigned char endpoint;
  int status;
  unsigned int flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void __user *buffer;
  int buffer_length;
  int actual_length;
  int start_frame;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int number_of_packets;
  int error_count;
  unsigned int signr;
  void *usercontext;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
 };
-
 struct usbdevfs_ioctl {
  int ifno;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int ioctl_code;
  void __user *data;
 };
-
 struct usbdevfs_hub_portinfo {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char nports;
  char port [127];
 };
-
 #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_BULK _IOWR('U', 2, struct usbdevfs_bulktransfer)
 #define USBDEVFS_RESETEP _IOR('U', 3, unsigned int)
 #define USBDEVFS_SETINTERFACE _IOR('U', 4, struct usbdevfs_setinterface)
 #define USBDEVFS_SETCONFIGURATION _IOR('U', 5, unsigned int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_GETDRIVER _IOW('U', 8, struct usbdevfs_getdriver)
 #define USBDEVFS_SUBMITURB _IOR('U', 10, struct usbdevfs_urb)
 #define USBDEVFS_SUBMITURB32 _IOR('U', 10, struct usbdevfs_urb32)
 #define USBDEVFS_DISCARDURB _IO('U', 11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_REAPURB _IOW('U', 12, void *)
 #define USBDEVFS_REAPURB32 _IOW('U', 12, u32)
 #define USBDEVFS_REAPURBNDELAY _IOW('U', 13, void *)
 #define USBDEVFS_REAPURBNDELAY32 _IOW('U', 13, u32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_DISCSIGNAL _IOR('U', 14, struct usbdevfs_disconnectsignal)
 #define USBDEVFS_CLAIMINTERFACE _IOR('U', 15, unsigned int)
 #define USBDEVFS_RELEASEINTERFACE _IOR('U', 16, unsigned int)
 #define USBDEVFS_CONNECTINFO _IOW('U', 17, struct usbdevfs_connectinfo)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_IOCTL _IOWR('U', 18, struct usbdevfs_ioctl)
 #define USBDEVFS_IOCTL32 _IOWR('U', 18, struct usbdevfs_ioctl32)
 #define USBDEVFS_HUB_PORTINFO _IOR('U', 19, struct usbdevfs_hub_portinfo)
 #define USBDEVFS_RESET _IO('U', 20)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define USBDEVFS_CLEAR_HALT _IOR('U', 21, unsigned int)
 #define USBDEVFS_DISCONNECT _IO('U', 22)
 #define USBDEVFS_CONNECT _IO('U', 23)
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/user.h b/libc/kernel/common/linux/user.h
index 1c0b9cb..cfe5721 100644
--- a/libc/kernel/common/linux/user.h
+++ b/libc/kernel/common/linux/user.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #include <asm/user.h>
diff --git a/libc/kernel/common/linux/utime.h b/libc/kernel/common/linux/utime.h
index 4b1ba9c..1423290 100644
--- a/libc/kernel/common/linux/utime.h
+++ b/libc/kernel/common/linux/utime.h
@@ -7,14 +7,20 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_UTIME_H
 #define _LINUX_UTIME_H
-
 struct utimbuf {
  time_t actime;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  time_t modtime;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/utsname.h b/libc/kernel/common/linux/utsname.h
index ea6ee89..ea8c640 100644
--- a/libc/kernel/common/linux/utsname.h
+++ b/libc/kernel/common/linux/utsname.h
@@ -7,38 +7,45 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_UTSNAME_H
 #define _LINUX_UTSNAME_H
-
 #define __OLD_UTS_LEN 8
-
 struct oldold_utsname {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char sysname[9];
  char nodename[9];
  char release[9];
  char version[9];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char machine[9];
 };
-
 #define __NEW_UTS_LEN 64
-
 struct old_utsname {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char sysname[65];
  char nodename[65];
  char release[65];
  char version[65];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char machine[65];
 };
-
 struct new_utsname {
  char sysname[65];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char nodename[65];
  char release[65];
  char version[65];
  char machine[65];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char domainname[65];
 };
-
 #endif
diff --git a/libc/kernel/common/linux/version.h b/libc/kernel/common/linux/version.h
index beff0ed..469cb05 100644
--- a/libc/kernel/common/linux/version.h
+++ b/libc/kernel/common/linux/version.h
@@ -7,6 +7,13 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #define LINUX_VERSION_CODE 132626
diff --git a/libc/kernel/common/linux/vfs.h b/libc/kernel/common/linux/vfs.h
index 70636e9..a52b136 100644
--- a/libc/kernel/common/linux/vfs.h
+++ b/libc/kernel/common/linux/vfs.h
@@ -7,11 +7,17 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_VFS_H
 #define _LINUX_VFS_H
-
 #include <linux/statfs.h>
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/videodev.h b/libc/kernel/common/linux/videodev.h
index 5a95f82..ee55483 100644
--- a/libc/kernel/common/linux/videodev.h
+++ b/libc/kernel/common/linux/videodev.h
@@ -7,299 +7,338 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_VIDEODEV_H
 #define __LINUX_VIDEODEV_H
-
 #include <linux/types.h>
 #include <linux/ioctl.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/videodev2.h>
-
 #define VID_TYPE_CAPTURE 1  
 #define VID_TYPE_TUNER 2  
 #define VID_TYPE_TELETEXT 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_TYPE_OVERLAY 8  
 #define VID_TYPE_CHROMAKEY 16  
 #define VID_TYPE_CLIPPING 32  
 #define VID_TYPE_FRAMERAM 64  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_TYPE_SCALES 128  
 #define VID_TYPE_MONOCHROME 256  
 #define VID_TYPE_SUBCAPTURE 512  
 #define VID_TYPE_MPEG_DECODER 1024  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_TYPE_MPEG_ENCODER 2048  
 #define VID_TYPE_MJPEG_DECODER 4096  
 #define VID_TYPE_MJPEG_ENCODER 8192  
-
 struct video_capability
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  char name[32];
  int type;
  int channels;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int audios;
  int maxwidth;
  int maxheight;
  int minwidth;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int minheight;
 };
-
 struct video_channel
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int channel;
  char name[32];
  int tuners;
  __u32 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_VC_TUNER 1  
 #define VIDEO_VC_AUDIO 2  
  __u16 type;
 #define VIDEO_TYPE_TV 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_TYPE_CAMERA 2
  __u16 norm;
 };
-
 struct video_tuner
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  int tuner;
  char name[32];
  unsigned long rangelow, rangehigh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 flags;
 #define VIDEO_TUNER_PAL 1
 #define VIDEO_TUNER_NTSC 2
 #define VIDEO_TUNER_SECAM 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_TUNER_LOW 8  
 #define VIDEO_TUNER_NORM 16  
 #define VIDEO_TUNER_STEREO_ON 128  
 #define VIDEO_TUNER_RDS_ON 256  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_TUNER_MBS_ON 512  
  __u16 mode;
 #define VIDEO_MODE_PAL 0
 #define VIDEO_MODE_NTSC 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_MODE_SECAM 2
 #define VIDEO_MODE_AUTO 3
  __u16 signal;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct video_picture
 {
  __u16 brightness;
  __u16 hue;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 colour;
  __u16 contrast;
  __u16 whiteness;
  __u16 depth;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 palette;
 #define VIDEO_PALETTE_GREY 1  
 #define VIDEO_PALETTE_HI240 2  
 #define VIDEO_PALETTE_RGB565 3  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_PALETTE_RGB24 4  
 #define VIDEO_PALETTE_RGB32 5  
 #define VIDEO_PALETTE_RGB555 6  
 #define VIDEO_PALETTE_YUV422 7  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_PALETTE_YUYV 8
 #define VIDEO_PALETTE_UYVY 9  
 #define VIDEO_PALETTE_YUV420 10
 #define VIDEO_PALETTE_YUV411 11  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_PALETTE_RAW 12  
 #define VIDEO_PALETTE_YUV422P 13  
 #define VIDEO_PALETTE_YUV411P 14  
 #define VIDEO_PALETTE_YUV420P 15  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_PALETTE_YUV410P 16  
 #define VIDEO_PALETTE_PLANAR 13  
 #define VIDEO_PALETTE_COMPONENT 7  
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct video_audio
 {
  int audio;
  __u16 volume;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 bass, treble;
  __u32 flags;
 #define VIDEO_AUDIO_MUTE 1
 #define VIDEO_AUDIO_MUTABLE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_AUDIO_VOLUME 4
 #define VIDEO_AUDIO_BASS 8
 #define VIDEO_AUDIO_TREBLE 16
 #define VIDEO_AUDIO_BALANCE 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[16];
 #define VIDEO_SOUND_MONO 1
 #define VIDEO_SOUND_STEREO 2
 #define VIDEO_SOUND_LANG1 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_SOUND_LANG2 8
  __u16 mode;
  __u16 balance;
  __u16 step;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct video_clip
 {
  __s32 x,y;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 width, height;
  struct video_clip *next;
 };
-
 struct video_window
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u32 x,y;
  __u32 width,height;
  __u32 chromakey;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 flags;
  struct video_clip __user *clips;
  int clipcount;
 #define VIDEO_WINDOW_INTERLACE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDEO_WINDOW_CHROMAKEY 16  
 #define VIDEO_CLIP_BITMAP -1
-
 #define VIDEO_CLIPMAP_SIZE (128 * 625)
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct video_capture
 {
  __u32 x,y;
  __u32 width, height;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 decimation;
  __u16 flags;
 #define VIDEO_CAPTURE_ODD 0  
 #define VIDEO_CAPTURE_EVEN 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct video_buffer
 {
  void *base;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int height,width;
  int depth;
  int bytesperline;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct video_mmap
 {
  unsigned int frame;
  int height,width;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned int format;
 };
-
 struct video_key
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 key[8];
  __u32 flags;
 };
-
 struct video_mbuf
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  int size;
  int frames;
  int offsets[VIDEO_MAX_FRAME];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define VIDEO_NO_UNIT (-1)
-
 struct video_unit
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int video;
  int vbi;
  int radio;
  int audio;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int teletext;
 };
-
 struct vbi_format {
  __u32 sampling_rate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 samples_per_line;
  __u32 sample_format;
  __s32 start[2];
  __u32 count[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 flags;
 #define VBI_UNSYNC 1  
 #define VBI_INTERLACED 2  
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct video_info
 {
  __u32 frame_count;
  __u32 h_size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 v_size;
  __u32 smpte_timecode;
  __u32 picture_type;
  __u32 temporal_reference;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 user_data[256];
-
 };
-
 struct video_play_mode
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int mode;
  int p1;
  int p2;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct video_code
 {
  char loadwhat[16];
  int datasize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 *data;
 };
-
 #define VIDIOCGCAP _IOR('v',1,struct video_capability)  
 #define VIDIOCGCHAN _IOWR('v',2,struct video_channel)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOCSCHAN _IOW('v',3,struct video_channel)  
 #define VIDIOCGTUNER _IOWR('v',4,struct video_tuner)  
 #define VIDIOCSTUNER _IOW('v',5,struct video_tuner)  
 #define VIDIOCGPICT _IOR('v',6,struct video_picture)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOCSPICT _IOW('v',7,struct video_picture)  
 #define VIDIOCCAPTURE _IOW('v',8,int)  
 #define VIDIOCGWIN _IOR('v',9, struct video_window)  
 #define VIDIOCSWIN _IOW('v',10, struct video_window)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOCGFBUF _IOR('v',11, struct video_buffer)  
 #define VIDIOCSFBUF _IOW('v',12, struct video_buffer)  
 #define VIDIOCKEY _IOR('v',13, struct video_key)  
 #define VIDIOCGFREQ _IOR('v',14, unsigned long)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOCSFREQ _IOW('v',15, unsigned long)  
 #define VIDIOCGAUDIO _IOR('v',16, struct video_audio)  
 #define VIDIOCSAUDIO _IOW('v',17, struct video_audio)  
 #define VIDIOCSYNC _IOW('v',18, int)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOCMCAPTURE _IOW('v',19, struct video_mmap)  
 #define VIDIOCGMBUF _IOR('v',20, struct video_mbuf)  
 #define VIDIOCGUNIT _IOR('v',21, struct video_unit)  
 #define VIDIOCGCAPTURE _IOR('v',22, struct video_capture)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOCSCAPTURE _IOW('v',23, struct video_capture)  
 #define VIDIOCSPLAYMODE _IOW('v',24, struct video_play_mode)  
 #define VIDIOCSWRITEMODE _IOW('v',25, int)  
 #define VIDIOCGPLAYINFO _IOR('v',26, struct video_info)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOCSMICROCODE _IOW('v',27, struct video_code)  
 #define VIDIOCGVBIFMT _IOR('v',28, struct vbi_format)  
 #define VIDIOCSVBIFMT _IOW('v',29, struct vbi_format)  
-
 #define BASE_VIDIOCPRIVATE 192  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_WRITE_MPEG_AUD 0
 #define VID_WRITE_MPEG_VID 1
 #define VID_WRITE_OSD 2
 #define VID_WRITE_TTX 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_WRITE_CC 4
 #define VID_WRITE_MJPEG 5
-
 #define VID_PLAY_VID_OUT_MODE 0
-
 #define VID_PLAY_GENLOCK 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_PLAY_NORMAL 2
 #define VID_PLAY_PAUSE 3
 #define VID_PLAY_SINGLE_FRAME 4
 #define VID_PLAY_FAST_FORWARD 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_PLAY_SLOW_MOTION 6
 #define VID_PLAY_IMMEDIATE_NORMAL 7
 #define VID_PLAY_SWITCH_CHANNELS 8
 #define VID_PLAY_FREEZE_FRAME 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_PLAY_STILL_MODE 10
 #define VID_PLAY_MASTER_MODE 11
-
 #define VID_PLAY_MASTER_NONE 1
 #define VID_PLAY_MASTER_VIDEO 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_PLAY_MASTER_AUDIO 3
 #define VID_PLAY_ACTIVE_SCANLINES 12
-
 #define VID_PLAY_RESET 13
 #define VID_PLAY_END_MARK 14
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
-
diff --git a/libc/kernel/common/linux/videodev2.h b/libc/kernel/common/linux/videodev2.h
index 3a91510..4b4cadf 100644
--- a/libc/kernel/common/linux/videodev2.h
+++ b/libc/kernel/common/linux/videodev2.h
@@ -7,1203 +7,1312 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_VIDEODEV2_H
 #define __LINUX_VIDEODEV2_H
-
 #include <sys/time.h>
 #include <linux/compiler.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/ioctl.h>
 #include <linux/types.h>
-
 #define VIDEO_MAX_FRAME 32
-
 #define VID_TYPE_CAPTURE 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_TYPE_TUNER 2  
 #define VID_TYPE_TELETEXT 4  
 #define VID_TYPE_OVERLAY 8  
 #define VID_TYPE_CHROMAKEY 16  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_TYPE_CLIPPING 32  
 #define VID_TYPE_FRAMERAM 64  
 #define VID_TYPE_SCALES 128  
 #define VID_TYPE_MONOCHROME 256  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_TYPE_SUBCAPTURE 512  
 #define VID_TYPE_MPEG_DECODER 1024  
 #define VID_TYPE_MPEG_ENCODER 2048  
 #define VID_TYPE_MJPEG_DECODER 4096  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VID_TYPE_MJPEG_ENCODER 8192  
-
 #define v4l2_fourcc(a, b, c, d)  ((__u32)(a) | ((__u32)(b) << 8) | ((__u32)(c) << 16) | ((__u32)(d) << 24))
-
 enum v4l2_field {
  V4L2_FIELD_ANY = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_FIELD_NONE = 1,
  V4L2_FIELD_TOP = 2,
  V4L2_FIELD_BOTTOM = 3,
  V4L2_FIELD_INTERLACED = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_FIELD_SEQ_TB = 5,
  V4L2_FIELD_SEQ_BT = 6,
  V4L2_FIELD_ALTERNATE = 7,
  V4L2_FIELD_INTERLACED_TB = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_FIELD_INTERLACED_BT = 9,
 };
 #define V4L2_FIELD_HAS_TOP(field)   ((field) == V4L2_FIELD_TOP ||  (field) == V4L2_FIELD_INTERLACED ||  (field) == V4L2_FIELD_INTERLACED_TB ||  (field) == V4L2_FIELD_INTERLACED_BT ||  (field) == V4L2_FIELD_SEQ_TB ||  (field) == V4L2_FIELD_SEQ_BT)
 #define V4L2_FIELD_HAS_BOTTOM(field)   ((field) == V4L2_FIELD_BOTTOM ||  (field) == V4L2_FIELD_INTERLACED ||  (field) == V4L2_FIELD_INTERLACED_TB ||  (field) == V4L2_FIELD_INTERLACED_BT ||  (field) == V4L2_FIELD_SEQ_TB ||  (field) == V4L2_FIELD_SEQ_BT)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_FIELD_HAS_BOTH(field)   ((field) == V4L2_FIELD_INTERLACED ||  (field) == V4L2_FIELD_INTERLACED_TB ||  (field) == V4L2_FIELD_INTERLACED_BT ||  (field) == V4L2_FIELD_SEQ_TB ||  (field) == V4L2_FIELD_SEQ_BT)
-
 enum v4l2_buf_type {
  V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
  V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
  V4L2_BUF_TYPE_VBI_CAPTURE = 4,
  V4L2_BUF_TYPE_VBI_OUTPUT = 5,
  V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
-
  V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
  V4L2_BUF_TYPE_PRIVATE = 0x80,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_ctrl_type {
  V4L2_CTRL_TYPE_INTEGER = 1,
  V4L2_CTRL_TYPE_BOOLEAN = 2,
  V4L2_CTRL_TYPE_MENU = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_CTRL_TYPE_BUTTON = 4,
  V4L2_CTRL_TYPE_INTEGER64 = 5,
  V4L2_CTRL_TYPE_CTRL_CLASS = 6,
+ V4L2_CTRL_TYPE_STRING = 7,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum v4l2_tuner_type {
  V4L2_TUNER_RADIO = 1,
  V4L2_TUNER_ANALOG_TV = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_TUNER_DIGITAL_TV = 3,
 };
-
 enum v4l2_memory {
  V4L2_MEMORY_MMAP = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MEMORY_USERPTR = 2,
  V4L2_MEMORY_OVERLAY = 3,
 };
-
 enum v4l2_colorspace {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_COLORSPACE_SMPTE170M = 1,
-
  V4L2_COLORSPACE_SMPTE240M = 2,
-
  V4L2_COLORSPACE_REC709 = 3,
-
  V4L2_COLORSPACE_BT878 = 4,
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_COLORSPACE_470_SYSTEM_M = 5,
  V4L2_COLORSPACE_470_SYSTEM_BG = 6,
-
  V4L2_COLORSPACE_JPEG = 7,
-
  V4L2_COLORSPACE_SRGB = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum v4l2_priority {
  V4L2_PRIORITY_UNSET = 0,
  V4L2_PRIORITY_BACKGROUND = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_PRIORITY_INTERACTIVE = 2,
  V4L2_PRIORITY_RECORD = 3,
  V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_rect {
  __s32 left;
  __s32 top;
  __s32 width;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 height;
 };
-
 struct v4l2_fract {
  __u32 numerator;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 denominator;
 };
-
 struct v4l2_capability {
  __u8 driver[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 card[32];
  __u8 bus_info[32];
  __u32 version;
  __u32 capabilities;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 reserved[4];
 };
-
 #define V4L2_CAP_VIDEO_CAPTURE 0x00000001  
 #define V4L2_CAP_VIDEO_OUTPUT 0x00000002  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CAP_VIDEO_OVERLAY 0x00000004  
 #define V4L2_CAP_VBI_CAPTURE 0x00000010  
 #define V4L2_CAP_VBI_OUTPUT 0x00000020  
 #define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080  
 #define V4L2_CAP_RDS_CAPTURE 0x00000100  
 #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200  
 #define V4L2_CAP_HW_FREQ_SEEK 0x00000400  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CAP_TUNER 0x00010000  
 #define V4L2_CAP_AUDIO 0x00020000  
 #define V4L2_CAP_RADIO 0x00040000  
-
 #define V4L2_CAP_READWRITE 0x01000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CAP_ASYNCIO 0x02000000  
 #define V4L2_CAP_STREAMING 0x04000000  
-
 struct v4l2_pix_format {
  __u32 width;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 height;
  __u32 pixelformat;
  enum v4l2_field field;
  __u32 bytesperline;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 sizeimage;
  enum v4l2_colorspace colorspace;
  __u32 priv;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1')  
 #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4')  
 #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O')  
 #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P')  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q')  
 #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R')  
 #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3')  
 #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3')  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4')  
 #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4')  
 #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y')  
 #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ')  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')  
 #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9')  
 #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2')  
 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y')  
 #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y')  
 #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P')  
 #define V4L2_PIX_FMT_YUV411P v4l2_fourcc('4', '1', '1', 'P')  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_Y41P v4l2_fourcc('Y', '4', '1', 'P')  
 #define V4L2_PIX_FMT_YUV444 v4l2_fourcc('Y', '4', '4', '4')  
 #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O')  
 #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P')  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4')  
-
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')  
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')  
 #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6')  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')  
-
 #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9')  
 #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2')  
 #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V')  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')  
 #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2')  
-
 #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1')  
 #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G')  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0')
-
 #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0')
 #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2')  
 #define V4L2_PIX_FMT_W1S_PATT v4l2_fourcc('P', 'A', 'T', '1')  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G')  
 #define V4L2_PIX_FMT_JPEG v4l2_fourcc('J', 'P', 'E', 'G')  
 #define V4L2_PIX_FMT_DV v4l2_fourcc('d', 'v', 's', 'd')  
 #define V4L2_PIX_FMT_MPEG v4l2_fourcc('M', 'P', 'E', 'G')  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')  
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')  
 #define V4L2_PIX_FMT_PWC1 v4l2_fourcc('P', 'W', 'C', '1')  
 #define V4L2_PIX_FMT_PWC2 v4l2_fourcc('P', 'W', 'C', '2')  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_ET61X251 v4l2_fourcc('E', '6', '2', '5')  
 #define V4L2_PIX_FMT_SPCA501 v4l2_fourcc('S', '5', '0', '1')  
 #define V4L2_PIX_FMT_SPCA505 v4l2_fourcc('S', '5', '0', '5')  
 #define V4L2_PIX_FMT_SPCA508 v4l2_fourcc('S', '5', '0', '8')  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_PIX_FMT_SPCA561 v4l2_fourcc('S', '5', '6', '1')  
 #define V4L2_PIX_FMT_PAC207 v4l2_fourcc('P', '2', '0', '7')  
 #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G')  
 #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U')  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_fmtdesc {
  __u32 index;
  enum v4l2_buf_type type;
  __u32 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 description[32];
  __u32 pixelformat;
  __u32 reserved[4];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_FMT_FLAG_COMPRESSED 0x0001
-
 enum v4l2_frmsizetypes {
  V4L2_FRMSIZE_TYPE_DISCRETE = 1,
  V4L2_FRMSIZE_TYPE_CONTINUOUS = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_FRMSIZE_TYPE_STEPWISE = 3,
 };
-
 struct v4l2_frmsize_discrete {
  __u32 width;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 height;
 };
-
 struct v4l2_frmsize_stepwise {
  __u32 min_width;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 max_width;
  __u32 step_width;
  __u32 min_height;
  __u32 max_height;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 step_height;
 };
-
 struct v4l2_frmsizeenum {
  __u32 index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 pixel_format;
  __u32 type;
-
  union {
  struct v4l2_frmsize_discrete discrete;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct v4l2_frmsize_stepwise stepwise;
  };
-
  __u32 reserved[2];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_frmivaltypes {
  V4L2_FRMIVAL_TYPE_DISCRETE = 1,
  V4L2_FRMIVAL_TYPE_CONTINUOUS = 2,
  V4L2_FRMIVAL_TYPE_STEPWISE = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct v4l2_frmival_stepwise {
  struct v4l2_fract min;
  struct v4l2_fract max;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct v4l2_fract step;
 };
-
 struct v4l2_frmivalenum {
  __u32 index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 pixel_format;
  __u32 width;
  __u32 height;
  __u32 type;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  struct v4l2_fract discrete;
  struct v4l2_frmival_stepwise stepwise;
  };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 reserved[2];
 };
-
 struct v4l2_timecode {
  __u32 type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 flags;
  __u8 frames;
  __u8 seconds;
  __u8 minutes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 hours;
  __u8 userbits[4];
 };
-
 #define V4L2_TC_TYPE_24FPS 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TC_TYPE_25FPS 2
 #define V4L2_TC_TYPE_30FPS 3
 #define V4L2_TC_TYPE_50FPS 4
 #define V4L2_TC_TYPE_60FPS 5
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TC_FLAG_DROPFRAME 0x0001  
 #define V4L2_TC_FLAG_COLORFRAME 0x0002
 #define V4L2_TC_USERBITS_field 0x000C
 #define V4L2_TC_USERBITS_USERDEFINED 0x0000
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TC_USERBITS_8BITCHARS 0x0008
-
 struct v4l2_jpegcompression {
  int quality;
-
  int APPn;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int APP_len;
  char APP_data[60];
-
  int COM_len;
  char COM_data[60];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 jpeg_markers;
-
 #define V4L2_JPEG_MARKER_DHT (1<<3)  
 #define V4L2_JPEG_MARKER_DQT (1<<4)  
 #define V4L2_JPEG_MARKER_DRI (1<<5)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_JPEG_MARKER_COM (1<<6)  
 #define V4L2_JPEG_MARKER_APP (1<<7)  
 };
-
 struct v4l2_requestbuffers {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 count;
  enum v4l2_buf_type type;
  enum v4l2_memory memory;
  __u32 reserved[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct v4l2_buffer {
  __u32 index;
  enum v4l2_buf_type type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 bytesused;
  __u32 flags;
  enum v4l2_field field;
  struct timeval timestamp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct v4l2_timecode timecode;
  __u32 sequence;
-
  enum v4l2_memory memory;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 offset;
  unsigned long userptr;
  } m;
  __u32 length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 input;
  __u32 reserved;
 };
-
 #define V4L2_BUF_FLAG_MAPPED 0x0001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_BUF_FLAG_QUEUED 0x0002  
 #define V4L2_BUF_FLAG_DONE 0x0004  
 #define V4L2_BUF_FLAG_KEYFRAME 0x0008  
 #define V4L2_BUF_FLAG_PFRAME 0x0010  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_BUF_FLAG_BFRAME 0x0020  
 #define V4L2_BUF_FLAG_TIMECODE 0x0100  
 #define V4L2_BUF_FLAG_INPUT 0x0200  
-
 struct v4l2_framebuffer {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 capability;
  __u32 flags;
-
  void *base;
  struct v4l2_pix_format fmt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
 #define V4L2_FBUF_CAP_CHROMAKEY 0x0002
 #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
 #define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
 #define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
 #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080
-
 #define V4L2_FBUF_FLAG_PRIMARY 0x0001
 #define V4L2_FBUF_FLAG_OVERLAY 0x0002
 #define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008
 #define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010
 #define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020
 #define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_clip {
  struct v4l2_rect c;
  struct v4l2_clip __user *next;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_window {
  struct v4l2_rect w;
  enum v4l2_field field;
  __u32 chromakey;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct v4l2_clip __user *clips;
  __u32 clipcount;
  void __user *bitmap;
  __u8 global_alpha;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct v4l2_captureparm {
  __u32 capability;
  __u32 capturemode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct v4l2_fract timeperframe;
  __u32 extendedmode;
  __u32 readbuffers;
  __u32 reserved[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define V4L2_MODE_HIGHQUALITY 0x0001  
 #define V4L2_CAP_TIMEPERFRAME 0x1000  
-
 struct v4l2_outputparm {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 capability;
  __u32 outputmode;
  struct v4l2_fract timeperframe;
  __u32 extendedmode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 writebuffers;
  __u32 reserved[4];
 };
-
 struct v4l2_cropcap {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  enum v4l2_buf_type type;
  struct v4l2_rect bounds;
  struct v4l2_rect defrect;
  struct v4l2_fract pixelaspect;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct v4l2_crop {
  enum v4l2_buf_type type;
  struct v4l2_rect c;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 typedef __u64 v4l2_std_id;
-
 #define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
 #define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
 #define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
 #define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
 #define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
 #define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
-
 #define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
 #define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
 #define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
-
 #define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
 #define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000)
 #define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000)
-
 #define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
 #define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
 #define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
 #define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
 #define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
 #define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000)
-
 #define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
 #define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_STD_MN (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC)
 #define V4L2_STD_B (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B)
 #define V4L2_STD_GH (V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H)
 #define V4L2_STD_DK (V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |  V4L2_STD_PAL_B1 |  V4L2_STD_PAL_G)
 #define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |  V4L2_STD_PAL_D1 |  V4L2_STD_PAL_K)
 #define V4L2_STD_PAL (V4L2_STD_PAL_BG |  V4L2_STD_PAL_DK |  V4L2_STD_PAL_H |  V4L2_STD_PAL_I)
 #define V4L2_STD_NTSC (V4L2_STD_NTSC_M |  V4L2_STD_NTSC_M_JP |  V4L2_STD_NTSC_M_KR)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |  V4L2_STD_SECAM_K |  V4L2_STD_SECAM_K1)
 #define V4L2_STD_SECAM (V4L2_STD_SECAM_B |  V4L2_STD_SECAM_G |  V4L2_STD_SECAM_H |  V4L2_STD_SECAM_DK |  V4L2_STD_SECAM_L |  V4L2_STD_SECAM_LC)
-
 #define V4L2_STD_525_60 (V4L2_STD_PAL_M |  V4L2_STD_PAL_60 |  V4L2_STD_NTSC |  V4L2_STD_NTSC_443)
 #define V4L2_STD_625_50 (V4L2_STD_PAL |  V4L2_STD_PAL_N |  V4L2_STD_PAL_Nc |  V4L2_STD_SECAM)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |  V4L2_STD_ATSC_16_VSB)
-
 #define V4L2_STD_UNKNOWN 0
 #define V4L2_STD_ALL (V4L2_STD_525_60 |  V4L2_STD_625_50)
-
 struct v4l2_standard {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 index;
  v4l2_std_id id;
  __u8 name[24];
  struct v4l2_fract frameperiod;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 framelines;
  __u32 reserved[4];
 };
-
 struct v4l2_input {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 index;
  __u8 name[32];
  __u32 type;
  __u32 audioset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 tuner;
  v4l2_std_id std;
  __u32 status;
  __u32 reserved[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define V4L2_INPUT_TYPE_TUNER 1
 #define V4L2_INPUT_TYPE_CAMERA 2
-
 #define V4L2_IN_ST_NO_POWER 0x00000001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_ST_NO_SIGNAL 0x00000002
 #define V4L2_IN_ST_NO_COLOR 0x00000004
-
 #define V4L2_IN_ST_NO_H_LOCK 0x00000100  
 #define V4L2_IN_ST_COLOR_KILL 0x00000200  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_ST_NO_SYNC 0x00010000  
 #define V4L2_IN_ST_NO_EQU 0x00020000  
 #define V4L2_IN_ST_NO_CARRIER 0x00040000  
-
 #define V4L2_IN_ST_MACROVISION 0x01000000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_IN_ST_NO_ACCESS 0x02000000  
 #define V4L2_IN_ST_VTR 0x04000000  
-
 struct v4l2_output {
  __u32 index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 name[32];
  __u32 type;
  __u32 audioset;
  __u32 modulator;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  v4l2_std_id std;
  __u32 reserved[4];
 };
-
 #define V4L2_OUTPUT_TYPE_MODULATOR 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_OUTPUT_TYPE_ANALOG 2
 #define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
-
 struct v4l2_control {
  __u32 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 value;
 };
-
 struct v4l2_ext_control {
  __u32 id;
- __u32 reserved2[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u32 size;
+ __u32 reserved2[1];
  union {
  __s32 value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s64 value64;
+ char *string;
  void *reserved;
  };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__ ((packed));
-
 struct v4l2_ext_controls {
  __u32 ctrl_class;
  __u32 count;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 error_idx;
  __u32 reserved[2];
  struct v4l2_ext_control *controls;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CTRL_CLASS_USER 0x00980000  
 #define V4L2_CTRL_CLASS_MPEG 0x00990000  
 #define V4L2_CTRL_CLASS_CAMERA 0x009a0000  
-
 #define V4L2_CTRL_ID_MASK (0x0fffffff)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL)
 #define V4L2_CTRL_DRIVER_PRIV(id) (((id) & 0xffff) >= 0x1000)
-
 struct v4l2_queryctrl {
  __u32 id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  enum v4l2_ctrl_type type;
  __u8 name[32];
  __s32 minimum;
  __s32 maximum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 step;
  __s32 default_value;
  __u32 flags;
  __u32 reserved[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct v4l2_querymenu {
  __u32 id;
  __u32 index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 name[32];
  __u32 reserved;
 };
-
 #define V4L2_CTRL_FLAG_DISABLED 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CTRL_FLAG_GRABBED 0x0002
 #define V4L2_CTRL_FLAG_READ_ONLY 0x0004
 #define V4L2_CTRL_FLAG_UPDATE 0x0008
 #define V4L2_CTRL_FLAG_INACTIVE 0x0010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CTRL_FLAG_SLIDER 0x0020
-
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
-
 #define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
 #define V4L2_CID_USER_BASE V4L2_CID_BASE
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_PRIVATE_BASE 0x08000000
-
 #define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)
 #define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
 #define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
 #define V4L2_CID_HUE (V4L2_CID_BASE+3)
 #define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)
 #define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)
 #define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)
 #define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)
 #define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11)  
 #define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
 #define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)
 #define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)
 #define V4L2_CID_GAMMA (V4L2_CID_BASE+16)
 #define V4L2_CID_WHITENESS (V4L2_CID_GAMMA)  
 #define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)
 #define V4L2_CID_GAIN (V4L2_CID_BASE+19)
 #define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
 #define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
 #define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
-
 #define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
 enum v4l2_power_line_frequency {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
  V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1,
  V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25)
 #define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26)
 #define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27)
 #define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
 #define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30)
 #define V4L2_CID_COLORFX (V4L2_CID_BASE+31)
 #define V4L2_CID_ROTATE (V4L2_CID_BASE+32)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_BG_COLOR (V4L2_CID_BASE+33)
 #define V4L2_CID_LASTP1 (V4L2_CID_BASE+34)
 enum v4l2_colorfx {
  V4L2_COLORFX_NONE = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_COLORFX_BW = 1,
  V4L2_COLORFX_SEPIA = 2,
 };
-
 #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
-
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0)
 enum v4l2_mpeg_stream_type {
  V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1,
  V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2,
  V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3,
  V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5,
 };
 #define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)
 #define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)
 #define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)
 #define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)
 #define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7)
 enum v4l2_mpeg_stream_vbi_fmt {
  V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,
  V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100)
 enum v4l2_mpeg_audio_sampling_freq {
  V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
  V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
 };
 #define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_audio_encoding {
  V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
  V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
  V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
  V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
 };
 #define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_audio_l1_bitrate {
  V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
  V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
  V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
  V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
  V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
  V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
  V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
  V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
  V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
  V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
  V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103)
 enum v4l2_mpeg_audio_l2_bitrate {
  V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
  V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2,
  V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3,
  V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4,
  V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
  V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
  V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
  V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
  V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
  V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
  V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104)
 enum v4l2_mpeg_audio_l3_bitrate {
  V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
  V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2,
  V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3,
  V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5,
  V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6,
  V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
  V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
  V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
  V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
  V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
 };
 #define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105)
 enum v4l2_mpeg_audio_mode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_MODE_STEREO = 0,
  V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
  V4L2_MPEG_AUDIO_MODE_DUAL = 2,
  V4L2_MPEG_AUDIO_MODE_MONO = 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106)
 enum v4l2_mpeg_audio_mode_extension {
  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
  V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107)
 enum v4l2_mpeg_audio_emphasis {
  V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
  V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
 };
 #define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108)
 enum v4l2_mpeg_audio_crc {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_CRC_NONE = 0,
  V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
 };
 #define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE+110)
 #define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+111)
 enum v4l2_mpeg_audio_ac3_bitrate {
  V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
  V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2,
  V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3,
  V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5,
  V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6,
  V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
  V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
  V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
  V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
  V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
  V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
  V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
  V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
  V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
 };
-
 #define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_video_encoding {
  V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
  V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
  V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201)
 enum v4l2_mpeg_video_aspect {
  V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
  V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
  V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202)
 #define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203)
 #define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204)
 #define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206)
 enum v4l2_mpeg_video_bitrate_mode {
  V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
  V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207)
 #define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208)
 #define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210)
 #define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211)
-
 #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
 #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
  V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
  V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1)
 #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2)
 enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2,
  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
  V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3)
 enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
  V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
 };
 #define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4)
 enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
  V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
 };
 #define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6)
 enum v4l2_mpeg_cx2341x_video_median_filter_type {
  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2,
  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
  V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
 };
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7)
 #define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8)
 #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
 #define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11)
-
 #define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
 #define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
-
 #define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum v4l2_exposure_auto_type {
  V4L2_EXPOSURE_AUTO = 0,
  V4L2_EXPOSURE_MANUAL = 1,
  V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  V4L2_EXPOSURE_APERTURE_PRIORITY = 3
 };
 #define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2)
 #define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4)
 #define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5)
 #define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6)
 #define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8)
 #define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9)
-
 #define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)
 #define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12)
-
 #define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)
 #define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)
 #define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE+15)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16)
-
 struct v4l2_tuner {
  __u32 index;
  __u8 name[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  enum v4l2_tuner_type type;
  __u32 capability;
  __u32 rangelow;
  __u32 rangehigh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 rxsubchans;
  __u32 audmode;
  __s32 signal;
  __s32 afc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 reserved[4];
 };
-
 struct v4l2_modulator {
  __u32 index;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 name[32];
  __u32 capability;
  __u32 rangelow;
  __u32 rangehigh;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 txsubchans;
  __u32 reserved[4];
 };
-
 #define V4L2_TUNER_CAP_LOW 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_CAP_NORM 0x0002
 #define V4L2_TUNER_CAP_STEREO 0x0010
 #define V4L2_TUNER_CAP_LANG2 0x0020
 #define V4L2_TUNER_CAP_SAP 0x0020
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_CAP_LANG1 0x0040
-
 #define V4L2_TUNER_SUB_MONO 0x0001
 #define V4L2_TUNER_SUB_STEREO 0x0002
 #define V4L2_TUNER_SUB_LANG2 0x0004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_SUB_SAP 0x0004
 #define V4L2_TUNER_SUB_LANG1 0x0008
-
 #define V4L2_TUNER_MODE_MONO 0x0000
 #define V4L2_TUNER_MODE_STEREO 0x0001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_TUNER_MODE_LANG2 0x0002
 #define V4L2_TUNER_MODE_SAP 0x0002
 #define V4L2_TUNER_MODE_LANG1 0x0003
 #define V4L2_TUNER_MODE_LANG1_LANG2 0x0004
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_frequency {
  __u32 tuner;
  enum v4l2_tuner_type type;
  __u32 frequency;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 reserved[8];
 };
-
 struct v4l2_hw_freq_seek {
  __u32 tuner;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  enum v4l2_tuner_type type;
  __u32 seek_upward;
  __u32 wrap_around;
  __u32 reserved[8];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct v4l2_audio {
  __u32 index;
  __u8 name[32];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 capability;
  __u32 mode;
  __u32 reserved[2];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_AUDCAP_STEREO 0x00001
 #define V4L2_AUDCAP_AVL 0x00002
-
 #define V4L2_AUDMODE_AVL 0x00001
-
 struct v4l2_audioout {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 index;
  __u8 name[32];
  __u32 capability;
  __u32 mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 reserved[2];
 };
-
 #define V4L2_ENC_IDX_FRAME_I (0)
 #define V4L2_ENC_IDX_FRAME_P (1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_ENC_IDX_FRAME_B (2)
 #define V4L2_ENC_IDX_FRAME_MASK (0xf)
-
 struct v4l2_enc_idx_entry {
  __u64 offset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 pts;
  __u32 length;
  __u32 flags;
  __u32 reserved[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define V4L2_ENC_IDX_ENTRIES (64)
 struct v4l2_enc_idx {
  __u32 entries;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 entries_cap;
  __u32 reserved[4];
  struct v4l2_enc_idx_entry entry[V4L2_ENC_IDX_ENTRIES];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_ENC_CMD_START (0)
 #define V4L2_ENC_CMD_STOP (1)
 #define V4L2_ENC_CMD_PAUSE (2)
 #define V4L2_ENC_CMD_RESUME (3)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_ENC_CMD_STOP_AT_GOP_END (1 << 0)
-
 struct v4l2_encoder_cmd {
  __u32 cmd;
  __u32 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  union {
  struct {
  __u32 data[8];
  } raw;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  };
 };
-
 struct v4l2_vbi_format {
  __u32 sampling_rate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 offset;
  __u32 samples_per_line;
  __u32 sample_format;
  __s32 start[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 count[2];
  __u32 flags;
  __u32 reserved[2];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_VBI_UNSYNC (1 << 0)
 #define V4L2_VBI_INTERLACED (1 << 1)
-
 struct v4l2_sliced_vbi_format {
  __u16 service_set;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 service_lines[2][24];
  __u32 io_size;
  __u32 reserved[2];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_SLICED_TELETEXT_B (0x0001)
-
 #define V4L2_SLICED_VPS (0x0400)
-
 #define V4L2_SLICED_CAPTION_525 (0x1000)
-
 #define V4L2_SLICED_WSS_625 (0x4000)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525)
 #define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
-
 struct v4l2_sliced_vbi_cap {
  __u16 service_set;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 service_lines[2][24];
  enum v4l2_buf_type type;
  __u32 reserved[3];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_sliced_vbi_data {
  __u32 id;
  __u32 field;
  __u32 line;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 reserved;
  __u8 data[48];
 };
-
 struct v4l2_format {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  enum v4l2_buf_type type;
  union {
  struct v4l2_pix_format pix;
  struct v4l2_window win;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct v4l2_vbi_format vbi;
  struct v4l2_sliced_vbi_format sliced;
  __u8 raw_data[200];
  } fmt;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct v4l2_streamparm {
  enum v4l2_buf_type type;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct v4l2_captureparm capture;
  struct v4l2_outputparm output;
  __u8 raw_data[200];
  } parm;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define V4L2_CHIP_MATCH_HOST 0  
 #define V4L2_CHIP_MATCH_I2C_DRIVER 1  
 #define V4L2_CHIP_MATCH_I2C_ADDR 2  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define V4L2_CHIP_MATCH_AC97 3  
-
 struct v4l2_dbg_match {
  __u32 type;
  union {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 addr;
  char name[32];
  };
 } __attribute__ ((packed));
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct v4l2_dbg_register {
  struct v4l2_dbg_match match;
  __u32 size;
  __u64 reg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u64 val;
 } __attribute__ ((packed));
-
 struct v4l2_dbg_chip_ident {
  struct v4l2_dbg_match match;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ident;
  __u32 revision;
 } __attribute__ ((packed));
-
 struct v4l2_chip_ident_old {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 match_type;
  __u32 match_chip;
  __u32 ident;
  __u32 revision;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability)
 #define VIDIOC_RESERVED _IO('V', 1)
 #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format)
 #define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format)
 #define VIDIOC_REQBUFS _IOWR('V', 8, struct v4l2_requestbuffers)
 #define VIDIOC_QUERYBUF _IOWR('V', 9, struct v4l2_buffer)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_G_FBUF _IOR('V', 10, struct v4l2_framebuffer)
 #define VIDIOC_S_FBUF _IOW('V', 11, struct v4l2_framebuffer)
 #define VIDIOC_OVERLAY _IOW('V', 14, int)
 #define VIDIOC_QBUF _IOWR('V', 15, struct v4l2_buffer)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_DQBUF _IOWR('V', 17, struct v4l2_buffer)
 #define VIDIOC_STREAMON _IOW('V', 18, int)
 #define VIDIOC_STREAMOFF _IOW('V', 19, int)
 #define VIDIOC_G_PARM _IOWR('V', 21, struct v4l2_streamparm)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_S_PARM _IOWR('V', 22, struct v4l2_streamparm)
 #define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id)
 #define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id)
 #define VIDIOC_ENUMSTD _IOWR('V', 25, struct v4l2_standard)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_ENUMINPUT _IOWR('V', 26, struct v4l2_input)
 #define VIDIOC_G_CTRL _IOWR('V', 27, struct v4l2_control)
 #define VIDIOC_S_CTRL _IOWR('V', 28, struct v4l2_control)
 #define VIDIOC_G_TUNER _IOWR('V', 29, struct v4l2_tuner)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_S_TUNER _IOW('V', 30, struct v4l2_tuner)
 #define VIDIOC_G_AUDIO _IOR('V', 33, struct v4l2_audio)
 #define VIDIOC_S_AUDIO _IOW('V', 34, struct v4l2_audio)
 #define VIDIOC_QUERYCTRL _IOWR('V', 36, struct v4l2_queryctrl)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_QUERYMENU _IOWR('V', 37, struct v4l2_querymenu)
 #define VIDIOC_G_INPUT _IOR('V', 38, int)
 #define VIDIOC_S_INPUT _IOWR('V', 39, int)
 #define VIDIOC_G_OUTPUT _IOR('V', 46, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_S_OUTPUT _IOWR('V', 47, int)
 #define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct v4l2_output)
 #define VIDIOC_G_AUDOUT _IOR('V', 49, struct v4l2_audioout)
 #define VIDIOC_S_AUDOUT _IOW('V', 50, struct v4l2_audioout)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_G_MODULATOR _IOWR('V', 54, struct v4l2_modulator)
 #define VIDIOC_S_MODULATOR _IOW('V', 55, struct v4l2_modulator)
 #define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct v4l2_frequency)
 #define VIDIOC_S_FREQUENCY _IOW('V', 57, struct v4l2_frequency)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_CROPCAP _IOWR('V', 58, struct v4l2_cropcap)
 #define VIDIOC_G_CROP _IOWR('V', 59, struct v4l2_crop)
 #define VIDIOC_S_CROP _IOW('V', 60, struct v4l2_crop)
 #define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct v4l2_jpegcompression)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct v4l2_jpegcompression)
 #define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id)
 #define VIDIOC_TRY_FMT _IOWR('V', 64, struct v4l2_format)
 #define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct v4l2_audio)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct v4l2_audioout)
 #define VIDIOC_G_PRIORITY _IOR('V', 67, enum v4l2_priority)
 #define VIDIOC_S_PRIORITY _IOW('V', 68, enum v4l2_priority)
 #define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct v4l2_sliced_vbi_cap)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_LOG_STATUS _IO('V', 70)
 #define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct v4l2_ext_controls)
 #define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct v4l2_ext_controls)
 #define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct v4l2_ext_controls)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct v4l2_frmsizeenum)
 #define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct v4l2_frmivalenum)
 #define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct v4l2_enc_idx)
 #define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct v4l2_encoder_cmd)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct v4l2_encoder_cmd)
-
 #define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)
 #define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct v4l2_dbg_register)
-
 #define VIDIOC_DBG_G_CHIP_IDENT _IOWR('V', 81, struct v4l2_dbg_chip_ident)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_G_CHIP_IDENT_OLD _IOWR('V', 81, struct v4l2_chip_ident_old)
-
 #define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
-
 #ifdef __OLD_VIDIOC_
-
 #define VIDIOC_OVERLAY_OLD _IOWR('V', 14, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_S_PARM_OLD _IOW('V', 22, struct v4l2_streamparm)
 #define VIDIOC_S_CTRL_OLD _IOW('V', 28, struct v4l2_control)
 #define VIDIOC_G_AUDIO_OLD _IOWR('V', 33, struct v4l2_audio)
 #define VIDIOC_G_AUDOUT_OLD _IOWR('V', 49, struct v4l2_audioout)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VIDIOC_CROPCAP_OLD _IOR('V', 58, struct v4l2_cropcap)
 #endif
-
 #define BASE_VIDIOC_PRIVATE 192  
-
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/vmalloc.h b/libc/kernel/common/linux/vmalloc.h
index c7fd103..7928ee3 100644
--- a/libc/kernel/common/linux/vmalloc.h
+++ b/libc/kernel/common/linux/vmalloc.h
@@ -7,34 +7,40 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_VMALLOC_H
 #define _LINUX_VMALLOC_H
-
 #include <linux/spinlock.h>
 #include <asm/page.h>  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct vm_area_struct;
-
 #define VM_IOREMAP 0x00000001  
 #define VM_ALLOC 0x00000002  
 #define VM_MAP 0x00000004  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VM_USERMAP 0x00000008  
 #define VM_VPAGES 0x00000010  
-
 #ifndef IOREMAP_MAX_ORDER
 #define IOREMAP_MAX_ORDER (7 + PAGE_SHIFT)  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 struct vm_struct {
  void *addr;
  unsigned long size;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long flags;
  struct page **pages;
  unsigned int nr_pages;
  unsigned long phys_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct vm_struct *next;
 };
-
 #endif
diff --git a/libc/kernel/common/linux/vt.h b/libc/kernel/common/linux/vt.h
index 9992b3a..b3f9090 100644
--- a/libc/kernel/common/linux/vt.h
+++ b/libc/kernel/common/linux/vt.h
@@ -7,62 +7,72 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_VT_H
 #define _LINUX_VT_H
-
 #define MIN_NR_CONSOLES 1  
 #define MAX_NR_CONSOLES 63  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_NR_USER_CONSOLES 63  
-
 #define VT_OPENQRY 0x5600  
-
 struct vt_mode {
  char mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char waitv;
  short relsig;
  short acqsig;
  short frsig;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define VT_GETMODE 0x5601  
 #define VT_SETMODE 0x5602  
 #define VT_AUTO 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VT_PROCESS 0x01  
 #define VT_ACKACQ 0x02  
-
 struct vt_stat {
  unsigned short v_active;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short v_signal;
  unsigned short v_state;
 };
 #define VT_GETSTATE 0x5603  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VT_SENDSIG 0x5604  
-
 #define VT_RELDISP 0x5605  
-
 #define VT_ACTIVATE 0x5606  
 #define VT_WAITACTIVE 0x5607  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VT_DISALLOCATE 0x5608  
-
 struct vt_sizes {
  unsigned short v_rows;
  unsigned short v_cols;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short v_scrollsize;
 };
 #define VT_RESIZE 0x5609  
-
 struct vt_consize {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short v_rows;
  unsigned short v_cols;
  unsigned short v_vlin;
  unsigned short v_clin;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned short v_vcol;
  unsigned short v_ccol;
 };
 #define VT_RESIZEX 0x560A  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VT_LOCKSWITCH 0x560B  
 #define VT_UNLOCKSWITCH 0x560C  
 #define VT_GETHIFONTMASK 0x560D  
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/vt_buffer.h b/libc/kernel/common/linux/vt_buffer.h
index 46ce79d..3bea9a1 100644
--- a/libc/kernel/common/linux/vt_buffer.h
+++ b/libc/kernel/common/linux/vt_buffer.h
@@ -7,24 +7,33 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_VT_BUFFER_H_
 #define _LINUX_VT_BUFFER_H_
-
 #ifndef VT_BUF_HAVE_RW
 #define scr_writew(val, addr) (*(addr) = (val))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define scr_readw(addr) (*(addr))
 #define scr_memcpyw(d, s, c) memcpy(d, s, c)
 #define scr_memmovew(d, s, c) memmove(d, s, c)
 #define VT_BUF_HAVE_MEMCPYW
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define VT_BUF_HAVE_MEMMOVEW
 #endif
-
 #ifndef VT_BUF_HAVE_MEMSETW
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef VT_BUF_HAVE_MEMCPYW
 #endif
 #ifndef VT_BUF_HAVE_MEMMOVEW
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/wait.h b/libc/kernel/common/linux/wait.h
index 7d9aa68..7eb2124 100644
--- a/libc/kernel/common/linux/wait.h
+++ b/libc/kernel/common/linux/wait.h
@@ -7,24 +7,30 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_WAIT_H
 #define _LINUX_WAIT_H
-
 #define WNOHANG 0x00000001
 #define WUNTRACED 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WSTOPPED WUNTRACED
 #define WEXITED 0x00000004
 #define WCONTINUED 0x00000008
 #define WNOWAIT 0x01000000  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define __WNOTHREAD 0x20000000  
 #define __WALL 0x40000000  
 #define __WCLONE 0x80000000  
-
 #define P_ALL 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define P_PID 1
 #define P_PGID 2
-
 #endif
diff --git a/libc/kernel/common/linux/wanrouter.h b/libc/kernel/common/linux/wanrouter.h
index 8f25a86..b0bd45a 100644
--- a/libc/kernel/common/linux/wanrouter.h
+++ b/libc/kernel/common/linux/wanrouter.h
@@ -7,350 +7,390 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ROUTER_H
 #define _ROUTER_H
-
 #define ROUTER_NAME "wanrouter"  
 #define ROUTER_VERSION 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ROUTER_RELEASE 1  
 #define ROUTER_IOCTL 'W'  
 #define ROUTER_MAGIC 0x524D4157L  
-
 enum router_ioctls
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  ROUTER_SETUP = ROUTER_IOCTL<<8,
  ROUTER_DOWN,
  ROUTER_STAT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ROUTER_IFNEW,
  ROUTER_IFDEL,
  ROUTER_IFSTAT,
  ROUTER_USER = (ROUTER_IOCTL<<8)+16,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  ROUTER_USER_MAX = (ROUTER_IOCTL<<8)+31
 };
-
 #define PROC_DATA_PORT_0 0x8000  
 #define PROC_DATA_PORT_1 0x8001  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLPID_IP 0xCC  
 #define NLPID_SNAP 0x80  
 #define NLPID_CLNP 0x81  
 #define NLPID_ESIS 0x82  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NLPID_ISIS 0x83  
 #define NLPID_Q933 0x08  
-
 #define WAN_IFNAME_SZ 15  
 #define WAN_DRVNAME_SZ 15  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAN_ADDRESS_SZ 31  
 #define USED_BY_FIELD 8  
-
 #define UDP_PTPIPE_TYPE 0x01
 #define UDP_FPIPE_TYPE 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define UDP_CPIPE_TYPE 0x03
 #define UDP_DRVSTATS_TYPE 0x04
 #define UDP_INVALID_TYPE 0x05
-
 #define CMD_OK 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_TIMEOUT 0xFF  
-
 #define UDP_PKT_FRM_STACK 0x00
 #define UDP_PKT_FRM_NETWORK 0x01
-
 #define MAX_INTR_TEST_COUNTER 100
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CRITICAL_IN_ISR 0xA1
 #define CRITICAL_INTR_HANDLED 0xB1
-
 typedef struct wan_x25_conf
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned lo_pvc;
  unsigned hi_pvc;
  unsigned lo_svc;
  unsigned hi_svc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned hdlc_window;
  unsigned pkt_window;
  unsigned t1;
  unsigned t2;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned t4;
  unsigned n2;
  unsigned t10_t20;
  unsigned t11_t21;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned t12_t22;
  unsigned t13_t23;
  unsigned t16_t26;
  unsigned t28;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned r10_r20;
  unsigned r12_r22;
  unsigned r13_r23;
  unsigned ccitt_compat;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned x25_conf_opt;
  unsigned char LAPB_hdlc_only;
  unsigned char logging;
  unsigned char oob_on_modem;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } wan_x25_conf_t;
-
 typedef struct wan_fr_conf
 {
  unsigned signalling;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned t391;
  unsigned t392;
  unsigned n391;
  unsigned n392;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned n393;
  unsigned dlci_num;
  unsigned dlci[100];
 } wan_fr_conf_t;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct wan_ppp_conf
 {
  unsigned restart_tmr;
  unsigned auth_rsrt_tmr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned auth_wait_tmr;
  unsigned mdm_fail_tmr;
  unsigned dtr_drop_tmr;
  unsigned connect_tmout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned conf_retry;
  unsigned term_retry;
  unsigned fail_retry;
  unsigned auth_retry;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned auth_options;
  unsigned ip_options;
  char authenticator;
  char ip_mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } wan_ppp_conf_t;
-
 typedef struct wan_chdlc_conf
 {
  unsigned char ignore_dcd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char ignore_cts;
  unsigned char ignore_keepalive;
  unsigned char hdlc_streaming;
  unsigned char receive_only;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned keepalive_tx_tmr;
  unsigned keepalive_rx_tmr;
  unsigned keepalive_err_margin;
  unsigned slarp_timer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } wan_chdlc_conf_t;
-
 typedef struct wandev_conf
 {
  unsigned magic;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned config_id;
-
  unsigned ioport;
  unsigned long maddr;
  unsigned msize;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int irq;
  int dma;
  char S514_CPU_no[1];
  unsigned PCI_slot_no;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char auto_pci_cfg;
  char comm_port;
  unsigned bps;
  unsigned mtu;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned udp_port;
  unsigned char ttl;
  unsigned char ft1;
  char interface;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char clocking;
  char line_coding;
  char station;
  char connection;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char read_mode;
  char receive_only;
  char tty;
  unsigned tty_major;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned tty_minor;
  unsigned tty_mode;
  char backup;
  unsigned hw_opt[4];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned reserved[4];
-
  unsigned data_size;
  void* data;
  union
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  {
  wan_x25_conf_t x25;
  wan_ppp_conf_t ppp;
  wan_fr_conf_t fr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  wan_chdlc_conf_t chdlc;
  } u;
 } wandev_conf_t;
-
 #define WANCONFIG_X25 101  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANCONFIG_FR 102  
 #define WANCONFIG_PPP 103  
 #define WANCONFIG_CHDLC 104  
 #define WANCONFIG_BSC 105  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANCONFIG_HDLC 106  
 #define WANCONFIG_MPPP 107  
-
 #define WANOPT_OFF 0
 #define WANOPT_ON 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANOPT_NO 0
 #define WANOPT_YES 1
-
 #define WANOPT_RS232 0
 #define WANOPT_V35 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANOPT_NRZ 0
 #define WANOPT_NRZI 1
 #define WANOPT_FM0 2
 #define WANOPT_FM1 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANOPT_POINTTOPOINT 0  
 #define WANOPT_MULTIDROP 1  
-
 #define WANOPT_EXTERNAL 0
 #define WANOPT_INTERNAL 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANOPT_DTE 0
 #define WANOPT_DCE 1
 #define WANOPT_CPE 0
 #define WANOPT_NODE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANOPT_SECONDARY 0
 #define WANOPT_PRIMARY 1
-
 #define WANOPT_PERMANENT 0  
 #define WANOPT_SWITCHED 1  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANOPT_ONDEMAND 2  
-
 #define WANOPT_FR_ANSI 1  
 #define WANOPT_FR_Q933 2  
 #define WANOPT_FR_LMI 3  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANOPT_PPP_STATIC 0
 #define WANOPT_PPP_HOST 1
 #define WANOPT_PPP_PEER 2
-
 #define WANOPT_ONE 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANOPT_TWO 2
 #define WANOPT_ONE_AND_HALF 3
-
 #define WANOPT_NONE 0
 #define WANOPT_ODD 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANOPT_EVEN 2
-
 #define WANOPT_PRI 0
 #define WANOPT_SEC 1
-
 #define WANOPT_INTR 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WANOPT_POLL 1
-
 #define WANOPT_TTY_SYNC 0
 #define WANOPT_TTY_ASYNC 1
-
 typedef struct wandev_stat
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned state;
  unsigned ndev;
-
  unsigned connection;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned media_type;
  unsigned mtu;
-
  unsigned modem_status;
  unsigned rx_frames;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned rx_overruns;
  unsigned rx_crc_err;
  unsigned rx_aborts;
  unsigned rx_bad_length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned rx_dropped;
  unsigned tx_frames;
  unsigned tx_underruns;
  unsigned tx_timeouts;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned tx_rejects;
-
  unsigned rx_bad_format;
  unsigned rx_bad_addr;
  unsigned tx_retries;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned reserved[16];
 } wandev_stat_t;
-
 enum wan_states
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  WAN_UNCONFIGURED,
  WAN_DISCONNECTED,
  WAN_CONNECTING,
  WAN_CONNECTED,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  WAN_LIMIT,
  WAN_DUALPORT,
  WAN_DISCONNECTING,
  WAN_FT1_READY
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  WAN_LOCAL_IP,
  WAN_POINTOPOINT_IP,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  WAN_NETMASK_IP,
  WAN_BROADCAST_IP
 };
-
 #define WAN_MODEM_CTS 0x0001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define WAN_MODEM_DCD 0x0002  
 #define WAN_MODEM_DTR 0x0010  
 #define WAN_MODEM_RTS 0x0020  
-
 typedef struct wanif_conf
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  unsigned magic;
  unsigned config_id;
  char name[WAN_IFNAME_SZ+1];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char addr[WAN_ADDRESS_SZ+1];
  char usedby[USED_BY_FIELD];
  unsigned idle_timeout;
  unsigned hold_timeout;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned cir;
  unsigned bc;
  unsigned be;
  unsigned char enable_IPX;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char inarp;
  unsigned inarp_interval;
  unsigned long network_number;
  char mc;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char local_addr[WAN_ADDRESS_SZ+1];
  unsigned char port;
  unsigned char protocol;
  char pap;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char chap;
  unsigned char userid[511];
  unsigned char passwd[511];
  unsigned char sysname[31];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char ignore_dcd;
  unsigned char ignore_cts;
  unsigned char ignore_keepalive;
  unsigned char hdlc_streaming;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned keepalive_tx_tmr;
  unsigned keepalive_rx_tmr;
  unsigned keepalive_err_margin;
  unsigned slarp_timer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char ttl;
  char interface;
  char clocking;
  unsigned bps;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned mtu;
  unsigned char if_down;
  unsigned char gateway;
  unsigned char true_if_encoding;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char asy_data_trans;
  unsigned char rts_hs_for_receive;
  unsigned char xon_xoff_hs_for_receive;
  unsigned char xon_xoff_hs_for_transmit;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char dcd_hs_for_transmit;
  unsigned char cts_hs_for_transmit;
  unsigned char async_mode;
  unsigned tx_bits_per_char;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned rx_bits_per_char;
  unsigned stop_bits;
  unsigned char parity;
  unsigned break_timer;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned inter_char_timer;
  unsigned rx_complete_length;
  unsigned xon_char;
  unsigned xoff_char;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned char receive_only;
 } wanif_conf_t;
-
 #endif
diff --git a/libc/kernel/common/linux/wireless.h b/libc/kernel/common/linux/wireless.h
index 81ceb75..b81bb81 100644
--- a/libc/kernel/common/linux/wireless.h
+++ b/libc/kernel/common/linux/wireless.h
@@ -7,536 +7,533 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_WIRELESS_H
 #define _LINUX_WIRELESS_H
-
 #include <linux/types.h>  
 #include <linux/socket.h>  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/if.h>  
-
 #define WIRELESS_EXT 20
-
 #define SIOCSIWCOMMIT 0x8B00  
 #define SIOCGIWNAME 0x8B01  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIWNWID 0x8B02  
 #define SIOCGIWNWID 0x8B03  
 #define SIOCSIWFREQ 0x8B04  
 #define SIOCGIWFREQ 0x8B05  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIWMODE 0x8B06  
 #define SIOCGIWMODE 0x8B07  
 #define SIOCSIWSENS 0x8B08  
 #define SIOCGIWSENS 0x8B09  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIWRANGE 0x8B0A  
 #define SIOCGIWRANGE 0x8B0B  
 #define SIOCSIWPRIV 0x8B0C  
 #define SIOCGIWPRIV 0x8B0D  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIWSTATS 0x8B0E  
 #define SIOCGIWSTATS 0x8B0F  
-
 #define SIOCSIWSPY 0x8B10  
 #define SIOCGIWSPY 0x8B11  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIWTHRSPY 0x8B12  
 #define SIOCGIWTHRSPY 0x8B13  
-
 #define SIOCSIWAP 0x8B14  
 #define SIOCGIWAP 0x8B15  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGIWAPLIST 0x8B17  
 #define SIOCSIWSCAN 0x8B18  
 #define SIOCGIWSCAN 0x8B19  
-
 #define SIOCSIWESSID 0x8B1A  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGIWESSID 0x8B1B  
 #define SIOCSIWNICKN 0x8B1C  
 #define SIOCGIWNICKN 0x8B1D  
-
 #define SIOCSIWRATE 0x8B20  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGIWRATE 0x8B21  
 #define SIOCSIWRTS 0x8B22  
 #define SIOCGIWRTS 0x8B23  
 #define SIOCSIWFRAG 0x8B24  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGIWFRAG 0x8B25  
 #define SIOCSIWTXPOW 0x8B26  
 #define SIOCGIWTXPOW 0x8B27  
 #define SIOCSIWRETRY 0x8B28  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGIWRETRY 0x8B29  
-
 #define SIOCSIWENCODE 0x8B2A  
 #define SIOCGIWENCODE 0x8B2B  
-
 #define SIOCSIWPOWER 0x8B2C  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCGIWPOWER 0x8B2D  
-
 #define SIOCSIWGENIE 0x8B30  
 #define SIOCGIWGENIE 0x8B31  
-
 #define SIOCSIWMLME 0x8B16  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIWAUTH 0x8B32  
 #define SIOCGIWAUTH 0x8B33  
-
 #define SIOCSIWENCODEEXT 0x8B34  
 #define SIOCGIWENCODEEXT 0x8B35  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCSIWPMKSA 0x8B36  
-
 #define SIOCIWFIRSTPRIV 0x8BE0
 #define SIOCIWLASTPRIV 0x8BFF
-
 #define SIOCIWFIRST 0x8B00
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SIOCIWLAST SIOCIWLASTPRIV  
 #define IW_IOCTL_IDX(cmd) ((cmd) - SIOCIWFIRST)
-
 #define IW_IS_SET(cmd) (!((cmd) & 0x1))
 #define IW_IS_GET(cmd) ((cmd) & 0x1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IWEVTXDROP 0x8C00  
 #define IWEVQUAL 0x8C01  
 #define IWEVCUSTOM 0x8C02  
 #define IWEVREGISTERED 0x8C03  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IWEVEXPIRED 0x8C04  
 #define IWEVGENIE 0x8C05  
 #define IWEVMICHAELMICFAILURE 0x8C06  
 #define IWEVASSOCREQIE 0x8C07  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IWEVASSOCRESPIE 0x8C08  
 #define IWEVPMKIDCAND 0x8C09  
-
 #define IWEVFIRST 0x8C00
 #define IW_EVENT_IDX(cmd) ((cmd) - IWEVFIRST)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_PRIV_TYPE_MASK 0x7000  
 #define IW_PRIV_TYPE_NONE 0x0000
 #define IW_PRIV_TYPE_BYTE 0x1000  
 #define IW_PRIV_TYPE_CHAR 0x2000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_PRIV_TYPE_INT 0x4000  
 #define IW_PRIV_TYPE_FLOAT 0x5000  
 #define IW_PRIV_TYPE_ADDR 0x6000  
-
 #define IW_PRIV_SIZE_FIXED 0x0800  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_PRIV_SIZE_MASK 0x07FF  
-
 #define IW_MAX_FREQUENCIES 32
-
 #define IW_MAX_BITRATES 32
-
 #define IW_MAX_TXPOWER 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_MAX_SPY 8
-
 #define IW_MAX_AP 64
-
 #define IW_ESSID_MAX_SIZE 32
-
 #define IW_MODE_AUTO 0  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_MODE_ADHOC 1  
 #define IW_MODE_INFRA 2  
 #define IW_MODE_MASTER 3  
 #define IW_MODE_REPEAT 4  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_MODE_SECOND 5  
 #define IW_MODE_MONITOR 6  
-
 #define IW_QUAL_QUAL_UPDATED 0x01  
 #define IW_QUAL_LEVEL_UPDATED 0x02
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_QUAL_NOISE_UPDATED 0x04
 #define IW_QUAL_ALL_UPDATED 0x07
 #define IW_QUAL_DBM 0x08  
 #define IW_QUAL_QUAL_INVALID 0x10  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_QUAL_LEVEL_INVALID 0x20
 #define IW_QUAL_NOISE_INVALID 0x40
 #define IW_QUAL_ALL_INVALID 0x70
-
 #define IW_FREQ_AUTO 0x00  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_FREQ_FIXED 0x01  
-
 #define IW_MAX_ENCODING_SIZES 8
-
 #define IW_ENCODING_TOKEN_MAX 64  
-
 #define IW_ENCODE_INDEX 0x00FF  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_ENCODE_FLAGS 0xFF00  
 #define IW_ENCODE_MODE 0xF000  
 #define IW_ENCODE_DISABLED 0x8000  
 #define IW_ENCODE_ENABLED 0x0000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_ENCODE_RESTRICTED 0x4000  
 #define IW_ENCODE_OPEN 0x2000  
 #define IW_ENCODE_NOKEY 0x0800  
 #define IW_ENCODE_TEMP 0x0400  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_POWER_ON 0x0000  
 #define IW_POWER_TYPE 0xF000  
 #define IW_POWER_PERIOD 0x1000  
 #define IW_POWER_TIMEOUT 0x2000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_POWER_MODE 0x0F00  
 #define IW_POWER_UNICAST_R 0x0100  
 #define IW_POWER_MULTICAST_R 0x0200  
 #define IW_POWER_ALL_R 0x0300  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_POWER_FORCE_S 0x0400  
 #define IW_POWER_REPEATER 0x0800  
 #define IW_POWER_MODIFIER 0x000F  
 #define IW_POWER_MIN 0x0001  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_POWER_MAX 0x0002  
 #define IW_POWER_RELATIVE 0x0004  
-
 #define IW_TXPOW_TYPE 0x00FF  
 #define IW_TXPOW_DBM 0x0000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_TXPOW_MWATT 0x0001  
 #define IW_TXPOW_RELATIVE 0x0002  
 #define IW_TXPOW_RANGE 0x1000  
-
 #define IW_RETRY_ON 0x0000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_RETRY_TYPE 0xF000  
 #define IW_RETRY_LIMIT 0x1000  
 #define IW_RETRY_LIFETIME 0x2000  
 #define IW_RETRY_MODIFIER 0x000F  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_RETRY_MIN 0x0001  
 #define IW_RETRY_MAX 0x0002  
 #define IW_RETRY_RELATIVE 0x0004  
-
 #define IW_SCAN_DEFAULT 0x0000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_SCAN_ALL_ESSID 0x0001  
 #define IW_SCAN_THIS_ESSID 0x0002  
 #define IW_SCAN_ALL_FREQ 0x0004  
 #define IW_SCAN_THIS_FREQ 0x0008  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_SCAN_ALL_MODE 0x0010  
 #define IW_SCAN_THIS_MODE 0x0020  
 #define IW_SCAN_ALL_RATE 0x0040  
 #define IW_SCAN_THIS_RATE 0x0080  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_SCAN_TYPE_ACTIVE 0
 #define IW_SCAN_TYPE_PASSIVE 1
-
 #define IW_SCAN_MAX_DATA 4096  
-
 #define IW_CUSTOM_MAX 256  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_GENERIC_IE_MAX 1024
-
 #define IW_MLME_DEAUTH 0
 #define IW_MLME_DISASSOC 1
-
 #define IW_AUTH_INDEX 0x0FFF
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_AUTH_FLAGS 0xF000
-
 #define IW_AUTH_WPA_VERSION 0
 #define IW_AUTH_CIPHER_PAIRWISE 1
 #define IW_AUTH_CIPHER_GROUP 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_AUTH_KEY_MGMT 3
 #define IW_AUTH_TKIP_COUNTERMEASURES 4
 #define IW_AUTH_DROP_UNENCRYPTED 5
 #define IW_AUTH_80211_AUTH_ALG 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_AUTH_WPA_ENABLED 7
 #define IW_AUTH_RX_UNENCRYPTED_EAPOL 8
 #define IW_AUTH_ROAMING_CONTROL 9
 #define IW_AUTH_PRIVACY_INVOKED 10
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_AUTH_WPA_VERSION_DISABLED 0x00000001
 #define IW_AUTH_WPA_VERSION_WPA 0x00000002
 #define IW_AUTH_WPA_VERSION_WPA2 0x00000004
-
 #define IW_AUTH_CIPHER_NONE 0x00000001
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_AUTH_CIPHER_WEP40 0x00000002
 #define IW_AUTH_CIPHER_TKIP 0x00000004
 #define IW_AUTH_CIPHER_CCMP 0x00000008
 #define IW_AUTH_CIPHER_WEP104 0x00000010
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_AUTH_KEY_MGMT_802_1X 1
 #define IW_AUTH_KEY_MGMT_PSK 2
-
 #define IW_AUTH_ALG_OPEN_SYSTEM 0x00000001
 #define IW_AUTH_ALG_SHARED_KEY 0x00000002
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_AUTH_ALG_LEAP 0x00000004
-
 #define IW_AUTH_ROAMING_ENABLE 0  
 #define IW_AUTH_ROAMING_DISABLE 1  
-
 #define IW_ENCODE_SEQ_MAX_SIZE 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_ENCODE_ALG_NONE 0
 #define IW_ENCODE_ALG_WEP 1
 #define IW_ENCODE_ALG_TKIP 2
 #define IW_ENCODE_ALG_CCMP 3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_ENCODE_EXT_TX_SEQ_VALID 0x00000001
 #define IW_ENCODE_EXT_RX_SEQ_VALID 0x00000002
 #define IW_ENCODE_EXT_GROUP_KEY 0x00000004
 #define IW_ENCODE_EXT_SET_TX_KEY 0x00000008
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_MICFAILURE_KEY_ID 0x00000003  
 #define IW_MICFAILURE_GROUP 0x00000004
 #define IW_MICFAILURE_PAIRWISE 0x00000008
 #define IW_MICFAILURE_STAKEY 0x00000010
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_MICFAILURE_COUNT 0x00000060  
-
 #define IW_ENC_CAPA_WPA 0x00000001
 #define IW_ENC_CAPA_WPA2 0x00000002
 #define IW_ENC_CAPA_CIPHER_TKIP 0x00000004
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_ENC_CAPA_CIPHER_CCMP 0x00000008
-
 #define IW_EVENT_CAPA_BASE(cmd) ((cmd >= SIOCIWFIRSTPRIV) ?   (cmd - SIOCIWFIRSTPRIV + 0x60) :   (cmd - SIOCSIWCOMMIT))
 #define IW_EVENT_CAPA_INDEX(cmd) (IW_EVENT_CAPA_BASE(cmd) >> 5)
 #define IW_EVENT_CAPA_MASK(cmd) (1 << (IW_EVENT_CAPA_BASE(cmd) & 0x1F))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_EVENT_CAPA_K_0 (IW_EVENT_CAPA_MASK(0x8B04) |   IW_EVENT_CAPA_MASK(0x8B06) |   IW_EVENT_CAPA_MASK(0x8B1A))
 #define IW_EVENT_CAPA_K_1 (IW_EVENT_CAPA_MASK(0x8B2A))
-
 #define IW_EVENT_CAPA_SET(event_capa, cmd) (event_capa[IW_EVENT_CAPA_INDEX(cmd)] |= IW_EVENT_CAPA_MASK(cmd))
 #define IW_EVENT_CAPA_SET_KERNEL(event_capa) {event_capa[0] |= IW_EVENT_CAPA_K_0; event_capa[1] |= IW_EVENT_CAPA_K_1; }
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct iw_param
 {
  __s32 value;
  __u8 fixed;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 disabled;
  __u16 flags;
 };
-
 struct iw_point
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  void __user *pointer;
  __u16 length;
  __u16 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct iw_freq
 {
  __s32 m;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s16 e;
  __u8 i;
  __u8 flags;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct iw_quality
 {
  __u8 qual;
  __u8 level;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 noise;
  __u8 updated;
 };
-
 struct iw_discarded
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u32 nwid;
  __u32 code;
  __u32 fragment;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 retries;
  __u32 misc;
 };
-
 struct iw_missed
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u32 beacon;
 };
-
 struct iw_thrspy
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  struct sockaddr addr;
  struct iw_quality qual;
  struct iw_quality low;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct iw_quality high;
 };
-
 struct iw_scan_req
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 scan_type;
  __u8 essid_len;
  __u8 num_channels;
  __u8 flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sockaddr bssid;
-
  __u8 essid[IW_ESSID_MAX_SIZE];
-
  __u32 min_channel_time;
  __u32 max_channel_time;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct iw_freq channel_list[IW_MAX_FREQUENCIES];
 };
-
 struct iw_encode_ext
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 ext_flags;
  __u8 tx_seq[IW_ENCODE_SEQ_MAX_SIZE];
  __u8 rx_seq[IW_ENCODE_SEQ_MAX_SIZE];
  struct sockaddr addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 alg;
  __u16 key_len;
  __u8 key[0];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct iw_mlme
 {
  __u16 cmd;
  __u16 reason_code;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sockaddr addr;
 };
-
 #define IW_PMKSA_ADD 1
 #define IW_PMKSA_REMOVE 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_PMKSA_FLUSH 3
-
 #define IW_PMKID_LEN 16
-
 struct iw_pmksa
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 cmd;
  struct sockaddr bssid;
  __u8 pmkid[IW_PMKID_LEN];
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct iw_michaelmicfailure
 {
  __u32 flags;
  struct sockaddr src_addr;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 tsc[IW_ENCODE_SEQ_MAX_SIZE];
 };
-
 #define IW_PMKID_CAND_PREAUTH 0x00000001  
 struct iw_pmkid_cand
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 {
  __u32 flags;
  __u32 index;
  struct sockaddr bssid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct iw_statistics
 {
  __u16 status;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct iw_quality qual;
  struct iw_discarded discard;
  struct iw_missed miss;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 union iwreq_data
 {
-
  char name[IFNAMSIZ];
-
  struct iw_point essid;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct iw_param nwid;
  struct iw_freq freq;
-
  struct iw_param sens;
  struct iw_param bitrate;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct iw_param txpower;
  struct iw_param rts;
  struct iw_param frag;
  __u32 mode;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct iw_param retry;
-
  struct iw_point encoding;
  struct iw_param power;
  struct iw_quality qual;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct sockaddr ap_addr;
  struct sockaddr addr;
-
  struct iw_param param;
  struct iw_point data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct iwreq
 {
  union
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  {
  char ifrn_name[IFNAMSIZ];
  } ifr_ifrn;
-
  union iwreq_data u;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct iw_range
 {
-
  __u32 throughput;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 min_nwid;
  __u32 max_nwid;
-
  __u16 old_num_channels;
  __u8 old_num_frequency;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 event_capa[6];
-
  __s32 sensitivity;
-
  struct iw_quality max_qual;
-
  struct iw_quality avg_qual;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 num_bitrates;
  __s32 bitrate[IW_MAX_BITRATES];
-
  __s32 min_rts;
  __s32 max_rts;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 min_frag;
  __s32 max_frag;
-
  __s32 min_pmp;
  __s32 max_pmp;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 min_pmt;
  __s32 max_pmt;
  __u16 pmp_flags;
  __u16 pmt_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 pm_capa;
-
  __u16 encoding_size[IW_MAX_ENCODING_SIZES];
  __u8 num_encoding_sizes;
  __u8 max_encoding_tokens;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 encoding_login_index;
-
  __u16 txpower_capa;
  __u8 num_txpower;
  __s32 txpower[IW_MAX_TXPOWER];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 we_version_compiled;
  __u8 we_version_source;
-
  __u16 retry_capa;
  __u16 retry_flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 r_time_flags;
  __s32 min_retry;
  __s32 max_retry;
  __s32 min_r_time;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __s32 max_r_time;
-
  __u16 num_channels;
  __u8 num_frequency;
  struct iw_freq freq[IW_MAX_FREQUENCIES];
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 enc_capa;
 };
-
 struct iw_priv_args
 {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 cmd;
  __u16 set_args;
  __u16 get_args;
  char name[IFNAMSIZ];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct iw_event
 {
  __u16 len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u16 cmd;
  union iwreq_data u;
 };
-
 #define IW_EV_LCP_LEN (sizeof(struct iw_event) - sizeof(union iwreq_data))
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_EV_CHAR_LEN (IW_EV_LCP_LEN + IFNAMSIZ)
 #define IW_EV_UINT_LEN (IW_EV_LCP_LEN + sizeof(__u32))
 #define IW_EV_FREQ_LEN (IW_EV_LCP_LEN + sizeof(struct iw_freq))
 #define IW_EV_PARAM_LEN (IW_EV_LCP_LEN + sizeof(struct iw_param))
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define IW_EV_ADDR_LEN (IW_EV_LCP_LEN + sizeof(struct sockaddr))
 #define IW_EV_QUAL_LEN (IW_EV_LCP_LEN + sizeof(struct iw_quality))
-
 #define IW_EV_POINT_OFF (((char *) &(((struct iw_point *) NULL)->length)) -   (char *) NULL)
 #define IW_EV_POINT_LEN (IW_EV_LCP_LEN + sizeof(struct iw_point) -   IW_EV_POINT_OFF)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/workqueue.h b/libc/kernel/common/linux/workqueue.h
index 12fab2c..41baea3 100644
--- a/libc/kernel/common/linux/workqueue.h
+++ b/libc/kernel/common/linux/workqueue.h
@@ -7,39 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_WORKQUEUE_H
 #define _LINUX_WORKQUEUE_H
-
 #include <linux/timer.h>
 #include <linux/linkage.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/bitops.h>
-
 struct workqueue_struct;
-
 struct work_struct {
  unsigned long pending;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct list_head entry;
  void (*func)(void *);
  void *data;
  void *wq_data;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct timer_list timer;
 };
-
 struct execute_work {
  struct work_struct work;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define __WORK_INITIALIZER(n, f, d) {   .entry = { &(n).entry, &(n).entry },   .func = (f),   .data = (d),   .timer = TIMER_INITIALIZER(NULL, 0, 0),   }
-
 #define DECLARE_WORK(n, f, d)   struct work_struct n = __WORK_INITIALIZER(n, f, d)
-
 #define PREPARE_WORK(_work, _func, _data)   do {   (_work)->func = _func;   (_work)->data = _data;   } while (0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define INIT_WORK(_work, _func, _data)   do {   INIT_LIST_HEAD(&(_work)->entry);   (_work)->pending = 0;   PREPARE_WORK((_work), (_func), (_data));   init_timer(&(_work)->timer);   } while (0)
-
 #define create_workqueue(name) __create_workqueue((name), 0)
 #define create_singlethread_workqueue(name) __create_workqueue((name), 1)
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/xattr.h b/libc/kernel/common/linux/xattr.h
index f5f640d..dc239fa 100644
--- a/libc/kernel/common/linux/xattr.h
+++ b/libc/kernel/common/linux/xattr.h
@@ -7,37 +7,42 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _LINUX_XATTR_H
 #define _LINUX_XATTR_H
-
 #define XATTR_CREATE 0x1  
 #define XATTR_REPLACE 0x2  
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XATTR_OS2_PREFIX "os2."
 #define XATTR_OS2_PREFIX_LEN (sizeof (XATTR_OS2_PREFIX) - 1)
-
 #define XATTR_SECURITY_PREFIX "security."
 #define XATTR_SECURITY_PREFIX_LEN (sizeof (XATTR_SECURITY_PREFIX) - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XATTR_SYSTEM_PREFIX "system."
 #define XATTR_SYSTEM_PREFIX_LEN (sizeof (XATTR_SYSTEM_PREFIX) - 1)
-
 #define XATTR_TRUSTED_PREFIX "trusted."
 #define XATTR_TRUSTED_PREFIX_LEN (sizeof (XATTR_TRUSTED_PREFIX) - 1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define XATTR_USER_PREFIX "user."
 #define XATTR_USER_PREFIX_LEN (sizeof (XATTR_USER_PREFIX) - 1)
-
 struct xattr_handler {
  char *prefix;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  size_t (*list)(struct inode *inode, char *list, size_t list_size,
  const char *name, size_t name_len);
  int (*get)(struct inode *inode, const char *name, void *buffer,
  size_t size);
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int (*set)(struct inode *inode, const char *name, const void *buffer,
  size_t size, int flags);
 };
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/zconf.h b/libc/kernel/common/linux/zconf.h
index 18ea78c..8534969 100644
--- a/libc/kernel/common/linux/zconf.h
+++ b/libc/kernel/common/linux/zconf.h
@@ -7,32 +7,38 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ZCONF_H
 #define _ZCONF_H
-
 #ifndef MAX_MEM_LEVEL
 #define MAX_MEM_LEVEL 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
 #ifndef MAX_WBITS
 #define MAX_WBITS 15  
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #ifndef DEF_WBITS
 #define DEF_WBITS MAX_WBITS
 #endif
-
 #if MAX_MEM_LEVEL >= 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define DEF_MEM_LEVEL 8
 #else
 #define DEF_MEM_LEVEL MAX_MEM_LEVEL
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef unsigned char Byte;
 typedef unsigned int uInt;
 typedef unsigned long uLong;
 typedef void *voidp;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
diff --git a/libc/kernel/common/linux/zlib.h b/libc/kernel/common/linux/zlib.h
index 052adfe..0fb085a 100644
--- a/libc/kernel/common/linux/zlib.h
+++ b/libc/kernel/common/linux/zlib.h
@@ -7,74 +7,77 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef _ZLIB_H
 #define _ZLIB_H
-
 #include <linux/zconf.h>
-
 struct internal_state;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct z_stream_s {
  Byte *next_in;
  uInt avail_in;
  uLong total_in;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  Byte *next_out;
  uInt avail_out;
  uLong total_out;
-
  char *msg;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct internal_state *state;
-
  void *workspace;
-
  int data_type;
  uLong adler;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uLong reserved;
 } z_stream;
-
 typedef z_stream *z_streamp;
-
 #define Z_NO_FLUSH 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Z_PARTIAL_FLUSH 1  
 #define Z_PACKET_FLUSH 2
 #define Z_SYNC_FLUSH 3
 #define Z_FULL_FLUSH 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Z_FINISH 5
 #define Z_BLOCK 6  
-
 #define Z_OK 0
 #define Z_STREAM_END 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Z_NEED_DICT 2
 #define Z_ERRNO (-1)
 #define Z_STREAM_ERROR (-2)
 #define Z_DATA_ERROR (-3)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Z_MEM_ERROR (-4)
 #define Z_BUF_ERROR (-5)
 #define Z_VERSION_ERROR (-6)
-
 #define Z_NO_COMPRESSION 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Z_BEST_SPEED 1
 #define Z_BEST_COMPRESSION 9
 #define Z_DEFAULT_COMPRESSION (-1)
-
 #define Z_FILTERED 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Z_HUFFMAN_ONLY 2
 #define Z_DEFAULT_STRATEGY 0
-
 #define Z_BINARY 0
 #define Z_ASCII 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define Z_UNKNOWN 2
-
 #define Z_DEFLATED 8
-
 #define zlib_deflateInit(strm, level)   zlib_deflateInit2((strm), (level), Z_DEFLATED, MAX_WBITS,   DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY)
 #define zlib_inflateInit(strm)   zlib_inflateInit2((strm), DEF_WBITS)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
  struct internal_state {int dummy;};
 #endif
-
 #endif
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/linux/zorro_ids.h b/libc/kernel/common/linux/zorro_ids.h
index e6b1d48..b35a22c 100644
--- a/libc/kernel/common/linux/zorro_ids.h
+++ b/libc/kernel/common/linux/zorro_ids.h
@@ -7,543 +7,547 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #define ZORRO_MANUF_PACIFIC_PERIPHERALS 0x00D3
 #define ZORRO_PROD_PACIFIC_PERIPHERALS_SE_2000_A500 ZORRO_ID(PACIFIC_PERIPHERALS, 0x00, 0)
 #define ZORRO_PROD_PACIFIC_PERIPHERALS_SCSI ZORRO_ID(PACIFIC_PERIPHERALS, 0x0A, 0)
-
 #define ZORRO_MANUF_MACROSYSTEMS_USA_2 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MACROSYSTEMS_WARP_ENGINE ZORRO_ID(MACROSYSTEMS_USA_2, 0x13, 0)
-
 #define ZORRO_MANUF_KUPKE_1 0x00DD
 #define ZORRO_PROD_KUPKE_GOLEM_RAM_BOX_2MB ZORRO_ID(KUPKE_1, 0x00, 0)
-
 #define ZORRO_MANUF_MEMPHIS 0x0100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MEMPHIS_STORMBRINGER ZORRO_ID(MEMPHIS, 0x00, 0)
-
 #define ZORRO_MANUF_3_STATE 0x0200
 #define ZORRO_PROD_3_STATE_MEGAMIX_2000 ZORRO_ID(3_STATE, 0x02, 0)
-
 #define ZORRO_MANUF_COMMODORE_BRAUNSCHWEIG 0x0201
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_CBM_A2088_A2286 ZORRO_ID(COMMODORE_BRAUNSCHWEIG, 0x01, 0)
 #define ZORRO_PROD_CBM_A2286 ZORRO_ID(COMMODORE_BRAUNSCHWEIG, 0x02, 0)
 #define ZORRO_PROD_CBM_A4091_1 ZORRO_ID(COMMODORE_BRAUNSCHWEIG, 0x54, 0)
 #define ZORRO_PROD_CBM_A2386SX_1 ZORRO_ID(COMMODORE_BRAUNSCHWEIG, 0x67, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_COMMODORE_WEST_CHESTER_1 0x0202
 #define ZORRO_PROD_CBM_A2090A ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x01, 0)
 #define ZORRO_PROD_CBM_A590_A2091_1 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x02, 0)
 #define ZORRO_PROD_CBM_A590_A2091_2 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x03, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_CBM_A2090B ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x04, 0)
 #define ZORRO_PROD_CBM_A2060 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x09, 0)
 #define ZORRO_PROD_CBM_A590_A2052_A2058_A2091 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x0A, 0)
 #define ZORRO_PROD_CBM_A560_RAM ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x20, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_CBM_A2232_PROTOTYPE ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x45, 0)
 #define ZORRO_PROD_CBM_A2232 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x46, 0)
 #define ZORRO_PROD_CBM_A2620 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x50, 0)
 #define ZORRO_PROD_CBM_A2630 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x51, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_CBM_A4091_2 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x54, 0)
 #define ZORRO_PROD_CBM_A2065_1 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x5A, 0)
 #define ZORRO_PROD_CBM_ROMULATOR ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x60, 0)
 #define ZORRO_PROD_CBM_A3000_TEST_FIXTURE ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x61, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_CBM_A2386SX_2 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x67, 0)
 #define ZORRO_PROD_CBM_A2065_2 ZORRO_ID(COMMODORE_WEST_CHESTER_1, 0x70, 0)
-
 #define ZORRO_MANUF_COMMODORE_WEST_CHESTER_2 0x0203
 #define ZORRO_PROD_CBM_A2090A_CM ZORRO_ID(COMMODORE_WEST_CHESTER_2, 0x03, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_PROGRESSIVE_PERIPHERALS_AND_SYSTEMS_2 0x02F4
 #define ZORRO_PROD_PPS_EXP8000 ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS_2, 0x02, 0)
-
 #define ZORRO_MANUF_KOLFF_COMPUTER_SUPPLIES 0x02FF
 #define ZORRO_PROD_KCS_POWER_PC_BOARD ZORRO_ID(KOLFF_COMPUTER_SUPPLIES, 0x00, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_CARDCO_1 0x03EC
 #define ZORRO_PROD_CARDCO_KRONOS_2000_1 ZORRO_ID(CARDCO_1, 0x04, 0)
 #define ZORRO_PROD_CARDCO_A1000_1 ZORRO_ID(CARDCO_1, 0x0C, 0)
 #define ZORRO_PROD_CARDCO_ESCORT ZORRO_ID(CARDCO_1, 0x0E, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_CARDCO_A2410 ZORRO_ID(CARDCO_1, 0xF5, 0)
-
 #define ZORRO_MANUF_A_SQUARED 0x03ED
 #define ZORRO_PROD_A_SQUARED_LIVE_2000 ZORRO_ID(A_SQUARED, 0x01, 0)
-
 #define ZORRO_MANUF_COMSPEC_COMMUNICATIONS 0x03EE
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_COMSPEC_COMMUNICATIONS_AX2000 ZORRO_ID(COMSPEC_COMMUNICATIONS, 0x01, 0)
-
 #define ZORRO_MANUF_ANAKIN_RESEARCH 0x03F1
 #define ZORRO_PROD_ANAKIN_RESEARCH_EASYL ZORRO_ID(ANAKIN_RESEARCH, 0x01, 0)
-
 #define ZORRO_MANUF_MICROBOTICS 0x03F2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MICROBOTICS_STARBOARD_II ZORRO_ID(MICROBOTICS, 0x00, 0)
 #define ZORRO_PROD_MICROBOTICS_STARDRIVE ZORRO_ID(MICROBOTICS, 0x02, 0)
 #define ZORRO_PROD_MICROBOTICS_8_UP_A ZORRO_ID(MICROBOTICS, 0x03, 0)
 #define ZORRO_PROD_MICROBOTICS_8_UP_Z ZORRO_ID(MICROBOTICS, 0x04, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MICROBOTICS_DELTA_RAM ZORRO_ID(MICROBOTICS, 0x20, 0)
 #define ZORRO_PROD_MICROBOTICS_8_STAR_RAM ZORRO_ID(MICROBOTICS, 0x40, 0)
 #define ZORRO_PROD_MICROBOTICS_8_STAR ZORRO_ID(MICROBOTICS, 0x41, 0)
 #define ZORRO_PROD_MICROBOTICS_VXL_RAM_32 ZORRO_ID(MICROBOTICS, 0x44, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MICROBOTICS_VXL_68030 ZORRO_ID(MICROBOTICS, 0x45, 0)
 #define ZORRO_PROD_MICROBOTICS_DELTA ZORRO_ID(MICROBOTICS, 0x60, 0)
 #define ZORRO_PROD_MICROBOTICS_MBX_1200_1200Z_RAM ZORRO_ID(MICROBOTICS, 0x81, 0)
 #define ZORRO_PROD_MICROBOTICS_HARDFRAME_2000_1 ZORRO_ID(MICROBOTICS, 0x96, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MICROBOTICS_HARDFRAME_2000_2 ZORRO_ID(MICROBOTICS, 0x9E, 0)
 #define ZORRO_PROD_MICROBOTICS_MBX_1200_1200Z ZORRO_ID(MICROBOTICS, 0xC1, 0)
-
 #define ZORRO_MANUF_ACCESS_ASSOCIATES_ALEGRA 0x03F4
-
 #define ZORRO_MANUF_EXPANSION_TECHNOLOGIES 0x03F6
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_ASDG 0x03FF
 #define ZORRO_PROD_ASDG_MEMORY_1 ZORRO_ID(ASDG, 0x01, 0)
 #define ZORRO_PROD_ASDG_MEMORY_2 ZORRO_ID(ASDG, 0x02, 0)
 #define ZORRO_PROD_ASDG_EB920_LAN_ROVER ZORRO_ID(ASDG, 0xFE, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_ASDG_GPIB_DUALIEEE488_TWIN_X ZORRO_ID(ASDG, 0xFF, 0)
-
 #define ZORRO_MANUF_IMTRONICS_1 0x0404
 #define ZORRO_PROD_IMTRONICS_HURRICANE_2800_1 ZORRO_ID(IMTRONICS_1, 0x39, 0)
 #define ZORRO_PROD_IMTRONICS_HURRICANE_2800_2 ZORRO_ID(IMTRONICS_1, 0x57, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_CBM_UNIVERSITY_OF_LOWELL 0x0406
 #define ZORRO_PROD_CBM_A2410 ZORRO_ID(CBM_UNIVERSITY_OF_LOWELL, 0x00, 0)
-
 #define ZORRO_MANUF_AMERISTAR 0x041D
 #define ZORRO_PROD_AMERISTAR_A2065 ZORRO_ID(AMERISTAR, 0x01, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_AMERISTAR_A560 ZORRO_ID(AMERISTAR, 0x09, 0)
 #define ZORRO_PROD_AMERISTAR_A4066 ZORRO_ID(AMERISTAR, 0x0A, 0)
-
 #define ZORRO_MANUF_SUPRA 0x0420
 #define ZORRO_PROD_SUPRA_SUPRADRIVE_4x4 ZORRO_ID(SUPRA, 0x01, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_SUPRA_1000_RAM ZORRO_ID(SUPRA, 0x02, 0)
 #define ZORRO_PROD_SUPRA_2000_DMA ZORRO_ID(SUPRA, 0x03, 0)
 #define ZORRO_PROD_SUPRA_500 ZORRO_ID(SUPRA, 0x05, 0)
 #define ZORRO_PROD_SUPRA_500_SCSI ZORRO_ID(SUPRA, 0x08, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_SUPRA_500XP_2000_RAM ZORRO_ID(SUPRA, 0x09, 0)
 #define ZORRO_PROD_SUPRA_500RX_2000_RAM ZORRO_ID(SUPRA, 0x0A, 0)
 #define ZORRO_PROD_SUPRA_2400ZI ZORRO_ID(SUPRA, 0x0B, 0)
 #define ZORRO_PROD_SUPRA_500XP_SUPRADRIVE_WORDSYNC ZORRO_ID(SUPRA, 0x0C, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_SUPRA_SUPRADRIVE_WORDSYNC_II ZORRO_ID(SUPRA, 0x0D, 0)
 #define ZORRO_PROD_SUPRA_2400ZIPLUS ZORRO_ID(SUPRA, 0x10, 0)
-
 #define ZORRO_MANUF_COMPUTER_SYSTEMS_ASSOCIATES 0x0422
 #define ZORRO_PROD_CSA_MAGNUM ZORRO_ID(COMPUTER_SYSTEMS_ASSOCIATES, 0x11, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_CSA_12_GAUGE ZORRO_ID(COMPUTER_SYSTEMS_ASSOCIATES, 0x15, 0)
-
 #define ZORRO_MANUF_MARC_MICHAEL_GROTH 0x0439
-
 #define ZORRO_MANUF_M_TECH 0x0502
 #define ZORRO_PROD_MTEC_AT500_1 ZORRO_ID(M_TECH, 0x03, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_GREAT_VALLEY_PRODUCTS_1 0x06E1
 #define ZORRO_PROD_GVP_IMPACT_SERIES_I ZORRO_ID(GREAT_VALLEY_PRODUCTS_1, 0x08, 0)
-
 #define ZORRO_MANUF_BYTEBOX 0x07DA
 #define ZORRO_PROD_BYTEBOX_A500 ZORRO_ID(BYTEBOX, 0x00, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_DKB_POWER_COMPUTING 0x07DC
 #define ZORRO_PROD_DKB_POWER_COMPUTING_SECUREKEY ZORRO_ID(DKB_POWER_COMPUTING, 0x09, 0)
 #define ZORRO_PROD_DKB_POWER_COMPUTING_DKM_3128 ZORRO_ID(DKB_POWER_COMPUTING, 0x0E, 0)
 #define ZORRO_PROD_DKB_POWER_COMPUTING_RAPID_FIRE ZORRO_ID(DKB_POWER_COMPUTING, 0x0F, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_DKB_POWER_COMPUTING_DKM_1202 ZORRO_ID(DKB_POWER_COMPUTING, 0x10, 0)
 #define ZORRO_PROD_DKB_POWER_COMPUTING_COBRA_VIPER_II_68EC030 ZORRO_ID(DKB_POWER_COMPUTING, 0x12, 0)
 #define ZORRO_PROD_DKB_POWER_COMPUTING_WILDFIRE_060_1 ZORRO_ID(DKB_POWER_COMPUTING, 0x17, 0)
 #define ZORRO_PROD_DKB_POWER_COMPUTING_WILDFIRE_060_2 ZORRO_ID(DKB_POWER_COMPUTING, 0xFF, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_GREAT_VALLEY_PRODUCTS_2 0x07E1
 #define ZORRO_PROD_GVP_IMPACT_SERIES_I_4K ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x01, 0)
 #define ZORRO_PROD_GVP_IMPACT_SERIES_I_16K_2 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x02, 0)
 #define ZORRO_PROD_GVP_IMPACT_SERIES_I_16K_3 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x03, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_GVP_IMPACT_3001_IDE_1 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x08, 0)
 #define ZORRO_PROD_GVP_IMPACT_3001_RAM ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x09, 0)
 #define ZORRO_PROD_GVP_IMPACT_SERIES_II_RAM_1 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0A, 0)
 #define ZORRO_PROD_GVP_EPC_BASE ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_GVP_GFORCE_040_1 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x20)
 #define ZORRO_PROD_GVP_GFORCE_040_SCSI_1 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x30)
 #define ZORRO_PROD_GVP_A1291 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x40)
 #define ZORRO_PROD_GVP_COMBO_030_R4 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x60)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_GVP_COMBO_030_R4_SCSI ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x70)
 #define ZORRO_PROD_GVP_PHONEPAK ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x78)
 #define ZORRO_PROD_GVP_IO_EXTENDER ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0x98)
 #define ZORRO_PROD_GVP_GFORCE_030 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xa0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_GVP_GFORCE_030_SCSI ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xb0)
 #define ZORRO_PROD_GVP_A530 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xc0)
 #define ZORRO_PROD_GVP_A530_SCSI ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xd0)
 #define ZORRO_PROD_GVP_COMBO_030_R3 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xe0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_GVP_COMBO_030_R3_SCSI ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xf0)
 #define ZORRO_PROD_GVP_SERIES_II ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0B, 0xf8)
 #define ZORRO_PROD_GVP_IMPACT_3001_IDE_2 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x0D, 0)
-
 #define ZORRO_PROD_GVP_GFORCE_040_060 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x16, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_GVP_IMPACT_VISION_24 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0x20, 0)
 #define ZORRO_PROD_GVP_GFORCE_040_2 ZORRO_ID(GREAT_VALLEY_PRODUCTS_2, 0xFF, 0)
-
 #define ZORRO_MANUF_CALIFORNIA_ACCESS_SYNERGY 0x07E5
 #define ZORRO_PROD_CALIFORNIA_ACCESS_SYNERGY_MALIBU ZORRO_ID(CALIFORNIA_ACCESS_SYNERGY, 0x01, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_XETEC 0x07E6
 #define ZORRO_PROD_XETEC_FASTCARD ZORRO_ID(XETEC, 0x01, 0)
 #define ZORRO_PROD_XETEC_FASTCARD_RAM ZORRO_ID(XETEC, 0x02, 0)
 #define ZORRO_PROD_XETEC_FASTCARD_PLUS ZORRO_ID(XETEC, 0x03, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_PROGRESSIVE_PERIPHERALS_AND_SYSTEMS 0x07EA
 #define ZORRO_PROD_PPS_MERCURY ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS, 0x00, 0)
 #define ZORRO_PROD_PPS_A3000_68040 ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS, 0x01, 0)
 #define ZORRO_PROD_PPS_A2000_68040 ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS, 0x69, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_PPS_ZEUS ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS, 0x96, 0)
 #define ZORRO_PROD_PPS_A500_68040 ZORRO_ID(PROGRESSIVE_PERIPHERALS_AND_SYSTEMS, 0xBB, 0)
-
 #define ZORRO_MANUF_XEBEC 0x07EC
-
 #define ZORRO_MANUF_SPIRIT_TECHNOLOGY 0x07F2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_SPIRIT_TECHNOLOGY_INSIDER_IN1000 ZORRO_ID(SPIRIT_TECHNOLOGY, 0x01, 0)
 #define ZORRO_PROD_SPIRIT_TECHNOLOGY_INSIDER_IN500 ZORRO_ID(SPIRIT_TECHNOLOGY, 0x02, 0)
 #define ZORRO_PROD_SPIRIT_TECHNOLOGY_SIN500 ZORRO_ID(SPIRIT_TECHNOLOGY, 0x03, 0)
 #define ZORRO_PROD_SPIRIT_TECHNOLOGY_HDA_506 ZORRO_ID(SPIRIT_TECHNOLOGY, 0x04, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_SPIRIT_TECHNOLOGY_AX_S ZORRO_ID(SPIRIT_TECHNOLOGY, 0x05, 0)
 #define ZORRO_PROD_SPIRIT_TECHNOLOGY_OCTABYTE ZORRO_ID(SPIRIT_TECHNOLOGY, 0x06, 0)
 #define ZORRO_PROD_SPIRIT_TECHNOLOGY_INMATE ZORRO_ID(SPIRIT_TECHNOLOGY, 0x08, 0)
-
 #define ZORRO_MANUF_SPIRIT_TECHNOLOGY_2 0x07F3
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_BSC_ALFADATA_1 0x07FE
 #define ZORRO_PROD_BSC_ALF_3_1 ZORRO_ID(BSC_ALFADATA_1, 0x03, 0)
-
 #define ZORRO_MANUF_BSC_ALFADATA_2 0x0801
 #define ZORRO_PROD_BSC_ALF_2_1 ZORRO_ID(BSC_ALFADATA_2, 0x01, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_BSC_ALF_2_2 ZORRO_ID(BSC_ALFADATA_2, 0x02, 0)
 #define ZORRO_PROD_BSC_ALF_3_2 ZORRO_ID(BSC_ALFADATA_2, 0x03, 0)
-
 #define ZORRO_MANUF_CARDCO_2 0x0802
 #define ZORRO_PROD_CARDCO_KRONOS_2000_2 ZORRO_ID(CARDCO_2, 0x04, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_CARDCO_A1000_2 ZORRO_ID(CARDCO_2, 0x0C, 0)
-
 #define ZORRO_MANUF_JOCHHEIM 0x0804
 #define ZORRO_PROD_JOCHHEIM_RAM ZORRO_ID(JOCHHEIM, 0x01, 0)
-
 #define ZORRO_MANUF_CHECKPOINT_TECHNOLOGIES 0x0807
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_CHECKPOINT_TECHNOLOGIES_SERIAL_SOLUTION ZORRO_ID(CHECKPOINT_TECHNOLOGIES, 0x00, 0)
-
 #define ZORRO_MANUF_EDOTRONIK 0x0810
 #define ZORRO_PROD_EDOTRONIK_IEEE_488 ZORRO_ID(EDOTRONIK, 0x01, 0)
 #define ZORRO_PROD_EDOTRONIK_8032 ZORRO_ID(EDOTRONIK, 0x02, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_EDOTRONIK_MULTISERIAL ZORRO_ID(EDOTRONIK, 0x03, 0)
 #define ZORRO_PROD_EDOTRONIK_VIDEODIGITIZER ZORRO_ID(EDOTRONIK, 0x04, 0)
 #define ZORRO_PROD_EDOTRONIK_PARALLEL_IO ZORRO_ID(EDOTRONIK, 0x05, 0)
 #define ZORRO_PROD_EDOTRONIK_PIC_PROTOYPING ZORRO_ID(EDOTRONIK, 0x06, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_EDOTRONIK_ADC ZORRO_ID(EDOTRONIK, 0x07, 0)
 #define ZORRO_PROD_EDOTRONIK_VME ZORRO_ID(EDOTRONIK, 0x08, 0)
 #define ZORRO_PROD_EDOTRONIK_DSP96000 ZORRO_ID(EDOTRONIK, 0x09, 0)
-
 #define ZORRO_MANUF_NES_INC 0x0813
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_NES_INC_RAM ZORRO_ID(NES_INC, 0x00, 0)
-
 #define ZORRO_MANUF_ICD 0x0817
 #define ZORRO_PROD_ICD_ADVANTAGE_2000_SCSI ZORRO_ID(ICD, 0x01, 0)
 #define ZORRO_PROD_ICD_ADVANTAGE_IDE ZORRO_ID(ICD, 0x03, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_ICD_ADVANTAGE_2080_RAM ZORRO_ID(ICD, 0x04, 0)
-
 #define ZORRO_MANUF_KUPKE_2 0x0819
 #define ZORRO_PROD_KUPKE_OMTI ZORRO_ID(KUPKE_2, 0x01, 0)
 #define ZORRO_PROD_KUPKE_SCSI_II ZORRO_ID(KUPKE_2, 0x02, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_KUPKE_GOLEM_BOX ZORRO_ID(KUPKE_2, 0x03, 0)
 #define ZORRO_PROD_KUPKE_030_882 ZORRO_ID(KUPKE_2, 0x04, 0)
 #define ZORRO_PROD_KUPKE_SCSI_AT ZORRO_ID(KUPKE_2, 0x05, 0)
-
 #define ZORRO_MANUF_GREAT_VALLEY_PRODUCTS_3 0x081D
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_GVP_A2000_RAM8 ZORRO_ID(GREAT_VALLEY_PRODUCTS_3, 0x09, 0)
 #define ZORRO_PROD_GVP_IMPACT_SERIES_II_RAM_2 ZORRO_ID(GREAT_VALLEY_PRODUCTS_3, 0x0A, 0)
-
 #define ZORRO_MANUF_INTERWORKS_NETWORK 0x081E
-
 #define ZORRO_MANUF_HARDITAL_SYNTHESIS 0x0820
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_HARDITAL_SYNTHESIS_TQM_68030_68882 ZORRO_ID(HARDITAL_SYNTHESIS, 0x14, 0)
-
 #define ZORRO_MANUF_APPLIED_ENGINEERING 0x0828
 #define ZORRO_PROD_APPLIED_ENGINEERING_DL2000 ZORRO_ID(APPLIED_ENGINEERING, 0x10, 0)
 #define ZORRO_PROD_APPLIED_ENGINEERING_RAM_WORKS ZORRO_ID(APPLIED_ENGINEERING, 0xE0, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_BSC_ALFADATA_3 0x082C
 #define ZORRO_PROD_BSC_OKTAGON_2008 ZORRO_ID(BSC_ALFADATA_3, 0x05, 0)
 #define ZORRO_PROD_BSC_TANDEM_AT_2008_508 ZORRO_ID(BSC_ALFADATA_3, 0x06, 0)
 #define ZORRO_PROD_BSC_ALFA_RAM_1200 ZORRO_ID(BSC_ALFADATA_3, 0x07, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_BSC_OKTAGON_2008_RAM ZORRO_ID(BSC_ALFADATA_3, 0x08, 0)
 #define ZORRO_PROD_BSC_MULTIFACE_I ZORRO_ID(BSC_ALFADATA_3, 0x10, 0)
 #define ZORRO_PROD_BSC_MULTIFACE_II ZORRO_ID(BSC_ALFADATA_3, 0x11, 0)
 #define ZORRO_PROD_BSC_MULTIFACE_III ZORRO_ID(BSC_ALFADATA_3, 0x12, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_BSC_FRAMEMASTER_II ZORRO_ID(BSC_ALFADATA_3, 0x20, 0)
 #define ZORRO_PROD_BSC_GRAFFITI_RAM ZORRO_ID(BSC_ALFADATA_3, 0x21, 0)
 #define ZORRO_PROD_BSC_GRAFFITI_REG ZORRO_ID(BSC_ALFADATA_3, 0x22, 0)
 #define ZORRO_PROD_BSC_ISDN_MASTERCARD ZORRO_ID(BSC_ALFADATA_3, 0x40, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_BSC_ISDN_MASTERCARD_II ZORRO_ID(BSC_ALFADATA_3, 0x41, 0)
-
 #define ZORRO_MANUF_PHOENIX 0x0835
 #define ZORRO_PROD_PHOENIX_ST506 ZORRO_ID(PHOENIX, 0x21, 0)
 #define ZORRO_PROD_PHOENIX_SCSI ZORRO_ID(PHOENIX, 0x22, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_PHOENIX_RAM ZORRO_ID(PHOENIX, 0xBE, 0)
-
 #define ZORRO_MANUF_ADVANCED_STORAGE_SYSTEMS 0x0836
 #define ZORRO_PROD_ADVANCED_STORAGE_SYSTEMS_NEXUS ZORRO_ID(ADVANCED_STORAGE_SYSTEMS, 0x01, 0)
 #define ZORRO_PROD_ADVANCED_STORAGE_SYSTEMS_NEXUS_RAM ZORRO_ID(ADVANCED_STORAGE_SYSTEMS, 0x08, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_IMPULSE 0x0838
 #define ZORRO_PROD_IMPULSE_FIRECRACKER_24 ZORRO_ID(IMPULSE, 0x00, 0)
-
 #define ZORRO_MANUF_IVS 0x0840
 #define ZORRO_PROD_IVS_GRANDSLAM_PIC_2 ZORRO_ID(IVS, 0x02, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_IVS_GRANDSLAM_PIC_1 ZORRO_ID(IVS, 0x04, 0)
 #define ZORRO_PROD_IVS_OVERDRIVE ZORRO_ID(IVS, 0x10, 0)
 #define ZORRO_PROD_IVS_TRUMPCARD_CLASSIC ZORRO_ID(IVS, 0x30, 0)
 #define ZORRO_PROD_IVS_TRUMPCARD_PRO_GRANDSLAM ZORRO_ID(IVS, 0x34, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_IVS_META_4 ZORRO_ID(IVS, 0x40, 0)
 #define ZORRO_PROD_IVS_WAVETOOLS ZORRO_ID(IVS, 0xBF, 0)
 #define ZORRO_PROD_IVS_VECTOR_1 ZORRO_ID(IVS, 0xF3, 0)
 #define ZORRO_PROD_IVS_VECTOR_2 ZORRO_ID(IVS, 0xF4, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_VECTOR_1 0x0841
 #define ZORRO_PROD_VECTOR_CONNECTION_1 ZORRO_ID(VECTOR_1, 0xE3, 0)
-
 #define ZORRO_MANUF_XPERT_PRODEV 0x0845
 #define ZORRO_PROD_XPERT_PRODEV_VISIONA_RAM ZORRO_ID(XPERT_PRODEV, 0x01, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_XPERT_PRODEV_VISIONA_REG ZORRO_ID(XPERT_PRODEV, 0x02, 0)
 #define ZORRO_PROD_XPERT_PRODEV_MERLIN_RAM ZORRO_ID(XPERT_PRODEV, 0x03, 0)
 #define ZORRO_PROD_XPERT_PRODEV_MERLIN_REG_1 ZORRO_ID(XPERT_PRODEV, 0x04, 0)
 #define ZORRO_PROD_XPERT_PRODEV_MERLIN_REG_2 ZORRO_ID(XPERT_PRODEV, 0xC9, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_HYDRA_SYSTEMS 0x0849
 #define ZORRO_PROD_HYDRA_SYSTEMS_AMIGANET ZORRO_ID(HYDRA_SYSTEMS, 0x01, 0)
-
 #define ZORRO_MANUF_SUNRIZE_INDUSTRIES 0x084F
 #define ZORRO_PROD_SUNRIZE_INDUSTRIES_AD1012 ZORRO_ID(SUNRIZE_INDUSTRIES, 0x01, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_SUNRIZE_INDUSTRIES_AD516 ZORRO_ID(SUNRIZE_INDUSTRIES, 0x02, 0)
 #define ZORRO_PROD_SUNRIZE_INDUSTRIES_DD512 ZORRO_ID(SUNRIZE_INDUSTRIES, 0x03, 0)
-
 #define ZORRO_MANUF_TRICERATOPS 0x0850
 #define ZORRO_PROD_TRICERATOPS_MULTI_IO ZORRO_ID(TRICERATOPS, 0x01, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_APPLIED_MAGIC 0x0851
 #define ZORRO_PROD_APPLIED_MAGIC_DMI_RESOLVER ZORRO_ID(APPLIED_MAGIC, 0x01, 0)
 #define ZORRO_PROD_APPLIED_MAGIC_DIGITAL_BROADCASTER ZORRO_ID(APPLIED_MAGIC, 0x06, 0)
-
 #define ZORRO_MANUF_GFX_BASE 0x085E
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_GFX_BASE_GDA_1_VRAM ZORRO_ID(GFX_BASE, 0x00, 0)
 #define ZORRO_PROD_GFX_BASE_GDA_1 ZORRO_ID(GFX_BASE, 0x01, 0)
-
 #define ZORRO_MANUF_ROCTEC 0x0860
 #define ZORRO_PROD_ROCTEC_RH_800C ZORRO_ID(ROCTEC, 0x01, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_ROCTEC_RH_800C_RAM ZORRO_ID(ROCTEC, 0x01, 0)
-
 #define ZORRO_MANUF_KATO 0x0861
 #define ZORRO_PROD_KATO_MELODY ZORRO_ID(KATO, 0x80, 0)
-
 #define ZORRO_MANUF_HELFRICH_1 0x0861
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_HELFRICH_RAINBOW_II ZORRO_ID(HELFRICH_1, 0x20, 0)
 #define ZORRO_PROD_HELFRICH_RAINBOW_III ZORRO_ID(HELFRICH_1, 0x21, 0)
-
 #define ZORRO_MANUF_ATLANTIS 0x0862
-
 #define ZORRO_MANUF_PROTAR 0x0864
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_ACS 0x0865
-
 #define ZORRO_MANUF_SOFTWARE_RESULTS_ENTERPRISES 0x0866
 #define ZORRO_PROD_SOFTWARE_RESULTS_ENTERPRISES_GOLDEN_GATE_2_BUS_PLUS ZORRO_ID(SOFTWARE_RESULTS_ENTERPRISES, 0x01, 0)
-
 #define ZORRO_MANUF_MASOBOSHI 0x086D
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MASOBOSHI_MASTER_CARD_SC201 ZORRO_ID(MASOBOSHI, 0x03, 0)
 #define ZORRO_PROD_MASOBOSHI_MASTER_CARD_MC702 ZORRO_ID(MASOBOSHI, 0x04, 0)
 #define ZORRO_PROD_MASOBOSHI_MVD_819 ZORRO_ID(MASOBOSHI, 0x07, 0)
-
 #define ZORRO_MANUF_MAINHATTAN_DATA 0x086F
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MAINHATTAN_DATA_IDE ZORRO_ID(MAINHATTAN_DATA, 0x01, 0)
-
 #define ZORRO_MANUF_VILLAGE_TRONIC 0x0877
 #define ZORRO_PROD_VILLAGE_TRONIC_DOMINO_RAM ZORRO_ID(VILLAGE_TRONIC, 0x01, 0)
 #define ZORRO_PROD_VILLAGE_TRONIC_DOMINO_REG ZORRO_ID(VILLAGE_TRONIC, 0x02, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_VILLAGE_TRONIC_DOMINO_16M_PROTOTYPE ZORRO_ID(VILLAGE_TRONIC, 0x03, 0)
 #define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_II_II_PLUS_RAM ZORRO_ID(VILLAGE_TRONIC, 0x0B, 0)
 #define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_II_II_PLUS_REG ZORRO_ID(VILLAGE_TRONIC, 0x0C, 0)
 #define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_II_II_PLUS_SEGMENTED_MODE ZORRO_ID(VILLAGE_TRONIC, 0x0D, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_MEM1 ZORRO_ID(VILLAGE_TRONIC, 0x15, 0)
 #define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_MEM2 ZORRO_ID(VILLAGE_TRONIC, 0x16, 0)
 #define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z2_REG ZORRO_ID(VILLAGE_TRONIC, 0x17, 0)
 #define ZORRO_PROD_VILLAGE_TRONIC_PICASSO_IV_Z3 ZORRO_ID(VILLAGE_TRONIC, 0x18, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_VILLAGE_TRONIC_ARIADNE ZORRO_ID(VILLAGE_TRONIC, 0xC9, 0)
 #define ZORRO_PROD_VILLAGE_TRONIC_ARIADNE2 ZORRO_ID(VILLAGE_TRONIC, 0xCA, 0)
-
 #define ZORRO_MANUF_UTILITIES_UNLIMITED 0x087B
 #define ZORRO_PROD_UTILITIES_UNLIMITED_EMPLANT_DELUXE ZORRO_ID(UTILITIES_UNLIMITED, 0x15, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_UTILITIES_UNLIMITED_EMPLANT_DELUXE2 ZORRO_ID(UTILITIES_UNLIMITED, 0x20, 0)
-
 #define ZORRO_MANUF_AMITRIX 0x0880
 #define ZORRO_PROD_AMITRIX_MULTI_IO ZORRO_ID(AMITRIX, 0x01, 0)
 #define ZORRO_PROD_AMITRIX_CD_RAM ZORRO_ID(AMITRIX, 0x02, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_ARMAX 0x0885
 #define ZORRO_PROD_ARMAX_OMNIBUS ZORRO_ID(ARMAX, 0x00, 0)
-
 #define ZORRO_MANUF_ZEUS 0x088D
 #define ZORRO_PROD_ZEUS_SPIDER ZORRO_ID(ZEUS, 0x04, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_NEWTEK 0x088F
 #define ZORRO_PROD_NEWTEK_VIDEOTOASTER ZORRO_ID(NEWTEK, 0x00, 0)
-
 #define ZORRO_MANUF_M_TECH_GERMANY 0x0890
 #define ZORRO_PROD_MTEC_AT500_2 ZORRO_ID(M_TECH_GERMANY, 0x01, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MTEC_68030 ZORRO_ID(M_TECH_GERMANY, 0x03, 0)
 #define ZORRO_PROD_MTEC_68020I ZORRO_ID(M_TECH_GERMANY, 0x06, 0)
 #define ZORRO_PROD_MTEC_A1200_T68030_RTC ZORRO_ID(M_TECH_GERMANY, 0x20, 0)
 #define ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530 ZORRO_ID(M_TECH_GERMANY, 0x21, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MTEC_8_MB_RAM ZORRO_ID(M_TECH_GERMANY, 0x22, 0)
 #define ZORRO_PROD_MTEC_VIPER_MK_V_E_MATRIX_530_SCSI_IDE ZORRO_ID(M_TECH_GERMANY, 0x24, 0)
-
 #define ZORRO_MANUF_GREAT_VALLEY_PRODUCTS_4 0x0891
 #define ZORRO_PROD_GVP_EGS_28_24_SPECTRUM_RAM ZORRO_ID(GREAT_VALLEY_PRODUCTS_4, 0x01, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_GVP_EGS_28_24_SPECTRUM_REG ZORRO_ID(GREAT_VALLEY_PRODUCTS_4, 0x02, 0)
-
 #define ZORRO_MANUF_APOLLO_1 0x0892
 #define ZORRO_PROD_APOLLO_A1200 ZORRO_ID(APOLLO_1, 0x01, 0)
-
 #define ZORRO_MANUF_HELFRICH_2 0x0893
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_HELFRICH_PICCOLO_RAM ZORRO_ID(HELFRICH_2, 0x05, 0)
 #define ZORRO_PROD_HELFRICH_PICCOLO_REG ZORRO_ID(HELFRICH_2, 0x06, 0)
 #define ZORRO_PROD_HELFRICH_PEGGY_PLUS_MPEG ZORRO_ID(HELFRICH_2, 0x07, 0)
 #define ZORRO_PROD_HELFRICH_VIDEOCRUNCHER ZORRO_ID(HELFRICH_2, 0x08, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_HELFRICH_SD64_RAM ZORRO_ID(HELFRICH_2, 0x0A, 0)
 #define ZORRO_PROD_HELFRICH_SD64_REG ZORRO_ID(HELFRICH_2, 0x0B, 0)
-
 #define ZORRO_MANUF_MACROSYSTEMS_USA 0x089B
 #define ZORRO_PROD_MACROSYSTEMS_WARP_ENGINE_40xx ZORRO_ID(MACROSYSTEMS_USA, 0x13, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_ELBOX_COMPUTER 0x089E
 #define ZORRO_PROD_ELBOX_COMPUTER_1200_4 ZORRO_ID(ELBOX_COMPUTER, 0x06, 0)
-
 #define ZORRO_MANUF_HARMS_PROFESSIONAL 0x0A00
 #define ZORRO_PROD_HARMS_PROFESSIONAL_030_PLUS ZORRO_ID(HARMS_PROFESSIONAL, 0x10, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_HARMS_PROFESSIONAL_3500 ZORRO_ID(HARMS_PROFESSIONAL, 0xD0, 0)
-
 #define ZORRO_MANUF_MICRONIK 0x0A50
 #define ZORRO_PROD_MICRONIK_RCA_120 ZORRO_ID(MICRONIK, 0x0A, 0)
-
 #define ZORRO_MANUF_MICRONIK2 0x0F0F
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MICRONIK2_Z3I ZORRO_ID(MICRONIK2, 0x01, 0)
-
 #define ZORRO_MANUF_MEGAMICRO 0x1000
 #define ZORRO_PROD_MEGAMICRO_SCRAM_500 ZORRO_ID(MEGAMICRO, 0x03, 0)
 #define ZORRO_PROD_MEGAMICRO_SCRAM_500_RAM ZORRO_ID(MEGAMICRO, 0x04, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_IMTRONICS_2 0x1028
 #define ZORRO_PROD_IMTRONICS_HURRICANE_2800_3 ZORRO_ID(IMTRONICS_2, 0x39, 0)
 #define ZORRO_PROD_IMTRONICS_HURRICANE_2800_4 ZORRO_ID(IMTRONICS_2, 0x57, 0)
-
 #define ZORRO_MANUF_INDIVIDUAL_COMPUTERS 0x1212
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_INDIVIDUAL_COMPUTERS_BUDDHA ZORRO_ID(INDIVIDUAL_COMPUTERS, 0x00, 0)
 #define ZORRO_PROD_INDIVIDUAL_COMPUTERS_X_SURF ZORRO_ID(INDIVIDUAL_COMPUTERS, 0x17, 0)
 #define ZORRO_PROD_INDIVIDUAL_COMPUTERS_CATWEASEL ZORRO_ID(INDIVIDUAL_COMPUTERS, 0x2A, 0)
-
 #define ZORRO_MANUF_KUPKE_3 0x1248
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_KUPKE_GOLEM_HD_3000 ZORRO_ID(KUPKE_3, 0x01, 0)
-
 #define ZORRO_MANUF_ITH 0x1388
 #define ZORRO_PROD_ITH_ISDN_MASTER_II ZORRO_ID(ITH, 0x01, 0)
-
 #define ZORRO_MANUF_VMC 0x1389
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_VMC_ISDN_BLASTER_Z2 ZORRO_ID(VMC, 0x01, 0)
 #define ZORRO_PROD_VMC_HYPERCOM_4 ZORRO_ID(VMC, 0x02, 0)
-
 #define ZORRO_MANUF_INFORMATION 0x157C
 #define ZORRO_PROD_INFORMATION_ISDN_ENGINE_I ZORRO_ID(INFORMATION, 0x64, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_VORTEX 0x2017
 #define ZORRO_PROD_VORTEX_GOLDEN_GATE_80386SX ZORRO_ID(VORTEX, 0x07, 0)
 #define ZORRO_PROD_VORTEX_GOLDEN_GATE_RAM ZORRO_ID(VORTEX, 0x08, 0)
 #define ZORRO_PROD_VORTEX_GOLDEN_GATE_80486 ZORRO_ID(VORTEX, 0x09, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_EXPANSION_SYSTEMS 0x2062
 #define ZORRO_PROD_EXPANSION_SYSTEMS_DATAFLYER_4000SX ZORRO_ID(EXPANSION_SYSTEMS, 0x01, 0)
 #define ZORRO_PROD_EXPANSION_SYSTEMS_DATAFLYER_4000SX_RAM ZORRO_ID(EXPANSION_SYSTEMS, 0x02, 0)
-
 #define ZORRO_MANUF_READYSOFT 0x2100
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_READYSOFT_AMAX_II_IV ZORRO_ID(READYSOFT, 0x01, 0)
-
 #define ZORRO_MANUF_PHASE5 0x2140
 #define ZORRO_PROD_PHASE5_BLIZZARD_RAM ZORRO_ID(PHASE5, 0x01, 0)
 #define ZORRO_PROD_PHASE5_BLIZZARD ZORRO_ID(PHASE5, 0x02, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_PHASE5_BLIZZARD_1220_IV ZORRO_ID(PHASE5, 0x06, 0)
 #define ZORRO_PROD_PHASE5_FASTLANE_Z3_RAM ZORRO_ID(PHASE5, 0x0A, 0)
 #define ZORRO_PROD_PHASE5_BLIZZARD_1230_II_FASTLANE_Z3_CYBERSCSI_CYBERSTORM060 ZORRO_ID(PHASE5, 0x0B, 0)
 #define ZORRO_PROD_PHASE5_BLIZZARD_1220_CYBERSTORM ZORRO_ID(PHASE5, 0x0C, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_PHASE5_BLIZZARD_1230 ZORRO_ID(PHASE5, 0x0D, 0)
 #define ZORRO_PROD_PHASE5_BLIZZARD_1230_IV_1260 ZORRO_ID(PHASE5, 0x11, 0)
 #define ZORRO_PROD_PHASE5_BLIZZARD_2060 ZORRO_ID(PHASE5, 0x18, 0)
 #define ZORRO_PROD_PHASE5_CYBERSTORM_MK_II ZORRO_ID(PHASE5, 0x19, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_PHASE5_CYBERVISION64 ZORRO_ID(PHASE5, 0x22, 0)
 #define ZORRO_PROD_PHASE5_CYBERVISION64_3D_PROTOTYPE ZORRO_ID(PHASE5, 0x32, 0)
 #define ZORRO_PROD_PHASE5_CYBERVISION64_3D ZORRO_ID(PHASE5, 0x43, 0)
 #define ZORRO_PROD_PHASE5_CYBERSTORM_MK_III ZORRO_ID(PHASE5, 0x64, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_PHASE5_BLIZZARD_603E_PLUS ZORRO_ID(PHASE5, 0x6e, 0)
-
 #define ZORRO_MANUF_DPS 0x2169
 #define ZORRO_PROD_DPS_PERSONAL_ANIMATION_RECORDER ZORRO_ID(DPS, 0x01, 0)
-
 #define ZORRO_MANUF_APOLLO_2 0x2200
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_APOLLO_A620_68020_1 ZORRO_ID(APOLLO_2, 0x00, 0)
 #define ZORRO_PROD_APOLLO_A620_68020_2 ZORRO_ID(APOLLO_2, 0x01, 0)
-
 #define ZORRO_MANUF_APOLLO_3 0x2222
 #define ZORRO_PROD_APOLLO_AT_APOLLO ZORRO_ID(APOLLO_3, 0x22, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_APOLLO_1230_1240_1260_2030_4040_4060 ZORRO_ID(APOLLO_3, 0x23, 0)
-
 #define ZORRO_MANUF_PETSOFF_LP 0x38A5
 #define ZORRO_PROD_PETSOFF_LP_DELFINA ZORRO_ID(PETSOFF_LP, 0x00, 0)
 #define ZORRO_PROD_PETSOFF_LP_DELFINA_LITE ZORRO_ID(PETSOFF_LP, 0x01, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_UWE_GERLACH 0x3FF7
 #define ZORRO_PROD_UWE_GERLACH_RAM_ROM ZORRO_ID(UWE_GERLACH, 0xd4, 0)
-
 #define ZORRO_MANUF_ACT 0x4231
 #define ZORRO_PROD_ACT_PRELUDE ZORRO_ID(ACT, 0x01, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_MACROSYSTEMS_GERMANY 0x4754
 #define ZORRO_PROD_MACROSYSTEMS_MAESTRO ZORRO_ID(MACROSYSTEMS_GERMANY, 0x03, 0)
 #define ZORRO_PROD_MACROSYSTEMS_VLAB ZORRO_ID(MACROSYSTEMS_GERMANY, 0x04, 0)
 #define ZORRO_PROD_MACROSYSTEMS_MAESTRO_PRO ZORRO_ID(MACROSYSTEMS_GERMANY, 0x05, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MACROSYSTEMS_RETINA ZORRO_ID(MACROSYSTEMS_GERMANY, 0x06, 0)
 #define ZORRO_PROD_MACROSYSTEMS_MULTI_EVOLUTION ZORRO_ID(MACROSYSTEMS_GERMANY, 0x08, 0)
 #define ZORRO_PROD_MACROSYSTEMS_TOCCATA ZORRO_ID(MACROSYSTEMS_GERMANY, 0x0C, 0)
 #define ZORRO_PROD_MACROSYSTEMS_RETINA_Z3 ZORRO_ID(MACROSYSTEMS_GERMANY, 0x10, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_MACROSYSTEMS_VLAB_MOTION ZORRO_ID(MACROSYSTEMS_GERMANY, 0x12, 0)
 #define ZORRO_PROD_MACROSYSTEMS_ALTAIS ZORRO_ID(MACROSYSTEMS_GERMANY, 0x13, 0)
 #define ZORRO_PROD_MACROSYSTEMS_FALCON_040 ZORRO_ID(MACROSYSTEMS_GERMANY, 0xFD, 0)
-
 #define ZORRO_MANUF_COMBITEC 0x6766
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_SKI_PERIPHERALS 0x8000
 #define ZORRO_PROD_SKI_PERIPHERALS_MAST_FIREBALL ZORRO_ID(SKI_PERIPHERALS, 0x08, 0)
 #define ZORRO_PROD_SKI_PERIPHERALS_SCSI_DUAL_SERIAL ZORRO_ID(SKI_PERIPHERALS, 0x80, 0)
-
 #define ZORRO_MANUF_REIS_WARE_2 0xA9AD
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_REIS_WARE_SCAN_KING ZORRO_ID(REIS_WARE_2, 0x11, 0)
-
 #define ZORRO_MANUF_CAMERON 0xAA01
 #define ZORRO_PROD_CAMERON_PERSONAL_A4 ZORRO_ID(CAMERON, 0x10, 0)
-
 #define ZORRO_MANUF_REIS_WARE 0xAA11
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_REIS_WARE_HANDYSCANNER ZORRO_ID(REIS_WARE, 0x11, 0)
-
 #define ZORRO_MANUF_PHOENIX_2 0xB5A8
 #define ZORRO_PROD_PHOENIX_ST506_2 ZORRO_ID(PHOENIX_2, 0x21, 0)
 #define ZORRO_PROD_PHOENIX_SCSI_2 ZORRO_ID(PHOENIX_2, 0x22, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_PHOENIX_RAM_2 ZORRO_ID(PHOENIX_2, 0xBE, 0)
-
 #define ZORRO_MANUF_COMBITEC_2 0xC008
 #define ZORRO_PROD_COMBITEC_HD ZORRO_ID(COMBITEC_2, 0x2A, 0)
 #define ZORRO_PROD_COMBITEC_SRAM ZORRO_ID(COMBITEC_2, 0x2B, 0)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_MANUF_HACKER 0x07DB
 #define ZORRO_PROD_GENERAL_PROTOTYPE ZORRO_ID(HACKER, 0x00, 0)
 #define ZORRO_PROD_HACKER_SCSI ZORRO_ID(HACKER, 0x01, 0)
 #define ZORRO_PROD_RESOURCE_MANAGEMENT_FORCE_QUICKNET_QN2000 ZORRO_ID(HACKER, 0x02, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define ZORRO_PROD_VECTOR_CONNECTION_2 ZORRO_ID(HACKER, 0xE0, 0)
 #define ZORRO_PROD_VECTOR_CONNECTION_3 ZORRO_ID(HACKER, 0xE1, 0)
 #define ZORRO_PROD_VECTOR_CONNECTION_4 ZORRO_ID(HACKER, 0xE2, 0)
 #define ZORRO_PROD_VECTOR_CONNECTION_5 ZORRO_ID(HACKER, 0xE3, 0)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/media/msm_camera.h b/libc/kernel/common/media/msm_camera.h
index be4449c..e2bd930 100644
--- a/libc/kernel/common/media/msm_camera.h
+++ b/libc/kernel/common/media/msm_camera.h
@@ -7,406 +7,417 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __LINUX_MSM_CAMERA_H
 #define __LINUX_MSM_CAMERA_H
-
 #include <linux/types.h>
 #include <asm/sizes.h>
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #include <linux/ioctl.h>
-
 #define MSM_CAM_IOCTL_MAGIC 'm'
-
 #define MSM_CAM_IOCTL_GET_SENSOR_INFO   _IOR(MSM_CAM_IOCTL_MAGIC, 1, struct msm_camsensor_info *)
-
 #define MSM_CAM_IOCTL_REGISTER_PMEM   _IOW(MSM_CAM_IOCTL_MAGIC, 2, struct msm_pmem_info *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_CAM_IOCTL_UNREGISTER_PMEM   _IOW(MSM_CAM_IOCTL_MAGIC, 3, unsigned)
-
 #define MSM_CAM_IOCTL_CTRL_COMMAND   _IOW(MSM_CAM_IOCTL_MAGIC, 4, struct msm_ctrl_cmd *)
-
 #define MSM_CAM_IOCTL_CONFIG_VFE   _IOW(MSM_CAM_IOCTL_MAGIC, 5, struct msm_camera_vfe_cfg_cmd *)
-
 #define MSM_CAM_IOCTL_GET_STATS   _IOR(MSM_CAM_IOCTL_MAGIC, 6, struct msm_camera_stats_event_ctrl *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_CAM_IOCTL_GETFRAME   _IOR(MSM_CAM_IOCTL_MAGIC, 7, struct msm_camera_get_frame *)
-
 #define MSM_CAM_IOCTL_ENABLE_VFE   _IOW(MSM_CAM_IOCTL_MAGIC, 8, struct camera_enable_cmd *)
-
 #define MSM_CAM_IOCTL_CTRL_CMD_DONE   _IOW(MSM_CAM_IOCTL_MAGIC, 9, struct camera_cmd *)
-
 #define MSM_CAM_IOCTL_CONFIG_CMD   _IOW(MSM_CAM_IOCTL_MAGIC, 10, struct camera_cmd *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_CAM_IOCTL_DISABLE_VFE   _IOW(MSM_CAM_IOCTL_MAGIC, 11, struct camera_enable_cmd *)
-
 #define MSM_CAM_IOCTL_PAD_REG_RESET2   _IOW(MSM_CAM_IOCTL_MAGIC, 12, struct camera_enable_cmd *)
-
 #define MSM_CAM_IOCTL_VFE_APPS_RESET   _IOW(MSM_CAM_IOCTL_MAGIC, 13, struct camera_enable_cmd *)
-
 #define MSM_CAM_IOCTL_RELEASE_FRAME_BUFFER   _IOW(MSM_CAM_IOCTL_MAGIC, 14, struct camera_enable_cmd *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_CAM_IOCTL_RELEASE_STATS_BUFFER   _IOW(MSM_CAM_IOCTL_MAGIC, 15, struct msm_stats_buf *)
-
 #define MSM_CAM_IOCTL_AXI_CONFIG   _IOW(MSM_CAM_IOCTL_MAGIC, 16, struct msm_camera_vfe_cfg_cmd *)
-
 #define MSM_CAM_IOCTL_GET_PICTURE   _IOW(MSM_CAM_IOCTL_MAGIC, 17, struct msm_camera_ctrl_cmd *)
-
 #define MSM_CAM_IOCTL_SET_CROP   _IOW(MSM_CAM_IOCTL_MAGIC, 18, struct crop_info *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_CAM_IOCTL_PP   _IOW(MSM_CAM_IOCTL_MAGIC, 19, uint8_t *)
-
 #define MSM_CAM_IOCTL_PP_DONE   _IOW(MSM_CAM_IOCTL_MAGIC, 20, struct msm_snapshot_pp_status *)
-
 #define MSM_CAM_IOCTL_SENSOR_IO_CFG   _IOW(MSM_CAM_IOCTL_MAGIC, 21, struct sensor_cfg_data *)
-
 #define MSM_CAMERA_LED_OFF 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_CAMERA_LED_LOW 1
 #define MSM_CAMERA_LED_HIGH 2
-
 #define MSM_CAM_IOCTL_FLASH_LED_CFG   _IOW(MSM_CAM_IOCTL_MAGIC, 22, unsigned *)
-
 #define MSM_CAM_IOCTL_UNBLOCK_POLL_FRAME   _IO(MSM_CAM_IOCTL_MAGIC, 23)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_CAM_IOCTL_CTRL_COMMAND_2   _IOW(MSM_CAM_IOCTL_MAGIC, 24, struct msm_ctrl_cmd *)
-
 #define MSM_CAM_IOCTL_ENABLE_OUTPUT_IND   _IOW(MSM_CAM_IOCTL_MAGIC, 25, uint32_t *)
-
 #define MSM_CAM_IOCTL_AF_CTRL   _IOR(MSM_CAM_IOCTL_MAGIC, 26, struct msm_ctrl_cmt_t *)
 #define MSM_CAM_IOCTL_AF_CTRL_DONE   _IOW(MSM_CAM_IOCTL_MAGIC, 27, struct msm_ctrl_cmt_t *)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MAX_SENSOR_NUM 3
 #define MAX_SENSOR_NAME 32
-
 #define PP_SNAP 1
 #define PP_RAW_SNAP (1<<1)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define PP_PREV (1<<2)
 #define PP_MASK (PP_SNAP|PP_RAW_SNAP|PP_PREV)
-
 #define MSM_CAM_CTRL_CMD_DONE 0
 #define MSM_CAM_SENSOR_VFE_CMD 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msm_ctrl_cmd {
  uint16_t type;
  uint16_t length;
  void *value;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t status;
  uint32_t timeout_ms;
  int resp_fd;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msm_vfe_evt_msg {
  unsigned short type;
  unsigned short msg_id;
  unsigned int len;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *data;
 };
-
 #define MSM_CAM_RESP_CTRL 0
 #define MSM_CAM_RESP_STAT_EVT_MSG 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_CAM_RESP_V4L2 2
 #define MSM_CAM_RESP_MAX 3
-
 struct msm_stats_event_ctrl {
-
  int resptype;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int timeout_ms;
  struct msm_ctrl_cmd ctrl_cmd;
-
  struct msm_vfe_evt_msg stats_event;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msm_camera_cfg_cmd {
-
  uint16_t cfg_type;
-
  uint16_t cmd_type;
  uint16_t queue;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t length;
  void *value;
 };
-
 #define CMD_GENERAL 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_AXI_CFG_OUT1 1
 #define CMD_AXI_CFG_SNAP_O1_AND_O2 2
 #define CMD_AXI_CFG_OUT2 3
 #define CMD_PICT_T_AXI_CFG 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_PICT_M_AXI_CFG 5
 #define CMD_RAW_PICT_AXI_CFG 6
 #define CMD_STATS_AXI_CFG 7
 #define CMD_STATS_AF_AXI_CFG 8
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_FRAME_BUF_RELEASE 9
 #define CMD_PREV_BUF_CFG 10
 #define CMD_SNAP_BUF_RELEASE 11
 #define CMD_SNAP_BUF_CFG 12
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_STATS_DISABLE 13
 #define CMD_STATS_AEC_AWB_ENABLE 14
 #define CMD_STATS_AF_ENABLE 15
 #define CMD_STATS_BUF_RELEASE 16
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_STATS_AF_BUF_RELEASE 17
 #define CMD_STATS_ENABLE 18
 #define UPDATE_STATS_INVALID 19
-
 #define CMD_STATS_AEC_ENABLE 20
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_STATS_AWB_ENABLE 21
 #define CMD_STATS_AEC_AXI_CFG 22
 #define CMD_STATS_AWB_AXI_CFG 23
 #define CMD_STATS_RS_AXI_CFG 24
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_STATS_CS_AXI_CFG 25
 #define CMD_STATS_IHIST_AXI_CFG 26
 #define CMD_STATS_SKIN_AXI_CFG 27
 #define CMD_STATS_AEC_BUF_RELEASE 28
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_STATS_AWB_BUF_RELEASE 29
 #define CMD_STATS_RS_BUF_RELEASE 30
 #define CMD_STATS_CS_BUF_RELEASE 31
 #define CMD_STATS_IHIST_BUF_RELEASE 32
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_STATS_SKIN_BUF_RELEASE 33
-
 #define CMD_AXI_CFG_SNAP_GEMINI 34
 #define CMD_AXI_CFG_SNAP 35
 #define CMD_AXI_CFG_PREVIEW 36
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_AXI_CFG_VIDEO 37
-
 #define CMD_STATS_IHIST_ENABLE 38
 #define CMD_STATS_RS_ENABLE 39
 #define CMD_STATS_CS_ENABLE 40
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CMD_AXI_CFG_O1_AND_O2 41  
-
 struct msm_vfe_cfg_cmd {
  int cmd_type;
  uint16_t length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *value;
 };
-
 #define MAX_CAMERA_ENABLE_NAME_LEN 32
 struct camera_enable_cmd {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[MAX_CAMERA_ENABLE_NAME_LEN];
 };
-
 #define MSM_PMEM_OUTPUT1 0
 #define MSM_PMEM_OUTPUT2 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_PMEM_OUTPUT1_OUTPUT2 2
 #define MSM_PMEM_THUMBNAIL 3
 #define MSM_PMEM_MAINIMG 4
 #define MSM_PMEM_RAW_MAINIMG 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_PMEM_AEC_AWB 6
 #define MSM_PMEM_AF 7
 #define MSM_PMEM_AEC 8
 #define MSM_PMEM_AWB 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_PMEM_RS 10
 #define MSM_PMEM_CS 11
 #define MSM_PMEM_IHIST 12
 #define MSM_PMEM_SKIN 13
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_PMEM_VIDEO 14
 #define MSM_PMEM_PREVIEW 15
 #define MSM_PMEM_MAX 16
-
 #define FRAME_PREVIEW_OUTPUT1 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAME_PREVIEW_OUTPUT2 1
 #define FRAME_SNAPSHOT 2
 #define FRAME_THUMBNAIL 3
 #define FRAME_RAW_SNAPSHOT 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define FRAME_MAX 5
-
 struct msm_pmem_info {
  int type;
  int fd;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  void *vaddr;
  uint32_t offset;
  uint32_t len;
  uint32_t y_off;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t cbcr_off;
  uint8_t vfe_can_write;
 };
-
 struct outputCfg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t height;
  uint32_t width;
-
  uint32_t window_height_firstline;
  uint32_t window_height_lastline;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define OUTPUT_1 0
 #define OUTPUT_2 1
 #define OUTPUT_1_AND_2 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAMIF_TO_AXI_VIA_OUTPUT_2 3
 #define OUTPUT_1_AND_CAMIF_TO_AXI_VIA_OUTPUT_2 4
 #define OUTPUT_2_AND_CAMIF_TO_AXI_VIA_OUTPUT_1 5
 #define OUTPUT_1_AND_3 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define LAST_AXI_OUTPUT_MODE_ENUM = OUTPUT_1_AND_3 7  
-
 #define MSM_FRAME_PREV_1 0
 #define MSM_FRAME_PREV_2 1
 #define MSM_FRAME_ENC 2
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OUTPUT_TYPE_P 1
 #define OUTPUT_TYPE_T 2
 #define OUTPUT_TYPE_S 3
 #define OUTPUT_TYPE_V 4
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msm_frame {
  int path;
  unsigned long buffer;
  uint32_t y_off;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t cbcr_off;
  int fd;
-
  void *cropinfo;
  int croplen;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define STAT_AEAW 0
 #define STAT_AF 1
 #define STAT_AEC 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STAT_AWB 3
 #define STAT_RS 4
 #define STAT_CS 5
 #define STAT_IHIST 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define STAT_SKIN 7
 #define STAT_MAX 8
-
 struct msm_stats_buf {
  int type;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long buffer;
  int fd;
 };
-
 #define MSM_V4L2_VID_CAP_TYPE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_V4L2_STREAM_ON 1
 #define MSM_V4L2_STREAM_OFF 2
 #define MSM_V4L2_SNAPSHOT 3
 #define MSM_V4L2_QUERY_CTRL 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MSM_V4L2_GET_CTRL 5
 #define MSM_V4L2_SET_CTRL 6
 #define MSM_V4L2_QUERY 7
 #define MSM_V4L2_MAX 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct crop_info {
  void *info;
  int len;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct msm_postproc {
  int ftnum;
  struct msm_frame fthumnail;
  int fmnum;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct msm_frame fmain;
 };
-
 struct msm_snapshot_pp_status {
  void *status;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #define CFG_SET_MODE 0
 #define CFG_SET_EFFECT 1
 #define CFG_START 2
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFG_PWR_UP 3
 #define CFG_PWR_DOWN 4
 #define CFG_WRITE_EXPOSURE_GAIN 5
 #define CFG_SET_DEFAULT_FOCUS 6
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFG_MOVE_FOCUS 7
 #define CFG_REGISTER_TO_REAL_GAIN 8
 #define CFG_REAL_TO_REGISTER_GAIN 9
 #define CFG_SET_FPS 10
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFG_SET_PICT_FPS 11
 #define CFG_SET_BRIGHTNESS 12
 #define CFG_SET_CONTRAST 13
 #define CFG_SET_ZOOM 14
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFG_SET_EXPOSURE_MODE 15
 #define CFG_SET_WB 16
 #define CFG_SET_ANTIBANDING 17
 #define CFG_SET_EXP_GAIN 18
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFG_SET_PICT_EXP_GAIN 19
 #define CFG_SET_LENS_SHADING 20
 #define CFG_GET_PICT_FPS 21
 #define CFG_GET_PREV_L_PF 22
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFG_GET_PREV_P_PL 23
 #define CFG_GET_PICT_L_PF 24
 #define CFG_GET_PICT_P_PL 25
 #define CFG_GET_AF_MAX_STEPS 26
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CFG_GET_PICT_MAX_EXP_LC 27
 #define CFG_MAX 28
-
 #define MOVE_NEAR 0
 #define MOVE_FAR 1
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SENSOR_PREVIEW_MODE 0
 #define SENSOR_SNAPSHOT_MODE 1
 #define SENSOR_RAW_SNAPSHOT_MODE 2
-
 #define SENSOR_QTR_SIZE 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SENSOR_FULL_SIZE 1
 #define SENSOR_INVALID_SIZE 2
-
 #define CAMERA_EFFECT_OFF 0
 #define CAMERA_EFFECT_MONO 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAMERA_EFFECT_NEGATIVE 2
 #define CAMERA_EFFECT_SOLARIZE 3
 #define CAMERA_EFFECT_PASTEL 4
 #define CAMERA_EFFECT_MOSAIC 5
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAMERA_EFFECT_RESIZE 6
 #define CAMERA_EFFECT_SEPIA 7
 #define CAMERA_EFFECT_POSTERIZE 8
 #define CAMERA_EFFECT_WHITEBOARD 9
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define CAMERA_EFFECT_BLACKBOARD 10
 #define CAMERA_EFFECT_AQUA 11
 #define CAMERA_EFFECT_MAX 12
-
 struct sensor_pict_fps {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t prevfps;
  uint16_t pictfps;
 };
-
 struct exp_gain_cfg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t gain;
  uint32_t line;
 };
-
 struct focus_cfg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int32_t steps;
  int dir;
 };
-
 struct fps_cfg {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t f_mult;
  uint16_t fps_div;
  uint32_t pict_fps_div;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct sensor_cfg_data {
  int cfgtype;
  int mode;
  int rs;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint8_t max_steps;
-
  union {
  int8_t effect;
  uint8_t lens_shading;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint16_t prevl_pf;
  uint16_t prevp_pl;
  uint16_t pictl_pf;
  uint16_t pictp_pl;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t pict_max_exp_lc;
  uint16_t p_fps;
  struct sensor_pict_fps gfps;
  struct exp_gain_cfg exp_gain;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct focus_cfg focus;
  struct fps_cfg fps;
  } cfg;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GET_NAME 0
 #define GET_PREVIEW_LINE_PER_FRAME 1
 #define GET_PREVIEW_PIXELS_PER_LINE 2
 #define GET_SNAPSHOT_LINE_PER_FRAME 3
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define GET_SNAPSHOT_PIXELS_PER_LINE 4
 #define GET_SNAPSHOT_FPS 5
 #define GET_SNAPSHOT_MAX_EP_LINE_CNT 6
-
 struct msm_camsensor_info {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  char name[MAX_SENSOR_NAME];
  uint8_t flash_enabled;
 };
 #endif
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
diff --git a/libc/kernel/common/media/ov5650.h b/libc/kernel/common/media/ov5650.h
index 3603dc2..e8cef38 100644
--- a/libc/kernel/common/media/ov5650.h
+++ b/libc/kernel/common/media/ov5650.h
@@ -7,57 +7,63 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __OV5650_H__
 #define __OV5650_H__
-
 #include <linux/ioctl.h>  
-
 #define OV5650_IOCTL_SET_MODE _IOW('o', 1, struct ov5650_mode)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OV5650_IOCTL_SET_FRAME_LENGTH _IOW('o', 2, __u32)
 #define OV5650_IOCTL_SET_COARSE_TIME _IOW('o', 3, __u32)
 #define OV5650_IOCTL_SET_GAIN _IOW('o', 4, __u16)
 #define OV5650_IOCTL_GET_STATUS _IOR('o', 5, __u8)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OV5650_IOCTL_GET_OTP _IOR('o', 6, struct ov5650_otp_data)
 #define OV5650_IOCTL_TEST_PATTERN _IOW('o', 7, enum ov5650_test_pattern)
-
 enum ov5650_test_pattern {
  TEST_PATTERN_NONE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  TEST_PATTERN_COLORBARS,
  TEST_PATTERN_CHECKERBOARD
 };
-
 struct ov5650_otp_data {
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 sensor_serial_num[6];
  __u8 part_num[8];
  __u8 lens_id[1];
  __u8 manufacture_id[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 factory_id[2];
  __u8 manufacture_date[9];
  __u8 manufacture_line[2];
-
  __u32 module_serial_num;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 focuser_liftoff[2];
  __u8 focuser_macro[2];
  __u8 reserved1[12];
  __u8 shutter_cal[16];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 reserved2[183];
-
  __u16 crc;
  __u8 reserved3[3];
  __u8 auto_load[2];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 } __attribute__ ((packed));
-
 struct ov5650_mode {
  int xres;
  int yres;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u32 frame_length;
  __u32 coarse_time;
  __u16 gain;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #endif
-
-
diff --git a/libc/kernel/common/media/soc2030.h b/libc/kernel/common/media/soc2030.h
index 850ab13..b8402ea 100644
--- a/libc/kernel/common/media/soc2030.h
+++ b/libc/kernel/common/media/soc2030.h
@@ -7,100 +7,114 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __SOC2030_H__
 #define __SOC2030_H__
-
-#include <linux/ioctl.h>
-
+#include <linux/ioctl.h>  
 #define SOC2030_IOCTL_SET_MODE _IOWR('o', 1, struct soc2030_mode)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOC2030_IOCTL_GET_STATUS _IOC(_IOC_READ, 'o', 2, 10)
 #define SOC2030_IOCTL_SET_PRIVATE _IOWR('o', 3, struct soc2030_regs)
 #define SOC2030_IOCTL_GET_MODES _IO('o', 4)
 #define SOC2030_IOCTL_GET_NUM_MODES _IOR('o', 5, unsigned int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOC2030_IOCTL_SET_EFFECT _IOWR('o', 6, unsigned int)
 #define SOC2030_IOCTL_SET_WHITEBALANCE _IOWR('o', 7, unsigned int)
 #define SOC2030_IOCTL_SET_EXP_COMP _IOWR('o', 8, int)
 #define SOC2030_IOCTL_SET_LOCK _IOWR('o', 9, struct soc2030_lock)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOC2030_POLL_WAITMS 50
 #define SOC2030_MAX_RETRIES 3
 #define SOC2030_POLL_RETRIES 7
-
 #define SOC2030_MAX_PRIVATE_SIZE 1024
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define SOC2030_MAX_NUM_MODES 6
-
 #define SOC_EV_MAX 2
 #define SOC_EV_MIN -2
 #define EXP_TARGET 0x32
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  REG_TABLE_END,
  WRITE_REG_DATA,
  WRITE_REG_BIT_H,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  WRITE_REG_BIT_L,
  POLL_REG_DATA,
  POLL_REG_BIT_H,
  POLL_REG_BIT_L,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  WRITE_VAR_DATA,
  POLL_VAR_DATA,
  DELAY_MS,
  WRITE_REG_VAR1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  WRITE_REG_VAR2,
  WRITE_REG_VAR3,
  WRITE_REG_VAR4,
  READ_REG_VAR1,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  READ_REG_VAR2,
  READ_REG_VAR3,
  READ_REG_VAR4,
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define REG_VAR1 (READ_REG_VAR1 - READ_REG_VAR1)
 #define REG_VAR2 (READ_REG_VAR2 - READ_REG_VAR1)
 #define REG_VAR3 (READ_REG_VAR3 - READ_REG_VAR1)
 #define REG_VAR4 (READ_REG_VAR4 - READ_REG_VAR1)
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum {
  EFFECT_NONE,
  EFFECT_BW,
  EFFECT_NEGATIVE,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  EFFECT_POSTERIZE,
  EFFECT_SEPIA,
  EFFECT_SOLARIZE,
  EFFECT_AQUA,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  EFFECT_MAX,
 };
-
 enum {
  WB_AUTO,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  WB_INCANDESCENT,
  WB_FLUORESCENT,
  WB_DAYLIGHT,
  WB_CLOUDYDAYLIGHT,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  WB_NIGHT,
  WB_MAX,
 };
-
 struct soc2030_regs {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  __u8 op;
  __u16 addr;
  __u16 val;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct soc2030_lock {
-        __u8 aelock;
-        __u8 aerelock;
-        __u8 awblock;
-        __u8 awbrelock;
-        __u8 previewactive;
+ __u8 aelock;
+ __u8 aerelock;
+ __u8 awblock;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+ __u8 awbrelock;
+ __u8 previewactive;
 };
-
 struct soc2030_mode {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  int xres;
  int yres;
  int fps;
  struct soc2030_regs *regset;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 #endif
diff --git a/libc/kernel/common/media/tegra_camera.h b/libc/kernel/common/media/tegra_camera.h
index 0f63035..bfa6cfb 100644
--- a/libc/kernel/common/media/tegra_camera.h
+++ b/libc/kernel/common/media/tegra_camera.h
@@ -7,27 +7,34 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 enum {
  TEGRA_CAMERA_MODULE_ISP = 0,
  TEGRA_CAMERA_MODULE_VI,
  TEGRA_CAMERA_MODULE_CSI,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 enum {
  TEGRA_CAMERA_VI_CLK,
  TEGRA_CAMERA_VI_SENSOR_CLK,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct tegra_camera_clk_info {
  uint id;
  uint clk_id;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  unsigned long rate;
 };
-
 #define TEGRA_CAMERA_IOCTL_ENABLE _IOWR('i', 1, uint)
 #define TEGRA_CAMERA_IOCTL_DISABLE _IOWR('i', 2, uint)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define TEGRA_CAMERA_IOCTL_CLK_SET_RATE   _IOWR('i', 3, struct tegra_camera_clk_info)
 #define TEGRA_CAMERA_IOCTL_RESET _IOWR('i', 4, uint)
-
diff --git a/libc/kernel/common/mtd/mtd-abi.h b/libc/kernel/common/mtd/mtd-abi.h
index 0ae2263..434e3cc 100644
--- a/libc/kernel/common/mtd/mtd-abi.h
+++ b/libc/kernel/common/mtd/mtd-abi.h
@@ -7,127 +7,140 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_ABI_H__
 #define __MTD_ABI_H__
-
 struct erase_info_user {
  uint32_t start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t length;
 };
-
 struct mtd_oob_buf {
  uint32_t start;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t length;
  unsigned char __user *ptr;
 };
-
 #define MTD_ABSENT 0
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_RAM 1
 #define MTD_ROM 2
 #define MTD_NORFLASH 3
 #define MTD_NANDFLASH 4
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_DATAFLASH 6
-
 #define MTD_WRITEABLE 0x400  
 #define MTD_BIT_WRITEABLE 0x800  
 #define MTD_NO_ERASE 0x1000  
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_STUPID_LOCK 0x2000  
-
 #define MTD_CAP_ROM 0
 #define MTD_CAP_RAM (MTD_WRITEABLE | MTD_BIT_WRITEABLE | MTD_NO_ERASE)
 #define MTD_CAP_NORFLASH (MTD_WRITEABLE | MTD_BIT_WRITEABLE)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_CAP_NANDFLASH (MTD_WRITEABLE)
-
 #define MTD_NANDECC_OFF 0 
 #define MTD_NANDECC_PLACE 1 
 #define MTD_NANDECC_AUTOPLACE 2 
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_NANDECC_PLACEONLY 3 
 #define MTD_NANDECC_AUTOPL_USR 4 
-
 #define MTD_OTP_OFF 0
 #define MTD_OTP_FACTORY 1
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTD_OTP_USER 2
-
 struct mtd_info_user {
  uint8_t type;
  uint32_t flags;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t size;
  uint32_t erasesize;
  uint32_t writesize;
  uint32_t oobsize;
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t ecctype;
  uint32_t eccsize;
 };
-
 struct region_info_user {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t offset;
  uint32_t erasesize;
  uint32_t numblocks;
  uint32_t regionindex;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
-
 struct otp_info {
  uint32_t start;
  uint32_t length;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t locked;
 };
-
 #define MEMGETINFO _IOR('M', 1, struct mtd_info_user)
 #define MEMERASE _IOW('M', 2, struct erase_info_user)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MEMWRITEOOB _IOWR('M', 3, struct mtd_oob_buf)
 #define MEMREADOOB _IOWR('M', 4, struct mtd_oob_buf)
 #define MEMLOCK _IOW('M', 5, struct erase_info_user)
 #define MEMUNLOCK _IOW('M', 6, struct erase_info_user)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MEMGETREGIONCOUNT _IOR('M', 7, int)
 #define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user)
 #define MEMSETOOBSEL _IOW('M', 9, struct nand_oobinfo)
 #define MEMGETOOBSEL _IOR('M', 10, struct nand_oobinfo)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MEMGETBADBLOCK _IOW('M', 11, loff_t)
 #define MEMSETBADBLOCK _IOW('M', 12, loff_t)
 #define OTPSELECT _IOR('M', 13, int)
 #define OTPGETREGIONCOUNT _IOW('M', 14, int)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define OTPGETREGIONINFO _IOW('M', 15, struct otp_info)
 #define OTPLOCK _IOR('M', 16, struct otp_info)
 #define ECCGETLAYOUT _IOR('M', 17, struct nand_ecclayout)
 #define ECCGETSTATS _IOR('M', 18, struct mtd_ecc_stats)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define MTDFILEMODE _IO('M', 19)
-
 struct nand_oobinfo {
  uint32_t useecc;
  uint32_t eccbytes;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t oobfree[8][2];
  uint32_t eccpos[32];
 };
-
 struct nand_oobfree {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t offset;
  uint32_t length;
 };
-
 #define MTD_MAX_OOBFREE_ENTRIES 8
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 struct nand_ecclayout {
  uint32_t eccbytes;
  uint32_t eccpos[64];
  uint32_t oobavail;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
 };
-
 struct mtd_ecc_stats {
  uint32_t corrected;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  uint32_t failed;
  uint32_t badblocks;
  uint32_t bbtblocks;
 };
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 enum mtd_file_modes {
  MTD_MODE_NORMAL = MTD_OTP_OFF,
  MTD_MODE_OTP_FACTORY = MTD_OTP_FACTORY,
  MTD_MODE_OTP_USER = MTD_OTP_USER,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
  MTD_MODE_RAW,
 };
-
 #endif
diff --git a/libc/kernel/common/mtd/mtd-user.h b/libc/kernel/common/mtd/mtd-user.h
index 1d37dc1..33cb632 100644
--- a/libc/kernel/common/mtd/mtd-user.h
+++ b/libc/kernel/common/mtd/mtd-user.h
@@ -7,19 +7,24 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
  ****************************************************************************
  ****************************************************************************/
 #ifndef __MTD_USER_H__
 #define __MTD_USER_H__
-
 #include <stdint.h>
-
 #include <mtd/mtd-abi.h>
-
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct mtd_info_user mtd_info_t;
 typedef struct erase_info_user erase_info_t;
 typedef struct region_info_user region_info_t;
 typedef struct nand_oobinfo nand_oobinfo_t;
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 typedef struct nand_ecclayout nand_ecclayout_t;
-
 #endif
diff --git a/libc/kernel/common/video/dsscomp.h b/libc/kernel/common/video/dsscomp.h
index 575071f..d3f502c 100644
--- a/libc/kernel/common/video/dsscomp.h
+++ b/libc/kernel/common/video/dsscomp.h
@@ -369,4 +369,3 @@
 #define DSSCIOC_SETUP_DISPC _IOW('O', 133, struct dsscomp_setup_dispc_data)
 #define DSSCIOC_SETUP_DISPLAY _IOW('O', 134, struct dsscomp_setup_display_data)
 #endif
-
diff --git a/libc/kernel/tools/clean_header.py b/libc/kernel/tools/clean_header.py
index 0549fc2..22e62aa 100755
--- a/libc/kernel/tools/clean_header.py
+++ b/libc/kernel/tools/clean_header.py
@@ -37,7 +37,7 @@
         src_path = src_path[1:]
 
     if len(src_path) == 0:
-        panic( "oops, internal error, can't extract correct relative path" )
+        panic( "oops, internal error, can't extract correct relative path\n" )
 
     # convert into destination path, extracting architecture if needed
     # and the corresponding list of known static functions
diff --git a/libc/kernel/tools/update_all.py b/libc/kernel/tools/update_all.py
index 6a730a5..badef92 100755
--- a/libc/kernel/tools/update_all.py
+++ b/libc/kernel/tools/update_all.py
@@ -37,13 +37,13 @@
 progdir = find_program_dir()
 
 if len(args) == 1:
-    original_dir = arg[0]
+    original_dir = args[0]
     if not os.path.isdir(original_dir):
-        panic( "Not a directory: %s" % original_dir )
+        panic( "Not a directory: %s\n" % original_dir )
 else:
     original_dir = kernel_original_path
     if not os.path.isdir(original_dir):
-        panic( "Missing directory, please specify one through command-line: %s" % original_dir )
+        panic( "Missing directory, please specify one through command-line: %s\n" % original_dir )
 
 # find all source files in 'original'
 #
diff --git a/libc/netbsd/net/getaddrinfo.c b/libc/netbsd/net/getaddrinfo.c
index ace8c1a..326b09c 100644
--- a/libc/netbsd/net/getaddrinfo.c
+++ b/libc/netbsd/net/getaddrinfo.c
@@ -130,6 +130,9 @@
 };
 #endif
 
+// This should be synchronized to ResponseCode.h
+static const int DnsProxyQueryResult = 222;
+
 static const struct afd {
 	int a_af;
 	int a_addrlen;
@@ -476,12 +479,15 @@
 		goto exit;
 	}
 
-	int remote_rv;
-	if (fread(&remote_rv, sizeof(int), 1, proxy) != 1) {
+	char buf[4];
+	// read result code for gethostbyaddr
+	if (fread(buf, 1, sizeof(buf), proxy) != sizeof(buf)) {
 		goto exit;
 	}
 
-	if (remote_rv != 0) {
+	int result_code = (int)strtol(buf, NULL, 10);
+	// verify the code itself
+	if (result_code != DnsProxyQueryResult ) {
 		goto exit;
 	}
 
@@ -1867,6 +1873,19 @@
 	free(elems);
 }
 
+static int _using_alt_dns()
+{
+	char propname[PROP_NAME_MAX];
+	char propvalue[PROP_VALUE_MAX];
+
+	propvalue[0] = 0;
+	snprintf(propname, sizeof(propname), "net.dns1.%d", getpid());
+	if (__system_property_get(propname, propvalue) > 0 ) {
+		return 1;
+	}
+	return 0;
+}
+
 /*ARGSUSED*/
 static int
 _dns_getaddrinfo(void *rv, void	*cb_data, va_list ap)
@@ -1909,14 +1928,12 @@
 		q.anslen = sizeof(buf->buf);
 		int query_ipv6 = 1, query_ipv4 = 1;
 		if (pai->ai_flags & AI_ADDRCONFIG) {
-			query_ipv6 = _have_ipv6();
-			query_ipv4 = _have_ipv4();
-			if (query_ipv6 == 0 && query_ipv4 == 0) {
-				// Both our IPv4 and IPv6 connectivity probes failed, which indicates
-				// that we have neither an IPv4 or an IPv6 default route (and thus no
-				// global IPv4 or IPv6 connectivity). We might be in a walled garden.
-				// Throw up our arms and ask for both A and AAAA.
-				query_ipv6 = query_ipv4 = 1;
+			// Only implement AI_ADDRCONFIG if the application is not
+			// using its own DNS servers, since our implementation
+			// only works on the default connection.
+			if (!_using_alt_dns()) {
+				query_ipv6 = _have_ipv6();
+				query_ipv4 = _have_ipv4();
 			}
 		}
 		if (query_ipv6) {
diff --git a/libc/netbsd/net/getnameinfo.c b/libc/netbsd/net/getnameinfo.c
index d3d0011..8a1e95e 100644
--- a/libc/netbsd/net/getnameinfo.c
+++ b/libc/netbsd/net/getnameinfo.c
@@ -108,6 +108,10 @@
     socklen_t, char *, socklen_t, int));
 static int hexname __P((const u_int8_t *, size_t, char *, socklen_t));
 
+// This should be synchronized to ResponseCode.h
+static const int DnsProxyQueryResult = 222;
+
+
 /*
  * Top-level getnameinfo() code.  Look at the address family, and pick an
  * appropriate function to call.
@@ -135,7 +139,7 @@
  * the address. On failure -1 is returned in which case
  * normal execution flow shall continue. */
 static int
-android_gethostbyaddr_proxy(struct hostent* hp, const void *addr, socklen_t addrLen, int addrFamily) {
+android_gethostbyaddr_proxy(char* nameBuf, size_t nameBufLen, const void *addr, socklen_t addrLen, int addrFamily) {
 
 	int sock;
 	const int one = 1;
@@ -183,7 +187,7 @@
 	}
 
 	char buf[INET6_ADDRSTRLEN]; // big enough for IPv4 and IPv6
-	const char* addrStr = inet_ntop(addrFamily, addr, &buf, sizeof(buf));
+	const char* addrStr = inet_ntop(addrFamily, addr, buf, sizeof(buf));
 	if (addrStr == NULL) {
 		goto exit;
 	}
@@ -197,17 +201,29 @@
 	}
 
 	result = 0;
+	char msg_buf[4];
+	// read result code for gethostbyaddr
+	if (fread(msg_buf, 1, sizeof(msg_buf), proxy) != sizeof(msg_buf)) {
+		goto exit;
+	}
+
+	int result_code = (int)strtol(msg_buf, NULL, 10);
+	// verify the code itself
+	if (result_code != DnsProxyQueryResult) {
+		goto exit;
+	}
+
 	uint32_t name_len;
 	if (fread(&name_len, sizeof(name_len), 1, proxy) != 1) {
 		goto exit;
 	}
 
 	name_len = ntohl(name_len);
-	if (name_len <= 0) {
+	if (name_len <= 0 || name_len >= nameBufLen) {
 		goto exit;
 	}
 
-	if (fread(hp->h_name, name_len, 1, proxy) != 1) {
+	if (fread(nameBuf, name_len, 1, proxy) != 1) {
 		goto exit;
 	}
 
@@ -376,12 +392,14 @@
 #ifdef ANDROID_CHANGES
 		struct hostent android_proxy_hostent;
 		char android_proxy_buf[MAXDNAME];
-		android_proxy_hostent.h_name = android_proxy_buf;
 
-		int hostnamelen = android_gethostbyaddr_proxy(&android_proxy_hostent,
-				addr, afd->a_addrlen, afd->a_af);
-		if (hostnamelen >= 0) {
-			hp = (hostnamelen > 0) ? &android_proxy_hostent : NULL;
+		int hostnamelen = android_gethostbyaddr_proxy(android_proxy_buf,
+				MAXDNAME, addr, afd->a_addrlen, afd->a_af);
+		if (hostnamelen > 0) {
+			hp = &android_proxy_hostent;
+			hp->h_name = android_proxy_buf;
+		} else if (!hostnamelen) {
+			hp = NULL;
 		} else {
 			hp = gethostbyaddr(addr, afd->a_addrlen, afd->a_af);
 		}
diff --git a/libc/netbsd/resolv/res_cache.c b/libc/netbsd/resolv/res_cache.c
index e88c221..9ae627c 100644
--- a/libc/netbsd/resolv/res_cache.c
+++ b/libc/netbsd/resolv/res_cache.c
@@ -42,6 +42,7 @@
 
 #include <arpa/inet.h>
 #include "resolv_private.h"
+#include "resolv_iface.h"
 
 /* This code implements a small and *simple* DNS resolver cache.
  *
@@ -137,9 +138,19 @@
  *
  * The system property ro.net.dns_cache_size can be used to override the default
  * value with a custom value
+ *
+ *
+ * ******************************************
+ * * NOTE - this has changed.
+ * * 1) we've added IPv6 support so each dns query results in 2 responses
+ * * 2) we've made this a system-wide cache, so the cost is less (it's not
+ * *    duplicated in each process) and the need is greater (more processes
+ * *    making different requests).
+ * * Upping by 2x for IPv6
+ * * Upping by another 5x for the centralized nature
+ * *****************************************
  */
-#define  CONFIG_MAX_ENTRIES    64
-
+#define  CONFIG_MAX_ENTRIES    64 * 2 * 5
 /* name of the system property that can be used to set the cache size */
 #define  DNS_CACHE_SIZE_PROP_NAME   "ro.net.dns_cache_size"
 
@@ -1217,6 +1228,16 @@
     int result = -1;
     char cache_size[PROP_VALUE_MAX];
 
+    const char* cache_mode = getenv("ANDROID_DNS_MODE");
+
+    if (cache_mode == NULL || strcmp(cache_mode, "local") != 0) {
+        // Don't use the cache in local mode.  This is used by the
+        // proxy itself.
+        // TODO - change this to 0 when all dns stuff uses proxy (5918973)
+        XLOG("setup cache for non-cache process. size=1");
+        return 1;
+    }
+
     if (__system_property_get(DNS_CACHE_SIZE_PROP_NAME, cache_size) > 0) {
         result = atoi(cache_size);
     }
diff --git a/libc/private/bionic_atomic_arm.h b/libc/private/bionic_atomic_arm.h
new file mode 100644
index 0000000..275c1c9
--- /dev/null
+++ b/libc/private/bionic_atomic_arm.h
@@ -0,0 +1,284 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef BIONIC_ATOMIC_ARM_H
+#define BIONIC_ATOMIC_ARM_H
+
+#include <machine/cpu-features.h>
+
+/* Some of the harware instructions used below are not available in Thumb-1
+ * mode (they are if you build in ARM or Thumb-2 mode though). To solve this
+ * problem, we're going to use the same technique than libatomics_ops,
+ * which is to temporarily switch to ARM, do the operation, then switch
+ * back to Thumb-1.
+ *
+ * This results in two 'bx' jumps, just like a normal function call, but
+ * everything is kept inlined, avoids loading or computing the function's
+ * address, and prevents a little I-cache trashing too.
+ *
+ * However, it is highly recommended to avoid compiling any C library source
+ * file that use these functions in Thumb-1 mode.
+ *
+ * Define three helper macros to implement this:
+ */
+#if defined(__thumb__) && !defined(__thumb2__)
+#  define  __ATOMIC_SWITCH_TO_ARM \
+            "adr r3, 5f\n" \
+            "bx  r3\n" \
+            ".align\n" \
+            ".arm\n" \
+        "5:\n"
+/* note: the leading \n below is intentional */
+#  define __ATOMIC_SWITCH_TO_THUMB \
+            "\n" \
+            "adr r3, 6f\n" \
+            "bx  r3\n" \
+            ".thumb" \
+        "6:\n"
+
+#  define __ATOMIC_CLOBBERS   "r3"  /* list of clobbered registers */
+
+/* Warn the user that ARM mode should really be preferred! */
+#  warning Rebuilding this source file in ARM mode is highly recommended for performance!!
+
+#else
+#  define  __ATOMIC_SWITCH_TO_ARM   /* nothing */
+#  define  __ATOMIC_SWITCH_TO_THUMB /* nothing */
+#  define  __ATOMIC_CLOBBERS        /* nothing */
+#endif
+
+
+/* Define a full memory barrier, this is only needed if we build the
+ * platform for a multi-core device. For the record, using a 'dmb'
+ * instruction on a Nexus One device can take up to 180 ns even if
+ * it is completely un-necessary on this device.
+ *
+ * NOTE: This is where the platform and NDK headers atomic headers are
+ *        going to diverge. With the NDK, we don't know if the generated
+ *        code is going to run on a single or multi-core device, so we
+ *        need to be cautious.
+ *
+ *        Fortunately, we can use the kernel helper function that is
+ *        mapped at address 0xffff0fa0 in all user process, and that
+ *        provides a device-specific barrier operation.
+ *
+ *        I.e. on single-core devices, the helper immediately returns,
+ *        on multi-core devices, it uses "dmb" or any other means to
+ *        perform a full-memory barrier.
+ *
+ * There are three cases to consider for the platform:
+ *
+ *    - multi-core ARMv7-A       => use the 'dmb' hardware instruction
+ *    - multi-core ARMv6         => use the coprocessor
+ *    - single core ARMv5TE/6/7  => do not use any hardware barrier
+ */
+#if defined(ANDROID_SMP) && ANDROID_SMP == 1
+
+/* Sanity check, multi-core is only supported starting from ARMv6 */
+#  if __ARM_ARCH__ < 6
+#    error ANDROID_SMP should not be set to 1 for an ARM architecture less than 6
+#  endif
+
+#  ifdef __ARM_HAVE_DMB
+/* For ARMv7-A, we can use the 'dmb' instruction directly */
+__ATOMIC_INLINE__ void
+__bionic_memory_barrier(void)
+{
+    /* Note: we always build in ARM or Thumb-2 on ARMv7-A, so don't
+     * bother with __ATOMIC_SWITCH_TO_ARM */
+    __asm__ __volatile__ ( "dmb" : : : "memory" );
+}
+#  else /* !__ARM_HAVE_DMB */
+/* Otherwise, i.e. for multi-core ARMv6, we need to use the coprocessor,
+ * which requires the use of a general-purpose register, which is slightly
+ * less efficient.
+ */
+__ATOMIC_INLINE__ void
+__bionic_memory_barrier(void)
+{
+    __asm__ __volatile__ (
+        __SWITCH_TO_ARM
+        "mcr p15, 0, %0, c7, c10, 5"
+        __SWITCH_TO_THUMB
+        : : "r" (0) : __ATOMIC_CLOBBERS "memory");
+}
+#  endif /* !__ARM_HAVE_DMB */
+#else /* !ANDROID_SMP */
+__ATOMIC_INLINE__ void
+__bionic_memory_barrier(void)
+{
+    /* A simple compiler barrier */
+    __asm__ __volatile__ ( "" : : : "memory" );
+}
+#endif /* !ANDROID_SMP */
+
+/* Compare-and-swap, without any explicit barriers. Note that this functions
+ * returns 0 on success, and 1 on failure. The opposite convention is typically
+ * used on other platforms.
+ *
+ * There are two cases to consider:
+ *
+ *     - ARMv6+  => use LDREX/STREX instructions
+ *     - < ARMv6 => use kernel helper function mapped at 0xffff0fc0
+ *
+ * LDREX/STREX are only available starting from ARMv6
+ */
+#ifdef __ARM_HAVE_LDREX_STREX
+__ATOMIC_INLINE__ int
+__bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr)
+{
+    int32_t prev, status;
+    do {
+        __asm__ __volatile__ (
+            __ATOMIC_SWITCH_TO_ARM
+            "ldrex %0, [%3]\n"
+            "mov %1, #0\n"
+            "teq %0, %4\n"
+#ifdef __thumb2__
+            "it eq\n"
+#endif
+            "strexeq %1, %5, [%3]"
+            __ATOMIC_SWITCH_TO_THUMB
+            : "=&r" (prev), "=&r" (status), "+m"(*ptr)
+            : "r" (ptr), "Ir" (old_value), "r" (new_value)
+            : __ATOMIC_CLOBBERS "cc");
+    } while (__builtin_expect(status != 0, 0));
+    return prev != old_value;
+}
+#  else /* !__ARM_HAVE_LDREX_STREX */
+
+/* Use the handy kernel helper function mapped at 0xffff0fc0 */
+typedef int (kernel_cmpxchg)(int32_t, int32_t, volatile int32_t *);
+
+__ATOMIC_INLINE__ int
+__kernel_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr)
+{
+    /* Note: the kernel function returns 0 on success too */
+    return (*(kernel_cmpxchg *)0xffff0fc0)(old_value, new_value, ptr);
+}
+
+__ATOMIC_INLINE__ int
+__bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr)
+{
+    return __kernel_cmpxchg(old_value, new_value, ptr);
+}
+#endif /* !__ARM_HAVE_LDREX_STREX */
+
+/* Swap operation, without any explicit barriers.
+ * There are again two similar cases to consider:
+ *
+ *   ARMv6+ => use LDREX/STREX
+ *   < ARMv6 => use SWP instead.
+ */
+#ifdef __ARM_HAVE_LDREX_STREX
+__ATOMIC_INLINE__ int32_t
+__bionic_swap(int32_t new_value, volatile int32_t* ptr)
+{
+    int32_t prev, status;
+    do {
+        __asm__ __volatile__ (
+            __ATOMIC_SWITCH_TO_ARM
+            "ldrex %0, [%3]\n"
+            "strex %1, %4, [%3]"
+            __ATOMIC_SWITCH_TO_THUMB
+            : "=&r" (prev), "=&r" (status), "+m" (*ptr)
+            : "r" (ptr), "r" (new_value)
+            : __ATOMIC_CLOBBERS "cc");
+    } while (__builtin_expect(status != 0, 0));
+    return prev;
+}
+#else /* !__ARM_HAVE_LDREX_STREX */
+__ATOMIC_INLINE__ int32_t
+__bionic_swap(int32_t new_value, volatile int32_t* ptr)
+{
+    int32_t prev;
+    /* NOTE: SWP is available in Thumb-1 too */
+    __asm__ __volatile__ ("swp %0, %2, [%3]"
+                          : "=&r" (prev), "+m" (*ptr)
+                          : "r" (new_value), "r" (ptr)
+                          : "cc");
+    return prev;
+}
+#endif /* !__ARM_HAVE_LDREX_STREX */
+
+/* Atomic increment - without any barriers
+ * This returns the old value
+ */
+#ifdef __ARM_HAVE_LDREX_STREX
+__ATOMIC_INLINE__ int32_t
+__bionic_atomic_inc(volatile int32_t* ptr)
+{
+    int32_t prev, tmp, status;
+    do {
+        __asm__ __volatile__ (
+            __ATOMIC_SWITCH_TO_ARM
+            "ldrex %0, [%4]\n"
+            "add %1, %0, #1\n"
+            "strex %2, %1, [%4]"
+            __ATOMIC_SWITCH_TO_THUMB
+            : "=&r" (prev), "=&r" (tmp), "=&r" (status), "+m"(*ptr)
+            : "r" (ptr)
+            : __ATOMIC_CLOBBERS "cc");
+    } while (__builtin_expect(status != 0, 0));
+    return prev;
+}
+#else
+__ATOMIC_INLINE__ int32_t
+__bionic_atomic_inc(volatile int32_t* ptr)
+{
+    int32_t  prev, status;
+    do {
+        prev = *ptr;
+        status = __kernel_cmpxchg(prev, prev+1, ptr);
+    } while (__builtin_expect(status != 0, 0));
+    return prev;
+}
+#endif
+
+/* Atomic decrement - without any barriers
+ * This returns the old value.
+ */
+#ifdef __ARM_HAVE_LDREX_STREX
+__ATOMIC_INLINE__ int32_t
+__bionic_atomic_dec(volatile int32_t* ptr)
+{
+    int32_t prev, tmp, status;
+    do {
+        __asm__ __volatile__ (
+            __ATOMIC_SWITCH_TO_ARM
+            "ldrex %0, [%4]\n"
+            "sub %1, %0, #1\n"
+            "strex %2, %1, [%4]"
+            __ATOMIC_SWITCH_TO_THUMB
+            : "=&r" (prev), "=&r" (tmp), "=&r" (status), "+m"(*ptr)
+            : "r" (ptr)
+            : __ATOMIC_CLOBBERS "cc");
+    } while (__builtin_expect(status != 0, 0));
+    return prev;
+}
+#else
+__ATOMIC_INLINE__ int32_t
+__bionic_atomic_dec(volatile int32_t* ptr)
+{
+    int32_t  prev, status;
+    do {
+        prev = *ptr;
+        status = __kernel_cmpxchg(prev, prev-1, ptr);
+    } while (__builtin_expect(status != 0, 0));
+    return prev;
+}
+#endif
+
+#endif /* SYS_ATOMICS_ARM_H */
diff --git a/libc/private/bionic_atomic_gcc_builtin.h b/libc/private/bionic_atomic_gcc_builtin.h
new file mode 100644
index 0000000..e7c5761
--- /dev/null
+++ b/libc/private/bionic_atomic_gcc_builtin.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef BIONIC_ATOMIC_GCC_BUILTIN_H
+#define BIONIC_ATOMIC_GCC_BUILTIN_H
+
+/* This header file is used by default if we don't have optimized atomic
+ * routines for a given platform. See bionic_atomic_arm.h and
+ * bionic_atomic_x86.h for examples.
+ */
+
+__ATOMIC_INLINE__ void
+__bionic_memory_barrier(void)
+{
+    __sync_synchronize();
+}
+
+__ATOMIC_INLINE__ int
+__bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr)
+{
+    /* We must return 0 on success */
+    return __sync_bool_compare_and_swap(ptr, old_value, new_value) == 0;
+}
+
+__ATOMIC_INLINE__ int32_t
+__bionic_swap(int32_t new_value, volatile int32_t* ptr)
+{
+    int32_t prev;
+    do {
+        prev = *ptr;
+        status = __sync_val_compare_and_swap(ptr, prev, new_value);
+    } while (status == 0);
+    return prev;
+}
+
+__ATOMIC_INLINE__ int32_t
+__bionic_atomic_inc(volatile int32_t* ptr)
+{
+    /* We must return the old value */
+    return __sync_fetch_and_add(ptr, 1);
+}
+
+__ATOMIC_INLINE__ int32_t
+__bionic_atomic_dec(volatile int32_t* ptr)
+{
+    /* We must return the old value */
+    return __sync_fetch_and_add(ptr, -1);
+}
+
+#endif /* BIONIC_ATOMIC_GCC_BUILTIN_H */
diff --git a/libc/private/bionic_atomic_inline.h b/libc/private/bionic_atomic_inline.h
index 95766e1..821ad39 100644
--- a/libc/private/bionic_atomic_inline.h
+++ b/libc/private/bionic_atomic_inline.h
@@ -43,62 +43,21 @@
 extern "C" {
 #endif
 
-/*
- * Define the full memory barrier for an SMP system.  This is
- * platform-specific.
+/* Define __ATOMIC_INLINE__ to control the inlining of all atomics
+ * functions declared here. For a slight performance boost, we want
+ * all of them to be always_inline
  */
+#define  __ATOMIC_INLINE__  static __inline__ __attribute__((always_inline))
 
 #ifdef __arm__
-#include <machine/cpu-features.h>
-
-/*
- * For ARMv6K we need to issue a specific MCR instead of the DMB, since
- * that wasn't added until v7.  For anything older, SMP isn't relevant.
- * Since we don't have an ARMv6K to test with, we're not going to deal
- * with that now.
- *
- * The DMB instruction is found in the ARM and Thumb2 instruction sets.
- * This will fail on plain 16-bit Thumb.
- */
-#if defined(__ARM_HAVE_DMB)
-# define _ANDROID_MEMBAR_FULL_SMP() \
-    do { __asm__ __volatile__ ("dmb" ::: "memory"); } while (0)
+#  include <bionic_atomic_arm.h>
+#elif defined(__i386__)
+#  include <bionic_atomic_x86.h>
 #else
-# define _ANDROID_MEMBAR_FULL_SMP()  ARM_SMP_defined_but_no_DMB()
+#  include <bionic_atomic_gcc_builtin.h>
 #endif
 
-#elif defined(__i386__) || defined(__x86_64__)
-/*
- * For recent x86, we can use the SSE2 mfence instruction.
- */
-# define _ANDROID_MEMBAR_FULL_SMP() \
-    do { __asm__ __volatile__ ("mfence" ::: "memory"); } while (0)
-
-#else
-/*
- * Implementation not defined for this platform.  Hopefully we're building
- * in uniprocessor mode.
- */
-# define _ANDROID_MEMBAR_FULL_SMP()  SMP_barrier_not_defined_for_platform()
-#endif
-
-
-/*
- * Full barrier.  On uniprocessors this is just a compiler reorder barrier,
- * which ensures that the statements appearing above the barrier in the C/C++
- * code will be issued after the statements appearing below the barrier.
- *
- * For SMP this also includes a memory barrier instruction.  On an ARM
- * CPU this means that the current core will flush pending writes, wait
- * for pending reads to complete, and discard any cached reads that could
- * be stale.  Other CPUs may do less, but the end result is equivalent.
- */
-#if ANDROID_SMP != 0
-# define ANDROID_MEMBAR_FULL() _ANDROID_MEMBAR_FULL_SMP()
-#else
-# define ANDROID_MEMBAR_FULL() \
-    do { __asm__ __volatile__ ("" ::: "memory"); } while (0)
-#endif
+#define ANDROID_MEMBAR_FULL  __bionic_memory_barrier
 
 #ifdef __cplusplus
 } // extern "C"
diff --git a/libc/private/bionic_atomic_x86.h b/libc/private/bionic_atomic_x86.h
new file mode 100644
index 0000000..aca0c4b
--- /dev/null
+++ b/libc/private/bionic_atomic_x86.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#ifndef BIONIC_ATOMIC_X86_H
+#define BIONIC_ATOMIC_X86_H
+
+/* Define a full memory barrier, this is only needed if we build the
+ * platform for a multi-core device.
+ */
+#if defined(ANDROID_SMP) && ANDROID_SMP == 1
+__ATOMIC_INLINE__ void
+__bionic_memory_barrier()
+{
+    __asm__ __volatile__ ( "mfence" : : : "memory" );
+}
+#else
+__ATOMIC_INLINE__ void
+__bionic_memory_barrier()
+{
+    /* A simple compiler barrier */
+    __asm__ __volatile__ ( "" : : : "memory" );
+}
+#endif
+
+/* Compare-and-swap, without any explicit barriers. Note that this function
+ * returns 0 on success, and 1 on failure. The opposite convention is typically
+ * used on other platforms.
+ */
+__ATOMIC_INLINE__ int
+__bionic_cmpxchg(int32_t old_value, int32_t new_value, volatile int32_t* ptr)
+{
+    int32_t prev;
+    __asm__ __volatile__ ("lock; cmpxchgl %1, %2"
+                          : "=a" (prev)
+                          : "q" (new_value), "m" (*ptr), "0" (old_value)
+                          : "memory");
+    return prev != old_value;
+}
+
+
+/* Swap, without any explicit barriers */
+__ATOMIC_INLINE__ int32_t
+__bionic_swap(int32_t new_value, volatile int32_t *ptr)
+{
+    __asm__ __volatile__ ("xchgl %1, %0"
+                          : "=r" (new_value)
+                          : "m" (*ptr), "0" (new_value)
+                          : "memory");
+    return new_value;
+}
+
+/* Atomic increment, without explicit barriers */
+__ATOMIC_INLINE__ int32_t
+__bionic_atomic_inc(volatile int32_t *ptr)
+{
+    int increment = 1;
+    __asm__ __volatile__ ("lock; xaddl %0, %1"
+                          : "+r" (increment), "+m" (*ptr)
+                          : : "memory");
+    /* increment now holds the old value of *ptr */
+    return increment;
+}
+
+/* Atomic decrement, without explicit barriers */
+__ATOMIC_INLINE__ int32_t
+__bionic_atomic_dec(volatile int32_t *ptr)
+{
+    int increment = -1;
+    __asm__ __volatile__ ("lock; xaddl %0, %1"
+                          : "+r" (increment), "+m" (*ptr)
+                          : : "memory");
+    /* increment now holds the old value of *ptr */
+    return increment;
+}
+
+#endif /* BIONIC_ATOMIC_X86_H */
diff --git a/libc/arch-x86/include/sys/atomics.h b/libc/private/bionic_time.h
similarity index 63%
rename from libc/arch-x86/include/sys/atomics.h
rename to libc/private/bionic_time.h
index 7aed3ae..ee82254 100644
--- a/libc/arch-x86/include/sys/atomics.h
+++ b/libc/private/bionic_time.h
@@ -25,41 +25,34 @@
  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  */
-#ifndef _SYS_ATOMICS_H
-#define _SYS_ATOMICS_H
+#ifndef _BIONIC_TIME_H
+#define _BIONIC_TIME_H
 
-#include <sys/cdefs.h>
-#include <sys/time.h>
+#include <time.h>
 
 __BEGIN_DECLS
 
-static inline __attribute__((always_inline)) int
-__atomic_cmpxchg(int old, int _new, volatile int *ptr)
-{
-  return !__sync_bool_compare_and_swap (ptr, old, _new);
-}
+#ifndef _BIONIC_STRFTIME_TZ_DECLARED
+#define _BIONIC_STRFTIME_TZ_DECLARED
 
-static inline __attribute__((always_inline)) int
-__atomic_swap(int _new, volatile int *ptr)
-{
-  return __sync_lock_test_and_set(ptr, _new);
-}
+struct strftime_locale {
+    const char *  mon[12];
+    const char *  month[12];
+    const char *  standalone_month[12];
+    const char *  wday[7];
+    const char *  weekday[7];
+    const char *  X_fmt;
+    const char *  x_fmt;
+    const char *  c_fmt;
+    const char *  am;
+    const char *  pm;
+    const char *  date_fmt;
+};
 
-static inline __attribute__((always_inline)) int
-__atomic_dec(volatile int *ptr)
-{
-  return __sync_fetch_and_sub (ptr, 1);
-}
+extern size_t      strftime_tz(char *s, size_t max, const char *format, const struct tm *tm, const struct strftime_locale*  lc);
 
-static inline __attribute__((always_inline)) int
-__atomic_inc(volatile int *ptr)
-{
-  return __sync_fetch_and_add (ptr, 1);
-}
-
-int __futex_wait(volatile void *ftx, int val, const struct timespec *timeout);
-int __futex_wake(volatile void *ftx, int count);
+#endif /* _BIONIC_STRFTIME_TZ_DECLARED */
 
 __END_DECLS
 
-#endif /* _SYS_ATOMICS_H */
+#endif /* _BIONIC_TIME_H */
diff --git a/libc/private/resolv_iface.h b/libc/private/resolv_iface.h
new file mode 100644
index 0000000..f562687
--- /dev/null
+++ b/libc/private/resolv_iface.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+#ifndef _RESOLV_IFACE_H
+#define _RESOLV_IFACE_H
+
+/* This header contains declarations related to per-interface DNS
+ * server selection. They are used by system/netd/ and should not be
+ * exposed by the C library's public NDK headers.
+ *
+ * NOTE: <resolv.h> contains the same declarations, this will be removed
+ *        when we change system/netd to use this header instead.
+ */
+#include <sys/cdefs.h>
+#include <netinet/in.h>
+
+__BEGIN_DECLS
+
+/* Use a guard macro until we remove the same definitions from <resolv.h> */
+#ifndef _BIONIC_RESOLV_IFACE_FUNCTIONS_DECLARED
+#define _BIONIC_RESOLV_IFACE_FUNCTIONS_DECLARED
+
+/* Set name of default interface */
+extern void _resolv_set_default_iface(const char* ifname);
+
+/* set name servers for an interface */
+extern void _resolv_set_nameservers_for_iface(const char* ifname, char** servers, int numservers);
+
+/* tell resolver of the address of an interface */
+extern void _resolv_set_addr_of_iface(const char* ifname, struct in_addr* addr);
+
+/* flush the cache associated with the default interface */
+extern void _resolv_flush_cache_for_default_iface();
+
+/* flush the cache associated with a certain interface */
+extern void _resolv_flush_cache_for_iface(const char* ifname);
+
+#endif /* _BIONIC_RESOLV_IFACE_FUNCTIONS_DECLARED */
+
+__END_DECLS
+
+#endif /* _RESOLV_IFACE_H */
diff --git a/libc/stdio/fileext.h b/libc/stdio/fileext.h
index 2d07043..b36a448 100644
--- a/libc/stdio/fileext.h
+++ b/libc/stdio/fileext.h
@@ -29,24 +29,41 @@
  * $Citrus$
  */
 
+#include <pthread.h>
+#include "wcio.h"
+
 /*
  * file extension
  */
 struct __sfileext {
 	struct	__sbuf _ub; /* ungetc buffer */
 	struct wchar_io_data _wcio;	/* wide char io status */
+	pthread_mutex_t _lock; /* file lock */
 };
 
+#define _FILEEXT_INITIALIZER  {{NULL,0},{0},PTHREAD_RECURSIVE_MUTEX_INITIALIZER}
+
 #define _EXT(fp) ((struct __sfileext *)((fp)->_ext._base))
 #define _UB(fp) _EXT(fp)->_ub
+#define _FLOCK(fp)  _EXT(fp)->_lock
 
 #define _FILEEXT_INIT(fp) \
 do { \
 	_UB(fp)._base = NULL; \
 	_UB(fp)._size = 0; \
 	WCIO_INIT(fp); \
+	_FLOCK_INIT(fp); \
 } while (0)
 
+/* Helper macros to avoid a function call when you know that fp is not NULL.
+ * Notice that we keep _FLOCK_INIT() fast by slightly breaking our pthread
+ * encapsulation.
+ */
+#define _FLOCK_INIT(fp)    _FLOCK(fp).value = __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE
+#define _FLOCK_LOCK(fp)    pthread_mutex_lock(&_FLOCK(fp))
+#define _FLOCK_TRYLOCK(fp) pthread_mutex_trylock(&_FLOCK(fp))
+#define _FLOCK_UNLOCK(fp)  pthread_mutex_unlock(&_FLOCK(fp))
+
 #define _FILEEXT_SETUP(f, fext) \
 do { \
 	(f)->_ext._base = (unsigned char *)(fext); \
diff --git a/libc/stdio/findfp.c b/libc/stdio/findfp.c
index a659c87..76ed5ee 100644
--- a/libc/stdio/findfp.c
+++ b/libc/stdio/findfp.c
@@ -58,7 +58,12 @@
 static struct glue *lastglue = &uglue;
 _THREAD_PRIVATE_MUTEX(__sfp_mutex);
 
-static struct __sfileext __sFext[3];
+static struct __sfileext __sFext[3] = {
+	_FILEEXT_INITIALIZER,
+	_FILEEXT_INITIALIZER,
+	_FILEEXT_INITIALIZER,
+};
+
 FILE __sF[3] = {
 	std(__SRD, STDIN_FILENO),		/* stdin */
 	std(__SWR, STDOUT_FILENO),		/* stdout */
diff --git a/libc/stdio/flockfile.c b/libc/stdio/flockfile.c
index e8c74c5..368fb15 100644
--- a/libc/stdio/flockfile.c
+++ b/libc/stdio/flockfile.c
@@ -31,122 +31,23 @@
  * we can't use the OpenBSD implementation which uses kernel-specific
  * APIs not available on Linux.
  *
- * Ideally, this would be trivially implemented by adding a
- * pthread_mutex_t field to struct __sFILE as defined in
- * <stdio.h>.
- *
- * However, since we don't want to bring pthread into the mix
- * as well as change the size of a public API/ABI structure,
- * we're going to store the data out-of-band.
- *
- * we use a hash-table to map FILE* pointers to recursive mutexes
- * fclose() will call __fremovelock() defined below to remove
- * a pointer from the table.
+ * Instead, we use a pthread_mutex_t within the FILE* internal state.
+ * See fileext.h for details.
  *
  * the behaviour, if fclose() is called while the corresponding
  * file is locked is totally undefined.
  */
 #include <stdio.h>
-#include <pthread.h>
 #include <string.h>
+#include <errno.h>
+#include "fileext.h"
 
-/* a node in the hash table */
-typedef struct FileLock {
-    struct FileLock*  next;
-    FILE*             file;
-    pthread_mutex_t   mutex;
-} FileLock;
-
-/* use a static hash table. We assume that we're not going to
- * lock a really large number of FILE* objects on an embedded
- * system.
- */
-#define  FILE_LOCK_BUCKETS  32
-
-typedef struct {
-    pthread_mutex_t   lock;
-    FileLock*         buckets[ FILE_LOCK_BUCKETS ];
-} LockTable;
-
-static LockTable*      _lockTable;
-static pthread_once_t  _lockTable_once = PTHREAD_ONCE_INIT;
-
-static void
-lock_table_init( void )
-{
-    _lockTable = malloc(sizeof(*_lockTable));
-    if (_lockTable != NULL) {
-        pthread_mutex_init(&_lockTable->lock, NULL);
-        memset(_lockTable->buckets, 0, sizeof(_lockTable->buckets));
-    }
-}
-
-static LockTable*
-lock_table_lock( void )
-{
-    pthread_once( &_lockTable_once, lock_table_init );
-    pthread_mutex_lock( &_lockTable->lock );
-    return _lockTable;
-}
-
-static void
-lock_table_unlock( LockTable*  t )
-{
-    pthread_mutex_unlock( &t->lock );
-}
-
-static FileLock**
-lock_table_lookup( LockTable*  t, FILE*  f )
-{
-    uint32_t    hash = (uint32_t)(void*)f;
-    FileLock**  pnode;
-
-    hash = (hash >> 2) ^ (hash << 17);
-    pnode = &t->buckets[hash % FILE_LOCK_BUCKETS];
-    for (;;) {
-        FileLock*  node = *pnode;
-        if (node == NULL || node->file == f)
-            break;
-        pnode = &node->next;
-    }
-    return pnode;
-}
 
 void
 flockfile(FILE * fp)
 {
-    LockTable*  t = lock_table_lock();
-
-    if (t != NULL) {
-        FileLock**  lookup = lock_table_lookup(t, fp);
-        FileLock*   lock   = *lookup;
-
-        if (lock == NULL) {
-            pthread_mutexattr_t  attr;
-
-            /* create a new node in the hash table */
-            lock = malloc(sizeof(*lock));
-            if (lock == NULL) {
-                lock_table_unlock(t);
-                return;
-            }
-            lock->next        = NULL;
-            lock->file        = fp;
-
-            pthread_mutexattr_init(&attr);
-            pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
-            pthread_mutex_init( &lock->mutex, &attr );
-
-            *lookup           = lock;
-        }
-        lock_table_unlock(t);
-
-        /* we assume that another thread didn't destroy 'lock'
-        * by calling fclose() on the FILE*. This can happen if
-        * the client is *really* buggy, but we don't care about
-        * such code here.
-        */
-        pthread_mutex_lock(&lock->mutex);
+    if (fp != NULL) {
+        _FLOCK_LOCK(fp);
     }
 }
 
@@ -154,21 +55,13 @@
 int
 ftrylockfile(FILE *fp)
 {
-    int         ret = -1;
-    LockTable*  t   = lock_table_lock();
+    /* The specification for ftrylockfile() says it returns 0 on success,
+     * or non-zero on error. So return an errno code directly on error.
+     */
+    int  ret = EINVAL;
 
-    if (t != NULL) {
-        FileLock**  lookup = lock_table_lookup(t, fp);
-        FileLock*   lock   = *lookup;
-
-        lock_table_unlock(t);
-
-        /* see above comment about why we assume that 'lock' can
-        * be accessed from here
-        */
-        if (lock != NULL && !pthread_mutex_trylock(&lock->mutex)) {
-            ret = 0;  /* signal success */
-        }
+    if (fp != NULL) {
+        ret = _FLOCK_TRYLOCK(fp);
     }
     return ret;
 }
@@ -176,35 +69,7 @@
 void
 funlockfile(FILE * fp)
 {
-    LockTable*  t = lock_table_lock();
-
-    if (t != NULL) {
-        FileLock**  lookup = lock_table_lookup(t, fp);
-        FileLock*   lock   = *lookup;
-
-        if (lock != NULL)
-            pthread_mutex_unlock(&lock->mutex);
-
-        lock_table_unlock(t);
-    }
-}
-
-
-/* called from fclose() to remove the file lock */
-__LIBC_HIDDEN__ void
-__fremovelock(FILE*  fp)
-{
-    LockTable*  t = lock_table_lock();
-
-    if (t != NULL) {
-        FileLock**  lookup = lock_table_lookup(t, fp);
-        FileLock*   lock   = *lookup;
-
-        if (lock != NULL) {
-            *lookup   = lock->next;
-            lock->file = NULL;
-        }
-        lock_table_unlock(t);
-        free(lock);
+    if (fp != NULL) {
+        _FLOCK_UNLOCK(fp);
     }
 }
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index bed9445..bfa9fcc 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -435,23 +435,6 @@
         self.other_files.append( path )
 
 
-    # now dump the content of linux/_syscalls.h
-    def gen_linux_unistd_h(self):
-        path = "include/sys/linux-unistd.h"
-        D( "generating "+path )
-        fp = create_file( path )
-        fp.write( "/* auto-generated by gensyscalls.py, do not touch */\n" )
-        fp.write( "#ifndef _BIONIC_LINUX_UNISTD_H_\n\n" );
-        fp.write( "#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n" )
-
-        for sc in self.syscalls:
-            fp.write( sc["decl"]+"\n" )
-
-        fp.write( "#ifdef __cplusplus\n}\n#endif\n" )
-        fp.write( "\n#endif /* _BIONIC_LINUX_UNISTD_H_ */\n" );
-        fp.close()
-        self.other_files.append( path )
-
     # now dump the contents of syscalls.mk
     def gen_arch_syscalls_mk(self, arch):
         path = "arch-%s/syscalls.mk" % arch
@@ -528,7 +511,6 @@
         self.gen_linux_syscalls_h()
         for arch in all_archs:
             self.gen_arch_syscalls_mk(arch)
-        self.gen_linux_unistd_h()
         self.gen_syscall_stubs()
 
         D( "comparing files" )
diff --git a/libc/tools/zoneinfo/generate b/libc/tools/zoneinfo/generate
index e48a3c9..3e21d0b 100755
--- a/libc/tools/zoneinfo/generate
+++ b/libc/tools/zoneinfo/generate
@@ -37,6 +37,9 @@
   exit 1
 fi
 
+md5_sum=`md5sum $latest_archive`
+echo "MD5: $md5_sum"
+
 echo "Extracting $latest_version..."
 mkdir $latest_version
 tar -C $latest_version -zxf $latest_archive
diff --git a/libc/tzcode/strftime.c b/libc/tzcode/strftime.c
index a2cc3b3..f6e7435 100644
--- a/libc/tzcode/strftime.c
+++ b/libc/tzcode/strftime.c
@@ -38,6 +38,7 @@
 #include "locale.h"
 #include <ctype.h>
 #include <time64.h>
+#include <bionic_time.h>  /* for strftime_tz */
 
 /* struct lc_time_T is now defined as strftime_locale
  * in <time.h>
diff --git a/libstdc++/src/one_time_construction.cpp b/libstdc++/src/one_time_construction.cpp
index 2a44c79..f3d7138 100644
--- a/libstdc++/src/one_time_construction.cpp
+++ b/libstdc++/src/one_time_construction.cpp
@@ -20,11 +20,11 @@
     // 6 untouched, wait and return 0
     // 1 untouched, return 0
 retry:
-    if (__atomic_cmpxchg(0, 0x2, gv) == 0) {
+    if (__bionic_cmpxchg(0, 0x2, gv) == 0) {
         ANDROID_MEMBAR_FULL();
         return 1;
     }
-    __atomic_cmpxchg(0x2, 0x6, gv); // Indicate there is a waiter
+    __bionic_cmpxchg(0x2, 0x6, gv); // Indicate there is a waiter
     __futex_wait(gv, 0x6, NULL);
 
     if(*gv != 1) // __cxa_guard_abort was called, let every thread try since there is no return code for this condition
@@ -39,7 +39,7 @@
     // 2 -> 1
     // 6 -> 1, and wake
     ANDROID_MEMBAR_FULL();
-    if (__atomic_cmpxchg(0x2, 0x1, gv) == 0) {
+    if (__bionic_cmpxchg(0x2, 0x1, gv) == 0) {
         return;
     }
 
diff --git a/linker/Android.mk b/linker/Android.mk
index 803b6c3..7541f65 100644
--- a/linker/Android.mk
+++ b/linker/Android.mk
@@ -10,27 +10,9 @@
 	dlfcn.c \
 	debugger.c
 
-ifeq ($(TARGET_ARCH),sh)
-# SH-4A series virtual address range from 0x00000000 to 0x7FFFFFFF.
-LINKER_TEXT_BASE := 0x70000100
-else
-# This is aligned to 4K page boundary so that both GNU ld and gold work.  Gold
-# actually produces a correct binary with starting address 0xB0000100 but the
-# extra objcopy step to rename symbols causes the resulting binary to be misaligned
-# and unloadable.  Increasing the alignment adds an extra 3840 bytes in padding
-# but switching to gold saves about 1M of space.
-LINKER_TEXT_BASE := 0xB0001000
-endif
+LOCAL_LDFLAGS := -shared
 
-# The maximum size set aside for the linker, from
-# LINKER_TEXT_BASE rounded down to a megabyte.
-LINKER_AREA_SIZE := 0x01000000
-
-LOCAL_LDFLAGS := -Wl,-Ttext,$(LINKER_TEXT_BASE)
-
-LOCAL_CFLAGS += -DPRELINK
-LOCAL_CFLAGS += -DLINKER_TEXT_BASE=$(LINKER_TEXT_BASE)
-LOCAL_CFLAGS += -DLINKER_AREA_SIZE=$(LINKER_AREA_SIZE)
+LOCAL_CFLAGS += -fno-stack-protector -Wstrict-overflow=5
 
 # Set LINKER_DEBUG to either 1 or 0
 #
@@ -69,6 +51,9 @@
 LOCAL_MODULE_CLASS := EXECUTABLES
 LOCAL_MODULE_SUFFIX := $(TARGET_EXECUTABLE_SUFFIX)
 
+# we don't want crtbegin.o (because we have begin.o), so unset it
+# just for this module
+LOCAL_NO_CRT := true
 
 include $(BUILD_SYSTEM)/dynamic_binary.mk
 
@@ -80,11 +65,3 @@
 #
 # end of BUILD_EXECUTABLE hack
 #
-
-# we don't want crtbegin.o (because we have begin.o), so unset it
-# just for this module
-$(LOCAL_BUILT_MODULE): TARGET_CRTBEGIN_STATIC_O :=
-# This line is not strictly necessary because the dynamic linker is built
-# as a static executable, but it won't hurt if in the future we start
-# building the linker as a dynamic one.
-$(LOCAL_BUILT_MODULE): TARGET_CRTBEGIN_DYNAMIC_O :=
diff --git a/linker/README.TXT b/linker/README.TXT
index a8efe35..f920b97 100644
--- a/linker/README.TXT
+++ b/linker/README.TXT
@@ -87,6 +87,7 @@
       present in executables, not shared libraries, which contains
       a list of functions that need to be called before any other
       initialization function (i.e. DT_INIT and/or DT_INIT_ARRAY)
+      in the executable or any of its libraries.
 
       Note: this is generally stored in a .preinit_array section
 
diff --git a/linker/debugger.c b/linker/debugger.c
index 648dc78..899a5b2 100644
--- a/linker/debugger.c
+++ b/linker/debugger.c
@@ -32,6 +32,7 @@
 #include <ctype.h>
 #include <signal.h>
 #include <sys/mman.h>
+#include <sys/prctl.h>
 #include <errno.h>
 
 #include "linker.h"
@@ -39,6 +40,8 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 
+extern int tgkill(int tgid, int tid, int sig);
+
 void notify_gdb_of_libraries();
 
 #define  RETRY_ON_EINTR(ret,cond) \
@@ -46,6 +49,8 @@
         ret = (cond); \
     } while (ret < 0 && errno == EINTR)
 
+// see man(2) prctl, specifically the section about PR_GET_NAME
+#define MAX_TASK_NAME_LEN (16)
 
 static int socket_abstract_client(const char *name, int type)
 {
@@ -100,6 +105,7 @@
 static void logSignalSummary(int signum, const siginfo_t* info)
 {
     char buffer[128];
+    char threadname[MAX_TASK_NAME_LEN + 1]; // one more for termination
 
     char* signame;
     switch (signum) {
@@ -113,9 +119,16 @@
         default:        signame = "???";        break;
     }
 
+    if (prctl(PR_GET_NAME, (unsigned long)threadname, 0, 0, 0) != 0) {
+        strcpy(threadname, "<name unknown>");
+    } else {
+        // short names are null terminated by prctl, but the manpage
+        // implies that 16 byte names are not.
+        threadname[MAX_TASK_NAME_LEN] = 0;
+    }
     format_buffer(buffer, sizeof(buffer),
-        "Fatal signal %d (%s) at 0x%08x (code=%d)",
-        signum, signame, info->si_addr, info->si_code);
+        "Fatal signal %d (%s) at 0x%08x (code=%d), thread %d (%s)",
+        signum, signame, info->si_addr, info->si_code, gettid(), threadname);
 
     __libc_android_log_write(ANDROID_LOG_FATAL, "libc", buffer);
 }
@@ -126,6 +139,7 @@
  */
 void debugger_signal_handler(int n, siginfo_t* info, void* unused)
 {
+    char msgbuf[128];
     unsigned tid;
     int s;
 
@@ -134,7 +148,7 @@
     tid = gettid();
     s = socket_abstract_client("android:debuggerd", SOCK_STREAM);
 
-    if(s >= 0) {
+    if (s >= 0) {
         /* debugger knows our pid from the credentials on the
          * local socket but we need to tell it our tid.  It
          * is paranoid and will verify that we are giving a tid
@@ -147,13 +161,46 @@
             /* if the write failed, there is no point to read on
              * the file descriptor. */
             RETRY_ON_EINTR(ret, read(s, &tid, 1));
+            int savedErrno = errno;
             notify_gdb_of_libraries();
+            errno = savedErrno;
         }
+
+        if (ret < 0) {
+            /* read or write failed -- broken connection? */
+            format_buffer(msgbuf, sizeof(msgbuf),
+                "Failed while talking to debuggerd: %s", strerror(errno));
+            __libc_android_log_write(ANDROID_LOG_FATAL, "libc", msgbuf);
+        }
+
         close(s);
+    } else {
+        /* socket failed; maybe process ran out of fds */
+        format_buffer(msgbuf, sizeof(msgbuf),
+            "Unable to open connection to debuggerd: %s", strerror(errno));
+        __libc_android_log_write(ANDROID_LOG_FATAL, "libc", msgbuf);
     }
 
     /* remove our net so we fault for real when we return */
     signal(n, SIG_DFL);
+
+    /*
+     * These signals are not re-thrown when we resume.  This means that
+     * crashing due to (say) SIGPIPE doesn't work the way you'd expect it
+     * to.  We work around this by throwing them manually.  We don't want
+     * to do this for *all* signals because it'll screw up the address for
+     * faults like SIGSEGV.
+     */
+    switch (n) {
+        case SIGABRT:
+        case SIGFPE:
+        case SIGPIPE:
+        case SIGSTKFLT:
+            (void) tgkill(getpid(), gettid(), n);
+            break;
+        default:    // SIGILL, SIGBUS, SIGSEGV
+            break;
+    }
 }
 
 void debugger_init()
diff --git a/linker/dlfcn.c b/linker/dlfcn.c
index 194a4ae..ac7e5d3 100644
--- a/linker/dlfcn.c
+++ b/linker/dlfcn.c
@@ -60,6 +60,7 @@
     if (unlikely(ret == NULL)) {
         set_dlerror(DL_ERR_CANNOT_LOAD_LIBRARY);
     } else {
+        call_constructors_recursive(ret);
         ret->refcount++;
     }
     pthread_mutex_unlock(&dl_lock);
diff --git a/linker/linker.c b/linker/linker.c
index bcfa8dc..7463811 100644
--- a/linker/linker.c
+++ b/linker/linker.c
@@ -313,15 +313,6 @@
     freelist = si;
 }
 
-#ifndef LINKER_TEXT_BASE
-#error "linker's makefile must define LINKER_TEXT_BASE"
-#endif
-#ifndef LINKER_AREA_SIZE
-#error "linker's makefile must define LINKER_AREA_SIZE"
-#endif
-#define LINKER_BASE ((LINKER_TEXT_BASE) & 0xfff00000)
-#define LINKER_TOP  (LINKER_BASE + (LINKER_AREA_SIZE))
-
 const char *addr_to_name(unsigned addr)
 {
     soinfo *si;
@@ -332,10 +323,6 @@
         }
     }
 
-    if((addr >= LINKER_BASE) && (addr < LINKER_TOP)){
-        return "linker";
-    }
-
     return "";
 }
 
@@ -354,12 +341,10 @@
     soinfo *si;
     unsigned addr = (unsigned)pc;
 
-    if ((addr < LINKER_BASE) || (addr >= LINKER_TOP)) {
-        for (si = solist; si != 0; si = si->next){
-            if ((addr >= si->base) && (addr < (si->base + si->size))) {
-                *pcount = si->ARM_exidx_count;
-                return (_Unwind_Ptr)(si->base + (unsigned long)si->ARM_exidx);
-            }
+    for (si = solist; si != 0; si = si->next){
+        if ((addr >= si->base) && (addr < (si->base + si->size))) {
+            *pcount = si->ARM_exidx_count;
+            return (_Unwind_Ptr)(si->base + (unsigned long)si->ARM_exidx);
         }
     }
    *pcount = 0;
@@ -420,6 +405,33 @@
     return NULL;
 }
 
+/*
+ * Essentially the same method as _elf_lookup() above, but only
+ * searches for LOCAL symbols
+ */
+static Elf32_Sym *_elf_lookup_local(soinfo *si, unsigned hash, const char *name)
+{
+    Elf32_Sym *symtab = si->symtab;
+    const char *strtab = si->strtab;
+    unsigned n = hash % si->nbucket;;
+
+    TRACE_TYPE(LOOKUP, "%5d LOCAL SEARCH %s in %s@0x%08x %08x %d\n", pid,
+               name, si->name, si->base, hash, hash % si->nbucket);
+    for(n = si->bucket[hash % si->nbucket]; n != 0; n = si->chain[n]){
+        Elf32_Sym *s = symtab + n;
+        if (strcmp(strtab + s->st_name, name)) continue;
+        if (ELF32_ST_BIND(s->st_info) != STB_LOCAL) continue;
+        /* no section == undefined */
+        if(s->st_shndx == 0) continue;
+
+        TRACE_TYPE(LOOKUP, "%5d FOUND LOCAL %s in %s (%08x) %d\n", pid,
+                   name, si->name, s->st_value, s->st_size);
+        return s;
+    }
+
+    return NULL;
+}
+
 static unsigned elfhash(const char *_name)
 {
     const unsigned char *name = (const unsigned char *) _name;
@@ -443,7 +455,17 @@
     soinfo *lsi = si;
     int i;
 
-    /* Look for symbols in the local scope first (the object who is
+    /* If we are trying to find a symbol for the linker itself, look
+     * for LOCAL symbols first. Avoid using LOCAL symbols for other
+     * shared libraries until we have a better understanding of what
+     * might break by doing so. */
+    if (si->flags & FLAG_LINKER) {
+        s = _elf_lookup_local(si, elf_hash, name);
+        if(s != NULL)
+            goto done;
+    }
+
+    /* Look for symbols in the local scope (the object who is
      * searching). This happens with C++ templates on i386 for some
      * reason.
      *
@@ -452,6 +474,7 @@
      * dynamic linking.  Some systems return the first definition found
      * and some the first non-weak definition.   This is system dependent.
      * Here we return the first definition found for simplicity.  */
+
     s = _elf_lookup(si, elf_hash, name);
     if(s != NULL)
         goto done;
@@ -883,10 +906,10 @@
 {
     Elf32_Ehdr *ehdr = (Elf32_Ehdr *)header;
     Elf32_Phdr *phdr = (Elf32_Phdr *)((unsigned char *)header + ehdr->e_phoff);
-    unsigned char *base = (unsigned char *)si->base;
+    Elf32_Addr base = (Elf32_Addr) si->base;
     int cnt;
     unsigned len;
-    unsigned char *tmp;
+    Elf32_Addr tmp;
     unsigned char *pbase;
     unsigned char *extra_base;
     unsigned extra_len;
@@ -910,7 +933,7 @@
             TRACE("[ %d - Trying to load segment from '%s' @ 0x%08x "
                   "(0x%08x). p_vaddr=0x%08x p_offset=0x%08x ]\n", pid, si->name,
                   (unsigned)tmp, len, phdr->p_vaddr, phdr->p_offset);
-            pbase = mmap(tmp, len, PFLAGS_TO_PROT(phdr->p_flags),
+            pbase = mmap((void *)tmp, len, PFLAGS_TO_PROT(phdr->p_flags),
                          MAP_PRIVATE | MAP_FIXED, fd,
                          phdr->p_offset & (~PAGE_MASK));
             if (pbase == MAP_FAILED) {
@@ -952,7 +975,7 @@
              *                  |                     |
              *                 _+---------------------+  page boundary
              */
-            tmp = (unsigned char *)(((unsigned)pbase + len + PAGE_SIZE - 1) &
+            tmp = (Elf32_Addr)(((unsigned)pbase + len + PAGE_SIZE - 1) &
                                     (~PAGE_MASK));
             if (tmp < (base + phdr->p_vaddr + phdr->p_memsz)) {
                 extra_len = base + phdr->p_vaddr + phdr->p_memsz - tmp;
@@ -1007,6 +1030,17 @@
             DEBUG_DUMP_PHDR(phdr, "PT_DYNAMIC", pid);
             /* this segment contains the dynamic linking information */
             si->dynamic = (unsigned *)(base + phdr->p_vaddr);
+        } else if (phdr->p_type == PT_GNU_RELRO) {
+            if ((phdr->p_vaddr >= si->size)
+                    || ((phdr->p_vaddr + phdr->p_memsz) >= si->size)
+                    || ((base + phdr->p_vaddr + phdr->p_memsz) < base)) {
+                DL_ERR("%d invalid GNU_RELRO in '%s' "
+                       "p_vaddr=0x%08x p_memsz=0x%08x", pid, si->name,
+                       phdr->p_vaddr, phdr->p_memsz);
+                goto fail;
+            }
+            si->gnu_relro_start = (Elf32_Addr) (base + phdr->p_vaddr);
+            si->gnu_relro_len = (unsigned) phdr->p_memsz;
         } else {
 #ifdef ANDROID_ARM_LINKER
             if (phdr->p_type == PT_ARM_EXIDX) {
@@ -1228,10 +1262,29 @@
         TRACE("%5d unloading '%s'\n", pid, si->name);
         call_destructors(si);
 
+        /*
+         * Make sure that we undo the PT_GNU_RELRO protections we added
+         * in link_image. This is needed to undo the DT_NEEDED hack below.
+         */
+        if ((si->gnu_relro_start != 0) && (si->gnu_relro_len != 0)) {
+            Elf32_Addr start = (si->gnu_relro_start & ~PAGE_MASK);
+            unsigned len = (si->gnu_relro_start - start) + si->gnu_relro_len;
+            if (mprotect((void *) start, len, PROT_READ | PROT_WRITE) < 0)
+                DL_ERR("%5d %s: could not undo GNU_RELRO protections. "
+                       "Expect a crash soon. errno=%d (%s)",
+                       pid, si->name, errno, strerror(errno));
+
+        }
+
         for(d = si->dynamic; *d; d += 2) {
             if(d[0] == DT_NEEDED){
                 soinfo *lsi = (soinfo *)d[1];
+
+                // The next line will segfault if the we don't undo the
+                // PT_GNU_RELRO protections (see comments above and in
+                // link_image().
                 d[1] = 0;
+
                 if (validate_soinfo(lsi)) {
                     TRACE("%5d %s needs to unload %s\n", pid,
                           si->name, lsi->name);
@@ -1499,8 +1552,24 @@
     }
 }
 
-static void call_constructors(soinfo *si)
+void call_constructors_recursive(soinfo *si)
 {
+    if (si->constructors_called)
+        return;
+
+    // Set this before actually calling the constructors, otherwise it doesn't
+    // protect against recursive constructor calls. One simple example of
+    // constructor recursion is the libc debug malloc, which is implemented in
+    // libc_malloc_debug_leak.so:
+    // 1. The program depends on libc, so libc's constructor is called here.
+    // 2. The libc constructor calls dlopen() to load libc_malloc_debug_leak.so.
+    // 3. dlopen() calls call_constructors_recursive() with the newly created
+    //    soinfo for libc_malloc_debug_leak.so.
+    // 4. The debug so depends on libc, so call_constructors_recursive() is
+    //    called again with the libc soinfo. If it doesn't trigger the early-
+    //    out above, the libc constructor will be called again (recursively!).
+    si->constructors_called = 1;
+
     if (si->flags & FLAG_EXE) {
         TRACE("[ %5d Calling preinit_array @ 0x%08x [%d] for '%s' ]\n",
               pid, (unsigned)si->preinit_array, si->preinit_array_count,
@@ -1515,6 +1584,21 @@
         }
     }
 
+    if (si->dynamic) {
+        unsigned *d;
+        for(d = si->dynamic; *d; d += 2) {
+            if(d[0] == DT_NEEDED){
+                soinfo* lsi = (soinfo *)d[1];
+                if (!validate_soinfo(lsi)) {
+                    DL_ERR("%5d bad DT_NEEDED pointer in %s",
+                           pid, si->name);
+                } else {
+                    call_constructors_recursive(lsi);
+                }
+            }
+        }
+    }
+
     if (si->init_func) {
         TRACE("[ %5d Calling init_func @ 0x%08x for '%s' ]\n", pid,
               (unsigned)si->init_func, si->name);
@@ -1528,8 +1612,8 @@
         call_array(si->init_array, si->init_array_count, 0);
         TRACE("[ %5d Done calling init_array for '%s' ]\n", pid, si->name);
     }
-}
 
+}
 
 static void call_destructors(soinfo *si)
 {
@@ -1628,10 +1712,10 @@
     DEBUG("%5d si->base = 0x%08x si->flags = 0x%08x\n", pid,
           si->base, si->flags);
 
-    if (si->flags & FLAG_EXE) {
+    if (si->flags & (FLAG_EXE | FLAG_LINKER)) {
         /* Locate the needed program segments (DYNAMIC/ARM_EXIDX) for
-         * linkage info if this is the executable. If this was a
-         * dynamic lib, that would have been done at load time.
+         * linkage info if this is the executable or the linker itself. 
+         * If this was a dynamic lib, that would have been done at load time.
          *
          * TODO: It's unfortunate that small pieces of this are
          * repeated from the load_library routine. Refactor this just
@@ -1650,16 +1734,17 @@
             if (phdr->p_type == PT_LOAD) {
                 /* For the executable, we use the si->size field only in
                    dl_unwind_find_exidx(), so the meaning of si->size
-                   is not the size of the executable; it is the last
-                   virtual address of the loadable part of the executable;
-                   since si->base == 0 for an executable, we use the
-                   range [0, si->size) to determine whether a PC value
-                   falls within the executable section.  Of course, if
-                   a value is below phdr->p_vaddr, it's not in the
-                   executable section, but a) we shouldn't be asking for
-                   such a value anyway, and b) if we have to provide
-                   an EXIDX for such a value, then the executable's
-                   EXIDX is probably the better choice.
+                   is not the size of the executable; it is the distance
+                   between the load location of the executable and the last
+                   address of the loadable part of the executable.
+                   We use the range [si->base, si->base + si->size) to
+                   determine whether a PC value falls within the executable
+                   section. Of course, if a value is between si->base and
+                   (si->base + phdr->p_vaddr), it's not in the executable
+                   section, but a) we shouldn't be asking for such a value
+                   anyway, and b) if we have to provide an EXIDX for such a
+                   value, then the executable's EXIDX is probably the better
+                   choice.
                 */
                 DEBUG_DUMP_PHDR(phdr, "PT_LOAD", pid);
                 if (phdr->p_vaddr + phdr->p_memsz > si->size)
@@ -1669,12 +1754,20 @@
                 if (!(phdr->p_flags & PF_W)) {
                     unsigned _end;
 
-                    if (phdr->p_vaddr < si->wrprotect_start)
-                        si->wrprotect_start = phdr->p_vaddr;
-                    _end = (((phdr->p_vaddr + phdr->p_memsz + PAGE_SIZE - 1) &
+                    if (si->base + phdr->p_vaddr < si->wrprotect_start)
+                        si->wrprotect_start = si->base + phdr->p_vaddr;
+                    _end = (((si->base + phdr->p_vaddr + phdr->p_memsz + PAGE_SIZE - 1) &
                              (~PAGE_MASK)));
                     if (_end > si->wrprotect_end)
                         si->wrprotect_end = _end;
+                    /* Make the section writable just in case we'll have to
+                     * write to it during relocation (i.e. text segment).
+                     * However, we will remember what range of addresses
+                     * should be write protected.
+                     */
+                    mprotect((void *) (si->base + phdr->p_vaddr),
+                             phdr->p_memsz,
+                             PFLAGS_TO_PROT(phdr->p_flags) | PROT_WRITE);
                 }
             } else if (phdr->p_type == PT_DYNAMIC) {
                 if (si->dynamic != (unsigned *)-1) {
@@ -1686,6 +1779,17 @@
                 }
                 DEBUG_DUMP_PHDR(phdr, "PT_DYNAMIC", pid);
                 si->dynamic = (unsigned *) (si->base + phdr->p_vaddr);
+            } else if (phdr->p_type == PT_GNU_RELRO) {
+                if ((phdr->p_vaddr >= si->size)
+                        || ((phdr->p_vaddr + phdr->p_memsz) >= si->size)
+                        || ((si->base + phdr->p_vaddr + phdr->p_memsz) < si->base)) {
+                    DL_ERR("%d invalid GNU_RELRO in '%s' "
+                           "p_vaddr=0x%08x p_memsz=0x%08x", pid, si->name,
+                           phdr->p_vaddr, phdr->p_memsz);
+                    goto fail;
+                }
+                si->gnu_relro_start = (Elf32_Addr) (si->base + phdr->p_vaddr);
+                si->gnu_relro_len = (unsigned) phdr->p_memsz;
             }
         }
     }
@@ -1827,7 +1931,7 @@
                of the DT_NEEDED entry itself, so that we can retrieve the
                soinfo directly later from the dynamic segment.  This is a hack,
                but it allows us to map from DT_NEEDED to soinfo efficiently
-               later on when we resolve relocations, trying to look up a symgol
+               later on when we resolve relocations, trying to look up a symbol
                with dlsym().
             */
             d[1] = (unsigned)lsi;
@@ -1875,6 +1979,16 @@
     }
 #endif
 
+    if (si->gnu_relro_start != 0 && si->gnu_relro_len != 0) {
+        Elf32_Addr start = (si->gnu_relro_start & ~PAGE_MASK);
+        unsigned len = (si->gnu_relro_start - start) + si->gnu_relro_len;
+        if (mprotect((void *) start, len, PROT_READ) < 0) {
+            DL_ERR("%5d GNU_RELRO mprotect of library '%s' failed: %d (%s)\n",
+                   pid, si->name, errno, strerror(errno));
+            goto fail;
+        }
+    }
+
     /* If this is a SET?ID program, dup /dev/null to opened stdin,
        stdout and stderr to close a security hole described in:
 
@@ -1884,7 +1998,6 @@
     if (program_is_setuid)
         nullify_closed_stdio ();
     notify_gdb_of_load(si);
-    call_constructors(si);
     return 0;
 
 fail:
@@ -1940,16 +2053,16 @@
     }
 }
 
-int main(int argc, char **argv)
-{
-    return 0;
-}
-
 #define ANDROID_TLS_SLOTS  BIONIC_TLS_SLOTS
 
 static void * __tls_area[ANDROID_TLS_SLOTS];
 
-unsigned __linker_init(unsigned **elfdata)
+/*
+ * This code is called after the linker has linked itself and
+ * fixed it's own GOT. It is safe to make references to externs
+ * and other non-local data at this point.
+ */
+static unsigned __linker_init_post_relocation(unsigned **elfdata)
 {
     static soinfo linker_soinfo;
 
@@ -2069,11 +2182,24 @@
         vecs += 2;
     }
 
+    /* Compute the value of si->base. We can't rely on the fact that
+     * the first entry is the PHDR because this will not be true
+     * for certain executables (e.g. some in the NDK unit test suite)
+     */
+    int nn;
     si->base = 0;
+    for ( nn = 0; nn < si->phnum; nn++ ) {
+        if (si->phdr[nn].p_type == PT_PHDR) {
+            si->base = (Elf32_Addr) si->phdr - si->phdr[nn].p_vaddr;
+            break;
+        }
+    }
     si->dynamic = (unsigned *)-1;
     si->wrprotect_start = 0xffffffff;
     si->wrprotect_end = 0;
     si->refcount = 1;
+    si->gnu_relro_start = 0;
+    si->gnu_relro_len = 0;
 
         /* Use LD_LIBRARY_PATH if we aren't setuid/setgid */
     if (ldpath_env)
@@ -2090,6 +2216,8 @@
         exit(-1);
     }
 
+    call_constructors_recursive(si);
+
 #if ALLOW_SYMBOLS_FROM_MAIN
     /* Set somain after we've loaded all the libraries in order to prevent
      * linking of symbols back to the main image, which is not set up at that
@@ -2138,3 +2266,71 @@
           si->entry);
     return si->entry;
 }
+
+/*
+ * Find the value of AT_BASE passed to us by the kernel. This is the load
+ * location of the linker.
+ */
+static unsigned find_linker_base(unsigned **elfdata) {
+    int argc = (int) *elfdata;
+    char **argv = (char**) (elfdata + 1);
+    unsigned *vecs = (unsigned*) (argv + argc + 1);
+    while (vecs[0] != 0) {
+        vecs++;
+    }
+
+    /* The end of the environment block is marked by two NULL pointers */
+    vecs++;
+
+    while(vecs[0]) {
+        if (vecs[0] == AT_BASE) {
+            return vecs[1];
+        }
+        vecs += 2;
+    }
+
+    return 0; // should never happen
+}
+
+/*
+ * This is the entry point for the linker, called from begin.S. This
+ * method is responsible for fixing the linker's own relocations, and
+ * then calling __linker_init_post_relocation().
+ *
+ * Because this method is called before the linker has fixed it's own
+ * relocations, any attempt to reference an extern variable, extern
+ * function, or other GOT reference will generate a segfault.
+ */
+unsigned __linker_init(unsigned **elfdata) {
+    unsigned linker_addr = find_linker_base(elfdata);
+    Elf32_Ehdr *elf_hdr = (Elf32_Ehdr *) linker_addr;
+    Elf32_Phdr *phdr =
+        (Elf32_Phdr *)((unsigned char *) linker_addr + elf_hdr->e_phoff);
+
+    soinfo linker_so;
+    memset(&linker_so, 0, sizeof(soinfo));
+
+    linker_so.base = linker_addr;
+    linker_so.dynamic = (unsigned *) -1;
+    linker_so.phdr = phdr;
+    linker_so.phnum = elf_hdr->e_phnum;
+    linker_so.flags |= FLAG_LINKER;
+    linker_so.wrprotect_start = 0xffffffff;
+    linker_so.wrprotect_end = 0;
+    linker_so.gnu_relro_start = 0;
+    linker_so.gnu_relro_len = 0;
+
+    if (link_image(&linker_so, 0)) {
+        // It would be nice to print an error message, but if the linker
+        // can't link itself, there's no guarantee that we'll be able to
+        // call write() (because it involves a GOT reference).
+        //
+        // This situation should never occur unless the linker itself
+        // is corrupt.
+        exit(-1);
+    }
+
+    // We have successfully fixed our own relocations. It's safe to run
+    // the main part of the linker now.
+    return __linker_init_post_relocation(elfdata);
+}
diff --git a/linker/linker.h b/linker/linker.h
index d29484c..0c986cd 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -31,7 +31,8 @@
 
 #include <unistd.h>
 #include <sys/types.h>
-#include <linux/elf.h>
+#include <elf.h>
+#include <sys/exec_elf.h>
 
 #undef PAGE_MASK
 #undef PAGE_SIZE
@@ -83,6 +84,7 @@
 #define FLAG_LINKED     0x00000001
 #define FLAG_ERROR      0x00000002
 #define FLAG_EXE        0x00000004 // The main executable
+#define FLAG_LINKER     0x00000010 // The linker itself
 
 #define SOINFO_NAME_LEN 128
 
@@ -140,6 +142,12 @@
 
     unsigned refcount;
     struct link_map linkmap;
+
+    int constructors_called;
+
+    Elf32_Addr gnu_relro_start;
+    unsigned gnu_relro_len;
+
 };
 
 
@@ -200,6 +208,7 @@
 soinfo *find_containing_library(const void *addr);
 Elf32_Sym *find_containing_symbol(const void *addr, soinfo *si);
 const char *linker_get_error(void);
+void call_constructors_recursive(soinfo *si);
 
 #ifdef ANDROID_ARM_LINKER 
 typedef long unsigned int *_Unwind_Ptr;
