diff --git a/libc/kernel/arch-arm/asm/a.out.h b/libc/kernel/arch-arm/asm/a.out.h
index 73977ec..e8f17dc 100644
--- a/libc/kernel/arch-arm/asm/a.out.h
+++ b/libc/kernel/arch-arm/asm/a.out.h
@@ -7,42 +7,36 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 bc0ab23..c6c5413 100644
--- a/libc/kernel/arch-arm/asm/arch/board-perseus2.h
+++ b/libc/kernel/arch-arm/asm/arch/board-perseus2.h
@@ -7,25 +7,21 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 78fa4b0..a7a4c66 100644
--- a/libc/kernel/arch-arm/asm/arch/board.h
+++ b/libc/kernel/arch-arm/asm/arch/board.h
@@ -7,159 +7,157 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 fb95048..fa7a408 100644
--- a/libc/kernel/arch-arm/asm/arch/cpu.h
+++ b/libc/kernel/arch-arm/asm/arch/cpu.h
@@ -7,60 +7,51 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 cdfe92b..5e5be76 100644
--- a/libc/kernel/arch-arm/asm/arch/dma.h
+++ b/libc/kernel/arch-arm/asm/arch/dma.h
@@ -7,362 +7,312 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 64055a4..a1b210d 100644
--- a/libc/kernel/arch-arm/asm/arch/fpga.h
+++ b/libc/kernel/arch-arm/asm/arch/fpga.h
@@ -7,162 +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 __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 d18ae52..20ea3f2 100644
--- a/libc/kernel/arch-arm/asm/arch/gpio-switch.h
+++ b/libc/kernel/arch-arm/asm/arch/gpio-switch.h
@@ -7,35 +7,31 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 c995a71..332246d 100644
--- a/libc/kernel/arch-arm/asm/arch/gpio.h
+++ b/libc/kernel/arch-arm/asm/arch/gpio.h
@@ -7,49 +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_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 d13fb6a..e515ee8 100644
--- a/libc/kernel/arch-arm/asm/arch/hardware.h
+++ b/libc/kernel/arch-arm/asm/arch/hardware.h
@@ -7,169 +7,151 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 475345a..12ac3d4 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 71306a5..3e94487 100644
--- a/libc/kernel/arch-arm/asm/arch/irqs.h
+++ b/libc/kernel/arch-arm/asm/arch/irqs.h
@@ -7,279 +7,236 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 2090ef2..cae5e3b 100644
--- a/libc/kernel/arch-arm/asm/arch/mcbsp.h
+++ b/libc/kernel/arch-arm/asm/arch/mcbsp.h
@@ -7,195 +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 __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 2367e39..8b064b8 100644
--- a/libc/kernel/arch-arm/asm/arch/memory.h
+++ b/libc/kernel/arch-arm/asm/arch/memory.h
@@ -7,18 +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 __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 2d05691..9b60aef 100644
--- a/libc/kernel/arch-arm/asm/arch/mtd-xip.h
+++ b/libc/kernel/arch-arm/asm/arch/mtd-xip.h
@@ -7,32 +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 __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 502b2c7..72da54e 100644
--- a/libc/kernel/arch-arm/asm/arch/mux.h
+++ b/libc/kernel/arch-arm/asm/arch/mux.h
@@ -7,402 +7,385 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 adc60eb..37def2f 100644
--- a/libc/kernel/arch-arm/asm/arch/omap24xx.h
+++ b/libc/kernel/arch-arm/asm/arch/omap24xx.h
@@ -7,28 +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_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 e11c53a..6ab8613 100644
--- a/libc/kernel/arch-arm/asm/arch/serial.h
+++ b/libc/kernel/arch-arm/asm/arch/serial.h
@@ -7,20 +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_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 a0d62aa..2c9234c 100644
--- a/libc/kernel/arch-arm/asm/arch/timex.h
+++ b/libc/kernel/arch-arm/asm/arch/timex.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 6af6f56..f2b5b44 100644
--- a/libc/kernel/arch-arm/asm/arch/vmalloc.h
+++ b/libc/kernel/arch-arm/asm/arch/vmalloc.h
@@ -7,13 +7,7 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/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 d983009..6f1921a 100644
--- a/libc/kernel/arch-arm/asm/atomic.h
+++ b/libc/kernel/arch-arm/asm/atomic.h
@@ -7,19 +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_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 560ba37..c7e839c 100644
--- a/libc/kernel/arch-arm/asm/auxvec.h
+++ b/libc/kernel/arch-arm/asm/auxvec.h
@@ -7,15 +7,9 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 5e6067b..ff76a68 100644
--- a/libc/kernel/arch-arm/asm/bitops.h
+++ b/libc/kernel/arch-arm/asm/bitops.h
@@ -7,15 +7,9 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 a5cf4ab..b869695 100644
--- a/libc/kernel/arch-arm/asm/byteorder.h
+++ b/libc/kernel/arch-arm/asm/byteorder.h
@@ -7,48 +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 __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 ea94fdd..be26423 100644
--- a/libc/kernel/arch-arm/asm/cache.h
+++ b/libc/kernel/arch-arm/asm/cache.h
@@ -7,18 +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!
- ***
  ****************************************************************************
  ****************************************************************************/
 #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 9914f33..3ffa87a 100644
--- a/libc/kernel/arch-arm/asm/cacheflush.h
+++ b/libc/kernel/arch-arm/asm/cacheflush.h
@@ -7,95 +7,101 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 8705422..4a4097f 100644
--- a/libc/kernel/arch-arm/asm/cputime.h
+++ b/libc/kernel/arch-arm/asm/cputime.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 77b4293..631fd9b 100644
--- a/libc/kernel/arch-arm/asm/delay.h
+++ b/libc/kernel/arch-arm/asm/delay.h
@@ -7,19 +7,16 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 6ba008a..c03a0e4 100644
--- a/libc/kernel/arch-arm/asm/div64.h
+++ b/libc/kernel/arch-arm/asm/div64.h
@@ -7,27 +7,21 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 de221ad..7e65009 100644
--- a/libc/kernel/arch-arm/asm/dma-mapping.h
+++ b/libc/kernel/arch-arm/asm/dma-mapping.h
@@ -7,15 +7,9 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 f23c8fe..7eeeb78 100644
--- a/libc/kernel/arch-arm/asm/dma.h
+++ b/libc/kernel/arch-arm/asm/dma.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 __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 84adccb..973109e 100644
--- a/libc/kernel/arch-arm/asm/domain.h
+++ b/libc/kernel/arch-arm/asm/domain.h
@@ -7,30 +7,26 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 d2db94d..1f323f2 100644
--- a/libc/kernel/arch-arm/asm/dyntick.h
+++ b/libc/kernel/arch-arm/asm/dyntick.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 d23a01a..e9d095e 100644
--- a/libc/kernel/arch-arm/asm/elf.h
+++ b/libc/kernel/arch-arm/asm/elf.h
@@ -7,58 +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 __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 f784646..6be7048 100644
--- a/libc/kernel/arch-arm/asm/errno.h
+++ b/libc/kernel/arch-arm/asm/errno.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 348782e..42351ea 100644
--- a/libc/kernel/arch-arm/asm/fcntl.h
+++ b/libc/kernel/arch-arm/asm/fcntl.h
@@ -7,22 +7,16 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 4558f80..b362b14 100644
--- a/libc/kernel/arch-arm/asm/fpstate.h
+++ b/libc/kernel/arch-arm/asm/fpstate.h
@@ -7,63 +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 __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 878419c..1327b59 100644
--- a/libc/kernel/arch-arm/asm/glue.h
+++ b/libc/kernel/arch-arm/asm/glue.h
@@ -7,12 +7,5 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/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 db06a9a..54207e3 100644
--- a/libc/kernel/arch-arm/asm/hardirq.h
+++ b/libc/kernel/arch-arm/asm/hardirq.h
@@ -7,37 +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_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 0920fae..0b381d1 100644
--- a/libc/kernel/arch-arm/asm/hardware.h
+++ b/libc/kernel/arch-arm/asm/hardware.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 9daee5d..a34b390 100644
--- a/libc/kernel/arch-arm/asm/hw_irq.h
+++ b/libc/kernel/arch-arm/asm/hw_irq.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 eb3f5c7..f52d5ca 100644
--- a/libc/kernel/arch-arm/asm/ide.h
+++ b/libc/kernel/arch-arm/asm/ide.h
@@ -7,15 +7,9 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 fabe7ea..6794022 100644
--- a/libc/kernel/arch-arm/asm/io.h
+++ b/libc/kernel/arch-arm/asm/io.h
@@ -7,15 +7,9 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 7b7bd37..6e446b6 100644
--- a/libc/kernel/arch-arm/asm/ioctl.h
+++ b/libc/kernel/arch-arm/asm/ioctl.h
@@ -7,13 +7,6 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/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 64d81bf..9df82bc 100644
--- a/libc/kernel/arch-arm/asm/ioctls.h
+++ b/libc/kernel/arch-arm/asm/ioctls.h
@@ -7,99 +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 __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 e4babd6..0e47507 100644
--- a/libc/kernel/arch-arm/asm/ipcbuf.h
+++ b/libc/kernel/arch-arm/asm/ipcbuf.h
@@ -7,33 +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 __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 1522a58..2085a21 100644
--- a/libc/kernel/arch-arm/asm/irq.h
+++ b/libc/kernel/arch-arm/asm/irq.h
@@ -7,43 +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_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 c1a5b68..1fb628e 100644
--- a/libc/kernel/arch-arm/asm/linkage.h
+++ b/libc/kernel/arch-arm/asm/linkage.h
@@ -7,18 +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!
- ***
  ****************************************************************************
  ****************************************************************************/
 #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 72673e3..10d6a60 100644
--- a/libc/kernel/arch-arm/asm/local.h
+++ b/libc/kernel/arch-arm/asm/local.h
@@ -7,13 +7,6 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/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 ab40828..f48485c 100644
--- a/libc/kernel/arch-arm/asm/locks.h
+++ b/libc/kernel/arch-arm/asm/locks.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_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 a389401..5a86724 100644
--- a/libc/kernel/arch-arm/asm/mc146818rtc.h
+++ b/libc/kernel/arch-arm/asm/mc146818rtc.h
@@ -7,25 +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_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 2c7a16c..c1137a7 100644
--- a/libc/kernel/arch-arm/asm/memory.h
+++ b/libc/kernel/arch-arm/asm/memory.h
@@ -7,97 +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 __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 c391fe4..8f71d1b 100644
--- a/libc/kernel/arch-arm/asm/mman.h
+++ b/libc/kernel/arch-arm/asm/mman.h
@@ -7,28 +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_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 046efa8..68b806a 100644
--- a/libc/kernel/arch-arm/asm/module.h
+++ b/libc/kernel/arch-arm/asm/module.h
@@ -7,25 +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_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 d687e30..84d614c 100644
--- a/libc/kernel/arch-arm/asm/msgbuf.h
+++ b/libc/kernel/arch-arm/asm/msgbuf.h
@@ -7,35 +7,26 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 d6ce13f..6c53f6f 100644
--- a/libc/kernel/arch-arm/asm/mtd-xip.h
+++ b/libc/kernel/arch-arm/asm/mtd-xip.h
@@ -7,19 +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!
- ***
  ****************************************************************************
  ****************************************************************************/
 #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 3c45724..f980343 100644
--- a/libc/kernel/arch-arm/asm/page.h
+++ b/libc/kernel/arch-arm/asm/page.h
@@ -7,19 +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 _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 148cc47..6814fe3 100644
--- a/libc/kernel/arch-arm/asm/param.h
+++ b/libc/kernel/arch-arm/asm/param.h
@@ -7,22 +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_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 90d6cd5..2500345 100644
--- a/libc/kernel/arch-arm/asm/percpu.h
+++ b/libc/kernel/arch-arm/asm/percpu.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 c432aa6..5d45e65 100644
--- a/libc/kernel/arch-arm/asm/pgalloc.h
+++ b/libc/kernel/arch-arm/asm/pgalloc.h
@@ -7,23 +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_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 7678ba3..47e8675 100644
--- a/libc/kernel/arch-arm/asm/pgtable-hwdef.h
+++ b/libc/kernel/arch-arm/asm/pgtable-hwdef.h
@@ -7,77 +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 _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 2d6d274..cbac611 100644
--- a/libc/kernel/arch-arm/asm/pgtable.h
+++ b/libc/kernel/arch-arm/asm/pgtable.h
@@ -7,19 +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!
- ***
  ****************************************************************************
  ****************************************************************************/
 #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 4c0f364..c5b80a5 100644
--- a/libc/kernel/arch-arm/asm/poll.h
+++ b/libc/kernel/arch-arm/asm/poll.h
@@ -7,38 +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 __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 a09903d..bc85217 100644
--- a/libc/kernel/arch-arm/asm/posix_types.h
+++ b/libc/kernel/arch-arm/asm/posix_types.h
@@ -7,72 +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 __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 5948c26..4a560d0 100644
--- a/libc/kernel/arch-arm/asm/proc-fns.h
+++ b/libc/kernel/arch-arm/asm/proc-fns.h
@@ -7,15 +7,9 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 c7fe7e9..f93cbc1 100644
--- a/libc/kernel/arch-arm/asm/processor.h
+++ b/libc/kernel/arch-arm/asm/processor.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 7a665e7..d774e0b 100644
--- a/libc/kernel/arch-arm/asm/procinfo.h
+++ b/libc/kernel/arch-arm/asm/procinfo.h
@@ -7,54 +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 __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 661ba97..a04eec3 100644
--- a/libc/kernel/arch-arm/asm/ptrace.h
+++ b/libc/kernel/arch-arm/asm/ptrace.h
@@ -7,98 +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_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 182afc9..7546dd4 100644
--- a/libc/kernel/arch-arm/asm/resource.h
+++ b/libc/kernel/arch-arm/asm/resource.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 3cc5c2a..a2c06ca 100644
--- a/libc/kernel/arch-arm/asm/scatterlist.h
+++ b/libc/kernel/arch-arm/asm/scatterlist.h
@@ -7,28 +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_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 6e01eff..7c5618a 100644
--- a/libc/kernel/arch-arm/asm/semaphore.h
+++ b/libc/kernel/arch-arm/asm/semaphore.h
@@ -7,34 +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_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 c072dda..a2f5dd0 100644
--- a/libc/kernel/arch-arm/asm/sembuf.h
+++ b/libc/kernel/arch-arm/asm/sembuf.h
@@ -7,28 +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 _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 54b1f04..1d4d78c 100644
--- a/libc/kernel/arch-arm/asm/shmbuf.h
+++ b/libc/kernel/arch-arm/asm/shmbuf.h
@@ -7,48 +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 _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 4061915..ea53a8d 100644
--- a/libc/kernel/arch-arm/asm/shmparam.h
+++ b/libc/kernel/arch-arm/asm/shmparam.h
@@ -7,18 +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 _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 bda2339..3c4fcf3 100644
--- a/libc/kernel/arch-arm/asm/sigcontext.h
+++ b/libc/kernel/arch-arm/asm/sigcontext.h
@@ -7,44 +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_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 cf94065..225685e 100644
--- a/libc/kernel/arch-arm/asm/siginfo.h
+++ b/libc/kernel/arch-arm/asm/siginfo.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 94713b9..212d9f1 100644
--- a/libc/kernel/arch-arm/asm/signal.h
+++ b/libc/kernel/arch-arm/asm/signal.h
@@ -7,107 +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 _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 7867709..90c1c71 100644
--- a/libc/kernel/arch-arm/asm/sizes.h
+++ b/libc/kernel/arch-arm/asm/sizes.h
@@ -7,40 +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 __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 88cd1b7..e6c1e41 100644
--- a/libc/kernel/arch-arm/asm/smp.h
+++ b/libc/kernel/arch-arm/asm/smp.h
@@ -7,30 +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_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 a8c5000..1f0050a 100644
--- a/libc/kernel/arch-arm/asm/socket.h
+++ b/libc/kernel/arch-arm/asm/socket.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 _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 909463f..cab86b8 100644
--- a/libc/kernel/arch-arm/asm/sockios.h
+++ b/libc/kernel/arch-arm/asm/sockios.h
@@ -7,23 +7,16 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 a7b2858..3ae2173 100644
--- a/libc/kernel/arch-arm/asm/spinlock.h
+++ b/libc/kernel/arch-arm/asm/spinlock.h
@@ -7,27 +7,21 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 fbf33e0..ee77f20 100644
--- a/libc/kernel/arch-arm/asm/spinlock_types.h
+++ b/libc/kernel/arch-arm/asm/spinlock_types.h
@@ -7,29 +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_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 0a6d036..49b85f9 100644
--- a/libc/kernel/arch-arm/asm/stat.h
+++ b/libc/kernel/arch-arm/asm/stat.h
@@ -7,98 +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 _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 431fbcc..7963eab 100644
--- a/libc/kernel/arch-arm/asm/statfs.h
+++ b/libc/kernel/arch-arm/asm/statfs.h
@@ -7,48 +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 _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 5dda2c0..156c171 100644
--- a/libc/kernel/arch-arm/asm/suspend.h
+++ b/libc/kernel/arch-arm/asm/suspend.h
@@ -7,15 +7,9 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 5bcd4d5..8e85039 100644
--- a/libc/kernel/arch-arm/asm/system.h
+++ b/libc/kernel/arch-arm/asm/system.h
@@ -7,15 +7,9 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 4aa14d9..640bd27 100644
--- a/libc/kernel/arch-arm/asm/termbits.h
+++ b/libc/kernel/arch-arm/asm/termbits.h
@@ -7,202 +7,168 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 4b80774..ba43ac2 100644
--- a/libc/kernel/arch-arm/asm/termios.h
+++ b/libc/kernel/arch-arm/asm/termios.h
@@ -7,74 +7,61 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 0956e6a..a30d2dc 100644
--- a/libc/kernel/arch-arm/asm/thread_info.h
+++ b/libc/kernel/arch-arm/asm/thread_info.h
@@ -7,15 +7,9 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 2b0ff6e..110c471 100644
--- a/libc/kernel/arch-arm/asm/timex.h
+++ b/libc/kernel/arch-arm/asm/timex.h
@@ -7,18 +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 _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 eb5468c..70a23dc 100644
--- a/libc/kernel/arch-arm/asm/tlbflush.h
+++ b/libc/kernel/arch-arm/asm/tlbflush.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 da2c4f8..9eccfd4 100644
--- a/libc/kernel/arch-arm/asm/topology.h
+++ b/libc/kernel/arch-arm/asm/topology.h
@@ -7,17 +7,11 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 af1ea0c..80cea8d 100644
--- a/libc/kernel/arch-arm/asm/types.h
+++ b/libc/kernel/arch-arm/asm/types.h
@@ -7,32 +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_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 6ab21d8..21fc3f2 100644
--- a/libc/kernel/arch-arm/asm/uaccess.h
+++ b/libc/kernel/arch-arm/asm/uaccess.h
@@ -7,84 +7,71 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 2e6612a..8b9b096 100644
--- a/libc/kernel/arch-arm/asm/unaligned.h
+++ b/libc/kernel/arch-arm/asm/unaligned.h
@@ -7,35 +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_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 e5b89f2..9a30ddc 100644
--- a/libc/kernel/arch-arm/asm/unistd.h
+++ b/libc/kernel/arch-arm/asm/unistd.h
@@ -7,409 +7,353 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 76c4074..d0baecd 100644
--- a/libc/kernel/arch-arm/asm/user.h
+++ b/libc/kernel/arch-arm/asm/user.h
@@ -7,74 +7,66 @@
  ***   structures, and macros generated from the original header, and thus,
  ***   contains no copyrightable information.
  ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/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 c938da9..7875dbf 100644
--- a/libc/kernel/arch-arm/asm/vga.h
+++ b/libc/kernel/arch-arm/asm/vga.h
@@ -7,22 +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_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 */
