LDFLAGS                        += -EB
 endif
 
-KBUILD_CFLAGS          += -pipe $(cflags-y)
-KBUILD_AFLAGS          += $(cflags-y)
 
 head-y                 := arch/sh/kernel/init_task.o
 head-$(CONFIG_SUPERH32)        += arch/sh/kernel/head_32.o
 
 boot := arch/sh/boot
 
-ifneq ($(KBUILD_SRC),)
-incdir-prefix  := $(srctree)/include/asm-sh/
-else
-incdir-prefix  :=
-endif
-
-#      Update machine arch and proc symlinks if something which affects
-#      them changed.  We use .arch and .mach to indicate when they were
-#      updated last, otherwise make uses the target directory mtime.
+cflags-y       += -Iarch/sh/include/$(cpuincdir-y)
+cflags-y       += $(foreach d, $(incdir-y), -Iarch/sh/include/mach-$(d))
 
-include/asm-sh/.cpu: $(wildcard include/config/cpu/*.h) \
-                    include/config/auto.conf FORCE
-       @echo '  SYMLINK include/asm-sh/cpu -> include/asm-sh/$(cpuincdir-y)'
-       $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi
-       $(Q)ln -fsn $(incdir-prefix)$(cpuincdir-y) include/asm-sh/cpu
-       @touch $@
-
-#      Most boards have their own mach directories.  For the ones that
-#      don't, just reference the parent directory so the semantics are
-#      kept roughly the same.
-#
-#      When multiple boards are compiled in at the same time, preference
-#      for the mach link is given to whichever has a directory for its
-#      headers. However, this is only a workaround until platforms that
-#      can live in the same kernel image back away from relying on the
-#      mach link.
-
-include/asm-sh/.mach: $(wildcard include/config/sh/*.h) \
-                     include/config/auto.conf FORCE
-       $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi
-       $(Q)rm -f include/asm-sh/mach
-       $(Q)for i in $(incdir-y); do \
-       if [ -d $(srctree)/include/asm-sh/$$i ]; then \
-               echo -n '  SYMLINK include/asm-sh/mach -> '; \
-               echo -e "include/asm-sh/$$i"; \
-               ln -fsn $(incdir-prefix)$$i \
-                       include/asm-sh/mach; \
-       else \
-               if [ ! -d include/asm-sh/mach ]; then \
-                       echo -n '  SYMLINK include/asm-sh/mach -> '; \
-                       echo -e 'include/asm-sh'; \
-                       ln -fsn $(incdir-prefix)../asm-sh include/asm-sh/mach; \
-               fi; \
-       fi; \
-       done
-       @touch $@
+KBUILD_CFLAGS          += -pipe $(cflags-y)
+KBUILD_CPPFLAGS                += $(cflags-y)
+KBUILD_AFLAGS          += $(cflags-y)
 
 PHONY += maketools FORCE
 
 maketools:  include/linux/version.h FORCE
-       $(Q)$(MAKE) $(build)=arch/sh/tools include/asm-sh/machtypes.h
+       $(Q)$(MAKE) $(build)=arch/sh/tools arch/sh/include/asm/machtypes.h
 
 all: $(KBUILD_IMAGE)
 
 
 compressed: zImage
 
-archprepare: include/asm-sh/.cpu include/asm-sh/.mach maketools \
-            arch/sh/lib64/syscalltab.h
+archprepare: maketools arch/sh/lib64/syscalltab.h
 
 archclean:
        $(Q)$(MAKE) $(clean)=$(boot)
        $(call filechk,gen-syscalltab)
 
 CLEAN_FILES += arch/sh/lib64/syscalltab.h \
-              include/asm-sh/machtypes.h \
-              include/asm-sh/cpu include/asm-sh/.cpu \
-              include/asm-sh/mach include/asm-sh/.mach
+              arch/sh/include/asm/machtypes.h
 
 #include <linux/irq.h>
 #include <linux/interrupt.h>
 #include <linux/signal.h>
-#include <asm/cpu/irq.h>
+#include <cpu/irq.h>
 #include <asm/page.h>
 
 /* Setup for the SMSC FDC37C935 / LAN91C100FD */
 
 #include <linux/init.h>
 #include <linux/io.h>
 #include <linux/kernel.h>
-#include <asm/cpu/irq.h>
+#include <cpu/irq.h>
 
 /*
  * Platform Dependent Interrupt Priorities.
 
 #include <linux/irq.h>
 #include <asm/io.h>
 #include <asm/irq.h>
-#include <asm/dreamcast/sysasic.h>
+#include <mach/sysasic.h>
 
 /* Dreamcast System ASIC Hardware Events -
 
 
 #include <asm/io.h>
 #include <asm/irq.h>
 #include <asm/rtc.h>
-#include <asm/machvec.h>
-#include <asm/mach/sysasic.h>
+#include <machvec.h>
+#include <mach/sysasic.h>
 
 extern struct hw_interrupt_type systemasic_int;
 extern void aica_time_init(void);
 
 #include <asm/io.h>
 #include <asm/hd64461.h>
 #include <asm/hp6xx.h>
-#include <asm/cpu/dac.h>
+#include <cpu/dac.h>
 #include <asm/pm.h>
 
 #define STBCR          0xffffff82
 
  */
 
 #include <linux/linkage.h>
-#include <asm/cpu/mmu_context.h>
+#include <cpu/mmu_context.h>
 
 #define k0     r0
 #define k1     r1
 
 #include <asm/io.h>
 #include <asm/irq.h>
 #include <asm/hp6xx.h>
-#include <asm/cpu/dac.h>
+#include <cpu/dac.h>
 
 #define        SCPCR   0xa4000116
 #define        SCPDR   0xa4000136
 
 #include <linux/fs.h>
 #include <asm/io.h>
 #include <asm/uaccess.h>
-#include <asm/landisk/gio.h>
-#include <asm/landisk/iodata_landisk.h>
+#include <mach/gio.h>
+#include <mach/iodata_landisk.h>
 
 #define DEVCOUNT                4
 #define GIO_MINOR              2       /* GIO minor no. */
 
 #include <linux/irq.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
-#include <asm/landisk/iodata_landisk.h>
+#include <mach/iodata_landisk.h>
 
 static void disable_landisk_irq(unsigned int irq)
 {
 
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/platform_device.h>
-#include <asm/landisk/iodata_landisk.h>
+#include <mach/iodata_landisk.h>
 #include <asm/push-switch.h>
 
 static irqreturn_t psw_irq_handler(int irq, void *arg)
 
 #include <linux/pm.h>
 #include <linux/mm.h>
 #include <asm/machvec.h>
-#include <asm/landisk/iodata_landisk.h>
+#include <mach/iodata_landisk.h>
 #include <asm/io.h>
 
 void init_landisk_IRQ(void);
 
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/platform_device.h>
-#include <asm/mach/r7780rp.h>
+#include <mach/r7780rp.h>
 #include <asm/push-switch.h>
 
 static irqreturn_t psw_irq_handler(int irq, void *arg)
 
  */
 #include <linux/kernel.h>
 #include <asm/io.h>
-#include <asm/mach/se7343.h>
+#include <mach/se7343.h>
 
 #define badio(fn, a) panic("bad i/o operation %s for %08lx.", #fn, a)
 
 
 #include <linux/init.h>
 #include <linux/platform_device.h>
 #include <linux/mtd/physmap.h>
-#include <asm/machvec.h>
-#include <asm/mach/se7343.h>
+#include <machvec.h>
+#include <mach/se7343.h>
 #include <asm/heartbeat.h>
 #include <asm/irq.h>
 #include <asm/io.h>
 
 #include <linux/platform_device.h>
 #include <asm/io.h>
 #include <asm/rtc.h>
-#include <asm/sh03/io.h>
-#include <asm/sh03/sh03.h>
+#include <mach/io.h>
+#include <mach/sh03.h>
 #include <asm/addrspace.h>
 
 static void __init init_sh03_IRQ(void)
 
 #include <asm/snapgear.h>
 #include <asm/irq.h>
 #include <asm/io.h>
-#include <asm/cpu/timer.h>
+#include <cpu/timer.h>
 
 /*
  * EraseConfig handling functions
 
  *   Copyright (C) 2002 Stuart Menefy (stuart.menefy@st.com)
  */
 #include <asm/cache.h>
-#include <asm/cpu/mmu_context.h>
-#include <asm/cpu/registers.h>
+#include <cpu/mmu_context.h>
+#include <cpu/registers.h>
 
 /*
  * Fixed TLB entries to identity map the beginning of RAM
 
 #include <linux/module.h>
 #include <linux/interrupt.h>
 #include <asm/cacheflush.h>
-#include <asm/mach/sysasic.h>
-#include <asm/mach/dma.h>
+#include <mach/sysasic.h>
+#include <mach/dma.h>
 #include <asm/dma.h>
 
 struct g2_channel {
 
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/interrupt.h>
-#include <asm/mach/sysasic.h>
-#include <asm/mach/dma.h>
+#include <mach/sysasic.h>
+#include <mach/dma.h>
 #include <asm/dma.h>
 #include <asm/io.h>
 
 
 #include <linux/init.h>
 #include <linux/interrupt.h>
 #include <linux/module.h>
-#include <asm/dreamcast/dma.h>
+#include <mach/dma.h>
 #include <asm/dma.h>
 #include <asm/io.h>
 #include "dma-sh.h"
 
 #ifndef __DMA_SH_H
 #define __DMA_SH_H
 
-#include <asm/cpu/dma.h>
+#include <cpu/dma.h>
 
 /* Definitions for the SuperH DMAC */
 #define REQ_L  0x00000000
 
 
 #include <asm/io.h>
 #include <asm/irq.h>
-#include <asm/mach/pci.h>
+#include <mach/pci.h>
 
 static void __init gapspci_fixup_resources(struct pci_dev *dev)
 {
 
 #include <linux/init.h>
 #include <linux/pci.h>
 #include <linux/types.h>
-#include <asm/cpu/irq.h>
+#include <cpu/irq.h>
 #include "pci-sh5.h"
 
 static inline u8 bridge_swizzle(u8 pin, u8 slot)
 
 
 #include <asm/io.h>
 #include <asm/irq.h>
-#include <asm/mach/pci.h>
+#include <mach/pci.h>
 
 static struct resource gapspci_io_resource = {
        .name   = "GAPSPCI IO",
 
 #include <linux/delay.h>
 #include <linux/types.h>
 #include <linux/irq.h>
-#include <asm/cpu/irq.h>
+#include <cpu/irq.h>
 #include <asm/pci.h>
 #include <asm/io.h>
 #include "pci-sh5.h"
 
  * Copyright (C) 2004  Andriy Skulysh
  */
 
-#include <asm/cpu/adc.h>
+#include <cpu/adc.h>
 
 int adc_single(unsigned int channel);
 
 
 
 #ifdef __KERNEL__
 
-#include <asm/cpu/addrspace.h>
+#include <cpu/addrspace.h>
 
 /* If this CPU supports segmentation, hook up the helpers */
 #ifdef P1SEG
 
 #ifdef __KERNEL__
 
 #include <linux/init.h>
-#include <asm/cpu/cache.h>
+#include <cpu/cache.h>
 
 #define L1_CACHE_BYTES         (1 << L1_CACHE_SHIFT)
 
 
 #define __flush_purge_region(start, size)      do { (void)(start); } while (0)
 #define __flush_invalidate_region(start, size) do { (void)(start); } while (0)
 #else
-#include <asm/cpu/cacheflush.h>
+#include <cpu/cacheflush.h>
 
 /*
  * Consistent DMA requires that the __flush_xxx() primitives must be set
 
 #include <linux/wait.h>
 #include <linux/sched.h>
 #include <linux/sysdev.h>
-#include <asm/cpu/dma.h>
+#include <cpu/dma.h>
 
 /* The maximum address that we can perform a DMA transfer to on this platform */
 /* Don't define MAX_DMA_ADDRESS; it's useless on the SuperH and any
 
 #define __ASM_SH_FREQ_H
 #ifdef __KERNEL__
 
-#include <asm/cpu/freq.h>
+#include <cpu/freq.h>
 
 #endif /* __KERNEL__ */
 #endif /* __ASM_SH_FREQ_H */
 
 #define __ASM_SH_GPIO_H
 
 #if defined(CONFIG_CPU_SH3)
-#include <asm/cpu/gpio.h>
+#include <cpu/gpio.h>
 #endif
 
 #endif /* __ASM_SH_GPIO_H */
 
 #endif
 
 #ifdef CONFIG_CPU_SH5
-#include <asm/cpu/irq.h>
+#include <cpu/irq.h>
 #endif
 
 #endif /* __ASM_SH_IRQ_H */
 
 #ifndef __ASM_SH_IRQFLAGS_64_H
 #define __ASM_SH_IRQFLAGS_64_H
 
-#include <asm/cpu/registers.h>
+#include <cpu/registers.h>
 
 #define SR_MASK_LL     0x00000000000000f0LL
 #define SR_BL_LL       0x0000000010000000LL
 
 #define __ASM_SH_MMU_CONTEXT_H
 
 #ifdef __KERNEL__
-#include <asm/cpu/mmu_context.h>
+#include <cpu/mmu_context.h>
 #include <asm/tlbflush.h>
 #include <asm/uaccess.h>
 #include <asm/io.h>
 
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  */
-#include <asm/cpu/registers.h>
+#include <cpu/registers.h>
 #include <asm/cacheflush.h>
 
 #define SR_ASID_MASK           0xffffffffff00ffffULL
 
 #include <asm/types.h>
 #include <asm/cache.h>
 #include <asm/ptrace.h>
-#include <asm/cpu/registers.h>
+#include <cpu/registers.h>
 
 /*
  * Default implementation of macro that returns current
 
        unsigned long capabilities;
 };
 
-#include <asm/cpu/rtc.h>
+#include <cpu/rtc.h>
 
 #endif /* _ASM_RTC_H */
 
 #define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
 
 #ifdef CONFIG_HD64465
-#include <asm/hd64465.h>
+#include <asm/hd64465/hd64465.h>
 
 #define SERIAL_PORT_DFNS                   \
         /* UART CLK   PORT IRQ     FLAGS        */                      \
 
 
 #include <linux/sysdev.h>
 #include <linux/clocksource.h>
-#include <asm/cpu/timer.h>
+#include <cpu/timer.h>
 
 struct sys_timer_ops {
        int (*init)(void);
 
 #define __ASM_SH_UBC_H
 #ifdef __KERNEL__
 
-#include <asm/cpu/ubc.h>
+#include <cpu/ubc.h>
 
 /* User Break Controller */
 #if defined(CONFIG_CPU_SUBTYPE_SH7707) || defined(CONFIG_CPU_SUBTYPE_SH7709)
 
 #ifdef __KERNEL__
 
 #include <linux/types.h>
-#include <asm/cpu/watchdog.h>
+#include <cpu/watchdog.h>
 #include <asm/io.h>
 
 /* 
- * See asm/cpu-sh2/watchdog.h for explanation of this stupidity..
+ * See cpu-sh2/watchdog.h for explanation of this stupidity..
  */
 #ifndef WTCNT_R
 #  define WTCNT_R      WTCNT
 
--- /dev/null
+/*
+ * include/asm-sh/cpu-sh2/cacheflush.h
+ *
+ * Copyright (C) 2003 Paul Mundt
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#ifndef __ASM_CPU_SH2_CACHEFLUSH_H
+#define __ASM_CPU_SH2_CACHEFLUSH_H
+
+/* 
+ * Cache flushing:
+ *
+ *  - flush_cache_all() flushes entire cache
+ *  - flush_cache_mm(mm) flushes the specified mm context's cache lines
+ *  - flush_cache_dup mm(mm) handles cache flushing when forking
+ *  - flush_cache_page(mm, vmaddr, pfn) flushes a single page
+ *  - flush_cache_range(vma, start, end) flushes a range of pages
+ *
+ *  - flush_dcache_page(pg) flushes(wback&invalidates) a page for dcache
+ *  - flush_icache_range(start, end) flushes(invalidates) a range for icache
+ *  - flush_icache_page(vma, pg) flushes(invalidates) a page for icache
+ *
+ *  Caches are indexed (effectively) by physical address on SH-2, so
+ *  we don't need them.
+ */
+#define flush_cache_all()                      do { } while (0)
+#define flush_cache_mm(mm)                     do { } while (0)
+#define flush_cache_dup_mm(mm)                 do { } while (0)
+#define flush_cache_range(vma, start, end)     do { } while (0)
+#define flush_cache_page(vma, vmaddr, pfn)     do { } while (0)
+#define flush_dcache_page(page)                        do { } while (0)
+#define flush_dcache_mmap_lock(mapping)                do { } while (0)
+#define flush_dcache_mmap_unlock(mapping)      do { } while (0)
+#define flush_icache_range(start, end)         do { } while (0)
+#define flush_icache_page(vma,pg)              do { } while (0)
+#define flush_icache_user_range(vma,pg,adr,len)        do { } while (0)
+#define flush_cache_sigtramp(vaddr)            do { } while (0)
+
+#define p3_cache_init()                                do { } while (0)
+#endif /* __ASM_CPU_SH2_CACHEFLUSH_H */
+
 
--- /dev/null
+/*
+ * Definitions for the SH-2 DMAC.
+ *
+ * Copyright (C) 2003  Paul Mundt
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#ifndef __ASM_CPU_SH2_DMA_H
+#define __ASM_CPU_SH2_DMA_H
+
+#define SH_MAX_DMA_CHANNELS    2
+
+#define SAR    ((unsigned long[]){ 0xffffff80, 0xffffff90 })
+#define DAR    ((unsigned long[]){ 0xffffff84, 0xffffff94 })
+#define DMATCR ((unsigned long[]){ 0xffffff88, 0xffffff98 })
+#define CHCR   ((unsigned long[]){ 0xfffffffc, 0xffffff9c })
+
+#define DMAOR  0xffffffb0
+
+#endif /* __ASM_CPU_SH2_DMA_H */
+
 
--- /dev/null
+/*
+ * include/asm-sh/cpu-sh2/mmu_context.h
+ *
+ * Copyright (C) 2003  Paul Mundt
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#ifndef __ASM_CPU_SH2_MMU_CONTEXT_H
+#define __ASM_CPU_SH2_MMU_CONTEXT_H
+
+/* No MMU */
+
+#endif /* __ASM_CPU_SH2_MMU_CONTEXT_H */
+
 
--- /dev/null
+#ifndef __ASM_CPU_SH2_TIMER_H
+#define __ASM_CPU_SH2_TIMER_H
+
+/* Nothing needed yet */
+
+#endif /* __ASM_CPU_SH2_TIMER_H */
 
--- /dev/null
+/*
+ * include/asm-sh/cpu-sh2/ubc.h
+ *
+ * Copyright (C) 2003 Paul Mundt
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#ifndef __ASM_CPU_SH2_UBC_H
+#define __ASM_CPU_SH2_UBC_H
+
+#define UBC_BARA                0xffffff40
+#define UBC_BAMRA               0xffffff44
+#define UBC_BBRA                0xffffff48
+#define UBC_BARB                0xffffff60
+#define UBC_BAMRB               0xffffff64
+#define UBC_BBRB                0xffffff68
+#define UBC_BDRB                0xffffff70
+#define UBC_BDMRB               0xffffff74
+#define UBC_BRCR                0xffffff78
+
+/*
+ * We don't have any ASID changes to make in the UBC on the SH-2.
+ *
+ * Make these purposely invalid to track misuse.
+ */
+#define UBC_BASRA              0x00000000
+#define UBC_BASRB              0x00000000
+
+#endif /* __ASM_CPU_SH2_UBC_H */
+
 
--- /dev/null
+/*
+ * include/asm-sh/cpu-sh2/watchdog.h
+ *
+ * Copyright (C) 2002, 2003 Paul Mundt
+ *
+ * This file is subject to the terms and conditions of the GNU General Public
+ * License.  See the file "COPYING" in the main directory of this archive
+ * for more details.
+ */
+#ifndef __ASM_CPU_SH2_WATCHDOG_H
+#define __ASM_CPU_SH2_WATCHDOG_H
+
+/*
+ * More SH-2 brilliance .. its not good enough that we can't read
+ * and write the same sizes to WTCNT, now we have to read and write
+ * with different sizes at different addresses for WTCNT _and_ RSTCSR.
+ *
+ * At least on the bright side no one has managed to screw over WTCSR
+ * in this fashion .. yet.
+ */
+/* Register definitions */
+#define WTCNT          0xfffffe80
+#define WTCSR          0xfffffe80
+#define RSTCSR         0xfffffe82
+
+#define WTCNT_R                (WTCNT + 1)
+#define RSTCSR_R       (RSTCSR + 1)
+
+/* Bit definitions */
+#define WTCSR_IOVF     0x80
+#define WTCSR_WT       0x40
+#define WTCSR_TME      0x20
+#define WTCSR_RSTS     0x00
+
+#define RSTCSR_RSTS    0x20
+
+/**
+ *     sh_wdt_read_rstcsr - Read from Reset Control/Status Register
+ *
+ *     Reads back the RSTCSR value.
+ */
+static inline __u8 sh_wdt_read_rstcsr(void)
+{
+       /*
+        * Same read/write brain-damage as for WTCNT here..
+        */
+       return ctrl_inb(RSTCSR_R);
+}
+
+/**
+ *     sh_wdt_write_csr - Write to Reset Control/Status Register
+ *
+ *     @val: Value to write
+ *
+ *     Writes the given value @val to the lower byte of the control/status
+ *     register. The upper byte is set manually on each write.
+ */
+static inline void sh_wdt_write_rstcsr(__u8 val)
+{
+       /*
+        * Note: Due to the brain-damaged nature of this register,
+        * we can't presently touch the WOVF bit, since the upper byte
+        * has to be swapped for this. So just leave it alone..
+        */
+       ctrl_outw((WTCNT_HIGH << 8) | (__u16)val, RSTCSR);
+}
+
+#endif /* __ASM_CPU_SH2_WATCHDOG_H */
+
 
 #define CHCR_TS_MASK   0x18
 #define CHCR_TS_SHIFT  3
 
-#include <asm/cpu/dma-sh7780.h>
+#include <cpu/dma-sh7780.h>
 #else
 #define SH_DMAC_BASE   0xffa00000
 
 
 #ifndef __ASM_SH_DREAMCAST_PCI_H
 #define __ASM_SH_DREAMCAST_PCI_H
 
-#include <asm/mach/sysasic.h>
+#include <mach/sysasic.h>
 
 #define        GAPSPCI_REGS            0x01001400
 #define GAPSPCI_DMA_BASE       0x01840000
 
 #include <linux/io.h>
 #include <linux/kernel.h>
 #include <linux/bitops.h>
-#include <asm/cpu/irq.h>
+#include <cpu/irq.h>
 #include <asm/page.h>
 
 /*
 
 #include <linux/linkage.h>
 #include <asm/asm-offsets.h>
 #include <asm/thread_info.h>
-#include <asm/cpu/mmu_context.h>
+#include <cpu/mmu_context.h>
 #include <asm/unistd.h>
 #include <asm/errno.h>
 #include <asm/page.h>
 
 #include <linux/linkage.h>
 #include <asm/asm-offsets.h>
 #include <asm/thread_info.h>
-#include <asm/cpu/mmu_context.h>
+#include <cpu/mmu_context.h>
 #include <asm/unistd.h>
 #include <asm/errno.h>
 #include <asm/page.h>
 
 #include <asm/asm-offsets.h>
 #include <asm/thread_info.h>
 #include <asm/unistd.h>
-#include <asm/cpu/mmu_context.h>
+#include <cpu/mmu_context.h>
 #include <asm/page.h>
 
 ! NOTE:
 
 #include <linux/sched.h>
 #include <linux/signal.h>
 #include <linux/io.h>
-#include <asm/cpu/fpu.h>
+#include <cpu/fpu.h>
 #include <asm/processor.h>
 #include <asm/system.h>
 #include <asm/fpu.h>
 
  * and Kamel Khelifi <kamel.khelifi@st.com>
  */
 #include <linux/kernel.h>
-#include <asm/cpu/fpu.h>
+#include <cpu/fpu.h>
 
 #define LIT64( a ) a##LL
 
 
 #include <linux/io.h>
 #include <asm/page.h>
 #include <asm/cacheflush.h>
-#include <asm/cpu/sq.h>
+#include <cpu/sq.h>
 
 struct sq_mapping;
 
 
  */
 #include <linux/errno.h>
 #include <linux/sys.h>
-#include <asm/cpu/registers.h>
+#include <cpu/registers.h>
 #include <asm/processor.h>
 #include <asm/unistd.h>
 #include <asm/thread_info.h>
 
 #include <asm/page.h>
 #include <asm/cache.h>
 #include <asm/tlb.h>
-#include <asm/cpu/registers.h>
-#include <asm/cpu/mmu_context.h>
+#include <cpu/registers.h>
+#include <cpu/mmu_context.h>
 #include <asm/thread_info.h>
 
 /*
 
 #include <asm/machvec.h>
 #include <asm/uaccess.h>
 #include <asm/thread_info.h>
-#include <asm/cpu/mmu_context.h>
+#include <cpu/mmu_context.h>
 
 atomic_t irq_err_count;
 
 
 #include <linux/irq.h>
 #include <linux/io.h>
 #include <linux/platform_device.h>
-#include <asm/cpu/registers.h>  /* required by inline __asm__ stmt. */
-#include <asm/cpu/irq.h>
+#include <cpu/registers.h>      /* required by inline __asm__ stmt. */
+#include <cpu/irq.h>
 #include <asm/addrspace.h>
 #include <asm/processor.h>
 #include <asm/uaccess.h>
 
 
 #include <linux/kernel.h>
 #include <asm/io.h>
-#include <asm/cpu/registers.h>
+#include <cpu/registers.h>
 
 /* THIS IS A PHYSICAL ADDRESS */
 #define HDSP2534_ADDR (0x04002100)
 
 #include <asm/uaccess.h>
 #include <asm/pgalloc.h>
 #include <asm/mmu_context.h>
-#include <asm/cpu/registers.h>
+#include <cpu/registers.h>
 
 /* Callable from fault.c, so not static */
 inline void __do_tlb_refill(unsigned long address,
 
 # Shamelessly cloned from ARM.
 #
 
-include/asm-sh/machtypes.h: $(src)/gen-mach-types $(src)/mach-types
+arch/sh/include/asm/machtypes.h: $(src)/gen-mach-types $(src)/mach-types
        @echo '  Generating $@'
-       $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi
+       $(Q)if [ ! -d arch/sh/include/asm ]; then mkdir -p arch/sh/include/asm; fi
        $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
 
+++ /dev/null
-#include <asm/cpu-sh2/cacheflush.h>
 
+++ /dev/null
-#include <asm/cpu-sh2/dma.h>
 
+++ /dev/null
-#include <asm/cpu-sh2/mmu_context.h>
 
+++ /dev/null
-#include <asm/cpu-sh2/timer.h>
 
+++ /dev/null
-#include <asm/cpu-sh2/ubc.h>
 
+++ /dev/null
-#include <asm/cpu-sh2/watchdog.h>
 
 #include <sound/info.h>
 #include <asm/io.h>
 #include <asm/dma.h>
-#include <asm/dreamcast/sysasic.h>
+#include <mach/sysasic.h>
 #include "aica.h"
 
 MODULE_AUTHOR("Adrian McMenamin <adrian@mcmen.demon.co.uk>");