To: linux-m68k@lists.linux-m68k.org
Subject: L68K: 2.1.79
X-Yow: My LIBRARY CARD expired...
From: Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
Date: 16 Jan 1998 10:59:00 +0100
Sender: owner-linux-m68k@phil.uni-sb.de

It's time again for a mega patch, but it's only so big because i have
moved around some files: <asm/{ata,ami,...}*.h> has been renamed to
<asm/{atari,amiga,...}/*.h> (note the new directory level).

Btw, `void main' is verboten, it can cause daemons to flow out of your
nose. :-)

Andreas.


table
`!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
diff -urNX exclude linux-2.1.79.orig/arch/m68k/amiga/amiga_ksyms.c linux-2.1.79/arch/m68k/amiga/amiga_ksyms.c
--- linux-2.1.79.orig/arch/m68k/amiga/amiga_ksyms.c	Mon Mar 24 16:47:18 1997
+++ linux-2.1.79/arch/m68k/amiga/amiga_ksyms.c	Thu Jan 15 00:02:49 1998
@@ -2,7 +2,7 @@
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/zorro.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/hardware.h>
 
 extern volatile u_short amiga_audio_min_period;
 extern u_short amiga_audio_period;
diff -urNX exclude linux-2.1.79.orig/arch/m68k/amiga/amiints.c linux-2.1.79/arch/m68k/amiga/amiints.c
--- linux-2.1.79.orig/arch/m68k/amiga/amiints.c	Tue May 20 17:45:41 1997
+++ linux-2.1.79/arch/m68k/amiga/amiints.c	Thu Jan 15 00:03:14 1998
@@ -30,8 +30,8 @@
 #include <asm/system.h>
 #include <asm/irq.h>
 #include <asm/traps.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 
 extern int cia_request_irq(struct ciabase *base,int irq,
                            void (*handler)(int, void *, struct pt_regs *),
diff -urNX exclude linux-2.1.79.orig/arch/m68k/amiga/amisound.c linux-2.1.79/arch/m68k/amiga/amisound.c
--- linux-2.1.79.orig/arch/m68k/amiga/amisound.c	Fri May 30 18:36:37 1997
+++ linux-2.1.79/arch/m68k/amiga/amisound.c	Thu Jan 15 00:03:33 1998
@@ -13,7 +13,7 @@
 #include <linux/init.h>
 
 #include <asm/system.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/hardware.h>
 
 static u_short *snd_data = NULL;
 static const signed char sine_data[] = {
diff -urNX exclude linux-2.1.79.orig/arch/m68k/amiga/chipram.c linux-2.1.79/arch/m68k/amiga/chipram.c
--- linux-2.1.79.orig/arch/m68k/amiga/chipram.c	Tue May 20 17:45:42 1997
+++ linux-2.1.79/arch/m68k/amiga/chipram.c	Thu Jan 15 00:03:48 1998
@@ -9,7 +9,7 @@
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/hardware.h>
 
 struct chip_desc {
 	unsigned first   :  1;
diff -urNX exclude linux-2.1.79.orig/arch/m68k/amiga/cia.c linux-2.1.79/arch/m68k/amiga/cia.c
--- linux-2.1.79.orig/arch/m68k/amiga/cia.c	Tue May 20 17:45:42 1997
+++ linux-2.1.79/arch/m68k/amiga/cia.c	Thu Jan 15 00:04:32 1998
@@ -18,8 +18,8 @@
 #include <linux/init.h>
 
 #include <asm/irq.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 
 struct ciabase {
 	volatile struct CIA *cia;
diff -urNX exclude linux-2.1.79.orig/arch/m68k/amiga/config.c linux-2.1.79/arch/m68k/amiga/config.c
--- linux-2.1.79.orig/arch/m68k/amiga/config.c	Fri Jan  9 18:09:45 1998
+++ linux-2.1.79/arch/m68k/amiga/config.c	Thu Jan 15 00:04:51 1998
@@ -25,8 +25,8 @@
 #include <asm/setup.h>
 #include <asm/system.h>
 #include <asm/pgtable.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #include <asm/irq.h>
 #include <asm/machdep.h>
 #include <linux/zorro.h>
diff -urNX exclude linux-2.1.79.orig/arch/m68k/amiga/zorro.c linux-2.1.79/arch/m68k/amiga/zorro.c
--- linux-2.1.79.orig/arch/m68k/amiga/zorro.c	Wed Dec 17 19:48:56 1997
+++ linux-2.1.79/arch/m68k/amiga/zorro.c	Thu Jan 15 00:05:04 1998
@@ -15,7 +15,7 @@
 #include <linux/string.h>
 #include <asm/setup.h>
 #include <asm/bitops.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/hardware.h>
 #include <linux/zorro.h>
 
 
diff -urNX exclude linux-2.1.79.orig/arch/m68k/apollo/config.c linux-2.1.79/arch/m68k/apollo/config.c
--- linux-2.1.79.orig/arch/m68k/apollo/config.c	Fri Nov  7 19:13:15 1997
+++ linux-2.1.79/arch/m68k/apollo/config.c	Thu Jan 15 00:06:34 1998
@@ -10,7 +10,7 @@
 #include <asm/setup.h>
 #include <asm/system.h>
 #include <asm/pgtable.h>
-#include <asm/apollohw.h>
+#include <asm/apollo/hardware.h>
 #include <asm/irq.h>
 #include <asm/machdep.h>
 
diff -urNX exclude linux-2.1.79.orig/arch/m68k/apollo/dn_ints.c linux-2.1.79/arch/m68k/apollo/dn_ints.c
--- linux-2.1.79.orig/arch/m68k/apollo/dn_ints.c	Fri Nov  7 19:13:15 1997
+++ linux-2.1.79/arch/m68k/apollo/dn_ints.c	Thu Jan 15 00:07:25 1998
@@ -8,7 +8,7 @@
 #include <asm/traps.h>
 #include <asm/page.h>
 #include <asm/machdep.h>
-#include <asm/apollohw.h>
+#include <asm/apollo/hardware.h>
 
 static irq_handler_t dn_irqs[16];
 
diff -urNX exclude linux-2.1.79.orig/arch/m68k/atari/ataints.c linux-2.1.79/arch/m68k/atari/ataints.c
--- linux-2.1.79.orig/arch/m68k/atari/ataints.c	Fri Jan  9 18:09:46 1998
+++ linux-2.1.79/arch/m68k/atari/ataints.c	Thu Jan 15 00:08:39 1998
@@ -44,9 +44,9 @@
 #include <asm/system.h>
 #include <asm/traps.h>
 
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atari_stdma.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/stdma.h>
 #include <asm/irq.h>
 #include <asm/entry.h>
 
diff -urNX exclude linux-2.1.79.orig/arch/m68k/atari/atakeyb.c linux-2.1.79/arch/m68k/atari/atakeyb.c
--- linux-2.1.79.orig/arch/m68k/atari/atakeyb.c	Wed Dec 17 19:48:58 1997
+++ linux-2.1.79/arch/m68k/atari/atakeyb.c	Thu Jan 15 00:09:06 1998
@@ -25,11 +25,11 @@
 #include <linux/init.h>
 #include <linux/kbd_ll.h>
 
-#include <asm/atariints.h>
-#include <asm/atarihw.h>
-#include <asm/atarikb.h>
-#include <asm/atari_mouse.h>
-#include <asm/atari_joystick.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/keyboard.h>
+#include <asm/atari/mouse.h>
+#include <asm/atari/joystick.h>
 #include <asm/irq.h>
 
 extern unsigned char mach_keyboard_type;
diff -urNX exclude linux-2.1.79.orig/arch/m68k/atari/atari_ksyms.c linux-2.1.79/arch/m68k/atari/atari_ksyms.c
--- linux-2.1.79.orig/arch/m68k/atari/atari_ksyms.c	Fri Dec 19 18:06:22 1997
+++ linux-2.1.79/arch/m68k/atari/atari_ksyms.c	Thu Jan 15 00:09:48 1998
@@ -2,12 +2,12 @@
 #include <linux/module.h>
 #include <asm/ptrace.h>
 #include <asm/traps.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atarikb.h>
-#include <asm/atari_joystick.h>
-#include <asm/atari_stdma.h>
-#include <asm/atari_stram.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/keyboard.h>
+#include <asm/atari/joystick.h>
+#include <asm/atari/stdma.h>
+#include <asm/atari/stram.h>
 
 extern void atari_microwire_cmd( int cmd );
 extern int atari_MFP_init_done;
diff -urNX exclude linux-2.1.79.orig/arch/m68k/atari/atasound.c linux-2.1.79/arch/m68k/atari/atasound.c
--- linux-2.1.79.orig/arch/m68k/atari/atasound.c	Fri Jan  9 18:09:47 1998
+++ linux-2.1.79/arch/m68k/atari/atasound.c	Thu Jan 15 00:10:08 1998
@@ -20,11 +20,11 @@
 #include <linux/errno.h>
 #include <linux/mm.h>
 
-#include <asm/atarihw.h>
+#include <asm/atari/hardware.h>
 #include <asm/system.h>
 #include <asm/irq.h>
 #include <asm/pgtable.h>
-#include <asm/atariints.h>
+#include <asm/atari/ints.h>
 
 
 /*
diff -urNX exclude linux-2.1.79.orig/arch/m68k/atari/config.c linux-2.1.79/arch/m68k/atari/config.c
--- linux-2.1.79.orig/arch/m68k/atari/config.c	Sat Jan 10 14:44:35 1998
+++ linux-2.1.79/arch/m68k/atari/config.c	Thu Jan 15 00:10:38 1998
@@ -33,9 +33,9 @@
 
 #include <asm/bootinfo.h>
 #include <asm/setup.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atari_stram.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/stram.h>
 #include <asm/system.h>
 #include <asm/machdep.h>
 
diff -urNX exclude linux-2.1.79.orig/arch/m68k/atari/debug.c linux-2.1.79/arch/m68k/atari/debug.c
--- linux-2.1.79.orig/arch/m68k/atari/debug.c	Fri Jan  9 18:09:49 1998
+++ linux-2.1.79/arch/m68k/atari/debug.c	Thu Jan 15 00:10:54 1998
@@ -17,8 +17,8 @@
 #include <linux/init.h>
 #include <linux/delay.h>
 
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 
 extern char m68k_debug_device[];
 
diff -urNX exclude linux-2.1.79.orig/arch/m68k/atari/joystick.c linux-2.1.79/arch/m68k/atari/joystick.c
--- linux-2.1.79.orig/arch/m68k/atari/joystick.c	Sat Nov  8 01:24:21 1997
+++ linux-2.1.79/arch/m68k/atari/joystick.c	Thu Jan 15 00:11:13 1998
@@ -13,9 +13,9 @@
 #include <linux/poll.h>
 #include <linux/init.h>
 
-#include <asm/atarikb.h>
-#include <asm/atari_joystick.h>
-#include <asm/atari_mouse.h>
+#include <asm/atari/keyboard.h>
+#include <asm/atari/joystick.h>
+#include <asm/atari/mouse.h>
 #include <asm/uaccess.h>
 
 #define MAJOR_NR    JOYSTICK_MAJOR
diff -urNX exclude linux-2.1.79.orig/arch/m68k/atari/stdma.c linux-2.1.79/arch/m68k/atari/stdma.c
--- linux-2.1.79.orig/arch/m68k/atari/stdma.c	Fri Jan  9 18:09:49 1998
+++ linux-2.1.79/arch/m68k/atari/stdma.c	Thu Jan 15 00:11:30 1998
@@ -33,9 +33,9 @@
 #include <linux/sched.h>
 #include <linux/init.h>
 
-#include <asm/atari_stdma.h>
-#include <asm/atariints.h>
-#include <asm/atarihw.h>
+#include <asm/atari/stdma.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/hardware.h>
 #include <asm/io.h>
 #include <asm/irq.h>
 
diff -urNX exclude linux-2.1.79.orig/arch/m68k/atari/stram.c linux-2.1.79/arch/m68k/atari/stram.c
--- linux-2.1.79.orig/arch/m68k/atari/stram.c	Sat Jan 10 00:56:08 1998
+++ linux-2.1.79/arch/m68k/atari/stram.c	Thu Jan 15 00:11:49 1998
@@ -23,8 +23,8 @@
 #include <asm/machdep.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
-#include <asm/atarihw.h>
-#include <asm/atari_stram.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/stram.h>
 
 
 #ifdef CONFIG_STRAM_SWAP
diff -urNX exclude linux-2.1.79.orig/arch/m68k/kernel/bios32.c linux-2.1.79/arch/m68k/kernel/bios32.c
--- linux-2.1.79.orig/arch/m68k/kernel/bios32.c	Fri Jan  9 18:09:53 1998
+++ linux-2.1.79/arch/m68k/kernel/bios32.c	Thu Jan 15 00:13:24 1998
@@ -38,8 +38,8 @@
 #include <linux/malloc.h>
 #include <linux/mm.h>
 
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 #include <asm/byteorder.h>
 #include <asm/io.h>
 #include <asm/uaccess.h>
diff -urNX exclude linux-2.1.79.orig/arch/m68k/kernel/kgdb.c linux-2.1.79/arch/m68k/kernel/kgdb.c
--- linux-2.1.79.orig/arch/m68k/kernel/kgdb.c	Fri Jan  9 18:09:55 1998
+++ linux-2.1.79/arch/m68k/kernel/kgdb.c	Thu Jan 15 00:18:25 1998
@@ -182,12 +182,12 @@
 #include <asm/machdep.h>
 #include <asm/kgdb.h>
 #ifdef CONFIG_ATARI
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 #endif
 #ifdef CONFIG_AMIGA
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #endif
 
 
diff -urNX exclude linux-2.1.79.orig/arch/m68k/kernel/m68k_defs.c linux-2.1.79/arch/m68k/kernel/m68k_defs.c
--- linux-2.1.79.orig/arch/m68k/kernel/m68k_defs.c	Mon Jan 12 20:15:46 1998
+++ linux-2.1.79/arch/m68k/kernel/m68k_defs.c	Thu Jan 15 08:07:42 1998
@@ -14,9 +14,10 @@
 #define DEFINE(sym, val) \
 	asm volatile("\n#define " #sym " %0" : : "i" (val))
 
-void main(void)
+int main(void)
 {
 	DEFINE(TS_TSS, offsetof(struct task_struct, tss));
 	DEFINE(TS_ESP0, offsetof(struct task_struct, tss.esp0));
 	DEFINE(TS_FPU, offsetof(struct task_struct, tss.fp));
+	return 0;
 }
diff -urNX exclude linux-2.1.79.orig/arch/m68k/kernel/setup.c linux-2.1.79/arch/m68k/kernel/setup.c
--- linux-2.1.79.orig/arch/m68k/kernel/setup.c	Fri Jan  9 18:09:56 1998
+++ linux-2.1.79/arch/m68k/kernel/setup.c	Thu Jan 15 00:19:57 1998
@@ -25,10 +25,10 @@
 #include <asm/irq.h>
 #include <asm/machdep.h>
 #ifdef CONFIG_AMIGA
-#include <asm/amigahw.h>
+#include <asm/amiga/hardware.h>
 #endif
 #ifdef CONFIG_ATARI
-#include <asm/atarihw.h>
+#include <asm/atari/hardware.h>
 #endif
 
 #ifdef CONFIG_BLK_DEV_INITRD
diff -urNX exclude linux-2.1.79.orig/arch/m68k/mm/fault.c linux-2.1.79/arch/m68k/mm/fault.c
--- linux-2.1.79.orig/arch/m68k/mm/fault.c	Fri Jul 18 18:12:04 1997
+++ linux-2.1.79/arch/m68k/mm/fault.c	Wed Jan 14 20:45:15 1998
@@ -110,8 +110,6 @@
 	/* Are we prepared to handle this kernel fault?  */
 	if ((fixup = search_exception_table(regs->pc)) != 0) {
 		struct pt_regs *tregs;
-		printk(KERN_DEBUG "%s: Exception at [<%lx>] (%lx)\n",
-		       tsk->comm, regs->pc, fixup);
 		/* Create a new four word stack frame, discarding the old
 		   one.  */
 		regs->stkadj = frame_extra_sizes[regs->format];
diff -urNX exclude linux-2.1.79.orig/arch/m68k/mm/init.c linux-2.1.79/arch/m68k/mm/init.c
--- linux-2.1.79.orig/arch/m68k/mm/init.c	Wed Dec 17 21:26:29 1997
+++ linux-2.1.79/arch/m68k/mm/init.c	Thu Jan 15 00:25:31 1998
@@ -24,7 +24,7 @@
 #include <asm/system.h>
 #include <asm/machdep.h>
 #ifdef CONFIG_ATARI
-#include <asm/atari_stram.h>
+#include <asm/atari/stram.h>
 #endif
 
 extern void die_if_kernel(char *,struct pt_regs *,long);
@@ -66,6 +66,7 @@
 {
     unsigned long i;
     int free = 0, total = 0, reserved = 0, nonshared = 0, shared = 0;
+    int cached = 0;
 
     printk("\nMem-info:\n");
     show_free_areas();
@@ -75,6 +76,8 @@
 	total++;
 	if (PageReserved(mem_map+i))
 	    reserved++;
+	if (PageSwapCache(mem_map+i))
+	    cached++;
 	else if (!atomic_read(&mem_map[i].count))
 	    free++;
 	else if (atomic_read(&mem_map[i].count) == 1)
@@ -87,6 +90,7 @@
     printk("%d reserved pages\n",reserved);
     printk("%d pages nonshared\n",nonshared);
     printk("%d pages shared\n",shared);
+    printk("%d pages swap cached\n",cached);
     show_buffers();
 #ifdef CONFIG_NET
     show_net_buffers();
diff -urNX exclude linux-2.1.79.orig/arch/m68k/mm/memory.c linux-2.1.79/arch/m68k/mm/memory.c
--- linux-2.1.79.orig/arch/m68k/mm/memory.c	Wed Dec 17 19:49:12 1997
+++ linux-2.1.79/arch/m68k/mm/memory.c	Thu Jan 15 00:39:43 1998
@@ -16,7 +16,9 @@
 #include <asm/pgtable.h>
 #include <asm/system.h>
 #include <asm/traps.h>
-#include <asm/amigahw.h>
+#ifdef CONFIG_AMIGA
+#include <asm/amiga/hardware.h>
+#endif
 
 /* Strings for `extern inline' functions in <asm/pgtable.h>.  If put
    directly into these functions, they are output for every file that
@@ -451,12 +453,14 @@
 	 *
 	 */
 
+#ifdef CONFIG_AMIGA
 	/*
 	 * if on an amiga and address is in first 16M, move it 
-	 * to the ZTWO_ADDR range
+	 * to the ZTWO_VADDR range
 	 */
 	if (MACH_IS_AMIGA && paddr < 16*1024*1024)
 		return ZTWO_VADDR(paddr);
+#endif
 	return paddr;
 }
 
diff -urNX exclude linux-2.1.79.orig/arch/m68k/mvme16x/config.c linux-2.1.79/arch/m68k/mvme16x/config.c
--- linux-2.1.79.orig/arch/m68k/mvme16x/config.c	Fri Jan  9 18:09:57 1998
+++ linux-2.1.79/arch/m68k/mvme16x/config.c	Thu Jan 15 00:41:08 1998
@@ -32,7 +32,7 @@
 #include <asm/irq.h>
 #include <asm/traps.h>
 #include <asm/machdep.h>
-#include <asm/mvme16xhw.h>
+#include <asm/mvme16x/hardware.h>
 
 typedef struct {
 	unsigned char
diff -urNX exclude linux-2.1.79.orig/drivers/block/acsi.c linux-2.1.79/drivers/block/acsi.c
--- linux-2.1.79.orig/drivers/block/acsi.c	Fri Jan  9 18:10:28 1998
+++ linux-2.1.79/drivers/block/acsi.c	Thu Jan 15 00:46:25 1998
@@ -69,11 +69,11 @@
 #include <asm/pgtable.h>
 #include <asm/system.h>
 #include <asm/uaccess.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atari_acsi.h>
-#include <asm/atari_stdma.h>
-#include <asm/atari_stram.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/acsi.h>
+#include <asm/atari/stdma.h>
+#include <asm/atari/stram.h>
 
 
 #define DEBUG
diff -urNX exclude linux-2.1.79.orig/drivers/block/acsi_slm.c linux-2.1.79/drivers/block/acsi_slm.c
--- linux-2.1.79.orig/drivers/block/acsi_slm.c	Fri Jan  9 18:10:29 1998
+++ linux-2.1.79/drivers/block/acsi_slm.c	Thu Jan 15 00:48:42 1998
@@ -69,12 +69,12 @@
 #include <asm/pgtable.h>
 #include <asm/system.h>
 #include <asm/uaccess.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atari_acsi.h>
-#include <asm/atari_stdma.h>
-#include <asm/atari_stram.h>
-#include <asm/atari_SLM.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/acsi.h>
+#include <asm/atari/stdma.h>
+#include <asm/atari/stram.h>
+#include <asm/atari/SLM.h>
 
 
 #undef	DEBUG
diff -urNX exclude linux-2.1.79.orig/drivers/block/amiflop.c linux-2.1.79/drivers/block/amiflop.c
--- linux-2.1.79.orig/drivers/block/amiflop.c	Thu Sep 18 17:46:13 1997
+++ linux-2.1.79/drivers/block/amiflop.c	Thu Jan 15 00:49:47 1998
@@ -66,10 +66,10 @@
 
 #include <asm/setup.h>
 #include <asm/uaccess.h>
-#include <asm/amifdreg.h>
-#include <asm/amifd.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/fdreg.h>
+#include <asm/amiga/fd.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #include <asm/irq.h>
 
 #define MAJOR_NR FLOPPY_MAJOR
diff -urNX exclude linux-2.1.79.orig/drivers/block/ataflop.c linux-2.1.79/drivers/block/ataflop.c
--- linux-2.1.79.orig/drivers/block/ataflop.c	Fri Jan  9 19:09:37 1998
+++ linux-2.1.79/drivers/block/ataflop.c	Thu Jan 15 00:50:17 1998
@@ -84,12 +84,12 @@
 #include <asm/pgtable.h>
 #include <asm/uaccess.h>
 
-#include <asm/atafd.h>
-#include <asm/atafdreg.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atari_stdma.h>
-#include <asm/atari_stram.h>
+#include <asm/atari/fd.h>
+#include <asm/atari/fdreg.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/stdma.h>
+#include <asm/atari/stram.h>
 
 #define MAJOR_NR FLOPPY_MAJOR
 #include <linux/blk.h>
diff -urNX exclude linux-2.1.79.orig/drivers/block/ide.c linux-2.1.79/drivers/block/ide.c
--- linux-2.1.79.orig/drivers/block/ide.c	Wed Jan 14 21:38:33 1998
+++ linux-2.1.79/drivers/block/ide.c	Thu Jan 15 09:56:33 1998
@@ -202,8 +202,8 @@
 
 /* ------------------------- Amiga Gayle IDE Driver ------------------------ */
 
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 
 
     /*
@@ -359,8 +359,8 @@
 
 /* ------------------------ Atari Falcon IDE Driver ------------------------ */
 
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 
 
     /*
@@ -430,8 +430,8 @@
  */
 
 #include <linux/zorro.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 
 
     /*
diff -urNX exclude linux-2.1.79.orig/drivers/block/z2ram.c linux-2.1.79/drivers/block/z2ram.c
--- linux-2.1.79.orig/drivers/block/z2ram.c	Tue May 20 17:46:50 1997
+++ linux-2.1.79/drivers/block/z2ram.c	Thu Jan 15 00:52:38 1998
@@ -36,7 +36,7 @@
 
 #include <asm/setup.h>
 #include <asm/bitops.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/hardware.h>
 #include <linux/zorro.h>
 
 #define TRUE                  (1)
diff -urNX exclude linux-2.1.79.orig/drivers/char/Makefile linux-2.1.79/drivers/char/Makefile
--- linux-2.1.79.orig/drivers/char/Makefile	Wed Jan 14 21:38:44 1998
+++ linux-2.1.79/drivers/char/Makefile	Wed Jan 14 22:17:44 1998
@@ -38,13 +38,13 @@
   endif
 endif
 
+endif
+
 ifdef CONFIG_FB
 LX_OBJS += fbmem.o
 endif
 
-ifdef CONFIG_MAGIC_SYSRQ
-L_OBJS += sysrq.o
-endif
+ifeq ($(ARCH),m68k)
 
 ifeq ($(CONFIG_AMIGA_GSP),y)
 M = y
@@ -158,7 +158,7 @@
   endif
 endif
 
-else
+else # !m68k
 
 ifeq ($(CONFIG_SERIAL),y)
   ifndef CONFIG_SUN_SERIAL
@@ -179,6 +179,10 @@
 
 ifneq ($(ARCH),m68k)
 L_OBJS += pc_keyb.o
+endif
+
+ifdef CONFIG_MAGIC_SYSRQ
+L_OBJS += sysrq.o
 endif
 
 ifdef CONFIG_AMIGA
diff -urNX exclude linux-2.1.79.orig/drivers/char/amiga_ser.c linux-2.1.79/drivers/char/amiga_ser.c
--- linux-2.1.79.orig/drivers/char/amiga_ser.c	Wed Dec 17 19:50:15 1997
+++ linux-2.1.79/drivers/char/amiga_ser.c	Thu Jan 15 00:54:40 1998
@@ -37,8 +37,8 @@
 #include <linux/linkage.h>
 
 #include <asm/setup.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #include <asm/traps.h>
 #include <asm/irq.h>
 #include <asm/atomic.h>
diff -urNX exclude linux-2.1.79.orig/drivers/char/amigamouse.c linux-2.1.79/drivers/char/amigamouse.c
--- linux-2.1.79.orig/drivers/char/amigamouse.c	Mon Nov 17 18:02:24 1997
+++ linux-2.1.79/drivers/char/amigamouse.c	Thu Jan 15 00:55:01 1998
@@ -49,9 +49,9 @@
 #include <asm/system.h>
 #include <asm/uaccess.h>
 #include <asm/irq.h>
-#include <asm/amigamouse.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/mouse.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 
 #define MSE_INT_ON()	mouseint_allowed = 1
 #define MSE_INT_OFF()	mouseint_allowed = 0
diff -urNX exclude linux-2.1.79.orig/drivers/char/amikeyb.c linux-2.1.79/drivers/char/amikeyb.c
--- linux-2.1.79.orig/drivers/char/amikeyb.c	Fri Nov  7 20:10:04 1997
+++ linux-2.1.79/drivers/char/amikeyb.c	Thu Jan 15 00:55:16 1998
@@ -25,8 +25,8 @@
 #include <linux/init.h>
 #include <linux/kbd_ll.h>
 
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 #include <asm/irq.h>
 
 #define AMIKEY_CAPS	(0x62)
diff -urNX exclude linux-2.1.79.orig/drivers/char/atari_MFPser.c linux-2.1.79/drivers/char/atari_MFPser.c
--- linux-2.1.79.orig/drivers/char/atari_MFPser.c	Fri Jan  9 18:11:09 1998
+++ linux-2.1.79/drivers/char/atari_MFPser.c	Thu Jan 15 00:55:54 1998
@@ -54,8 +54,8 @@
 #include <linux/serial.h>
 
 #include <asm/setup.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 #include <asm/irq.h>
 
 #include "atari_MFPser.h"
diff -urNX exclude linux-2.1.79.orig/drivers/char/atari_MIDI.c linux-2.1.79/drivers/char/atari_MIDI.c
--- linux-2.1.79.orig/drivers/char/atari_MIDI.c	Wed Dec 17 19:50:18 1997
+++ linux-2.1.79/drivers/char/atari_MIDI.c	Thu Jan 15 00:56:26 1998
@@ -24,9 +24,9 @@
 #include <linux/init.h>
 
 #include <asm/traps.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atarikb.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/keyboard.h>
 
 #include "atari_MIDI.h"
 
diff -urNX exclude linux-2.1.79.orig/drivers/char/atari_SCC.c linux-2.1.79/drivers/char/atari_SCC.c
--- linux-2.1.79.orig/drivers/char/atari_SCC.c	Sun Jan 11 09:01:38 1998
+++ linux-2.1.79/drivers/char/atari_SCC.c	Thu Jan 15 00:57:04 1998
@@ -52,14 +52,14 @@
 #include <asm/uaccess.h>
 #include <asm/setup.h>
 #ifdef CONFIG_MVME162_SCC
-#include <asm/mvme16xhw.h>
+#include <asm/mvme16x/hardware.h>
 #endif
 #ifdef CONFIG_ATARI
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 #endif
 #include <asm/irq.h>
-#include <asm/atari_SCCserial.h>
+#include <asm/atari/SCCserial.h>
 
 #include "atari_SCC.h"
 
diff -urNX exclude linux-2.1.79.orig/drivers/char/atari_SCC.h linux-2.1.79/drivers/char/atari_SCC.h
--- linux-2.1.79.orig/drivers/char/atari_SCC.h	Sun Jan 11 09:01:32 1998
+++ linux-2.1.79/drivers/char/atari_SCC.h	Thu Jan 15 00:58:36 1998
@@ -15,10 +15,10 @@
 
 #include <linux/delay.h>
 #ifdef CONFIG_MVME162_SCC
-#include <asm/mvme16xhw.h>
+#include <asm/mvme16x/hardware.h>
 #endif
 #ifdef CONFIG_ATARI
-#include <asm/atarihw.h>
+#include <asm/atari/hardware.h>
 #endif
 
 #if !defined(CONFIG_ATARI)
diff -urNX exclude linux-2.1.79.orig/drivers/char/atarimouse.c linux-2.1.79/drivers/char/atarimouse.c
--- linux-2.1.79.orig/drivers/char/atarimouse.c	Fri Nov  7 19:13:40 1997
+++ linux-2.1.79/drivers/char/atarimouse.c	Thu Jan 15 01:00:01 1998
@@ -23,8 +23,8 @@
 #include <linux/init.h>
 
 #include <asm/setup.h>
-#include <asm/atarikb.h>
-#include <asm/atari_mouse.h>
+#include <asm/atari/keyboard.h>
+#include <asm/atari/mouse.h>
 #include <asm/uaccess.h>
 
 static struct mouse_status mouse;
diff -urNX exclude linux-2.1.79.orig/drivers/char/dn_keyb.c linux-2.1.79/drivers/char/dn_keyb.c
--- linux-2.1.79.orig/drivers/char/dn_keyb.c	Fri Nov  7 19:13:42 1997
+++ linux-2.1.79/drivers/char/dn_keyb.c	Thu Jan 15 01:01:58 1998
@@ -14,7 +14,7 @@
 
 #include <asm/setup.h>
 #include <asm/irq.h>
-#include <asm/apollohw.h>
+#include <asm/apollo/hardware.h>
 #include <asm/uaccess.h>
 
 
diff -urNX exclude linux-2.1.79.orig/drivers/char/dsp56k.c linux-2.1.79/drivers/char/dsp56k.c
--- linux-2.1.79.orig/drivers/char/dsp56k.c	Mon Nov 17 18:02:32 1997
+++ linux-2.1.79/drivers/char/dsp56k.c	Thu Jan 15 09:56:47 1998
@@ -37,7 +37,7 @@
 #include <linux/init.h>
 
 #include <asm/segment.h>
-#include <asm/atarihw.h>
+#include <asm/atari/hardware.h>
 #include <asm/traps.h>
 #include <asm/uaccess.h>	/* For put_user and get_user */
 
diff -urNX exclude linux-2.1.79.orig/drivers/char/lp_intern.c linux-2.1.79/drivers/char/lp_intern.c
--- linux-2.1.79.orig/drivers/char/lp_intern.c	Fri Jan  9 18:11:20 1998
+++ linux-2.1.79/drivers/char/lp_intern.c	Thu Jan 15 01:04:38 1998
@@ -23,14 +23,14 @@
 #include <asm/irq.h>
 #include <asm/setup.h>
 #ifdef CONFIG_AMIGA
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #endif
 #ifdef CONFIG_ATARI
 #include <linux/delay.h>
 #include <linux/sched.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 #endif
 #include <linux/lp_intern.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/char/lp_mfc.c linux-2.1.79/drivers/char/lp_mfc.c
--- linux-2.1.79.orig/drivers/char/lp_mfc.c	Fri Jan  9 18:11:20 1998
+++ linux-2.1.79/drivers/char/lp_mfc.c	Thu Jan 15 09:57:11 1998
@@ -17,10 +17,10 @@
 #include <linux/sched.h>
 #include <linux/lp_m68k.h>
 #include <linux/lp_mfc.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/hardware.h>
 #include <linux/zorro.h>
 #include <asm/irq.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/ints.h>
 #include "multiface.h"
 #include "mc6821.h"
 
diff -urNX exclude linux-2.1.79.orig/drivers/char/nvram.c linux-2.1.79/drivers/char/nvram.c
--- linux-2.1.79.orig/drivers/char/nvram.c	Thu Dec 18 08:49:20 1997
+++ linux-2.1.79/drivers/char/nvram.c	Thu Jan 15 01:07:53 1998
@@ -69,8 +69,8 @@
 #if MACH == ATARI
 
 /* Special parameters for RTC in Atari machines */
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 #define RTC_PORT(x)			(TT_RTC_BAS + 2*(x))
 #define CHECK_DRIVER_INIT() (MACH_IS_ATARI && ATARIHW_PRESENT(TT_CLK))
 
diff -urNX exclude linux-2.1.79.orig/drivers/char/plip_ioext.c linux-2.1.79/drivers/char/plip_ioext.c
--- linux-2.1.79.orig/drivers/char/plip_ioext.c	Fri May 30 18:37:10 1997
+++ linux-2.1.79/drivers/char/plip_ioext.c	Thu Jan 15 01:08:41 1998
@@ -23,8 +23,8 @@
 
 #include <asm/setup.h>
 #include <asm/irq.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #include <linux/zorro.h>
 
 #include <linux/config.h>
diff -urNX exclude linux-2.1.79.orig/drivers/char/ser_ioext.c linux-2.1.79/drivers/char/ser_ioext.c
--- linux-2.1.79.orig/drivers/char/ser_ioext.c	Wed Dec 17 19:51:33 1997
+++ linux-2.1.79/drivers/char/ser_ioext.c	Thu Jan 15 01:09:48 1998
@@ -100,8 +100,8 @@
 
 #include <asm/setup.h>
 #include <asm/irq.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #include <linux/zorro.h>
 
 #include "ioext.h"
diff -urNX exclude linux-2.1.79.orig/drivers/char/ser_mfc.c linux-2.1.79/drivers/char/ser_mfc.c
--- linux-2.1.79.orig/drivers/char/ser_mfc.c	Wed Dec 17 19:51:35 1997
+++ linux-2.1.79/drivers/char/ser_mfc.c	Thu Jan 15 01:10:39 1998
@@ -62,8 +62,8 @@
 #include <linux/serial.h>
 
 #include <asm/setup.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 #include <linux/zorro.h>
 #include <asm/irq.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/char/ser_whippet.c linux-2.1.79/drivers/char/ser_whippet.c
--- linux-2.1.79.orig/drivers/char/ser_whippet.c	Thu Sep 18 17:46:41 1997
+++ linux-2.1.79/drivers/char/ser_whippet.c	Thu Jan 15 01:11:00 1998
@@ -25,8 +25,8 @@
 #include <asm/io.h>
 #include <asm/setup.h>
 #include <asm/irq.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 
 #include "ser_whippet.h"
 
diff -urNX exclude linux-2.1.79.orig/drivers/char/serial167.c linux-2.1.79/drivers/char/serial167.c
--- linux-2.1.79.orig/drivers/char/serial167.c	Fri Jan  9 18:11:26 1998
+++ linux-2.1.79/drivers/char/serial167.c	Thu Jan 15 01:11:27 1998
@@ -56,7 +56,7 @@
 #include <asm/io.h>
 #include <asm/segment.h>
 #include <asm/bitops.h>
-#include <asm/mvme16xhw.h>
+#include <asm/mvme16x/hardware.h>
 
 #include <linux/types.h>
 #include <linux/kernel.h>
diff -urNX exclude linux-2.1.79.orig/drivers/char/tiga.c linux-2.1.79/drivers/char/tiga.c
--- linux-2.1.79.orig/drivers/char/tiga.c	Mon Jul 28 17:27:01 1997
+++ linux-2.1.79/drivers/char/tiga.c	Thu Jan 15 09:57:26 1998
@@ -16,7 +16,7 @@
 #include <asm/page.h>
 #include <asm/pgtable.h>
 #include <linux/zorro.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/hardware.h>
 
 #define TIGA_MAJOR	63
 #define MAX_TIGA	2	/* Maximum number of Tiga boards */
diff -urNX exclude linux-2.1.79.orig/drivers/net/a2065.c linux-2.1.79/drivers/net/a2065.c
--- linux-2.1.79.orig/drivers/net/a2065.c	Wed Dec 17 19:52:06 1997
+++ linux-2.1.79/drivers/net/a2065.c	Thu Jan 15 01:16:12 1998
@@ -54,8 +54,8 @@
 #include <asm/irq.h>
 #include <linux/errno.h>
 
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 #include <linux/zorro.h>
 
 #include <linux/netdevice.h>
diff -urNX exclude linux-2.1.79.orig/drivers/net/ariadne.c linux-2.1.79/drivers/net/ariadne.c
--- linux-2.1.79.orig/drivers/net/ariadne.c	Mon Jul 28 17:27:21 1997
+++ linux-2.1.79/drivers/net/ariadne.c	Thu Jan 15 01:16:53 1998
@@ -52,8 +52,8 @@
 #include <linux/init.h>
 
 #include <asm/bitops.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 #include <linux/zorro.h>
 #include <asm/io.h>
 #include <asm/irq.h>
diff -urNX exclude linux-2.1.79.orig/drivers/net/atari_bionet.c linux-2.1.79/drivers/net/atari_bionet.c
--- linux-2.1.79.orig/drivers/net/atari_bionet.c	Tue May 20 17:48:11 1997
+++ linux-2.1.79/drivers/net/atari_bionet.c	Thu Jan 15 01:17:18 1998
@@ -107,10 +107,10 @@
 #include <asm/bitops.h>
 #include <asm/io.h>
 #include <asm/dma.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atari_acsi.h>
-#include <asm/atari_stdma.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/acsi.h>
+#include <asm/atari/stdma.h>
 
 
 extern struct device *init_etherdev(struct device *dev, int sizeof_private);
diff -urNX exclude linux-2.1.79.orig/drivers/net/atari_pamsnet.c linux-2.1.79/drivers/net/atari_pamsnet.c
--- linux-2.1.79.orig/drivers/net/atari_pamsnet.c	Tue May 20 17:48:11 1997
+++ linux-2.1.79/drivers/net/atari_pamsnet.c	Thu Jan 15 01:17:55 1998
@@ -95,10 +95,10 @@
 #include <asm/io.h>
 #include <asm/dma.h>
 #include <linux/errno.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atari_stdma.h>
-#include <asm/atari_acsi.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/stdma.h>
+#include <asm/atari/acsi.h>
 
 #include <linux/delay.h>
 #include <linux/timer.h>
diff -urNX exclude linux-2.1.79.orig/drivers/net/atarilance.c linux-2.1.79/drivers/net/atarilance.c
--- linux-2.1.79.orig/drivers/net/atarilance.c	Fri Jan  9 18:11:43 1998
+++ linux-2.1.79/drivers/net/atarilance.c	Thu Jan 15 01:18:14 1998
@@ -59,8 +59,8 @@
 
 #include <asm/setup.h>
 #include <asm/irq.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 #include <asm/bitops.h>
 #include <asm/io.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/net/hydra.c linux-2.1.79/drivers/net/hydra.c
--- linux-2.1.79.orig/drivers/net/hydra.c	Fri Nov  7 19:14:13 1997
+++ linux-2.1.79/drivers/net/hydra.c	Thu Jan 15 09:57:41 1998
@@ -33,8 +33,8 @@
 #include <asm/io.h>
 #include <asm/irq.h>
 
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 #include <linux/zorro.h>
 
 #include "hydra.h"
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/53c7xx.c linux-2.1.79/drivers/scsi/53c7xx.c
--- linux-2.1.79.orig/drivers/scsi/53c7xx.c	Fri Jan  9 18:12:19 1998
+++ linux-2.1.79/drivers/scsi/53c7xx.c	Thu Jan 15 01:24:27 1998
@@ -259,8 +259,8 @@
 
 #ifdef CONFIG_AMIGA
 #include <asm/pgtable.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #include <asm/irq.h>
 
 #define BIG_ENDIAN
@@ -269,7 +269,7 @@
 
 #ifdef CONFIG_MVME16x
 #include <asm/pgtable.h>
-#include <asm/mvme16xhw.h>
+#include <asm/mvme16x/hardware.h>
 
 #define BIG_ENDIAN
 #define NO_IO_SPACE
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/Makefile linux-2.1.79/drivers/scsi/Makefile
--- linux-2.1.79.orig/drivers/scsi/Makefile	Wed Jan 14 21:40:09 1998
+++ linux-2.1.79/drivers/scsi/Makefile	Wed Jan 14 22:20:39 1998
@@ -542,8 +542,7 @@
 	mv scriptu.h 53c7xx_u.h
 	rm fake.c
 
-53c7xx.o : 53c7xx_d.h 53c7xx.c
-	$(CC) $(CFLAGS) -c 53c7xx.c
+53c7xx.o : 53c7xx_d.h
 
 scsi_mod.o: $(MIX_OBJS) hosts.o scsi.o scsi_ioctl.o constants.o \
 		scsicam.o scsi_proc.o scsi_error.o scsi_obsolete.o scsi_queue.o
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/a2091.c linux-2.1.79/drivers/scsi/a2091.c
--- linux-2.1.79.orig/drivers/scsi/a2091.c	Mon Jul 28 17:28:41 1997
+++ linux-2.1.79/drivers/scsi/a2091.c	Thu Jan 15 01:25:03 1998
@@ -8,8 +8,8 @@
 #include <asm/setup.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 #include <linux/zorro.h>
 #include <asm/irq.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/a3000.c linux-2.1.79/drivers/scsi/a3000.c
--- linux-2.1.79.orig/drivers/scsi/a3000.c	Tue May 20 17:49:44 1997
+++ linux-2.1.79/drivers/scsi/a3000.c	Thu Jan 15 01:25:25 1998
@@ -8,8 +8,8 @@
 #include <asm/setup.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 #include <asm/irq.h>
 
 #include "scsi.h"
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/amiga7xx.c linux-2.1.79/drivers/scsi/amiga7xx.c
--- linux-2.1.79.orig/drivers/scsi/amiga7xx.c	Wed Dec 17 19:54:32 1997
+++ linux-2.1.79/drivers/scsi/amiga7xx.c	Thu Jan 15 01:26:22 1998
@@ -17,8 +17,8 @@
 
 #include <asm/page.h>
 #include <asm/pgtable.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 #include <asm/irq.h>
 
 #include "scsi.h"
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/atari_scsi.c linux-2.1.79/drivers/scsi/atari_scsi.c
--- linux-2.1.79.orig/drivers/scsi/atari_scsi.c	Thu Dec 18 08:50:48 1997
+++ linux-2.1.79/drivers/scsi/atari_scsi.c	Thu Jan 15 09:58:02 1998
@@ -93,8 +93,8 @@
 #include <linux/nvram.h>
 
 #include <asm/setup.h>
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
 #include <asm/irq.h>
@@ -106,8 +106,8 @@
 #include "atari_scsi.h"
 #include "NCR5380.h"
 #include "constants.h"
-#include <asm/atari_stdma.h>
-#include <asm/atari_stram.h>
+#include <asm/atari/stdma.h>
+#include <asm/atari/stram.h>
 #include <asm/io.h>
 
 #include <linux/stat.h>
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/blz1230.c linux-2.1.79/drivers/scsi/blz1230.c
--- linux-2.1.79.orig/drivers/scsi/blz1230.c	Mon Nov 17 18:03:23 1997
+++ linux-2.1.79/drivers/scsi/blz1230.c	Thu Jan 15 01:27:24 1998
@@ -30,8 +30,8 @@
 
 #include <linux/zorro.h>
 #include <asm/irq.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 
 #include <asm/pgtable.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/blz2060.c linux-2.1.79/drivers/scsi/blz2060.c
--- linux-2.1.79.orig/drivers/scsi/blz2060.c	Mon Nov 17 18:03:23 1997
+++ linux-2.1.79/drivers/scsi/blz2060.c	Thu Jan 15 01:27:47 1998
@@ -30,8 +30,8 @@
 
 #include <linux/zorro.h>
 #include <asm/irq.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 
 #include <asm/pgtable.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/cyberstorm.c linux-2.1.79/drivers/scsi/cyberstorm.c
--- linux-2.1.79.orig/drivers/scsi/cyberstorm.c	Mon Nov 17 18:03:24 1997
+++ linux-2.1.79/drivers/scsi/cyberstorm.c	Thu Jan 15 01:28:08 1998
@@ -33,8 +33,8 @@
 
 #include <linux/zorro.h>
 #include <asm/irq.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 
 #include <asm/pgtable.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/cyberstormII.c linux-2.1.79/drivers/scsi/cyberstormII.c
--- linux-2.1.79.orig/drivers/scsi/cyberstormII.c	Mon Nov 17 18:03:24 1997
+++ linux-2.1.79/drivers/scsi/cyberstormII.c	Thu Jan 15 01:28:30 1998
@@ -29,8 +29,8 @@
 
 #include <linux/zorro.h>
 #include <asm/irq.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 
 #include <asm/pgtable.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/fastlane.c linux-2.1.79/drivers/scsi/fastlane.c
--- linux-2.1.79.orig/drivers/scsi/fastlane.c	Wed Dec 17 19:54:34 1997
+++ linux-2.1.79/drivers/scsi/fastlane.c	Thu Jan 15 01:29:29 1998
@@ -38,8 +38,8 @@
 
 #include <linux/zorro.h>
 #include <asm/irq.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 
 #include <asm/pgtable.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/gvp11.c linux-2.1.79/drivers/scsi/gvp11.c
--- linux-2.1.79.orig/drivers/scsi/gvp11.c	Mon Oct 13 18:15:28 1997
+++ linux-2.1.79/drivers/scsi/gvp11.c	Thu Jan 15 01:30:00 1998
@@ -8,8 +8,8 @@
 #include <asm/setup.h>
 #include <asm/page.h>
 #include <asm/pgtable.h>
-#include <asm/amigaints.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/ints.h>
+#include <asm/amiga/hardware.h>
 #include <linux/zorro.h>
 #include <asm/irq.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/scsi/mvme16x.c linux-2.1.79/drivers/scsi/mvme16x.c
--- linux-2.1.79.orig/drivers/scsi/mvme16x.c	Fri Jan  9 18:12:45 1998
+++ linux-2.1.79/drivers/scsi/mvme16x.c	Thu Jan 15 01:31:10 1998
@@ -13,14 +13,13 @@
 
 #include <asm/page.h>
 #include <asm/pgtable.h>
-#include <asm/mvme16xhw.h>
+#include <asm/mvme16x/hardware.h>
 #include <asm/irq.h>
 
 #include "scsi.h"
 #include "hosts.h"
 #include "53c7xx.h"
 #include "mvme16x.h"
-#include "asm/mvme16xhw.h"
 
 #include<linux/stat.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/sound/dmasound.c linux-2.1.79/drivers/sound/dmasound.c
--- linux-2.1.79.orig/drivers/sound/dmasound.c	Fri Jan  9 18:13:39 1998
+++ linux-2.1.79/drivers/sound/dmasound.c	Thu Jan 15 01:33:16 1998
@@ -92,13 +92,13 @@
 #include <asm/uaccess.h>
 
 #ifdef CONFIG_ATARI
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atari_stram.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/stram.h>
 #endif /* CONFIG_ATARI */
 #ifdef CONFIG_AMIGA
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #endif /* CONFIG_AMIGA */
 
 #include "dmasound.h"
diff -urNX exclude linux-2.1.79.orig/drivers/video/amifb.c linux-2.1.79/drivers/video/amifb.c
--- linux-2.1.79.orig/drivers/video/amifb.c	Wed Jan 14 21:40:49 1998
+++ linux-2.1.79/drivers/video/amifb.c	Thu Jan 15 01:34:40 1998
@@ -56,8 +56,8 @@
 #include <asm/uaccess.h>
 #include <asm/system.h>
 #include <asm/irq.h>
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #include <asm/setup.h>
 
 #include "fbcon-afb.h"
diff -urNX exclude linux-2.1.79.orig/drivers/video/atafb.c linux-2.1.79/drivers/video/atafb.c
--- linux-2.1.79.orig/drivers/video/atafb.c	Wed Jan 14 21:40:51 1998
+++ linux-2.1.79/drivers/video/atafb.c	Thu Jan 15 08:52:03 1998
@@ -64,19 +64,31 @@
 #include <asm/pgtable.h>
 #include <asm/irq.h>
 
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
-#include <asm/atari_stram.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
+#include <asm/atari/stram.h>
 
 #include <linux/fb.h>
-#include <asm/atarikb.h>
+#include <asm/atari/keyboard.h>
 
+#ifdef CONFIG_FBCON_CFB8
 #include "fbcon-cfb8.h"
+#endif
+#ifdef CONFIG_FBCON_CFB16
 #include "fbcon-cfb16.h"
+#endif
+#ifdef CONFIG_FBCON_IPLAN2P2
 #include "fbcon-iplan2p2.h"
+#endif
+#ifdef CONFIG_FBCON_IPLAN2P4
 #include "fbcon-iplan2p4.h"
+#endif
+#ifdef CONFIG_FBCON_IPLAN2P8
 #include "fbcon-iplan2p8.h"
+#endif
+#ifdef CONFIG_FBCON_MFB
 #include "fbcon-mfb.h"
+#endif
 
 
 #define SWITCH_ACIA 0x01		/* modes for switch on OverScan */
@@ -105,11 +117,14 @@
 static struct atafb_par {
 	unsigned long screen_base;
 	int yres_virtual;
+#if defined ATAFB_TT || defined ATAFB_STE
 	union {
 		struct {
 			int mode;
 			int sync;
 		} tt, st;
+#endif
+#ifdef ATAFB_FALCON
 		struct falcon_hw {
 			/* Here are fields for storing a video mode, as direct
 			 * parameters for the hardware.
@@ -129,6 +144,7 @@
 			short ste_mode;
 			short bpp;
 		} falcon;
+#endif
 		/* Nothing needed for external mode */
 	} hw;
 } current_par;
@@ -138,6 +154,7 @@
  * hardware extensions (e.g. ScreenBlaster)  */
 static int DontCalcRes = 0; 
 
+#ifdef ATAFB_FALCON
 #define HHT hw.falcon.hht
 #define HBB hw.falcon.hbb
 #define HBE hw.falcon.hbe
@@ -158,6 +175,7 @@
 #define VMO_DOUBLE		0x01
 #define VMO_INTER		0x02
 #define VMO_PREMASK		0x0c
+#endif
 
 static struct fb_info fb_info;
 
@@ -2461,15 +2479,21 @@
 	switch (fix.type) {
 	    case FB_TYPE_INTERLEAVED_PLANES:
 		switch (var.bits_per_pixel) {
+#ifdef CONFIG_FBCON_IPLAN2P2
 		    case 2:
 			display->dispsw = &fbcon_iplan2p2;
 			break;
+#endif
+#ifdef CONFIG_FBCON_IPLAN2P4
 		    case 4:
 			display->dispsw = &fbcon_iplan2p4;
 			break;
+#endif
+#ifdef CONFIG_FBCON_IPLAN2P8
 		    case 8:
 			display->dispsw = &fbcon_iplan2p8;
 			break;
+#endif
 		    default:
 			display->dispsw = NULL;
 			break;
@@ -2477,15 +2501,21 @@
 		break;
 	    case FB_TYPE_PACKED_PIXELS:
 		switch (var.bits_per_pixel) {
+#ifdef CONFIG_FBCON_MFB
 		    case 1:
 			display->dispsw = &fbcon_mfb;
 			break;
+#endif
+#ifdef CONFIG_FBCON_CFB8
 		    case 8:
 			display->dispsw = &fbcon_cfb8;
 			break;
+#endif
+#ifdef CONFIG_FBCON_CFB16
 		    case 16:
 			display->dispsw = &fbcon_cfb16;
 			break;
+#endif
 		    default:
 			display->dispsw = NULL;
 			break;
diff -urNX exclude linux-2.1.79.orig/drivers/video/dnfb.c linux-2.1.79/drivers/video/dnfb.c
--- linux-2.1.79.orig/drivers/video/dnfb.c	Wed Jan 14 21:40:55 1998
+++ linux-2.1.79/drivers/video/dnfb.c	Thu Jan 15 01:40:13 1998
@@ -11,7 +11,7 @@
 #include <asm/segment.h>
 #include <asm/system.h>
 #include <asm/irq.h>
-#include <asm/apollohw.h>
+#include <asm/apollo/hardware.h>
 #include <linux/fb.h>
 #include <linux/module.h>
 
diff -urNX exclude linux-2.1.79.orig/drivers/video/fbcon.c linux-2.1.79/drivers/video/fbcon.c
--- linux-2.1.79.orig/drivers/video/fbcon.c	Wed Jan 14 22:29:11 1998
+++ linux-2.1.79/drivers/video/fbcon.c	Thu Jan 15 09:02:11 1998
@@ -74,14 +74,14 @@
 #include <asm/system.h>
 #include <asm/uaccess.h>
 #ifdef CONFIG_AMIGA
-#include <asm/amigahw.h>
-#include <asm/amigaints.h>
+#include <asm/amiga/hardware.h>
+#include <asm/amiga/ints.h>
 #endif /* CONFIG_AMIGA */
 #ifdef CONFIG_ATARI
-#include <asm/atariints.h>
+#include <asm/atari/ints.h>
 #endif
 #ifdef CONFIG_MAC
-#include <asm/macints.h>
+#include <asm/mac/ints.h>
 #endif
 #ifdef __mc68000__
 #include <asm/machdep.h>
diff -urNX exclude linux-2.1.79.orig/drivers/video/virgefb.c linux-2.1.79/drivers/video/virgefb.c
--- linux-2.1.79.orig/drivers/video/virgefb.c	Wed Jan 14 21:41:20 1998
+++ linux-2.1.79/drivers/video/virgefb.c	Thu Jan 15 01:42:20 1998
@@ -32,7 +32,7 @@
 #include <asm/system.h>
 #include <asm/irq.h>
 #include <asm/pgtable.h>
-#include <asm/amigahw.h>
+#include <asm/amiga/hardware.h>
 
 #include "s3blit.h"
 #include "fbcon-cfb8.h"
diff -urNX exclude linux-2.1.79.orig/fs/fat/inode.c linux-2.1.79/fs/fat/inode.c
--- linux-2.1.79.orig/fs/fat/inode.c	Wed Jan 14 21:41:36 1998
+++ linux-2.1.79/fs/fat/inode.c	Wed Jan 14 22:32:13 1998
@@ -243,7 +243,7 @@
 		else if (!strcmp(this_char,"showexec")) {
 			opts->showexec = 1;
 		}
-		else if (!strcmp(this_char,"dotsOK") && value) {
+		else if (!strcmp(this_char,"dotsOK")) {
 			if (!value || !strcmp(value,"yes")) opts->dotsOK = 1;
 			else if (!strcmp(value,"no")) opts->dotsOK = 0;
 			else ret = 0;
diff -urNX exclude linux-2.1.79.orig/fs/fat/mmap.c linux-2.1.79/fs/fat/mmap.c
--- linux-2.1.79.orig/fs/fat/mmap.c	Wed Jan 14 21:41:36 1998
+++ linux-2.1.79/fs/fat/mmap.c	Thu Jan 15 08:03:58 1998
@@ -118,8 +118,10 @@
 }
 
 
-int fat_readpage(struct inode * inode, struct page * page)
+int fat_readpage(struct dentry * dentry, struct page * page)
 {
+	struct inode *inode = dentry->d_inode;
+
 	if(MSDOS_SB(inode->i_sb)->cvf_format)
 	  if(MSDOS_SB(inode->i_sb)->cvf_format->cvf_readpage)
 	    return MSDOS_SB(inode->i_sb)->cvf_format->cvf_readpage(inode,page);
diff -urNX exclude linux-2.1.79.orig/fs/nls/nls_iso8859-1.c linux-2.1.79/fs/nls/nls_iso8859-1.c
--- linux-2.1.79.orig/fs/nls/nls_iso8859-1.c	Fri Nov  7 19:15:48 1997
+++ linux-2.1.79/fs/nls/nls_iso8859-1.c	Thu Jan 15 07:59:03 1998
@@ -135,6 +135,7 @@
 	page00, NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   
 };
 
+#if 0
 static unsigned char charset2upper[256] = {
 	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */
 	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
@@ -169,6 +170,7 @@
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf7, /* 0xf0-0xf7 */
 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
 };
+#endif
 
 
 static void inc_use_count(void)
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amifd.h linux-2.1.79/include/asm-m68k/amifd.h
--- linux-2.1.79.orig/include/asm-m68k/amifd.h	Wed Apr 24 18:17:12 1996
+++ linux-2.1.79/include/asm-m68k/amifd.h	Thu Jan  1 01:00:00 1970
@@ -1,57 +0,0 @@
-#ifndef _ASM_M68K_AMIFD_H
-#define _ASM_M68K_AMIFD_H
-
-/* Definitions for the Amiga floppy driver */
-
-#include <linux/fd.h>
-
-#define FD_MAX_UNITS    4
-
-struct fd_data_type {
-    char *name;			/* description of data type */
-    int sects;			/* sectors per track */
-#ifdef __STDC__
-    int (*read_fkt)(int, unsigned char *, unsigned long, int);
-    void (*write_fkt)(int, unsigned long, unsigned char *, int);
-#else
-    int (*read_fkt)();		/* read whole track */
-    void (*write_fkt)();		/* write whole track */
-#endif
-};
-
-#ifndef ASSEMBLER
-/*
-** Floppy type descriptions
-*/
-
-struct fd_drive_type {
-    unsigned long code;		/* code returned from drive */
-    char *name;			/* description of drive */
-    unsigned int tracks;	/* number of tracks */
-    unsigned int heads;		/* number of heads */
-    unsigned int read_size;	/* raw read size for one track */
-    unsigned int write_size;	/* raw write size for one track */
-    unsigned int sect_mult;	/* sectors and gap multiplier (HD = 2) */
-    unsigned int precomp1;	/* start track for precomp 1 */
-    unsigned int precomp2;	/* start track for precomp 2 */
-    unsigned int step_delay;	/* time (in ms) for delay after step */
-    unsigned int settle_time;	/* time to settle after dir change */
-    unsigned int side_time;	/* time needed to change sides */
-};
-
-struct amiga_floppy_struct {
-    struct fd_drive_type *type;	/* type of floppy for this unit */
-    struct fd_data_type *dtype;	/* type of floppy for this unit */
-    int track;			/* current track (-1 == unknown) */
-
-    int blocks;			/* total # blocks on disk */
-    int sects;			/* number of sectors per track */
-
-    int disk;			/* disk in drive (-1 == unknown) */
-    int motor;			/* true when motor is at speed */
-    int busy;			/* true when drive is active */
-    int status;			/* current error code for unit */
-};
-#endif
-
-#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amifdreg.h linux-2.1.79/include/asm-m68k/amifdreg.h
--- linux-2.1.79.orig/include/asm-m68k/amifdreg.h	Wed Apr 24 18:17:12 1996
+++ linux-2.1.79/include/asm-m68k/amifdreg.h	Thu Jan  1 01:00:00 1970
@@ -1,81 +0,0 @@
-#ifndef _LINUX_AMIFDREG_H
-#define _LINUX_AMIFDREG_H
-
-/*
-** CIAAPRA bits (read only)
-*/
-
-#define DSKRDY      (0x1<<5)        /* disk ready when low */
-#define DSKTRACK0   (0x1<<4)        /* head at track zero when low */
-#define DSKPROT     (0x1<<3)        /* disk protected when low */
-#define DSKCHANGE   (0x1<<2)        /* low when disk removed */
-
-/*
-** CIAAPRB bits (read/write)
-*/
-
-#define DSKMOTOR    (0x1<<7)        /* motor on when low */
-#define DSKSEL3     (0x1<<6)        /* select drive 3 when low */
-#define DSKSEL2     (0x1<<5)        /* select drive 2 when low */
-#define DSKSEL1     (0x1<<4)        /* select drive 1 when low */
-#define DSKSEL0     (0x1<<3)        /* select drive 0 when low */
-#define DSKSIDE     (0x1<<2)        /* side selection: 0 = upper, 1 = lower */
-#define DSKDIREC    (0x1<<1)        /* step direction: 0=in, 1=out (to trk 0) */
-#define DSKSTEP     (0x1)           /* pulse low to step head 1 track */
-
-/*
-** DSKBYTR bits (read only)
-*/
-
-#define DSKBYT      (1<<15)         /* register contains valid byte when set */
-#define DMAON       (1<<14)         /* disk DMA enabled */
-#define DISKWRITE   (1<<13)         /* disk write bit in DSKLEN enabled */
-#define WORDEQUAL   (1<<12)         /* DSKSYNC register match when true */
-/* bits 7-0 are data */
-
-/*
-** ADKCON/ADKCONR bits
-*/
-
-#ifndef SETCLR
-#define ADK_SETCLR      (1<<15)     /* control bit */
-#endif
-#define ADK_PRECOMP1    (1<<14)     /* precompensation selection */
-#define ADK_PRECOMP0    (1<<13)     /* 00=none, 01=140ns, 10=280ns, 11=500ns */
-#define ADK_MFMPREC     (1<<12)     /* 0=GCR precomp., 1=MFM precomp. */
-#define ADK_WORDSYNC    (1<<10)     /* enable DSKSYNC auto DMA */
-#define ADK_MSBSYNC     (1<<9)      /* when 1, enable sync on MSbit (for GCR) */
-#define ADK_FAST        (1<<8)      /* bit cell: 0=2us (GCR), 1=1us (MFM) */
- 
-/*
-** DSKLEN bits
-*/
-
-#define DSKLEN_DMAEN    (1<<15)
-#define DSKLEN_WRITE    (1<<14)
-
-/*
-** INTENA/INTREQ bits
-*/
-
-#define DSKINDEX    (0x1<<4)        /* DSKINDEX bit */
-
-/*
-** Misc
-*/
- 
-#define MFM_SYNC    0x4489          /* standard MFM sync value */
-
-/* Values for FD_COMMAND */
-#define FD_RECALIBRATE		0x07	/* move to track 0 */
-#define FD_SEEK			0x0F	/* seek track */
-#define FD_READ			0xE6	/* read with MT, MFM, SKip deleted */
-#define FD_WRITE		0xC5	/* write with MT, MFM */
-#define FD_SENSEI		0x08	/* Sense Interrupt Status */
-#define FD_SPECIFY		0x03	/* specify HUT etc */
-#define FD_FORMAT		0x4D	/* format one track */
-#define FD_VERSION		0x10	/* get version code */
-#define FD_CONFIGURE		0x13	/* configure FIFO operation */
-#define FD_PERPENDICULAR	0x12	/* perpendicular r/w mode */
-
-#endif /* _LINUX_AMIFDREG_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amiga/fd.h linux-2.1.79/include/asm-m68k/amiga/fd.h
--- linux-2.1.79.orig/include/asm-m68k/amiga/fd.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/amiga/fd.h	Wed Apr 24 18:17:12 1996
@@ -0,0 +1,57 @@
+#ifndef _ASM_M68K_AMIFD_H
+#define _ASM_M68K_AMIFD_H
+
+/* Definitions for the Amiga floppy driver */
+
+#include <linux/fd.h>
+
+#define FD_MAX_UNITS    4
+
+struct fd_data_type {
+    char *name;			/* description of data type */
+    int sects;			/* sectors per track */
+#ifdef __STDC__
+    int (*read_fkt)(int, unsigned char *, unsigned long, int);
+    void (*write_fkt)(int, unsigned long, unsigned char *, int);
+#else
+    int (*read_fkt)();		/* read whole track */
+    void (*write_fkt)();		/* write whole track */
+#endif
+};
+
+#ifndef ASSEMBLER
+/*
+** Floppy type descriptions
+*/
+
+struct fd_drive_type {
+    unsigned long code;		/* code returned from drive */
+    char *name;			/* description of drive */
+    unsigned int tracks;	/* number of tracks */
+    unsigned int heads;		/* number of heads */
+    unsigned int read_size;	/* raw read size for one track */
+    unsigned int write_size;	/* raw write size for one track */
+    unsigned int sect_mult;	/* sectors and gap multiplier (HD = 2) */
+    unsigned int precomp1;	/* start track for precomp 1 */
+    unsigned int precomp2;	/* start track for precomp 2 */
+    unsigned int step_delay;	/* time (in ms) for delay after step */
+    unsigned int settle_time;	/* time to settle after dir change */
+    unsigned int side_time;	/* time needed to change sides */
+};
+
+struct amiga_floppy_struct {
+    struct fd_drive_type *type;	/* type of floppy for this unit */
+    struct fd_data_type *dtype;	/* type of floppy for this unit */
+    int track;			/* current track (-1 == unknown) */
+
+    int blocks;			/* total # blocks on disk */
+    int sects;			/* number of sectors per track */
+
+    int disk;			/* disk in drive (-1 == unknown) */
+    int motor;			/* true when motor is at speed */
+    int busy;			/* true when drive is active */
+    int status;			/* current error code for unit */
+};
+#endif
+
+#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amiga/fdreg.h linux-2.1.79/include/asm-m68k/amiga/fdreg.h
--- linux-2.1.79.orig/include/asm-m68k/amiga/fdreg.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/amiga/fdreg.h	Wed Apr 24 18:17:12 1996
@@ -0,0 +1,81 @@
+#ifndef _LINUX_AMIFDREG_H
+#define _LINUX_AMIFDREG_H
+
+/*
+** CIAAPRA bits (read only)
+*/
+
+#define DSKRDY      (0x1<<5)        /* disk ready when low */
+#define DSKTRACK0   (0x1<<4)        /* head at track zero when low */
+#define DSKPROT     (0x1<<3)        /* disk protected when low */
+#define DSKCHANGE   (0x1<<2)        /* low when disk removed */
+
+/*
+** CIAAPRB bits (read/write)
+*/
+
+#define DSKMOTOR    (0x1<<7)        /* motor on when low */
+#define DSKSEL3     (0x1<<6)        /* select drive 3 when low */
+#define DSKSEL2     (0x1<<5)        /* select drive 2 when low */
+#define DSKSEL1     (0x1<<4)        /* select drive 1 when low */
+#define DSKSEL0     (0x1<<3)        /* select drive 0 when low */
+#define DSKSIDE     (0x1<<2)        /* side selection: 0 = upper, 1 = lower */
+#define DSKDIREC    (0x1<<1)        /* step direction: 0=in, 1=out (to trk 0) */
+#define DSKSTEP     (0x1)           /* pulse low to step head 1 track */
+
+/*
+** DSKBYTR bits (read only)
+*/
+
+#define DSKBYT      (1<<15)         /* register contains valid byte when set */
+#define DMAON       (1<<14)         /* disk DMA enabled */
+#define DISKWRITE   (1<<13)         /* disk write bit in DSKLEN enabled */
+#define WORDEQUAL   (1<<12)         /* DSKSYNC register match when true */
+/* bits 7-0 are data */
+
+/*
+** ADKCON/ADKCONR bits
+*/
+
+#ifndef SETCLR
+#define ADK_SETCLR      (1<<15)     /* control bit */
+#endif
+#define ADK_PRECOMP1    (1<<14)     /* precompensation selection */
+#define ADK_PRECOMP0    (1<<13)     /* 00=none, 01=140ns, 10=280ns, 11=500ns */
+#define ADK_MFMPREC     (1<<12)     /* 0=GCR precomp., 1=MFM precomp. */
+#define ADK_WORDSYNC    (1<<10)     /* enable DSKSYNC auto DMA */
+#define ADK_MSBSYNC     (1<<9)      /* when 1, enable sync on MSbit (for GCR) */
+#define ADK_FAST        (1<<8)      /* bit cell: 0=2us (GCR), 1=1us (MFM) */
+ 
+/*
+** DSKLEN bits
+*/
+
+#define DSKLEN_DMAEN    (1<<15)
+#define DSKLEN_WRITE    (1<<14)
+
+/*
+** INTENA/INTREQ bits
+*/
+
+#define DSKINDEX    (0x1<<4)        /* DSKINDEX bit */
+
+/*
+** Misc
+*/
+ 
+#define MFM_SYNC    0x4489          /* standard MFM sync value */
+
+/* Values for FD_COMMAND */
+#define FD_RECALIBRATE		0x07	/* move to track 0 */
+#define FD_SEEK			0x0F	/* seek track */
+#define FD_READ			0xE6	/* read with MT, MFM, SKip deleted */
+#define FD_WRITE		0xC5	/* write with MT, MFM */
+#define FD_SENSEI		0x08	/* Sense Interrupt Status */
+#define FD_SPECIFY		0x03	/* specify HUT etc */
+#define FD_FORMAT		0x4D	/* format one track */
+#define FD_VERSION		0x10	/* get version code */
+#define FD_CONFIGURE		0x13	/* configure FIFO operation */
+#define FD_PERPENDICULAR	0x12	/* perpendicular r/w mode */
+
+#endif /* _LINUX_AMIFDREG_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amiga/hardware.h linux-2.1.79/include/asm-m68k/amiga/hardware.h
--- linux-2.1.79.orig/include/asm-m68k/amiga/hardware.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/amiga/hardware.h	Thu Sep 18 17:51:57 1997
@@ -0,0 +1,335 @@
+/*
+** asm-m68k/amigahw.h -- This header defines some macros and pointers for
+**                    the various Amiga custom hardware registers.
+**                    The naming conventions used here conform to those
+**                    used in the Amiga Hardware Reference Manual, 3rd Edition
+**
+** Copyright 1992 by Greg Harp
+**
+** 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.
+**
+** Created: 9/24/92 by Greg Harp
+*/
+
+#ifndef _M68K_AMIGAHW_H
+#define _M68K_AMIGAHW_H
+
+    /*
+     *  Different Amiga models
+     */
+
+extern u_long amiga_model;
+
+#define AMI_UNKNOWN	(0)
+#define AMI_500		(1)
+#define AMI_500PLUS	(2)
+#define AMI_600		(3)
+#define AMI_1000	(4)
+#define AMI_1200	(5)
+#define AMI_2000	(6)
+#define AMI_2500	(7)
+#define AMI_3000	(8)
+#define AMI_3000T	(9)
+#define AMI_3000PLUS	(10)
+#define AMI_4000	(11)
+#define AMI_4000T	(12)
+#define AMI_CDTV	(13)
+#define AMI_CD32	(14)
+#define AMI_DRACO	(15)
+
+
+    /*
+     *  Chipsets
+     */
+
+extern u_long amiga_chipset;
+
+#define CS_STONEAGE	(0)
+#define CS_OCS		(1)
+#define CS_ECS		(2)
+#define CS_AGA		(3)
+
+
+    /*
+     *  Miscellaneous
+     */
+
+extern u_long amiga_eclock;		/* 700 kHz E Peripheral Clock */
+extern u_long amiga_masterclock;	/* 28 MHz Master Clock */
+extern u_long amiga_colorclock;		/* 3.5 MHz Color Clock */
+extern u_long amiga_chip_size;		/* Chip RAM Size (bytes) */
+extern u_char amiga_vblank;		/* VBLANK Frequency */
+extern u_char amiga_psfreq;		/* Power Supply Frequency */
+
+
+#define AMIGAHW_DECLARE(name)	unsigned name : 1
+#define AMIGAHW_SET(name)	(amiga_hw_present.name = 1)
+#define AMIGAHW_PRESENT(name)	(amiga_hw_present.name)
+
+struct amiga_hw_present {
+    /* video hardware */
+    AMIGAHW_DECLARE(AMI_VIDEO);		/* Amiga Video */
+    AMIGAHW_DECLARE(AMI_BLITTER);	/* Amiga Blitter */
+    AMIGAHW_DECLARE(AMBER_FF);		/* Amber Flicker Fixer */
+    /* sound hardware */
+    AMIGAHW_DECLARE(AMI_AUDIO);		/* Amiga Audio */
+    /* disk storage interfaces */
+    AMIGAHW_DECLARE(AMI_FLOPPY);	/* Amiga Floppy */
+    AMIGAHW_DECLARE(A3000_SCSI);	/* SCSI (wd33c93, A3000 alike) */
+    AMIGAHW_DECLARE(A4000_SCSI);	/* SCSI (ncr53c710, A4000T alike) */
+    AMIGAHW_DECLARE(A1200_IDE);		/* IDE (A1200 alike) */
+    AMIGAHW_DECLARE(A4000_IDE);		/* IDE (A4000 alike) */
+    AMIGAHW_DECLARE(CD_ROM);		/* CD ROM drive */
+    /* other I/O hardware */
+    AMIGAHW_DECLARE(AMI_KEYBOARD);	/* Amiga Keyboard */
+    AMIGAHW_DECLARE(AMI_MOUSE);		/* Amiga Mouse */
+    AMIGAHW_DECLARE(AMI_SERIAL);	/* Amiga Serial */
+    AMIGAHW_DECLARE(AMI_PARALLEL);	/* Amiga Parallel */
+    /* real time clocks */
+    AMIGAHW_DECLARE(A2000_CLK);		/* Hardware Clock (A2000 alike) */
+    AMIGAHW_DECLARE(A3000_CLK);		/* Hardware Clock (A3000 alike) */
+    /* supporting hardware */
+    AMIGAHW_DECLARE(CHIP_RAM);		/* Chip RAM */
+    AMIGAHW_DECLARE(PAULA);		/* Paula (8364) */
+    AMIGAHW_DECLARE(DENISE);		/* Denise (8362) */
+    AMIGAHW_DECLARE(DENISE_HR);		/* Denise (8373) */
+    AMIGAHW_DECLARE(LISA);		/* Lisa (8375) */
+    AMIGAHW_DECLARE(AGNUS_PAL);		/* Normal/Fat PAL Agnus (8367/8371) */
+    AMIGAHW_DECLARE(AGNUS_NTSC);	/* Normal/Fat NTSC Agnus (8361/8370) */
+    AMIGAHW_DECLARE(AGNUS_HR_PAL);	/* Fat Hires PAL Agnus (8372) */
+    AMIGAHW_DECLARE(AGNUS_HR_NTSC);	/* Fat Hires NTSC Agnus (8372) */
+    AMIGAHW_DECLARE(ALICE_PAL);		/* PAL Alice (8374) */
+    AMIGAHW_DECLARE(ALICE_NTSC);	/* NTSC Alice (8374) */
+    AMIGAHW_DECLARE(MAGIC_REKICK);	/* A3000 Magic Hard Rekick */
+    AMIGAHW_DECLARE(PCMCIA);		/* PCMCIA Slot */
+    AMIGAHW_DECLARE(ZORRO);		/* Zorro AutoConfig */
+    AMIGAHW_DECLARE(ZORRO3);		/* Zorro III */
+};
+
+extern struct amiga_hw_present amiga_hw_present;
+
+struct CUSTOM {
+    u_short bltddat;
+    u_short dmaconr;
+    u_short vposr;
+    u_short vhposr;
+    u_short dskdatr;
+    u_short joy0dat;
+    u_short joy1dat;
+    u_short clxdat;
+    u_short adkconr;
+    u_short pot0dat;
+    u_short pot1dat;
+    u_short potgor;
+    u_short serdatr;
+    u_short dskbytr;
+    u_short intenar;
+    u_short intreqr;
+    u_char  *dskptr;
+    u_short dsklen;
+    u_short dskdat;
+    u_short refptr;
+    u_short vposw;
+    u_short vhposw;
+    u_short copcon;
+    u_short serdat;
+    u_short serper;
+    u_short potgo;
+    u_short joytest;
+    u_short strequ;
+    u_short strvbl;
+    u_short strhor;
+    u_short strlong;
+    u_short bltcon0;
+    u_short bltcon1;
+    u_short bltafwm;
+    u_short bltalwm;
+    u_char  *bltcpt;
+    u_char  *bltbpt;
+    u_char  *bltapt;
+    u_char  *bltdpt;
+    u_short bltsize;
+    u_char  pad2d;
+    u_char  bltcon0l;
+    u_short bltsizv;
+    u_short bltsizh;
+    u_short bltcmod;
+    u_short bltbmod;
+    u_short bltamod;
+    u_short bltdmod;
+    u_short spare2[4];
+    u_short bltcdat;
+    u_short bltbdat;
+    u_short bltadat;
+    u_short spare3[3];
+    u_short deniseid;
+    u_short dsksync;
+    u_short *cop1lc;
+    u_short *cop2lc;
+    u_short copjmp1;
+    u_short copjmp2;
+    u_short copins;
+    u_short diwstrt;
+    u_short diwstop;
+    u_short ddfstrt;
+    u_short ddfstop;
+    u_short dmacon;
+    u_short clxcon;
+    u_short intena;
+    u_short intreq;
+    u_short adkcon;
+    struct {
+	u_short	*audlc;
+	u_short audlen;
+	u_short audper;
+	u_short audvol;
+	u_short auddat;
+	u_short audspare[2];
+    } aud[4];
+    u_char  *bplpt[8];
+    u_short bplcon0;
+    u_short bplcon1;
+    u_short bplcon2;
+    u_short bplcon3;
+    u_short bpl1mod;
+    u_short bpl2mod;
+    u_short bplcon4;
+    u_short clxcon2;
+    u_short bpldat[8];
+    u_char  *sprpt[8];
+    struct {
+	u_short pos;
+	u_short ctl;
+	u_short dataa;
+	u_short datab;
+    } spr[8];
+    u_short color[32];
+    u_short htotal;
+    u_short hsstop;
+    u_short hbstrt;
+    u_short hbstop;
+    u_short vtotal;
+    u_short vsstop;
+    u_short vbstrt;
+    u_short vbstop;
+    u_short sprhstrt;
+    u_short sprhstop;
+    u_short bplhstrt;
+    u_short bplhstop;
+    u_short hhposw;
+    u_short hhposr;
+    u_short beamcon0;
+    u_short hsstrt;
+    u_short vsstrt;
+    u_short hcenter;
+    u_short diwhigh;
+    u_short spare4[11];
+    u_short fmode;
+};
+
+/*
+ * DMA register bits
+ */
+#define DMAF_SETCLR		(0x8000)
+#define DMAF_AUD0		(0x0001)
+#define DMAF_AUD1		(0x0002)
+#define DMAF_AUD2		(0x0004)
+#define DMAF_AUD3		(0x0008)
+#define DMAF_DISK		(0x0010)
+#define DMAF_SPRITE		(0x0020)
+#define DMAF_BLITTER		(0x0040)
+#define DMAF_COPPER		(0x0080)
+#define DMAF_RASTER		(0x0100)
+#define DMAF_MASTER		(0x0200)
+#define DMAF_BLITHOG		(0x0400)
+#define DMAF_BLTNZERO		(0x2000)
+#define DMAF_BLTDONE		(0x4000)
+#define DMAF_ALL		(0x01FF)
+
+struct CIA {
+    u_char pra; 		char pad0[0xff];
+    u_char prb; 		char pad1[0xff];
+    u_char ddra;		char pad2[0xff];
+    u_char ddrb;		char pad3[0xff];
+    u_char talo;		char pad4[0xff];
+    u_char tahi;		char pad5[0xff];
+    u_char tblo;		char pad6[0xff];
+    u_char tbhi;		char pad7[0xff];
+    u_char todlo;		char pad8[0xff];
+    u_char todmid;		char pad9[0xff];
+    u_char todhi;		char pada[0x1ff];
+    u_char sdr; 		char padb[0xff];
+    u_char icr; 		char padc[0xff];
+    u_char cra; 		char padd[0xff];
+    u_char crb; 		char pade[0xff];
+};
+
+#define zTwoBase (0x80000000)
+#define ZTWO_PADDR(x) (((unsigned long)(x))-zTwoBase)
+#define ZTWO_VADDR(x) (((unsigned long)(x))+zTwoBase)
+
+#define CUSTOM_PHYSADDR     (0xdff000)
+#define custom ((*(volatile struct CUSTOM *)(zTwoBase+CUSTOM_PHYSADDR)))
+
+#define CIAA_PHYSADDR	  (0xbfe001)
+#define CIAB_PHYSADDR	  (0xbfd000)
+#define ciaa   ((*(volatile struct CIA *)(zTwoBase + CIAA_PHYSADDR)))
+#define ciab   ((*(volatile struct CIA *)(zTwoBase + CIAB_PHYSADDR)))
+
+#define CHIP_PHYSADDR	    (0x000000)
+#define chipaddr ((unsigned long)(zTwoBase + CHIP_PHYSADDR))
+void amiga_chip_init (void);
+void *amiga_chip_alloc (long size);
+void amiga_chip_free (void *);
+unsigned long amiga_chip_avail( void ); /*MILAN*/
+
+struct tod3000 {
+  unsigned int  :28, second2:4;	/* lower digit */
+  unsigned int  :28, second1:4;	/* upper digit */
+  unsigned int  :28, minute2:4;	/* lower digit */
+  unsigned int  :28, minute1:4;	/* upper digit */
+  unsigned int  :28, hour2:4;	/* lower digit */
+  unsigned int  :28, hour1:4;	/* upper digit */
+  unsigned int  :28, weekday:4;
+  unsigned int  :28, day2:4;	/* lower digit */
+  unsigned int  :28, day1:4;	/* upper digit */
+  unsigned int  :28, month2:4;	/* lower digit */
+  unsigned int  :28, month1:4;	/* upper digit */
+  unsigned int  :28, year2:4;	/* lower digit */
+  unsigned int  :28, year1:4;	/* upper digit */
+  unsigned int  :28, cntrl1:4;	/* control-byte 1 */
+  unsigned int  :28, cntrl2:4;	/* control-byte 2 */  
+  unsigned int  :28, cntrl3:4;	/* control-byte 3 */
+};
+#define TOD3000_CNTRL1_HOLD	0
+#define TOD3000_CNTRL1_FREE	9
+#define TOD_3000 ((struct tod3000 *)(zTwoBase+0xDC0000))
+
+struct tod2000 {
+  unsigned int  :28, second2:4;	/* lower digit */
+  unsigned int  :28, second1:4;	/* upper digit */
+  unsigned int  :28, minute2:4;	/* lower digit */
+  unsigned int  :28, minute1:4;	/* upper digit */
+  unsigned int  :28, hour2:4;	/* lower digit */
+  unsigned int  :28, hour1:4;	/* upper digit */
+  unsigned int  :28, day2:4;	/* lower digit */
+  unsigned int  :28, day1:4;	/* upper digit */
+  unsigned int  :28, month2:4;	/* lower digit */
+  unsigned int  :28, month1:4;	/* upper digit */
+  unsigned int  :28, year2:4;	/* lower digit */
+  unsigned int  :28, year1:4;	/* upper digit */
+  unsigned int  :28, weekday:4;
+  unsigned int  :28, cntrl1:4;	/* control-byte 1 */
+  unsigned int  :28, cntrl2:4;	/* control-byte 2 */  
+  unsigned int  :28, cntrl3:4;	/* control-byte 3 */
+};
+
+#define TOD2000_CNTRL1_HOLD	(1<<0)
+#define TOD2000_CNTRL1_BUSY	(1<<1)
+#define TOD2000_CNTRL3_24HMODE	(1<<2)
+#define TOD2000_HOUR1_PM	(1<<2)
+#define TOD_2000 ((struct tod2000 *)(zTwoBase+0xDC0000))
+
+#endif /* __ASMm68k_AMIGAHW_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amiga/ints.h linux-2.1.79/include/asm-m68k/amiga/ints.h
--- linux-2.1.79.orig/include/asm-m68k/amiga/ints.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/amiga/ints.h	Mon Mar 24 16:52:33 1997
@@ -0,0 +1,135 @@
+/*
+** amigaints.h -- Amiga Linux interrupt handling structs and prototypes
+**
+** Copyright 1992 by Greg Harp
+**
+** 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.
+**
+** Created 10/2/92 by Greg Harp
+*/
+
+#ifndef _ASMm68k_AMIGAINTS_H_
+#define _ASMm68k_AMIGAINTS_H_
+
+/*
+** Amiga Interrupt sources.
+**
+*/
+
+#define AUTO_IRQS           (8)
+#define AMI_STD_IRQS        (14)
+#define CIA_IRQS            (5)
+#define AMI_IRQS            (32) /* AUTO_IRQS+AMI_STD_IRQS+2*CIA_IRQS */
+
+/* vertical blanking interrupt */
+#define IRQ_AMIGA_VERTB     0
+
+/* copper interrupt */
+#define IRQ_AMIGA_COPPER    1
+
+/* Audio interrupts */
+#define IRQ_AMIGA_AUD0	    2
+#define IRQ_AMIGA_AUD1	    3
+#define IRQ_AMIGA_AUD2	    4
+#define IRQ_AMIGA_AUD3	    5
+
+/* Blitter done interrupt */
+#define IRQ_AMIGA_BLIT	    6
+
+/* floppy disk interrupts */
+#define IRQ_AMIGA_DSKSYN    7
+#define IRQ_AMIGA_DSKBLK    8
+
+/* builtin serial port interrupts */
+#define IRQ_AMIGA_RBF	    9
+#define IRQ_AMIGA_TBE	    10
+
+/* software interrupts */
+#define IRQ_AMIGA_SOFT      11
+
+/* interrupts from external hardware */
+#define IRQ_AMIGA_PORTS	    12
+#define IRQ_AMIGA_EXTER	    13
+
+/* CIA interrupt sources */
+#define IRQ_AMIGA_CIAA      14
+#define IRQ_AMIGA_CIAA_TA   14
+#define IRQ_AMIGA_CIAA_TB   15
+#define IRQ_AMIGA_CIAA_ALRM 16
+#define IRQ_AMIGA_CIAA_SP   17
+#define IRQ_AMIGA_CIAA_FLG  18
+#define IRQ_AMIGA_CIAB      19
+#define IRQ_AMIGA_CIAB_TA   19
+#define IRQ_AMIGA_CIAB_TB   20
+#define IRQ_AMIGA_CIAB_ALRM 21
+#define IRQ_AMIGA_CIAB_SP   22
+#define IRQ_AMIGA_CIAB_FLG  23
+
+/* auto-vector interrupts */
+#define IRQ_AMIGA_AUTO      24
+#define IRQ_AMIGA_AUTO_0    24 /* This is just a dummy */
+#define IRQ_AMIGA_AUTO_1    25
+#define IRQ_AMIGA_AUTO_2    26
+#define IRQ_AMIGA_AUTO_3    27
+#define IRQ_AMIGA_AUTO_4    28
+#define IRQ_AMIGA_AUTO_5    29
+#define IRQ_AMIGA_AUTO_6    30
+#define IRQ_AMIGA_AUTO_7    31
+
+#define IRQ_FLOPPY	    IRQ_AMIGA_DSKBLK
+
+/* INTREQR masks */
+#define IRQ1_MASK   0x0007	/* INTREQR mask for IRQ 1 */
+#define IRQ2_MASK   0x0008	/* INTREQR mask for IRQ 2 */
+#define IRQ3_MASK   0x0070	/* INTREQR mask for IRQ 3 */
+#define IRQ4_MASK   0x0780	/* INTREQR mask for IRQ 4 */
+#define IRQ5_MASK   0x1800	/* INTREQR mask for IRQ 5 */
+#define IRQ6_MASK   0x2000	/* INTREQR mask for IRQ 6 */
+#define IRQ7_MASK   0x4000	/* INTREQR mask for IRQ 7 */
+
+#define IF_SETCLR   0x8000      /* set/clr bit */
+#define IF_INTEN    0x4000	/* master interrupt bit in INT* registers */
+#define IF_EXTER    0x2000	/* external level 6 and CIA B interrupt */
+#define IF_DSKSYN   0x1000	/* disk sync interrupt */
+#define IF_RBF	    0x0800	/* serial receive buffer full interrupt */
+#define IF_AUD3     0x0400	/* audio channel 3 done interrupt */
+#define IF_AUD2     0x0200	/* audio channel 2 done interrupt */
+#define IF_AUD1     0x0100	/* audio channel 1 done interrupt */
+#define IF_AUD0     0x0080	/* audio channel 0 done interrupt */
+#define IF_BLIT     0x0040	/* blitter done interrupt */
+#define IF_VERTB    0x0020	/* vertical blanking interrupt */
+#define IF_COPER    0x0010	/* copper interrupt */
+#define IF_PORTS    0x0008	/* external level 2 and CIA A interrupt */
+#define IF_SOFT     0x0004	/* software initiated interrupt */
+#define IF_DSKBLK   0x0002	/* diskblock DMA finished */
+#define IF_TBE	    0x0001	/* serial transmit buffer empty interrupt */
+
+struct irq_server {
+	unsigned short count, reentrance;
+};
+
+extern void amiga_do_irq(int irq, struct pt_regs *fp);
+extern void amiga_do_irq_list(int irq, struct pt_regs *fp, struct irq_server *server);
+
+/* CIA interrupt control register bits */
+
+#define CIA_ICR_TA	0x01
+#define CIA_ICR_TB	0x02
+#define CIA_ICR_ALRM	0x04
+#define CIA_ICR_SP	0x08
+#define CIA_ICR_FLG	0x10
+#define CIA_ICR_ALL	0x1f
+#define CIA_ICR_SETCLR	0x80
+
+/* to access the interrupt control registers of CIA's use only
+** these functions, they behave exactly like the amiga os routines
+*/
+
+extern struct ciabase ciaa_base, ciab_base;
+
+extern unsigned char cia_set_irq(struct ciabase *base, unsigned char mask);
+extern unsigned char cia_able_irq(struct ciabase *base, unsigned char mask);
+
+#endif /* asm-m68k/amigaints.h */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amiga/mouse.h linux-2.1.79/include/asm-m68k/amiga/mouse.h
--- linux-2.1.79.orig/include/asm-m68k/amiga/mouse.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/amiga/mouse.h	Wed Apr 24 18:17:13 1996
@@ -0,0 +1,26 @@
+#ifndef _ASMm68k_AMIGAMOUSE_H
+#define _ASMm68k_AMIGAMOUSE_H
+
+/*
+ *  linux/include/asm-m68k/amigamouse.h: header file for Amiga Mouse driver
+ *  by Michael Rausch
+ */
+
+/*
+#define MSE_INT_OFF()	outb(MSE_DISABLE_INTERRUPTS, MSE_CONTROL_PORT)
+#define MSE_INT_ON()	outb(MSE_ENABLE_INTERRUPTS, MSE_CONTROL_PORT)
+*/ 
+
+struct mouse_status {
+	unsigned char	buttons;
+	unsigned char	latch_buttons;
+	int		dx;
+	int		dy;	
+	int 		present;
+	int		ready;
+	int		active;
+	struct wait_queue *wait;
+	struct fasync_struct *fasyncptr;
+};
+
+#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amiga/rdb.h linux-2.1.79/include/asm-m68k/amiga/rdb.h
--- linux-2.1.79.orig/include/asm-m68k/amiga/rdb.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/amiga/rdb.h	Wed Apr 24 18:17:13 1996
@@ -0,0 +1,126 @@
+#ifndef _LINUX_AMIGARDB_H
+#define _LINUX_AMIGARDB_H 1
+
+#define ULONG	u_long
+#define LONG	long
+#define UBYTE	u_char
+
+/* definitions for the Amiga RigidDiskBlock layout, which always starts in 
+   cylinder 0 of a medium. Taken from page 254f of the RKM: Devices */
+
+struct RigidDiskBlock {
+    ULONG   rdb_ID;		/* 4 character identifier */
+    ULONG   rdb_SummedLongs;	/* size of this checksummed structure */
+    LONG    rdb_ChkSum;		/* block checksum (longword sum to zero) */
+    ULONG   rdb_HostID;		/* SCSI Target ID of host */
+    ULONG   rdb_BlockBytes;	/* size of disk blocks */
+    ULONG   rdb_Flags;		/* see below for defines */
+    /* block list heads */
+    ULONG   rdb_BadBlockList;	/* optional bad block list */
+    ULONG   rdb_PartitionList;	/* optional first partition block */
+    ULONG   rdb_FileSysHeaderList; /* optional file system header block */
+    ULONG   rdb_DriveInit;	/* optional drive-specific init code */
+				/* DriveInit(lun,rdb,ior): "C" stk & d0/a0/a1 */
+    ULONG   rdb_Reserved1[6];	/* set to $ffffffff */
+    /* physical drive characteristics */
+    ULONG   rdb_Cylinders;	/* number of drive cylinders */
+    ULONG   rdb_Sectors;	/* sectors per track */
+    ULONG   rdb_Heads;		/* number of drive heads */
+    ULONG   rdb_Interleave;	/* interleave */
+    ULONG   rdb_Park;		/* landing zone cylinder */
+    ULONG   rdb_Reserved2[3];
+    ULONG   rdb_WritePreComp;	/* starting cylinder: write precompensation */
+    ULONG   rdb_ReducedWrite;	/* starting cylinder: reduced write current */
+    ULONG   rdb_StepRate;	/* drive step rate */
+    ULONG   rdb_Reserved3[5];
+    /* logical drive characteristics */
+    ULONG   rdb_RDBBlocksLo;	/* low block of range reserved for hardblocks */
+    ULONG   rdb_RDBBlocksHi;	/* high block of range for these hardblocks */
+    ULONG   rdb_LoCylinder;	/* low cylinder of partitionable disk area */
+    ULONG   rdb_HiCylinder;	/* high cylinder of partitionable data area */
+    ULONG   rdb_CylBlocks;	/* number of blocks available per cylinder */
+    ULONG   rdb_AutoParkSeconds; /* zero for no auto park */
+    ULONG   rdb_HighRDSKBlock;	/* highest block used by RDSK */
+				/* (not including replacement bad blocks) */
+    ULONG   rdb_Reserved4;
+    /* drive identification */
+    char    rdb_DiskVendor[8];
+    char    rdb_DiskProduct[16];
+    char    rdb_DiskRevision[4];
+    char    rdb_ControllerVendor[8];
+    char    rdb_ControllerProduct[16];
+    char    rdb_ControllerRevision[4];
+    ULONG   rdb_Reserved5[10];
+};
+
+#define	IDNAME_RIGIDDISK	0x5244534B	/* 'RDSK' */
+
+#define	RDB_LOCATION_LIMIT	16
+
+#define	RDBFB_LAST	0	/* no disks exist to be configured after */
+#define	RDBFF_LAST	0x01L	/*   this one on this controller */
+#define	RDBFB_LASTLUN	1	/* no LUNs exist to be configured greater */
+#define	RDBFF_LASTLUN	0x02L	/*   than this one at this SCSI Target ID */
+#define	RDBFB_LASTTID	2	/* no Target IDs exist to be configured */
+#define	RDBFF_LASTTID	0x04L	/*   greater than this one on this SCSI bus */
+#define	RDBFB_NORESELECT 3	/* don't bother trying to perform reselection */
+#define	RDBFF_NORESELECT 0x08L	/*   when talking to this drive */
+#define	RDBFB_DISKID	4	/* rdb_Disk... identification valid */
+#define	RDBFF_DISKID	0x10L
+#define	RDBFB_CTRLRID	5	/* rdb_Controller... identification valid */
+#define	RDBFF_CTRLRID	0x20L
+				/* added 7/20/89 by commodore: */
+#define RDBFB_SYNCH	6	/* drive supports scsi synchronous mode */
+#define RDBFF_SYNCH	0x40L	/* CAN BE DANGEROUS TO USE IF IT DOESN'T! */
+
+struct PartitionBlock {
+    ULONG   pb_ID;		/* 4 character identifier */
+    ULONG   pb_SummedLongs;	/* size of this checksummed structure */
+    LONG    pb_ChkSum;		/* block checksum (longword sum to zero) */
+    ULONG   pb_HostID;		/* SCSI Target ID of host */
+    ULONG   pb_Next;		/* block number of the next PartitionBlock */
+    ULONG   pb_Flags;		/* see below for defines */
+    ULONG   pb_Reserved1[2];
+    ULONG   pb_DevFlags;	/* preferred flags for OpenDevice */
+    UBYTE   pb_DriveName[32];	/* preferred DOS device name: BSTR form */
+				/* (not used if this name is in use) */
+    ULONG   pb_Reserved2[15];	/* filler to 32 longwords */
+    ULONG   pb_Environment[17];	/* environment vector for this partition */
+    ULONG   pb_EReserved[15];	/* reserved for future environment vector */
+};
+
+#define	IDNAME_PARTITION	0x50415254	/* 'PART' */
+
+#define	PBFB_BOOTABLE	0	/* this partition is intended to be bootable */
+#define	PBFF_BOOTABLE	1L	/*   (expected directories and files exist) */
+#define	PBFB_NOMOUNT	1	/* do not mount this partition (e.g. manually */
+#define	PBFF_NOMOUNT	2L	/*   mounted, but space reserved here) */
+
+/* this is from <dos/filehandler.h> */
+
+#define DE_TABLESIZE	0	/* minimum value is 11 (includes NumBuffers) */
+#define DE_SIZEBLOCK	1	/* in longwords: standard value is 128 */
+#define DE_SECORG	2	/* not used; must be 0 */
+#define DE_NUMHEADS	3	/* # of heads (surfaces). drive specific */
+#define DE_SECSPERBLK	4	/* not used; must be 1 */
+#define DE_BLKSPERTRACK 5	/* blocks per track. drive specific */
+#define DE_RESERVEDBLKS 6	/* unavailable blocks at start.	 usually 2 */
+#define DE_PREFAC	7	/* not used; must be 0 */
+#define DE_INTERLEAVE	8	/* usually 0 */
+#define DE_LOWCYL	9	/* starting cylinder. typically 0 */
+#define DE_UPPERCYL	10	/* max cylinder.  drive specific */
+#define DE_NUMBUFFERS	11	/* starting # of buffers.  typically 5 */
+#define DE_MEMBUFTYPE	12	/* type of mem to allocate for buffers. */
+#define DE_BUFMEMTYPE	12	/* same as above, better name
+				 * 1 is public, 3 is chip, 5 is fast */
+#define DE_MAXTRANSFER	13	/* Max number bytes to transfer at a time */
+#define DE_MASK		14	/* Address Mask to block out certain memory */
+#define DE_BOOTPRI	15	/* Boot priority for autoboot */
+#define DE_DOSTYPE	16	/* ASCII (HEX) string showing filesystem type;
+				 * 0X444F5300 is old filesystem,
+				 * 0X444F5301 is fast file system */
+#define DE_BAUD		17	/* Baud rate for serial handler */
+#define DE_CONTROL	18	/* Control word for handler/filesystem */
+#define DE_BOOTBLOCKS	19	/* Number of blocks containing boot code */
+
+#endif /* _LINUX_AMIGARDB_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amigahw.h linux-2.1.79/include/asm-m68k/amigahw.h
--- linux-2.1.79.orig/include/asm-m68k/amigahw.h	Thu Sep 18 17:51:57 1997
+++ linux-2.1.79/include/asm-m68k/amigahw.h	Thu Jan  1 01:00:00 1970
@@ -1,335 +0,0 @@
-/*
-** asm-m68k/amigahw.h -- This header defines some macros and pointers for
-**                    the various Amiga custom hardware registers.
-**                    The naming conventions used here conform to those
-**                    used in the Amiga Hardware Reference Manual, 3rd Edition
-**
-** Copyright 1992 by Greg Harp
-**
-** 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.
-**
-** Created: 9/24/92 by Greg Harp
-*/
-
-#ifndef _M68K_AMIGAHW_H
-#define _M68K_AMIGAHW_H
-
-    /*
-     *  Different Amiga models
-     */
-
-extern u_long amiga_model;
-
-#define AMI_UNKNOWN	(0)
-#define AMI_500		(1)
-#define AMI_500PLUS	(2)
-#define AMI_600		(3)
-#define AMI_1000	(4)
-#define AMI_1200	(5)
-#define AMI_2000	(6)
-#define AMI_2500	(7)
-#define AMI_3000	(8)
-#define AMI_3000T	(9)
-#define AMI_3000PLUS	(10)
-#define AMI_4000	(11)
-#define AMI_4000T	(12)
-#define AMI_CDTV	(13)
-#define AMI_CD32	(14)
-#define AMI_DRACO	(15)
-
-
-    /*
-     *  Chipsets
-     */
-
-extern u_long amiga_chipset;
-
-#define CS_STONEAGE	(0)
-#define CS_OCS		(1)
-#define CS_ECS		(2)
-#define CS_AGA		(3)
-
-
-    /*
-     *  Miscellaneous
-     */
-
-extern u_long amiga_eclock;		/* 700 kHz E Peripheral Clock */
-extern u_long amiga_masterclock;	/* 28 MHz Master Clock */
-extern u_long amiga_colorclock;		/* 3.5 MHz Color Clock */
-extern u_long amiga_chip_size;		/* Chip RAM Size (bytes) */
-extern u_char amiga_vblank;		/* VBLANK Frequency */
-extern u_char amiga_psfreq;		/* Power Supply Frequency */
-
-
-#define AMIGAHW_DECLARE(name)	unsigned name : 1
-#define AMIGAHW_SET(name)	(amiga_hw_present.name = 1)
-#define AMIGAHW_PRESENT(name)	(amiga_hw_present.name)
-
-struct amiga_hw_present {
-    /* video hardware */
-    AMIGAHW_DECLARE(AMI_VIDEO);		/* Amiga Video */
-    AMIGAHW_DECLARE(AMI_BLITTER);	/* Amiga Blitter */
-    AMIGAHW_DECLARE(AMBER_FF);		/* Amber Flicker Fixer */
-    /* sound hardware */
-    AMIGAHW_DECLARE(AMI_AUDIO);		/* Amiga Audio */
-    /* disk storage interfaces */
-    AMIGAHW_DECLARE(AMI_FLOPPY);	/* Amiga Floppy */
-    AMIGAHW_DECLARE(A3000_SCSI);	/* SCSI (wd33c93, A3000 alike) */
-    AMIGAHW_DECLARE(A4000_SCSI);	/* SCSI (ncr53c710, A4000T alike) */
-    AMIGAHW_DECLARE(A1200_IDE);		/* IDE (A1200 alike) */
-    AMIGAHW_DECLARE(A4000_IDE);		/* IDE (A4000 alike) */
-    AMIGAHW_DECLARE(CD_ROM);		/* CD ROM drive */
-    /* other I/O hardware */
-    AMIGAHW_DECLARE(AMI_KEYBOARD);	/* Amiga Keyboard */
-    AMIGAHW_DECLARE(AMI_MOUSE);		/* Amiga Mouse */
-    AMIGAHW_DECLARE(AMI_SERIAL);	/* Amiga Serial */
-    AMIGAHW_DECLARE(AMI_PARALLEL);	/* Amiga Parallel */
-    /* real time clocks */
-    AMIGAHW_DECLARE(A2000_CLK);		/* Hardware Clock (A2000 alike) */
-    AMIGAHW_DECLARE(A3000_CLK);		/* Hardware Clock (A3000 alike) */
-    /* supporting hardware */
-    AMIGAHW_DECLARE(CHIP_RAM);		/* Chip RAM */
-    AMIGAHW_DECLARE(PAULA);		/* Paula (8364) */
-    AMIGAHW_DECLARE(DENISE);		/* Denise (8362) */
-    AMIGAHW_DECLARE(DENISE_HR);		/* Denise (8373) */
-    AMIGAHW_DECLARE(LISA);		/* Lisa (8375) */
-    AMIGAHW_DECLARE(AGNUS_PAL);		/* Normal/Fat PAL Agnus (8367/8371) */
-    AMIGAHW_DECLARE(AGNUS_NTSC);	/* Normal/Fat NTSC Agnus (8361/8370) */
-    AMIGAHW_DECLARE(AGNUS_HR_PAL);	/* Fat Hires PAL Agnus (8372) */
-    AMIGAHW_DECLARE(AGNUS_HR_NTSC);	/* Fat Hires NTSC Agnus (8372) */
-    AMIGAHW_DECLARE(ALICE_PAL);		/* PAL Alice (8374) */
-    AMIGAHW_DECLARE(ALICE_NTSC);	/* NTSC Alice (8374) */
-    AMIGAHW_DECLARE(MAGIC_REKICK);	/* A3000 Magic Hard Rekick */
-    AMIGAHW_DECLARE(PCMCIA);		/* PCMCIA Slot */
-    AMIGAHW_DECLARE(ZORRO);		/* Zorro AutoConfig */
-    AMIGAHW_DECLARE(ZORRO3);		/* Zorro III */
-};
-
-extern struct amiga_hw_present amiga_hw_present;
-
-struct CUSTOM {
-    u_short bltddat;
-    u_short dmaconr;
-    u_short vposr;
-    u_short vhposr;
-    u_short dskdatr;
-    u_short joy0dat;
-    u_short joy1dat;
-    u_short clxdat;
-    u_short adkconr;
-    u_short pot0dat;
-    u_short pot1dat;
-    u_short potgor;
-    u_short serdatr;
-    u_short dskbytr;
-    u_short intenar;
-    u_short intreqr;
-    u_char  *dskptr;
-    u_short dsklen;
-    u_short dskdat;
-    u_short refptr;
-    u_short vposw;
-    u_short vhposw;
-    u_short copcon;
-    u_short serdat;
-    u_short serper;
-    u_short potgo;
-    u_short joytest;
-    u_short strequ;
-    u_short strvbl;
-    u_short strhor;
-    u_short strlong;
-    u_short bltcon0;
-    u_short bltcon1;
-    u_short bltafwm;
-    u_short bltalwm;
-    u_char  *bltcpt;
-    u_char  *bltbpt;
-    u_char  *bltapt;
-    u_char  *bltdpt;
-    u_short bltsize;
-    u_char  pad2d;
-    u_char  bltcon0l;
-    u_short bltsizv;
-    u_short bltsizh;
-    u_short bltcmod;
-    u_short bltbmod;
-    u_short bltamod;
-    u_short bltdmod;
-    u_short spare2[4];
-    u_short bltcdat;
-    u_short bltbdat;
-    u_short bltadat;
-    u_short spare3[3];
-    u_short deniseid;
-    u_short dsksync;
-    u_short *cop1lc;
-    u_short *cop2lc;
-    u_short copjmp1;
-    u_short copjmp2;
-    u_short copins;
-    u_short diwstrt;
-    u_short diwstop;
-    u_short ddfstrt;
-    u_short ddfstop;
-    u_short dmacon;
-    u_short clxcon;
-    u_short intena;
-    u_short intreq;
-    u_short adkcon;
-    struct {
-	u_short	*audlc;
-	u_short audlen;
-	u_short audper;
-	u_short audvol;
-	u_short auddat;
-	u_short audspare[2];
-    } aud[4];
-    u_char  *bplpt[8];
-    u_short bplcon0;
-    u_short bplcon1;
-    u_short bplcon2;
-    u_short bplcon3;
-    u_short bpl1mod;
-    u_short bpl2mod;
-    u_short bplcon4;
-    u_short clxcon2;
-    u_short bpldat[8];
-    u_char  *sprpt[8];
-    struct {
-	u_short pos;
-	u_short ctl;
-	u_short dataa;
-	u_short datab;
-    } spr[8];
-    u_short color[32];
-    u_short htotal;
-    u_short hsstop;
-    u_short hbstrt;
-    u_short hbstop;
-    u_short vtotal;
-    u_short vsstop;
-    u_short vbstrt;
-    u_short vbstop;
-    u_short sprhstrt;
-    u_short sprhstop;
-    u_short bplhstrt;
-    u_short bplhstop;
-    u_short hhposw;
-    u_short hhposr;
-    u_short beamcon0;
-    u_short hsstrt;
-    u_short vsstrt;
-    u_short hcenter;
-    u_short diwhigh;
-    u_short spare4[11];
-    u_short fmode;
-};
-
-/*
- * DMA register bits
- */
-#define DMAF_SETCLR		(0x8000)
-#define DMAF_AUD0		(0x0001)
-#define DMAF_AUD1		(0x0002)
-#define DMAF_AUD2		(0x0004)
-#define DMAF_AUD3		(0x0008)
-#define DMAF_DISK		(0x0010)
-#define DMAF_SPRITE		(0x0020)
-#define DMAF_BLITTER		(0x0040)
-#define DMAF_COPPER		(0x0080)
-#define DMAF_RASTER		(0x0100)
-#define DMAF_MASTER		(0x0200)
-#define DMAF_BLITHOG		(0x0400)
-#define DMAF_BLTNZERO		(0x2000)
-#define DMAF_BLTDONE		(0x4000)
-#define DMAF_ALL		(0x01FF)
-
-struct CIA {
-    u_char pra; 		char pad0[0xff];
-    u_char prb; 		char pad1[0xff];
-    u_char ddra;		char pad2[0xff];
-    u_char ddrb;		char pad3[0xff];
-    u_char talo;		char pad4[0xff];
-    u_char tahi;		char pad5[0xff];
-    u_char tblo;		char pad6[0xff];
-    u_char tbhi;		char pad7[0xff];
-    u_char todlo;		char pad8[0xff];
-    u_char todmid;		char pad9[0xff];
-    u_char todhi;		char pada[0x1ff];
-    u_char sdr; 		char padb[0xff];
-    u_char icr; 		char padc[0xff];
-    u_char cra; 		char padd[0xff];
-    u_char crb; 		char pade[0xff];
-};
-
-#define zTwoBase (0x80000000)
-#define ZTWO_PADDR(x) (((unsigned long)(x))-zTwoBase)
-#define ZTWO_VADDR(x) (((unsigned long)(x))+zTwoBase)
-
-#define CUSTOM_PHYSADDR     (0xdff000)
-#define custom ((*(volatile struct CUSTOM *)(zTwoBase+CUSTOM_PHYSADDR)))
-
-#define CIAA_PHYSADDR	  (0xbfe001)
-#define CIAB_PHYSADDR	  (0xbfd000)
-#define ciaa   ((*(volatile struct CIA *)(zTwoBase + CIAA_PHYSADDR)))
-#define ciab   ((*(volatile struct CIA *)(zTwoBase + CIAB_PHYSADDR)))
-
-#define CHIP_PHYSADDR	    (0x000000)
-#define chipaddr ((unsigned long)(zTwoBase + CHIP_PHYSADDR))
-void amiga_chip_init (void);
-void *amiga_chip_alloc (long size);
-void amiga_chip_free (void *);
-unsigned long amiga_chip_avail( void ); /*MILAN*/
-
-struct tod3000 {
-  unsigned int  :28, second2:4;	/* lower digit */
-  unsigned int  :28, second1:4;	/* upper digit */
-  unsigned int  :28, minute2:4;	/* lower digit */
-  unsigned int  :28, minute1:4;	/* upper digit */
-  unsigned int  :28, hour2:4;	/* lower digit */
-  unsigned int  :28, hour1:4;	/* upper digit */
-  unsigned int  :28, weekday:4;
-  unsigned int  :28, day2:4;	/* lower digit */
-  unsigned int  :28, day1:4;	/* upper digit */
-  unsigned int  :28, month2:4;	/* lower digit */
-  unsigned int  :28, month1:4;	/* upper digit */
-  unsigned int  :28, year2:4;	/* lower digit */
-  unsigned int  :28, year1:4;	/* upper digit */
-  unsigned int  :28, cntrl1:4;	/* control-byte 1 */
-  unsigned int  :28, cntrl2:4;	/* control-byte 2 */  
-  unsigned int  :28, cntrl3:4;	/* control-byte 3 */
-};
-#define TOD3000_CNTRL1_HOLD	0
-#define TOD3000_CNTRL1_FREE	9
-#define TOD_3000 ((struct tod3000 *)(zTwoBase+0xDC0000))
-
-struct tod2000 {
-  unsigned int  :28, second2:4;	/* lower digit */
-  unsigned int  :28, second1:4;	/* upper digit */
-  unsigned int  :28, minute2:4;	/* lower digit */
-  unsigned int  :28, minute1:4;	/* upper digit */
-  unsigned int  :28, hour2:4;	/* lower digit */
-  unsigned int  :28, hour1:4;	/* upper digit */
-  unsigned int  :28, day2:4;	/* lower digit */
-  unsigned int  :28, day1:4;	/* upper digit */
-  unsigned int  :28, month2:4;	/* lower digit */
-  unsigned int  :28, month1:4;	/* upper digit */
-  unsigned int  :28, year2:4;	/* lower digit */
-  unsigned int  :28, year1:4;	/* upper digit */
-  unsigned int  :28, weekday:4;
-  unsigned int  :28, cntrl1:4;	/* control-byte 1 */
-  unsigned int  :28, cntrl2:4;	/* control-byte 2 */  
-  unsigned int  :28, cntrl3:4;	/* control-byte 3 */
-};
-
-#define TOD2000_CNTRL1_HOLD	(1<<0)
-#define TOD2000_CNTRL1_BUSY	(1<<1)
-#define TOD2000_CNTRL3_24HMODE	(1<<2)
-#define TOD2000_HOUR1_PM	(1<<2)
-#define TOD_2000 ((struct tod2000 *)(zTwoBase+0xDC0000))
-
-#endif /* __ASMm68k_AMIGAHW_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amigaints.h linux-2.1.79/include/asm-m68k/amigaints.h
--- linux-2.1.79.orig/include/asm-m68k/amigaints.h	Mon Mar 24 16:52:33 1997
+++ linux-2.1.79/include/asm-m68k/amigaints.h	Thu Jan  1 01:00:00 1970
@@ -1,135 +0,0 @@
-/*
-** amigaints.h -- Amiga Linux interrupt handling structs and prototypes
-**
-** Copyright 1992 by Greg Harp
-**
-** 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.
-**
-** Created 10/2/92 by Greg Harp
-*/
-
-#ifndef _ASMm68k_AMIGAINTS_H_
-#define _ASMm68k_AMIGAINTS_H_
-
-/*
-** Amiga Interrupt sources.
-**
-*/
-
-#define AUTO_IRQS           (8)
-#define AMI_STD_IRQS        (14)
-#define CIA_IRQS            (5)
-#define AMI_IRQS            (32) /* AUTO_IRQS+AMI_STD_IRQS+2*CIA_IRQS */
-
-/* vertical blanking interrupt */
-#define IRQ_AMIGA_VERTB     0
-
-/* copper interrupt */
-#define IRQ_AMIGA_COPPER    1
-
-/* Audio interrupts */
-#define IRQ_AMIGA_AUD0	    2
-#define IRQ_AMIGA_AUD1	    3
-#define IRQ_AMIGA_AUD2	    4
-#define IRQ_AMIGA_AUD3	    5
-
-/* Blitter done interrupt */
-#define IRQ_AMIGA_BLIT	    6
-
-/* floppy disk interrupts */
-#define IRQ_AMIGA_DSKSYN    7
-#define IRQ_AMIGA_DSKBLK    8
-
-/* builtin serial port interrupts */
-#define IRQ_AMIGA_RBF	    9
-#define IRQ_AMIGA_TBE	    10
-
-/* software interrupts */
-#define IRQ_AMIGA_SOFT      11
-
-/* interrupts from external hardware */
-#define IRQ_AMIGA_PORTS	    12
-#define IRQ_AMIGA_EXTER	    13
-
-/* CIA interrupt sources */
-#define IRQ_AMIGA_CIAA      14
-#define IRQ_AMIGA_CIAA_TA   14
-#define IRQ_AMIGA_CIAA_TB   15
-#define IRQ_AMIGA_CIAA_ALRM 16
-#define IRQ_AMIGA_CIAA_SP   17
-#define IRQ_AMIGA_CIAA_FLG  18
-#define IRQ_AMIGA_CIAB      19
-#define IRQ_AMIGA_CIAB_TA   19
-#define IRQ_AMIGA_CIAB_TB   20
-#define IRQ_AMIGA_CIAB_ALRM 21
-#define IRQ_AMIGA_CIAB_SP   22
-#define IRQ_AMIGA_CIAB_FLG  23
-
-/* auto-vector interrupts */
-#define IRQ_AMIGA_AUTO      24
-#define IRQ_AMIGA_AUTO_0    24 /* This is just a dummy */
-#define IRQ_AMIGA_AUTO_1    25
-#define IRQ_AMIGA_AUTO_2    26
-#define IRQ_AMIGA_AUTO_3    27
-#define IRQ_AMIGA_AUTO_4    28
-#define IRQ_AMIGA_AUTO_5    29
-#define IRQ_AMIGA_AUTO_6    30
-#define IRQ_AMIGA_AUTO_7    31
-
-#define IRQ_FLOPPY	    IRQ_AMIGA_DSKBLK
-
-/* INTREQR masks */
-#define IRQ1_MASK   0x0007	/* INTREQR mask for IRQ 1 */
-#define IRQ2_MASK   0x0008	/* INTREQR mask for IRQ 2 */
-#define IRQ3_MASK   0x0070	/* INTREQR mask for IRQ 3 */
-#define IRQ4_MASK   0x0780	/* INTREQR mask for IRQ 4 */
-#define IRQ5_MASK   0x1800	/* INTREQR mask for IRQ 5 */
-#define IRQ6_MASK   0x2000	/* INTREQR mask for IRQ 6 */
-#define IRQ7_MASK   0x4000	/* INTREQR mask for IRQ 7 */
-
-#define IF_SETCLR   0x8000      /* set/clr bit */
-#define IF_INTEN    0x4000	/* master interrupt bit in INT* registers */
-#define IF_EXTER    0x2000	/* external level 6 and CIA B interrupt */
-#define IF_DSKSYN   0x1000	/* disk sync interrupt */
-#define IF_RBF	    0x0800	/* serial receive buffer full interrupt */
-#define IF_AUD3     0x0400	/* audio channel 3 done interrupt */
-#define IF_AUD2     0x0200	/* audio channel 2 done interrupt */
-#define IF_AUD1     0x0100	/* audio channel 1 done interrupt */
-#define IF_AUD0     0x0080	/* audio channel 0 done interrupt */
-#define IF_BLIT     0x0040	/* blitter done interrupt */
-#define IF_VERTB    0x0020	/* vertical blanking interrupt */
-#define IF_COPER    0x0010	/* copper interrupt */
-#define IF_PORTS    0x0008	/* external level 2 and CIA A interrupt */
-#define IF_SOFT     0x0004	/* software initiated interrupt */
-#define IF_DSKBLK   0x0002	/* diskblock DMA finished */
-#define IF_TBE	    0x0001	/* serial transmit buffer empty interrupt */
-
-struct irq_server {
-	unsigned short count, reentrance;
-};
-
-extern void amiga_do_irq(int irq, struct pt_regs *fp);
-extern void amiga_do_irq_list(int irq, struct pt_regs *fp, struct irq_server *server);
-
-/* CIA interrupt control register bits */
-
-#define CIA_ICR_TA	0x01
-#define CIA_ICR_TB	0x02
-#define CIA_ICR_ALRM	0x04
-#define CIA_ICR_SP	0x08
-#define CIA_ICR_FLG	0x10
-#define CIA_ICR_ALL	0x1f
-#define CIA_ICR_SETCLR	0x80
-
-/* to access the interrupt control registers of CIA's use only
-** these functions, they behave exactly like the amiga os routines
-*/
-
-extern struct ciabase ciaa_base, ciab_base;
-
-extern unsigned char cia_set_irq(struct ciabase *base, unsigned char mask);
-extern unsigned char cia_able_irq(struct ciabase *base, unsigned char mask);
-
-#endif /* asm-m68k/amigaints.h */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amigamouse.h linux-2.1.79/include/asm-m68k/amigamouse.h
--- linux-2.1.79.orig/include/asm-m68k/amigamouse.h	Wed Apr 24 18:17:13 1996
+++ linux-2.1.79/include/asm-m68k/amigamouse.h	Thu Jan  1 01:00:00 1970
@@ -1,26 +0,0 @@
-#ifndef _ASMm68k_AMIGAMOUSE_H
-#define _ASMm68k_AMIGAMOUSE_H
-
-/*
- *  linux/include/asm-m68k/amigamouse.h: header file for Amiga Mouse driver
- *  by Michael Rausch
- */
-
-/*
-#define MSE_INT_OFF()	outb(MSE_DISABLE_INTERRUPTS, MSE_CONTROL_PORT)
-#define MSE_INT_ON()	outb(MSE_ENABLE_INTERRUPTS, MSE_CONTROL_PORT)
-*/ 
-
-struct mouse_status {
-	unsigned char	buttons;
-	unsigned char	latch_buttons;
-	int		dx;
-	int		dy;	
-	int 		present;
-	int		ready;
-	int		active;
-	struct wait_queue *wait;
-	struct fasync_struct *fasyncptr;
-};
-
-#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/amigardb.h linux-2.1.79/include/asm-m68k/amigardb.h
--- linux-2.1.79.orig/include/asm-m68k/amigardb.h	Wed Apr 24 18:17:13 1996
+++ linux-2.1.79/include/asm-m68k/amigardb.h	Thu Jan  1 01:00:00 1970
@@ -1,126 +0,0 @@
-#ifndef _LINUX_AMIGARDB_H
-#define _LINUX_AMIGARDB_H 1
-
-#define ULONG	u_long
-#define LONG	long
-#define UBYTE	u_char
-
-/* definitions for the Amiga RigidDiskBlock layout, which always starts in 
-   cylinder 0 of a medium. Taken from page 254f of the RKM: Devices */
-
-struct RigidDiskBlock {
-    ULONG   rdb_ID;		/* 4 character identifier */
-    ULONG   rdb_SummedLongs;	/* size of this checksummed structure */
-    LONG    rdb_ChkSum;		/* block checksum (longword sum to zero) */
-    ULONG   rdb_HostID;		/* SCSI Target ID of host */
-    ULONG   rdb_BlockBytes;	/* size of disk blocks */
-    ULONG   rdb_Flags;		/* see below for defines */
-    /* block list heads */
-    ULONG   rdb_BadBlockList;	/* optional bad block list */
-    ULONG   rdb_PartitionList;	/* optional first partition block */
-    ULONG   rdb_FileSysHeaderList; /* optional file system header block */
-    ULONG   rdb_DriveInit;	/* optional drive-specific init code */
-				/* DriveInit(lun,rdb,ior): "C" stk & d0/a0/a1 */
-    ULONG   rdb_Reserved1[6];	/* set to $ffffffff */
-    /* physical drive characteristics */
-    ULONG   rdb_Cylinders;	/* number of drive cylinders */
-    ULONG   rdb_Sectors;	/* sectors per track */
-    ULONG   rdb_Heads;		/* number of drive heads */
-    ULONG   rdb_Interleave;	/* interleave */
-    ULONG   rdb_Park;		/* landing zone cylinder */
-    ULONG   rdb_Reserved2[3];
-    ULONG   rdb_WritePreComp;	/* starting cylinder: write precompensation */
-    ULONG   rdb_ReducedWrite;	/* starting cylinder: reduced write current */
-    ULONG   rdb_StepRate;	/* drive step rate */
-    ULONG   rdb_Reserved3[5];
-    /* logical drive characteristics */
-    ULONG   rdb_RDBBlocksLo;	/* low block of range reserved for hardblocks */
-    ULONG   rdb_RDBBlocksHi;	/* high block of range for these hardblocks */
-    ULONG   rdb_LoCylinder;	/* low cylinder of partitionable disk area */
-    ULONG   rdb_HiCylinder;	/* high cylinder of partitionable data area */
-    ULONG   rdb_CylBlocks;	/* number of blocks available per cylinder */
-    ULONG   rdb_AutoParkSeconds; /* zero for no auto park */
-    ULONG   rdb_HighRDSKBlock;	/* highest block used by RDSK */
-				/* (not including replacement bad blocks) */
-    ULONG   rdb_Reserved4;
-    /* drive identification */
-    char    rdb_DiskVendor[8];
-    char    rdb_DiskProduct[16];
-    char    rdb_DiskRevision[4];
-    char    rdb_ControllerVendor[8];
-    char    rdb_ControllerProduct[16];
-    char    rdb_ControllerRevision[4];
-    ULONG   rdb_Reserved5[10];
-};
-
-#define	IDNAME_RIGIDDISK	0x5244534B	/* 'RDSK' */
-
-#define	RDB_LOCATION_LIMIT	16
-
-#define	RDBFB_LAST	0	/* no disks exist to be configured after */
-#define	RDBFF_LAST	0x01L	/*   this one on this controller */
-#define	RDBFB_LASTLUN	1	/* no LUNs exist to be configured greater */
-#define	RDBFF_LASTLUN	0x02L	/*   than this one at this SCSI Target ID */
-#define	RDBFB_LASTTID	2	/* no Target IDs exist to be configured */
-#define	RDBFF_LASTTID	0x04L	/*   greater than this one on this SCSI bus */
-#define	RDBFB_NORESELECT 3	/* don't bother trying to perform reselection */
-#define	RDBFF_NORESELECT 0x08L	/*   when talking to this drive */
-#define	RDBFB_DISKID	4	/* rdb_Disk... identification valid */
-#define	RDBFF_DISKID	0x10L
-#define	RDBFB_CTRLRID	5	/* rdb_Controller... identification valid */
-#define	RDBFF_CTRLRID	0x20L
-				/* added 7/20/89 by commodore: */
-#define RDBFB_SYNCH	6	/* drive supports scsi synchronous mode */
-#define RDBFF_SYNCH	0x40L	/* CAN BE DANGEROUS TO USE IF IT DOESN'T! */
-
-struct PartitionBlock {
-    ULONG   pb_ID;		/* 4 character identifier */
-    ULONG   pb_SummedLongs;	/* size of this checksummed structure */
-    LONG    pb_ChkSum;		/* block checksum (longword sum to zero) */
-    ULONG   pb_HostID;		/* SCSI Target ID of host */
-    ULONG   pb_Next;		/* block number of the next PartitionBlock */
-    ULONG   pb_Flags;		/* see below for defines */
-    ULONG   pb_Reserved1[2];
-    ULONG   pb_DevFlags;	/* preferred flags for OpenDevice */
-    UBYTE   pb_DriveName[32];	/* preferred DOS device name: BSTR form */
-				/* (not used if this name is in use) */
-    ULONG   pb_Reserved2[15];	/* filler to 32 longwords */
-    ULONG   pb_Environment[17];	/* environment vector for this partition */
-    ULONG   pb_EReserved[15];	/* reserved for future environment vector */
-};
-
-#define	IDNAME_PARTITION	0x50415254	/* 'PART' */
-
-#define	PBFB_BOOTABLE	0	/* this partition is intended to be bootable */
-#define	PBFF_BOOTABLE	1L	/*   (expected directories and files exist) */
-#define	PBFB_NOMOUNT	1	/* do not mount this partition (e.g. manually */
-#define	PBFF_NOMOUNT	2L	/*   mounted, but space reserved here) */
-
-/* this is from <dos/filehandler.h> */
-
-#define DE_TABLESIZE	0	/* minimum value is 11 (includes NumBuffers) */
-#define DE_SIZEBLOCK	1	/* in longwords: standard value is 128 */
-#define DE_SECORG	2	/* not used; must be 0 */
-#define DE_NUMHEADS	3	/* # of heads (surfaces). drive specific */
-#define DE_SECSPERBLK	4	/* not used; must be 1 */
-#define DE_BLKSPERTRACK 5	/* blocks per track. drive specific */
-#define DE_RESERVEDBLKS 6	/* unavailable blocks at start.	 usually 2 */
-#define DE_PREFAC	7	/* not used; must be 0 */
-#define DE_INTERLEAVE	8	/* usually 0 */
-#define DE_LOWCYL	9	/* starting cylinder. typically 0 */
-#define DE_UPPERCYL	10	/* max cylinder.  drive specific */
-#define DE_NUMBUFFERS	11	/* starting # of buffers.  typically 5 */
-#define DE_MEMBUFTYPE	12	/* type of mem to allocate for buffers. */
-#define DE_BUFMEMTYPE	12	/* same as above, better name
-				 * 1 is public, 3 is chip, 5 is fast */
-#define DE_MAXTRANSFER	13	/* Max number bytes to transfer at a time */
-#define DE_MASK		14	/* Address Mask to block out certain memory */
-#define DE_BOOTPRI	15	/* Boot priority for autoboot */
-#define DE_DOSTYPE	16	/* ASCII (HEX) string showing filesystem type;
-				 * 0X444F5300 is old filesystem,
-				 * 0X444F5301 is fast file system */
-#define DE_BAUD		17	/* Baud rate for serial handler */
-#define DE_CONTROL	18	/* Control word for handler/filesystem */
-#define DE_BOOTBLOCKS	19	/* Number of blocks containing boot code */
-
-#endif /* _LINUX_AMIGARDB_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/apollo/hardware.h linux-2.1.79/include/asm-m68k/apollo/hardware.h
--- linux-2.1.79.orig/include/asm-m68k/apollo/hardware.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/apollo/hardware.h	Fri Nov  7 19:16:08 1997
@@ -0,0 +1,71 @@
+/* apollohw.h : some structures to access apollo HW */
+
+#ifndef _ASMm68k_APOLLOHW_H_
+#define _ASMm68k_APOLLOHW_H_
+
+
+/* 
+   see scn2681 data sheet for more info. 
+   member names are read_write.
+*/
+
+#define DECLARE_2681_FIELD(x) unsigned char x; unsigned char dummy##x
+
+struct SCN2681 {
+
+	DECLARE_2681_FIELD(mra);
+	DECLARE_2681_FIELD(sra_csra);
+	DECLARE_2681_FIELD(BRGtest_cra);
+	DECLARE_2681_FIELD(rhra_thra);
+	DECLARE_2681_FIELD(ipcr_acr);
+	DECLARE_2681_FIELD(isr_imr);
+	DECLARE_2681_FIELD(ctu_ctur);
+	DECLARE_2681_FIELD(ctl_ctlr);
+	DECLARE_2681_FIELD(mrb);
+	DECLARE_2681_FIELD(srb_csrb);
+	DECLARE_2681_FIELD(tst_crb);
+	DECLARE_2681_FIELD(rhrb_thrb);
+	DECLARE_2681_FIELD(reserved);
+	DECLARE_2681_FIELD(ip_opcr);
+	DECLARE_2681_FIELD(startCnt_setOutBit);
+	DECLARE_2681_FIELD(stopCnt_resetOutBit);
+
+};
+
+#if 0
+struct mc146818 {
+
+	unsigned int second1:4, second2:4, alarm_second1:4, alarm_second2:4,
+		     minute1:4, minute2:4, alarm_minute1:4, alarm_minute2:4;
+	unsigned int hours1:4, hours2:4, alarm_hours1:4, alarm_hours2:4,
+		     day_of_week1:4, day_of_week2:4, day_of_month1:4, day_of_month2:4;
+	unsigned int month1:4, month2:4, year1:4, year2:4, :16;
+
+};
+#endif
+
+struct mc146818 {
+        unsigned char second, alarm_second;
+        unsigned char minute, alarm_minute;
+        unsigned char hours, alarm_hours;
+        unsigned char day_of_week, day_of_month;
+        unsigned char month, year;
+};
+
+#define IO_BASE 0x80000000
+
+#define SIO01_PHYSADDR 0x10400
+#define SIO23_PHYSADDR 0x10500
+#define RTC_PHYSADDR 0x10900
+#define PICA 0x11000
+#define PICB 0x11100
+#define sio01 ((*(volatile struct SCN2681 *)(IO_BASE + SIO01_PHYSADDR)))
+#define sio23 ((*(volatile struct SCN2681 *)(IO_BASE + SIO01_PHYSADDR)))
+#define rtc (((volatile struct mc146818 *)(IO_BASE + RTC_PHYSADDR)))
+
+#define inb(addr) (*((volatile unsigned char *)(addr)))
+#define outb(val,addr) (*((volatile unsigned char *)(addr)) = (val))
+#define inw(addr) (*((volatile unsigned short *)(addr)))
+#define outw(val,addr) (*((volatile unsigned short *)(addr)) = (val))
+
+#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/apollohw.h linux-2.1.79/include/asm-m68k/apollohw.h
--- linux-2.1.79.orig/include/asm-m68k/apollohw.h	Fri Nov  7 19:16:08 1997
+++ linux-2.1.79/include/asm-m68k/apollohw.h	Thu Jan  1 01:00:00 1970
@@ -1,71 +0,0 @@
-/* apollohw.h : some structures to access apollo HW */
-
-#ifndef _ASMm68k_APOLLOHW_H_
-#define _ASMm68k_APOLLOHW_H_
-
-
-/* 
-   see scn2681 data sheet for more info. 
-   member names are read_write.
-*/
-
-#define DECLARE_2681_FIELD(x) unsigned char x; unsigned char dummy##x
-
-struct SCN2681 {
-
-	DECLARE_2681_FIELD(mra);
-	DECLARE_2681_FIELD(sra_csra);
-	DECLARE_2681_FIELD(BRGtest_cra);
-	DECLARE_2681_FIELD(rhra_thra);
-	DECLARE_2681_FIELD(ipcr_acr);
-	DECLARE_2681_FIELD(isr_imr);
-	DECLARE_2681_FIELD(ctu_ctur);
-	DECLARE_2681_FIELD(ctl_ctlr);
-	DECLARE_2681_FIELD(mrb);
-	DECLARE_2681_FIELD(srb_csrb);
-	DECLARE_2681_FIELD(tst_crb);
-	DECLARE_2681_FIELD(rhrb_thrb);
-	DECLARE_2681_FIELD(reserved);
-	DECLARE_2681_FIELD(ip_opcr);
-	DECLARE_2681_FIELD(startCnt_setOutBit);
-	DECLARE_2681_FIELD(stopCnt_resetOutBit);
-
-};
-
-#if 0
-struct mc146818 {
-
-	unsigned int second1:4, second2:4, alarm_second1:4, alarm_second2:4,
-		     minute1:4, minute2:4, alarm_minute1:4, alarm_minute2:4;
-	unsigned int hours1:4, hours2:4, alarm_hours1:4, alarm_hours2:4,
-		     day_of_week1:4, day_of_week2:4, day_of_month1:4, day_of_month2:4;
-	unsigned int month1:4, month2:4, year1:4, year2:4, :16;
-
-};
-#endif
-
-struct mc146818 {
-        unsigned char second, alarm_second;
-        unsigned char minute, alarm_minute;
-        unsigned char hours, alarm_hours;
-        unsigned char day_of_week, day_of_month;
-        unsigned char month, year;
-};
-
-#define IO_BASE 0x80000000
-
-#define SIO01_PHYSADDR 0x10400
-#define SIO23_PHYSADDR 0x10500
-#define RTC_PHYSADDR 0x10900
-#define PICA 0x11000
-#define PICB 0x11100
-#define sio01 ((*(volatile struct SCN2681 *)(IO_BASE + SIO01_PHYSADDR)))
-#define sio23 ((*(volatile struct SCN2681 *)(IO_BASE + SIO01_PHYSADDR)))
-#define rtc (((volatile struct mc146818 *)(IO_BASE + RTC_PHYSADDR)))
-
-#define inb(addr) (*((volatile unsigned char *)(addr)))
-#define outb(val,addr) (*((volatile unsigned char *)(addr)) = (val))
-#define inw(addr) (*((volatile unsigned short *)(addr)))
-#define outw(val,addr) (*((volatile unsigned short *)(addr)) = (val))
-
-#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atafd.h linux-2.1.79/include/asm-m68k/atafd.h
--- linux-2.1.79.orig/include/asm-m68k/atafd.h	Wed Apr 24 18:17:14 1996
+++ linux-2.1.79/include/asm-m68k/atafd.h	Thu Jan  1 01:00:00 1970
@@ -1,12 +0,0 @@
-#ifndef _ASM_M68K_FD_H
-#define _ASM_M68K_FD_H
-
-/* Definitions for the Atari Floppy driver */
-
-struct atari_format_descr {
-    int track;			/* to be formatted */
-    int head;			/*   ""     ""     */
-    int sect_offset;		/* offset of first sector */
-};
-
-#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atafdreg.h linux-2.1.79/include/asm-m68k/atafdreg.h
--- linux-2.1.79.orig/include/asm-m68k/atafdreg.h	Wed Apr 24 18:17:14 1996
+++ linux-2.1.79/include/asm-m68k/atafdreg.h	Thu Jan  1 01:00:00 1970
@@ -1,79 +0,0 @@
-#ifndef _LINUX_FDREG_H
-#define _LINUX_FDREG_H
-
-/*
-** WD1772 stuff
- */
-
-/* register codes */
-
-#define FDCSELREG_STP   (0x80)   /* command/status register */
-#define FDCSELREG_TRA   (0x82)   /* track register */
-#define FDCSELREG_SEC   (0x84)   /* sector register */
-#define FDCSELREG_DTA   (0x86)   /* data register */
-
-/* register names for FDC_READ/WRITE macros */
-
-#define FDCREG_CMD		0
-#define FDCREG_STATUS	0
-#define FDCREG_TRACK	2
-#define FDCREG_SECTOR	4
-#define FDCREG_DATA		6
-
-/* command opcodes */
-
-#define FDCCMD_RESTORE  (0x00)   /*  -                   */
-#define FDCCMD_SEEK     (0x10)   /*   |                  */
-#define FDCCMD_STEP     (0x20)   /*   |  TYP 1 Commands  */
-#define FDCCMD_STIN     (0x40)   /*   |                  */
-#define FDCCMD_STOT     (0x60)   /*  -                   */
-#define FDCCMD_RDSEC    (0x80)   /*  -   TYP 2 Commands  */
-#define FDCCMD_WRSEC    (0xa0)   /*  -          "        */
-#define FDCCMD_RDADR    (0xc0)   /*  -                   */
-#define FDCCMD_RDTRA    (0xe0)   /*   |  TYP 3 Commands  */
-#define FDCCMD_WRTRA    (0xf0)   /*  -                   */
-#define FDCCMD_FORCI    (0xd0)   /*  -   TYP 4 Command   */
-
-/* command modifier bits */
-
-#define FDCCMDADD_SR6   (0x00)   /* step rate settings */
-#define FDCCMDADD_SR12  (0x01)
-#define FDCCMDADD_SR2   (0x02)
-#define FDCCMDADD_SR3   (0x03)
-#define FDCCMDADD_V     (0x04)   /* verify */
-#define FDCCMDADD_H     (0x08)   /* wait for spin-up */
-#define FDCCMDADD_U     (0x10)   /* update track register */
-#define FDCCMDADD_M     (0x10)   /* multiple sector access */
-#define FDCCMDADD_E     (0x04)   /* head settling flag */
-#define FDCCMDADD_P     (0x02)   /* precompensation off */
-#define FDCCMDADD_A0    (0x01)   /* DAM flag */
-
-/* status register bits */
-
-#define	FDCSTAT_MOTORON	(0x80)   /* motor on */
-#define	FDCSTAT_WPROT	(0x40)   /* write protected (FDCCMD_WR*) */
-#define	FDCSTAT_SPINUP	(0x20)   /* motor speed stable (Type I) */
-#define	FDCSTAT_DELDAM	(0x20)   /* sector has deleted DAM (Type II+III) */
-#define	FDCSTAT_RECNF	(0x10)   /* record not found */
-#define	FDCSTAT_CRC		(0x08)   /* CRC error */
-#define	FDCSTAT_TR00	(0x04)   /* Track 00 flag (Type I) */
-#define	FDCSTAT_LOST	(0x04)   /* Lost Data (Type II+III) */
-#define	FDCSTAT_IDX		(0x02)   /* Index status (Type I) */
-#define	FDCSTAT_DRQ		(0x02)   /* DRQ status (Type II+III) */
-#define	FDCSTAT_BUSY	(0x01)   /* FDC is busy */
-
-
-/* PSG Port A Bit Nr 0 .. Side Sel .. 0 -> Side 1  1 -> Side 2 */
-#define DSKSIDE     (0x01)
-        
-#define DSKDRVNONE  (0x06)
-#define DSKDRV0     (0x02)
-#define DSKDRV1     (0x04)
-
-/* step rates */
-#define	FDCSTEP_6	0x00
-#define	FDCSTEP_12	0x01
-#define	FDCSTEP_2	0x02
-#define	FDCSTEP_3	0x03
-
-#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/SCCserial.h linux-2.1.79/include/asm-m68k/atari/SCCserial.h
--- linux-2.1.79.orig/include/asm-m68k/atari/SCCserial.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/SCCserial.h	Fri Jan  9 18:15:07 1998
@@ -0,0 +1,64 @@
+#ifndef _ATARI_SCCSERIAL_H
+#define _ATARI_SCCSERIAL_H
+
+/* Special configuration ioctls for the Atari SCC5380 Serial
+ * Communications Controller
+ */
+
+/* ioctl command codes */
+
+#define TIOCGATSCC	0x54c0	/* get SCC configuration */
+#define TIOCSATSCC	0x54c1	/* set SCC configuration */
+#define TIOCDATSCC	0x54c2	/* reset configuration to defaults */
+
+/* Clock sources */
+
+#define CLK_RTxC	0
+#define CLK_TRxC	1
+#define CLK_PCLK	2
+
+/* baud_bases for the common clocks in the Atari. These are the real
+ * frequencies divided by 16.
+ */
+   
+#define SCC_BAUD_BASE_TIMC	19200	/* 0.3072 MHz from TT-MFP, Timer C */
+#define SCC_BAUD_BASE_BCLK	153600	/* 2.4576 MHz */
+#define SCC_BAUD_BASE_PCLK4	229500	/* 3.6720 MHz */
+#define SCC_BAUD_BASE_PCLK	503374	/* 8.0539763 MHz */
+#define SCC_BAUD_BASE_NONE	0		/* for not connected or unused
+						 * clock sources */
+
+#define SCC_BAUD_BASE_MVME_PCLK	781250	/* 12.5 MHz */
+#define SCC_BAUD_BASE_BVM	460800	/* 7.3728 MHz */
+#define SCC_BAUD_BASE_MVME	625000	/* 10.000 MHz */
+
+/* The SCC configuration structure */
+
+struct atari_SCCserial {
+	unsigned	RTxC_base;	/* base_baud of RTxC */
+	unsigned	TRxC_base;	/* base_baud of TRxC */
+	unsigned	PCLK_base;	/* base_baud of PCLK, for both channels! */
+	struct {
+		unsigned clksrc;	/* CLK_RTxC, CLK_TRxC or CLK_PCLK */
+		unsigned divisor;	/* divisor for base baud, valid values:
+					 * see below */
+	} baud_table[17];		/* For 50, 75, 110, 135, 150, 200, 300,
+					 * 600, 1200, 1800, 2400, 4800, 9600,
+					 * 19200, 38400, 57600 and 115200 bps. The
+					 * last two could be replaced by other
+					 * rates > 38400 if they're not possible.
+					 */
+};
+
+/* The following divisors are valid:
+ *
+ *   - CLK_RTxC: 1 or even (1, 2 and 4 are the direct modes, > 4 use
+ *               the BRG)
+ *
+ *   - CLK_TRxC: 1, 2 or 4 (no BRG, only direct modes possible)
+ *
+ *   - CLK_PCLK: >= 4 and even (no direct modes, only BRG)
+ *
+ */
+
+#endif /* _ATARI_SCCSERIAL_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/SLM.h linux-2.1.79/include/asm-m68k/atari/SLM.h
--- linux-2.1.79.orig/include/asm-m68k/atari/SLM.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/SLM.h	Fri Sep 27 19:24:49 1996
@@ -0,0 +1,28 @@
+
+#ifndef _ATARI_SLM_H
+#define _ATARI_SLM_H
+
+/* Atari SLM laser printer specific ioctls */
+
+#define	SLMIOGSTAT	0xa100
+#define	SLMIOGPSIZE	0xa101
+#define	SLMIOGMFEED	0xa102
+
+#define	SLMIORESET	0xa140
+
+#define	SLMIOSPSIZE	0xa181
+#define	SLMIOSMFEED	0xa182
+
+/* Status returning structure (SLMIOGSTAT) */
+struct SLM_status {
+	int		stat;		/* numeric status code */
+	char	str[40];	/* status string */
+};
+
+/* Paper size structure (SLMIO[GS]PSIZE) */
+struct SLM_paper_size {
+	int		width;
+	int		height;
+};
+
+#endif /* _ATARI_SLM_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/acsi.h linux-2.1.79/include/asm-m68k/atari/acsi.h
--- linux-2.1.79.orig/include/asm-m68k/atari/acsi.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/acsi.h	Wed Jul 10 18:14:27 1996
@@ -0,0 +1,37 @@
+#ifndef _ASM_ATARI_ACSI_H
+#define _ASM_ATARI_ACSI_H
+
+/* Functions exported by drivers/block/acsi.c */
+
+void acsi_delay_start( void );
+void acsi_delay_end( long usec );
+int acsi_wait_for_IRQ( unsigned timeout );
+int acsi_wait_for_noIRQ( unsigned timeout );
+int acsicmd_nodma( const char *cmd, int enable);
+int acsi_getstatus( void );
+int acsi_extstatus( char *buffer, int cnt );
+void acsi_end_extstatus( void );
+int acsi_extcmd( unsigned char *buffer, int cnt );
+
+/* The ACSI buffer is guarantueed to reside in ST-RAM and may be used by other
+ * drivers that work on the ACSI bus, too. It's data are valid only as long as
+ * the ST-DMA is locked. */
+extern char *acsi_buffer;
+extern unsigned long phys_acsi_buffer;
+
+/* Utility macros */
+
+/* Send one data byte over the bus and set mode for next operation
+ * with one move.l -- Atari recommends this...
+ */
+
+#define DMA_LONG_WRITE(data,mode)							\
+    do {													\
+		*((unsigned long *)&dma_wd.fdc_acces_seccount) = 	\
+			((data)<<16) | (mode);							\
+	} while(0)
+
+#define ENABLE_IRQ()	atari_turnon_irq( IRQ_MFP_ACSI )
+#define DISABLE_IRQ()	atari_turnoff_irq( IRQ_MFP_ACSI )
+
+#endif /* _ASM_ATARI_ACSI_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/fd.h linux-2.1.79/include/asm-m68k/atari/fd.h
--- linux-2.1.79.orig/include/asm-m68k/atari/fd.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/fd.h	Wed Apr 24 18:17:14 1996
@@ -0,0 +1,12 @@
+#ifndef _ASM_M68K_FD_H
+#define _ASM_M68K_FD_H
+
+/* Definitions for the Atari Floppy driver */
+
+struct atari_format_descr {
+    int track;			/* to be formatted */
+    int head;			/*   ""     ""     */
+    int sect_offset;		/* offset of first sector */
+};
+
+#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/fdreg.h linux-2.1.79/include/asm-m68k/atari/fdreg.h
--- linux-2.1.79.orig/include/asm-m68k/atari/fdreg.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/fdreg.h	Wed Apr 24 18:17:14 1996
@@ -0,0 +1,79 @@
+#ifndef _LINUX_FDREG_H
+#define _LINUX_FDREG_H
+
+/*
+** WD1772 stuff
+ */
+
+/* register codes */
+
+#define FDCSELREG_STP   (0x80)   /* command/status register */
+#define FDCSELREG_TRA   (0x82)   /* track register */
+#define FDCSELREG_SEC   (0x84)   /* sector register */
+#define FDCSELREG_DTA   (0x86)   /* data register */
+
+/* register names for FDC_READ/WRITE macros */
+
+#define FDCREG_CMD		0
+#define FDCREG_STATUS	0
+#define FDCREG_TRACK	2
+#define FDCREG_SECTOR	4
+#define FDCREG_DATA		6
+
+/* command opcodes */
+
+#define FDCCMD_RESTORE  (0x00)   /*  -                   */
+#define FDCCMD_SEEK     (0x10)   /*   |                  */
+#define FDCCMD_STEP     (0x20)   /*   |  TYP 1 Commands  */
+#define FDCCMD_STIN     (0x40)   /*   |                  */
+#define FDCCMD_STOT     (0x60)   /*  -                   */
+#define FDCCMD_RDSEC    (0x80)   /*  -   TYP 2 Commands  */
+#define FDCCMD_WRSEC    (0xa0)   /*  -          "        */
+#define FDCCMD_RDADR    (0xc0)   /*  -                   */
+#define FDCCMD_RDTRA    (0xe0)   /*   |  TYP 3 Commands  */
+#define FDCCMD_WRTRA    (0xf0)   /*  -                   */
+#define FDCCMD_FORCI    (0xd0)   /*  -   TYP 4 Command   */
+
+/* command modifier bits */
+
+#define FDCCMDADD_SR6   (0x00)   /* step rate settings */
+#define FDCCMDADD_SR12  (0x01)
+#define FDCCMDADD_SR2   (0x02)
+#define FDCCMDADD_SR3   (0x03)
+#define FDCCMDADD_V     (0x04)   /* verify */
+#define FDCCMDADD_H     (0x08)   /* wait for spin-up */
+#define FDCCMDADD_U     (0x10)   /* update track register */
+#define FDCCMDADD_M     (0x10)   /* multiple sector access */
+#define FDCCMDADD_E     (0x04)   /* head settling flag */
+#define FDCCMDADD_P     (0x02)   /* precompensation off */
+#define FDCCMDADD_A0    (0x01)   /* DAM flag */
+
+/* status register bits */
+
+#define	FDCSTAT_MOTORON	(0x80)   /* motor on */
+#define	FDCSTAT_WPROT	(0x40)   /* write protected (FDCCMD_WR*) */
+#define	FDCSTAT_SPINUP	(0x20)   /* motor speed stable (Type I) */
+#define	FDCSTAT_DELDAM	(0x20)   /* sector has deleted DAM (Type II+III) */
+#define	FDCSTAT_RECNF	(0x10)   /* record not found */
+#define	FDCSTAT_CRC		(0x08)   /* CRC error */
+#define	FDCSTAT_TR00	(0x04)   /* Track 00 flag (Type I) */
+#define	FDCSTAT_LOST	(0x04)   /* Lost Data (Type II+III) */
+#define	FDCSTAT_IDX		(0x02)   /* Index status (Type I) */
+#define	FDCSTAT_DRQ		(0x02)   /* DRQ status (Type II+III) */
+#define	FDCSTAT_BUSY	(0x01)   /* FDC is busy */
+
+
+/* PSG Port A Bit Nr 0 .. Side Sel .. 0 -> Side 1  1 -> Side 2 */
+#define DSKSIDE     (0x01)
+        
+#define DSKDRVNONE  (0x06)
+#define DSKDRV0     (0x02)
+#define DSKDRV1     (0x04)
+
+/* step rates */
+#define	FDCSTEP_6	0x00
+#define	FDCSTEP_12	0x01
+#define	FDCSTEP_2	0x02
+#define	FDCSTEP_3	0x03
+
+#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/hardware.h linux-2.1.79/include/asm-m68k/atari/hardware.h
--- linux-2.1.79.orig/include/asm-m68k/atari/hardware.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/hardware.h	Fri Dec 19 18:39:32 1997
@@ -0,0 +1,798 @@
+/*
+** linux/atarihw.h -- This header defines some macros and pointers for
+**                    the various Atari custom hardware registers.
+**
+** Copyright 1994 by Bj”rn Brauel
+**
+** 5/1/94 Roman Hodek:
+**   Added definitions for TT specific chips.
+**
+** 1996-09-13 lars brinkhoff <f93labr@dd.chalmers.se>:
+**   Finally added definitions for the matrix/codec and the DSP56001 host
+**   interface.
+**
+** 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 _LINUX_ATARIHW_H_
+#define _LINUX_ATARIHW_H_
+
+#include <linux/types.h>
+#include <asm/bootinfo.h>
+
+extern u_long atari_mch_cookie;
+extern u_long atari_mch_type;
+extern u_long atari_switches;
+extern int atari_rtc_year_offset;
+extern int atari_dont_touch_floppy_select;
+
+/* convenience macros for testing machine type */
+#define MACH_IS_ST	((atari_mch_cookie >> 16) == ATARI_MCH_ST)
+#define MACH_IS_STE	((atari_mch_cookie >> 16) == ATARI_MCH_STE && \
+			 (atari_mch_cookie & 0xffff) == 0)
+#define MACH_IS_MSTE	((atari_mch_cookie >> 16) == ATARI_MCH_STE && \
+			 (atari_mch_cookie & 0xffff) == 0x10)
+#define MACH_IS_TT	((atari_mch_cookie >> 16) == ATARI_MCH_TT)
+#define MACH_IS_FALCON	((atari_mch_cookie >> 16) == ATARI_MCH_FALCON)
+#define MACH_IS_MEDUSA	(atari_mch_type == ATARI_MACH_MEDUSA)
+#define MACH_IS_HADES	(atari_mch_type == ATARI_MACH_HADES)
+#define MACH_IS_AB40	(atari_mch_type == ATARI_MACH_AB40)
+
+/* values for atari_switches */
+#define ATARI_SWITCH_IKBD	0x01
+#define ATARI_SWITCH_MIDI	0x02
+#define ATARI_SWITCH_SND6	0x04
+#define ATARI_SWITCH_SND7	0x08
+#define ATARI_SWITCH_OVSC_SHIFT	16
+#define ATARI_SWITCH_OVSC_IKBD	(ATARI_SWITCH_IKBD << ATARI_SWITCH_OVSC_SHIFT)
+#define ATARI_SWITCH_OVSC_MIDI	(ATARI_SWITCH_MIDI << ATARI_SWITCH_OVSC_SHIFT)
+#define ATARI_SWITCH_OVSC_SND6	(ATARI_SWITCH_SND6 << ATARI_SWITCH_OVSC_SHIFT)
+#define ATARI_SWITCH_OVSC_SND7	(ATARI_SWITCH_SND7 << ATARI_SWITCH_OVSC_SHIFT)
+#define ATARI_SWITCH_OVSC_MASK	0xffff0000
+	
+/*
+ * Define several Hardware-Chips for indication so that for the ATARI we do
+ * no longer decide whether it is a Falcon or other machine . It's just
+ * important what hardware the machine uses
+ */
+
+/* ++roman 08/08/95: rewritten from ORing constants to a C bitfield */
+
+#define ATARIHW_DECLARE(name)	unsigned name : 1
+#define ATARIHW_SET(name)	(atari_hw_present.name = 1)
+#define ATARIHW_PRESENT(name)	(atari_hw_present.name)
+
+struct atari_hw_present {
+    /* video hardware */
+    ATARIHW_DECLARE(STND_SHIFTER);	/* ST-Shifter - no base low ! */
+    ATARIHW_DECLARE(EXTD_SHIFTER);	/* STe-Shifter - 24 bit address */
+    ATARIHW_DECLARE(TT_SHIFTER);	/* TT-Shifter */
+    ATARIHW_DECLARE(VIDEL_SHIFTER);	/* Falcon-Shifter */
+    /* sound hardware */
+    ATARIHW_DECLARE(YM_2149);		/* Yamaha YM 2149 */
+    ATARIHW_DECLARE(PCM_8BIT);		/* PCM-Sound in STe-ATARI */
+    ATARIHW_DECLARE(CODEC);		/* CODEC Sound (Falcon) */
+    /* disk storage interfaces */
+    ATARIHW_DECLARE(TT_SCSI);		/* Directly mapped NCR5380 */
+    ATARIHW_DECLARE(ST_SCSI);		/* NCR5380 via ST-DMA (Falcon) */
+    ATARIHW_DECLARE(ACSI);		/* Standard ACSI like in STs */
+    ATARIHW_DECLARE(IDE);		/* IDE Interface */
+    ATARIHW_DECLARE(FDCSPEED);		/* 8/16 MHz switch for FDC */
+    /* other I/O hardware */
+    ATARIHW_DECLARE(ST_MFP);		/* The ST-MFP (there should be no Atari
+					   without it... but who knows?) */
+    ATARIHW_DECLARE(TT_MFP);		/* 2nd MFP */
+    ATARIHW_DECLARE(SCC);		/* Serial Communications Contr. */
+    ATARIHW_DECLARE(ST_ESCC);		/* SCC Z83230 in an ST */
+    ATARIHW_DECLARE(ANALOG_JOY);	/* Paddle Interface for STe
+					   and Falcon */
+    ATARIHW_DECLARE(MICROWIRE);		/* Microwire Interface */
+    /* DMA */
+    ATARIHW_DECLARE(STND_DMA);		/* 24 Bit limited ST-DMA */
+    ATARIHW_DECLARE(EXTD_DMA);		/* 32 Bit ST-DMA */
+    ATARIHW_DECLARE(SCSI_DMA);		/* DMA for the NCR5380 */
+    ATARIHW_DECLARE(SCC_DMA);		/* DMA for the SCC */
+    /* real time clocks */
+    ATARIHW_DECLARE(TT_CLK);		/* TT compatible clock chip */
+    ATARIHW_DECLARE(MSTE_CLK);		/* Mega ST(E) clock chip */
+    /* supporting hardware */
+    ATARIHW_DECLARE(SCU);		/* System Control Unit */
+    ATARIHW_DECLARE(BLITTER);		/* Blitter */
+    ATARIHW_DECLARE(VME);		/* VME Bus */
+    ATARIHW_DECLARE(DSP56K);		/* DSP56k processor in Falcon */
+};
+
+extern struct atari_hw_present atari_hw_present;
+
+
+/* Reading the MFP port register gives a machine independent delay, since the
+ * MFP always has a 8 MHz clock. This avoids problems with the varying length
+ * of nops on various machines. Somebody claimed that the tstb takes 600 ns.
+ */
+#define	MFPDELAY() \
+	__asm__ __volatile__ ( "tstb %0" : : "m" (mfp.par_dt_reg) : "cc" );
+
+/* Do cache push/invalidate for DMA read/write. This function obeys the
+ * snooping on some machines (Medusa) and processors: The Medusa itself can
+ * snoop, but only the '040 can source data from its cache to DMA writes i.e.,
+ * reads from memory). Both '040 and '060 invalidate cache entries on snooped
+ * DMA reads (i.e., writes to memory).
+ */
+
+#include <linux/mm.h>
+#include <asm/pgtable.h>
+
+static inline void dma_cache_maintenance( unsigned long paddr,
+					  unsigned long len,
+					  int writeflag )
+
+{
+	if (writeflag) {
+		if (!MACH_IS_MEDUSA || CPU_IS_060)
+			cache_push( paddr, len );
+	}
+	else {
+		if (!MACH_IS_MEDUSA)
+			cache_clear( paddr, len );
+	}
+}
+
+
+/* 
+** Shifter  
+ */
+#define ST_LOW  0
+#define ST_MID  1
+#define ST_HIGH 2
+#define TT_LOW  7
+#define TT_MID  4
+#define TT_HIGH 6
+
+#define SHF_BAS (0xffff8200)    
+struct SHIFTER 
+ {
+ 	u_char pad1;
+	u_char bas_hi;
+	u_char pad2;
+	u_char bas_md;
+	u_char pad3;
+	u_char volatile vcounthi;
+ 	u_char pad4;
+ 	u_char volatile vcountmid;
+ 	u_char pad5;
+ 	u_char volatile vcountlow;
+ 	u_char volatile syncmode;
+ 	u_char pad6;
+ 	u_char pad7; 
+	u_char bas_lo;
+ };
+# define shifter ((*(volatile struct SHIFTER *)SHF_BAS))
+
+#define SHF_FBAS (0xffff820e)
+struct SHIFTER_F030
+ {
+  u_short off_next;
+  u_short scn_width;
+ };                             
+# define shifter_f030 ((*(volatile struct SHIFTER_F030 *)SHF_FBAS))
+
+
+#define	SHF_TBAS (0xffff8200)
+struct SHIFTER_TT {
+	u_char	char_dummy0;
+	u_char	bas_hi;			/* video mem base addr, high and mid byte */
+	u_char	char_dummy1;
+	u_char	bas_md;
+	u_char	char_dummy2;
+	u_char	vcount_hi;		/* pointer to currently displayed byte */
+	u_char	char_dummy3;
+	u_char	vcount_md;
+	u_char	char_dummy4;
+	u_char	vcount_lo;
+	u_short	st_sync;		/* ST compatible sync mode register, unused */
+	u_char	char_dummy5;
+	u_char	bas_lo;			/* video mem addr, low byte */
+	u_char	char_dummy6[2+3*16];
+	/* $ffff8240: */
+	u_short	color_reg[16];	/* 16 color registers */
+	u_char	st_shiftmode;	/* ST compatible shift mode register, unused */
+	u_char  char_dummy7;
+	u_short tt_shiftmode;	/* TT shift mode register */
+
+
+};
+#define	shifter_tt	((*(volatile struct SHIFTER_TT *)SHF_TBAS))
+
+/* values for shifter_tt->tt_shiftmode */
+#define	TT_SHIFTER_STLOW		0x0000
+#define	TT_SHIFTER_STMID		0x0100
+#define	TT_SHIFTER_STHIGH		0x0200
+#define	TT_SHIFTER_TTLOW		0x0700
+#define	TT_SHIFTER_TTMID		0x0400
+#define	TT_SHIFTER_TTHIGH		0x0600
+#define	TT_SHIFTER_MODEMASK	0x0700
+#define TT_SHIFTER_NUMMODE	0x0008
+#define	TT_SHIFTER_PALETTE_MASK	0x000f
+#define	TT_SHIFTER_GRAYMODE		0x1000
+
+/* 256 TT palette registers */
+#define	TT_PALETTE_BASE	(0xffff8400)
+#define	tt_palette	((volatile u_short *)TT_PALETTE_BASE)
+
+#define	TT_PALETTE_RED_MASK		0x0f00
+#define	TT_PALETTE_GREEN_MASK	0x00f0
+#define	TT_PALETTE_BLUE_MASK	0x000f
+
+/*
+** Falcon030 VIDEL Video Controller
+** for description see File 'linux\tools\atari\hardware.txt
+ */
+#define f030_col ((u_long *)		0xffff9800)
+#define f030_xreg ((u_short*)		0xffff8282)
+#define f030_yreg ((u_short*)		0xffff82a2)
+#define f030_creg ((u_short*)		0xffff82c0)
+#define f030_sreg ((u_short*)		0xffff8260)
+#define f030_mreg ((u_short*)		0xffff820a)
+#define f030_linewidth ((u_short*)      0xffff820e)
+#define f030_hscroll ((u_char*)		0xffff8265)
+
+#define VIDEL_BAS (0xffff8260)
+struct VIDEL {
+	u_short st_shift;
+	u_short pad1;
+	u_char  xoffset_s;
+	u_char  xoffset;
+	u_short f_shift;
+	u_char  pad2[0x1a];
+	u_short hht;
+	u_short hbb;
+	u_short hbe;
+	u_short hdb;
+	u_short hde;
+	u_short hss;
+	u_char  pad3[0x14];
+	u_short vft;
+	u_short vbb;
+	u_short vbe;
+	u_short vdb;
+	u_short vde;
+	u_short vss;
+	u_char  pad4[0x12];
+	u_short control;
+	u_short mode;
+};
+#define	videl	((*(volatile struct VIDEL *)VIDEL_BAS))
+
+/*
+** DMA/WD1772 Disk Controller
+ */                          
+ 
+#define FWD_BAS (0xffff8604)  
+struct DMA_WD
+ {
+  u_short fdc_acces_seccount;
+  u_short dma_mode_status;
+  u_char dma_vhi;	/* Some extended ST-DMAs can handle 32 bit addresses */
+  u_char dma_hi;
+  u_char char_dummy2;
+  u_char dma_md;
+  u_char char_dummy3;
+  u_char dma_lo;
+  u_short fdc_speed;
+ };
+# define dma_wd ((*(volatile struct DMA_WD *)FWD_BAS))
+/* alias */
+#define	st_dma dma_wd
+/* The two highest bytes of an extended DMA as a short; this is a must
+ * for the Medusa.
+ */
+#define st_dma_ext_dmahi (*((volatile unsigned short *)0xffff8608))
+
+/*
+** YM2149 Sound Chip
+** access in bytes
+ */
+
+#define YM_BAS (0xffff8800)
+struct SOUND_YM
+ {
+  u_char rd_data_reg_sel;
+  u_char char_dummy1;
+  u_char wd_data;
+ };
+#define sound_ym ((*(volatile struct SOUND_YM *)YM_BAS))
+
+/* TT SCSI DMA */
+
+#define	TT_SCSI_DMA_BAS	(0xffff8700)
+struct TT_DMA {
+	u_char	char_dummy0;
+	u_char	dma_addr_hi;
+	u_char	char_dummy1;
+	u_char	dma_addr_hmd;
+	u_char	char_dummy2;
+	u_char	dma_addr_lmd;
+	u_char	char_dummy3;
+	u_char	dma_addr_lo;
+	u_char	char_dummy4;
+	u_char	dma_cnt_hi;
+	u_char	char_dummy5;
+	u_char	dma_cnt_hmd;
+	u_char	char_dummy6;
+	u_char	dma_cnt_lmd;
+	u_char	char_dummy7;
+	u_char	dma_cnt_lo;
+	u_long	dma_restdata;
+	u_short	dma_ctrl;
+};
+#define	tt_scsi_dma	((*(volatile struct TT_DMA *)TT_SCSI_DMA_BAS))
+
+/* TT SCSI Controller 5380 */
+
+#define	TT_5380_BAS	(0xffff8781)
+struct TT_5380 {
+	u_char	scsi_data;
+	u_char	char_dummy1;
+	u_char	scsi_icr;
+	u_char	char_dummy2;
+	u_char	scsi_mode;
+	u_char	char_dummy3;
+	u_char	scsi_tcr;
+	u_char	char_dummy4;
+	u_char	scsi_idstat;
+	u_char	char_dummy5;
+	u_char	scsi_dmastat;
+	u_char	char_dummy6;
+	u_char	scsi_targrcv;
+	u_char	char_dummy7;
+	u_char	scsi_inircv;
+};
+#define	tt_scsi			((*(volatile struct TT_5380 *)TT_5380_BAS))
+#define	tt_scsi_regp	((volatile char *)TT_5380_BAS)
+
+
+/* 
+** Falcon DMA Sound Subsystem
+ */     
+
+#define MATRIX_BASE (0xffff8930)
+struct MATRIX
+{
+  u_short source;
+  u_short destination;
+  u_char external_frequency_divider;
+  u_char internal_frequency_divider;
+};
+#define matrix (*(volatile struct MATRIX *)MATRIX_BASE)
+
+#define CODEC_BASE (0xffff8936)
+struct CODEC
+{
+  u_char tracks;
+  u_char input_source;
+#define CODEC_SOURCE_ADC        1
+#define CODEC_SOURCE_MATRIX     2
+  u_char adc_source;
+#define ADC_SOURCE_RIGHT_PSG    1
+#define ADC_SOURCE_LEFT_PSG     2
+  u_char gain;
+#define CODEC_GAIN_RIGHT        0x0f
+#define CODEC_GAIN_LEFT         0xf0
+  u_char attenuation;
+#define CODEC_ATTENUATION_RIGHT 0x0f
+#define CODEC_ATTENUATION_LEFT  0xf0
+  u_char unused1;
+  u_char status;
+#define CODEC_OVERFLOW_RIGHT    1
+#define CODEC_OVERFLOW_LEFT     2
+  u_char unused2, unused3, unused4, unused5;
+  u_char gpio_directions;
+#define GPIO_IN                 0
+#define GPIO_OUT                1
+  u_char unused6;
+  u_char gpio_data;
+};
+#define codec (*(volatile struct CODEC *)CODEC_BASE)
+
+/*
+** Falcon Blitter
+*/
+
+#define BLT_BAS (0xffff8a00)
+
+struct BLITTER
+ {
+  u_short halftone[16];
+  u_short src_x_inc;
+  u_short src_y_inc;
+  u_long src_address;
+  u_short endmask1;  
+  u_short endmask2;  
+  u_short endmask3;
+  u_short dst_x_inc;
+  u_short dst_y_inc;
+  u_long dst_address;
+  u_short wd_per_line;
+  u_short ln_per_bb;
+  u_short hlf_op_reg;
+  u_short log_op_reg;
+  u_short lin_nm_reg;
+  u_short skew_reg;  
+ };
+# define blitter ((*(volatile struct BLITTER *)BLT_BAS))
+
+
+/*
+** SCC Z8530
+ */
+ 
+#define SCC_BAS (0xffff8c81)
+struct SCC
+ {
+  u_char cha_a_ctrl;
+  u_char char_dummy1;
+  u_char cha_a_data;
+  u_char char_dummy2;
+  u_char cha_b_ctrl;
+  u_char char_dummy3;
+  u_char cha_b_data;
+ };
+# define scc ((*(volatile struct SCC*)SCC_BAS))
+
+/* The ESCC (Z85230) in an Atari ST. The channels are reversed! */
+# define st_escc ((*(volatile struct SCC*)0xfffffa31))
+# define st_escc_dsr ((*(volatile char *)0xfffffa39))
+
+/* TT SCC DMA Controller (same chip as SCSI DMA) */
+
+#define	TT_SCC_DMA_BAS	(0xffff8c00)
+#define	tt_scc_dma	((*(volatile struct TT_DMA *)TT_SCC_DMA_BAS))
+
+/*
+** VIDEL Palette Register 
+ */
+
+#define FPL_BAS (0xffff9800)
+struct VIDEL_PALETTE
+ {
+  u_long reg[256];
+ };
+# define videl_palette ((*(volatile struct VIDEL_PALETTE*)FPL_BAS))
+
+
+/*
+** Falcon DSP Host Interface
+ */
+
+#define DSP56K_HOST_INTERFACE_BASE (0xffffa200)
+struct DSP56K_HOST_INTERFACE {
+  u_char icr;
+#define DSP56K_ICR_RREQ	0x01
+#define DSP56K_ICR_TREQ	0x02
+#define DSP56K_ICR_HF0	0x08
+#define DSP56K_ICR_HF1	0x10
+#define DSP56K_ICR_HM0	0x20
+#define DSP56K_ICR_HM1	0x40
+#define DSP56K_ICR_INIT	0x80
+  
+  u_char cvr;
+#define DSP56K_CVR_HV_MASK 0x1f
+#define DSP56K_CVR_HC	0x80
+
+  u_char isr;
+#define DSP56K_ISR_RXDF	0x01
+#define DSP56K_ISR_TXDE	0x02
+#define DSP56K_ISR_TRDY	0x04
+#define DSP56K_ISR_HF2	0x08
+#define DSP56K_ISR_HF3	0x10
+#define DSP56K_ISR_DMA	0x40
+#define DSP56K_ISR_HREQ	0x80
+  
+  u_char ivr;
+
+  union {
+    u_char b[4];
+    u_short w[2];
+    u_long l;
+  } data;
+};
+#define dsp56k_host_interface ((*(volatile struct DSP56K_HOST_INTERFACE *)DSP56K_HOST_INTERFACE_BASE))
+ 
+/*
+** MFP 68901
+ */
+ 
+#define MFP_BAS (0xfffffa01)
+struct MFP
+ {
+  u_char par_dt_reg;
+  u_char char_dummy1;
+  u_char active_edge;
+  u_char char_dummy2;
+  u_char data_dir;
+  u_char char_dummy3;
+  u_char int_en_a;
+  u_char char_dummy4;
+  u_char int_en_b;
+  u_char char_dummy5;
+  u_char int_pn_a;
+  u_char char_dummy6;
+  u_char int_pn_b;
+  u_char char_dummy7;
+  u_char int_sv_a;
+  u_char char_dummy8;
+  u_char int_sv_b;
+  u_char char_dummy9;
+  u_char int_mk_a;
+  u_char char_dummy10;
+  u_char int_mk_b;
+  u_char char_dummy11;
+  u_char vec_adr;
+  u_char char_dummy12;
+  u_char tim_ct_a;
+  u_char char_dummy13;
+  u_char tim_ct_b;
+  u_char char_dummy14;
+  u_char tim_ct_cd;
+  u_char char_dummy15;
+  u_char tim_dt_a;
+  u_char char_dummy16;
+  u_char tim_dt_b;
+  u_char char_dummy17;
+  u_char tim_dt_c;
+  u_char char_dummy18;
+  u_char tim_dt_d;
+  u_char char_dummy19;
+  u_char sync_char;
+  u_char char_dummy20;
+  u_char usart_ctr;
+  u_char char_dummy21;
+  u_char rcv_stat;
+  u_char char_dummy22;
+  u_char trn_stat;
+  u_char char_dummy23;
+  u_char usart_dta;
+ };
+# define mfp ((*(volatile struct MFP*)MFP_BAS))
+
+/* TT's second MFP */
+
+#define	TT_MFP_BAS	(0xfffffa81)
+# define tt_mfp ((*(volatile struct MFP*)TT_MFP_BAS))
+
+
+/* TT System Control Unit */
+
+#define	TT_SCU_BAS	(0xffff8e01)
+struct TT_SCU {
+	u_char	sys_mask;
+	u_char	char_dummy1;
+	u_char	sys_stat;
+	u_char	char_dummy2;
+	u_char	softint;
+	u_char	char_dummy3;
+	u_char	vmeint;
+	u_char	char_dummy4;
+	u_char	gp_reg1;
+	u_char	char_dummy5;
+	u_char	gp_reg2;
+	u_char	char_dummy6;
+	u_char	vme_mask;
+	u_char	char_dummy7;
+	u_char	vme_stat;
+};
+#define	tt_scu	((*(volatile struct TT_SCU *)TT_SCU_BAS))
+
+/* TT real time clock */
+
+#define	TT_RTC_BAS	(0xffff8961)
+struct TT_RTC {
+	u_char	regsel;
+	u_char	dummy;
+	u_char	data;
+};
+#define	tt_rtc	((*(volatile struct TT_RTC *)TT_RTC_BAS))
+
+
+/*
+** ACIA 6850
+ */
+/* constants for the ACIA registers */
+
+/* baudrate selection and reset (Baudrate = clock/factor) */
+#define ACIA_DIV1  0
+#define ACIA_DIV16 1
+#define ACIA_DIV64 2
+#define ACIA_RESET 3
+
+/* character format */
+#define ACIA_D7E2S (0<<2)	/* 7 data, even parity, 2 stop */
+#define ACIA_D7O2S (1<<2)	/* 7 data, odd parity, 2 stop */
+#define ACIA_D7E1S (2<<2)	/* 7 data, even parity, 1 stop */
+#define ACIA_D7O1S (3<<2)	/* 7 data, odd parity, 1 stop */
+#define ACIA_D8N2S (4<<2)	/* 8 data, no parity, 2 stop */
+#define ACIA_D8N1S (5<<2)	/* 8 data, no parity, 1 stop */
+#define ACIA_D8E1S (6<<2)	/* 8 data, even parity, 1 stop */
+#define ACIA_D8O1S (7<<2)	/* 8 data, odd parity, 1 stop */
+
+/* transmit control */
+#define ACIA_RLTID (0<<5)	/* RTS low, TxINT disabled */
+#define ACIA_RLTIE (1<<5)	/* RTS low, TxINT enabled */
+#define ACIA_RHTID (2<<5)	/* RTS high, TxINT disabled */
+#define ACIA_RLTIDSB (3<<5)	/* RTS low, TxINT disabled, send break */
+
+/* receive control */
+#define ACIA_RID (0<<7)		/* RxINT disabled */
+#define ACIA_RIE (1<<7)		/* RxINT enabled */
+
+/* status fields of the ACIA */
+#define ACIA_RDRF 1		/* Receive Data Register Full */
+#define ACIA_TDRE (1<<1)	/* Transmit Data Register Empty */
+#define ACIA_DCD  (1<<2)	/* Data Carrier Detect */
+#define ACIA_CTS  (1<<3)	/* Clear To Send */
+#define ACIA_FE   (1<<4)	/* Framing Error */
+#define ACIA_OVRN (1<<5)	/* Receiver Overrun */
+#define ACIA_PE   (1<<6)	/* Parity Error */
+#define ACIA_IRQ  (1<<7)	/* Interrupt Request */
+
+#define ACIA_BAS (0xfffffc00)
+struct ACIA 
+ {
+  u_char key_ctrl;
+  u_char char_dummy1;
+  u_char key_data;
+  u_char char_dummy2;
+  u_char mid_ctrl;
+  u_char char_dummy3;
+  u_char mid_data;
+ };
+# define acia ((*(volatile struct ACIA*)ACIA_BAS))
+
+#define	TT_DMASND_BAS (0xffff8900)
+struct TT_DMASND {
+	u_char	int_ctrl;	/* Falcon: Interrupt control */
+	u_char	ctrl;
+	u_char	pad2;
+	u_char	bas_hi;
+	u_char	pad3;
+	u_char	bas_mid;
+	u_char	pad4;
+	u_char	bas_low;
+	u_char	pad5;
+	u_char	addr_hi;
+	u_char	pad6;
+	u_char	addr_mid;
+	u_char	pad7;
+	u_char	addr_low;
+	u_char	pad8;
+	u_char	end_hi;
+	u_char	pad9;
+	u_char	end_mid;
+	u_char	pad10;
+	u_char	end_low;
+	u_char	pad11[12];
+	u_char	track_select;	/* Falcon */
+	u_char	mode;
+ 	u_char	pad12[14];
+ 	/* Falcon only: */
+ 	u_short	cbar_src;
+ 	u_short cbar_dst;
+ 	u_char	ext_div;
+ 	u_char	int_div;
+ 	u_char	rec_track_select;
+ 	u_char	dac_src;
+ 	u_char	adc_src;
+ 	u_char	input_gain;
+ 	u_short	output_atten;
+};
+# define tt_dmasnd ((*(volatile struct TT_DMASND *)TT_DMASND_BAS))
+
+#define DMASND_MFP_INT_REPLAY     0x01
+#define DMASND_MFP_INT_RECORD     0x02
+#define DMASND_TIMERA_INT_REPLAY  0x04
+#define DMASND_TIMERA_INT_RECORD  0x08
+
+#define	DMASND_CTRL_OFF		  0x00
+#define	DMASND_CTRL_ON		  0x01
+#define	DMASND_CTRL_REPEAT	  0x02
+#define DMASND_CTRL_RECORD_ON     0x10
+#define DMASND_CTRL_RECORD_OFF    0x00
+#define DMASND_CTRL_RECORD_REPEAT 0x20
+#define DMASND_CTRL_SELECT_REPLAY 0x00
+#define DMASND_CTRL_SELECT_RECORD 0x80
+#define	DMASND_MODE_MONO	  0x80
+#define	DMASND_MODE_STEREO	  0x00
+#define DMASND_MODE_8BIT	  0x00
+#define DMASND_MODE_16BIT	  0x40	/* Falcon only */
+#define	DMASND_MODE_6KHZ	  0x00	/* Falcon: mute */
+#define	DMASND_MODE_12KHZ	  0x01
+#define	DMASND_MODE_25KHZ	  0x02
+#define	DMASND_MODE_50KHZ	  0x03
+ 
+
+#define DMASNDSetBase(bufstart)						\
+    do {								\
+	tt_dmasnd.bas_hi  = (unsigned char)(((bufstart) & 0xff0000) >> 16); \
+	tt_dmasnd.bas_mid = (unsigned char)(((bufstart) & 0x00ff00) >> 8); \
+	tt_dmasnd.bas_low = (unsigned char) ((bufstart) & 0x0000ff); \
+    } while( 0 )
+
+#define DMASNDGetAdr() ((tt_dmasnd.addr_hi << 16) +	\
+			(tt_dmasnd.addr_mid << 8) +	\
+			(tt_dmasnd.addr_low))
+
+#define DMASNDSetEnd(bufend)				\
+    do {						\
+	tt_dmasnd.end_hi  = (unsigned char)(((bufend) & 0xff0000) >> 16); \
+	tt_dmasnd.end_mid = (unsigned char)(((bufend) & 0x00ff00) >> 8); \
+	tt_dmasnd.end_low = (unsigned char) ((bufend) & 0x0000ff); \
+    } while( 0 )
+
+
+#define	TT_MICROWIRE_BAS	(0xffff8922)
+struct TT_MICROWIRE {
+	u_short	data;
+	u_short	mask;
+};
+# define tt_microwire ((*(volatile struct TT_MICROWIRE *)TT_MICROWIRE_BAS))
+
+#define	MW_LM1992_ADDR		0x0400
+
+#define	MW_LM1992_VOLUME(dB)	\
+    (0x0c0 | ((dB) < -80 ? 0 : (dB) > 0 ? 40 : (((dB) + 80) / 2)))
+#define	MW_LM1992_BALLEFT(dB)	\
+    (0x140 | ((dB) < -40 ? 0 : (dB) > 0 ? 20 : (((dB) + 40) / 2)))
+#define	MW_LM1992_BALRIGHT(dB)	\
+    (0x100 | ((dB) < -40 ? 0 : (dB) > 0 ? 20 : (((dB) + 40) / 2)))
+#define	MW_LM1992_TREBLE(dB)	\
+    (0x080 | ((dB) < -12 ? 0 : (dB) > 12 ? 12 : (((dB) / 2) + 6)))
+#define	MW_LM1992_BASS(dB)	\
+    (0x040 | ((dB) < -12 ? 0 : (dB) > 12 ? 12 : (((dB) / 2) + 6)))
+
+#define	MW_LM1992_PSG_LOW	0x000
+#define	MW_LM1992_PSG_HIGH	0x001
+#define	MW_LM1992_PSG_OFF	0x002
+
+#define MSTE_RTC_BAS	(0xfffffc21)
+
+struct MSTE_RTC {
+	u_char sec_ones;
+	u_char dummy1;
+	u_char sec_tens;
+	u_char dummy2;
+	u_char min_ones;
+	u_char dummy3;
+	u_char min_tens;
+	u_char dummy4;
+	u_char hr_ones;
+	u_char dummy5;
+	u_char hr_tens;
+	u_char dummy6;
+	u_char weekday;
+	u_char dummy7;
+	u_char day_ones;
+	u_char dummy8;
+	u_char day_tens;
+	u_char dummy9;
+	u_char mon_ones;
+	u_char dummy10;
+	u_char mon_tens;
+	u_char dummy11;
+	u_char year_ones;
+	u_char dummy12;
+	u_char year_tens;
+	u_char dummy13;
+	u_char mode;
+	u_char dummy14;
+	u_char test;
+	u_char dummy15;
+	u_char reset;
+};
+
+#define mste_rtc ((*(volatile struct MSTE_RTC *)MSTE_RTC_BAS))
+
+#endif /* linux/atarihw.h */
+
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/ints.h linux-2.1.79/include/asm-m68k/atari/ints.h
--- linux-2.1.79.orig/include/asm-m68k/atari/ints.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/ints.h	Thu Jan 15 01:49:58 1998
@@ -0,0 +1,215 @@
+/*
+** atariints.h -- Atari Linux interrupt handling structs and prototypes
+**
+** Copyright 1994 by Bj”rn Brauel
+**
+** 5/2/94 Roman Hodek:
+**   TT interrupt definitions added.
+**
+** 12/02/96: (Roman)
+**   Adapted to new int handling scheme (see ataints.c); revised numbering
+**
+** 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 _LINUX_ATARIINTS_H_
+#define _LINUX_ATARIINTS_H_
+
+#include <asm/irq.h>
+#include <asm/atari/hardware.h>
+
+/*
+** Atari Interrupt sources.
+**
+*/
+
+#define STMFP_SOURCE_BASE  8
+#define TTMFP_SOURCE_BASE  24
+#define SCC_SOURCE_BASE    40
+#define VME_SOURCE_BASE    56
+#define VME_MAX_SOURCES    16
+
+#define NUM_ATARI_SOURCES   (VME_SOURCE_BASE+VME_MAX_SOURCES-STMFP_SOURCE_BASE)
+
+/* convert vector number to int source number */
+#define IRQ_VECTOR_TO_SOURCE(v)	((v) - ((v) < 0x20 ? 0x18 : (0x40-8)))
+
+/* convert irq_handler index to vector number */
+#define IRQ_SOURCE_TO_VECTOR(i)	((i) + ((i) < 8 ? 0x18 : (0x40-8)))
+
+/* interrupt service types */
+#define IRQ_TYPE_SLOW     0
+#define IRQ_TYPE_FAST     1
+#define IRQ_TYPE_PRIO     2
+
+#define	IRQ_SPURIOUS      (0)
+
+/* auto-vector interrupts */
+#define IRQ_AUTO_1        (1)
+#define IRQ_AUTO_2        (2)
+#define IRQ_AUTO_3        (3)
+#define IRQ_AUTO_4        (4)
+#define IRQ_AUTO_5        (5)
+#define IRQ_AUTO_6        (6)
+#define IRQ_AUTO_7        (7)
+
+/* ST-MFP interrupts */
+#define IRQ_MFP_BUSY      (8)
+#define IRQ_MFP_DCD       (9)
+#define IRQ_MFP_CTS  	  (10)
+#define IRQ_MFP_GPU 	  (11)
+#define IRQ_MFP_TIMD      (12)
+#define IRQ_MFP_TIMC	  (13)
+#define IRQ_MFP_ACIA	  (14)
+#define IRQ_MFP_FDC       (15)
+#define IRQ_MFP_ACSI      IRQ_MFP_FDC
+#define IRQ_MFP_FSCSI     IRQ_MFP_FDC
+#define IRQ_MFP_IDE       IRQ_MFP_FDC
+#define IRQ_MFP_TIMB      (16)
+#define IRQ_MFP_SERERR    (17)
+#define IRQ_MFP_SEREMPT   (18)
+#define IRQ_MFP_RECERR    (19)
+#define IRQ_MFP_RECFULL   (20)
+#define IRQ_MFP_TIMA      (21)
+#define IRQ_MFP_RI        (22)
+#define IRQ_MFP_MMD       (23)
+
+/* TT-MFP interrupts */
+#define IRQ_TT_MFP_IO0       (24)
+#define IRQ_TT_MFP_IO1       (25)
+#define IRQ_TT_MFP_SCC	     (26)
+#define IRQ_TT_MFP_RI 	     (27)
+#define IRQ_TT_MFP_TIMD      (28)
+#define IRQ_TT_MFP_TIMC	     (29)
+#define IRQ_TT_MFP_DRVRDY    (30)
+#define IRQ_TT_MFP_SCSIDMA   (31)
+#define IRQ_TT_MFP_TIMB      (32)
+#define IRQ_TT_MFP_SERERR    (33)
+#define IRQ_TT_MFP_SEREMPT   (34)
+#define IRQ_TT_MFP_RECERR    (35)
+#define IRQ_TT_MFP_RECFULL   (36)
+#define IRQ_TT_MFP_TIMA      (37)
+#define IRQ_TT_MFP_RTC       (38)
+#define IRQ_TT_MFP_SCSI      (39)
+
+/* SCC interrupts */
+#define IRQ_SCCB_TX	     (40)
+#define IRQ_SCCB_STAT	     (42)
+#define IRQ_SCCB_RX	     (44)
+#define IRQ_SCCB_SPCOND	     (46)
+#define IRQ_SCCA_TX	     (48)
+#define IRQ_SCCA_STAT	     (50)
+#define IRQ_SCCA_RX	     (52)
+#define IRQ_SCCA_SPCOND	     (54)
+
+
+#define INT_CLK   24576	    /* CLK while int_clk =2.456MHz and divide = 100 */
+#define INT_TICKS 246	    /* to make sched_time = 99.902... HZ */
+
+
+#define MFP_ENABLE	0
+#define MFP_PENDING	1
+#define MFP_SERVICE	2
+#define MFP_MASK	3
+
+/* Utility functions for setting/clearing bits in the interrupt registers of
+ * the MFP. 'type' should be constant, if 'irq' is constant, too, code size is
+ * reduced. set_mfp_bit() is nonsense for PENDING and SERVICE registers. */
+
+static inline int get_mfp_bit( unsigned irq, int type )
+
+{	unsigned char	mask, *reg;
+	
+	mask = 1 << (irq & 7);
+	reg = (unsigned char *)&mfp.int_en_a + type*4 +
+		  ((irq & 8) >> 2) + (((irq-8) & 16) << 3);
+	return( *reg & mask );
+}
+
+static inline void set_mfp_bit( unsigned irq, int type )
+
+{	unsigned char	mask, *reg;
+	
+	mask = 1 << (irq & 7);
+	reg = (unsigned char *)&mfp.int_en_a + type*4 +
+		  ((irq & 8) >> 2) + (((irq-8) & 16) << 3);
+	__asm__ __volatile__ ( "orb %0,%1"
+			      : : "di" (mask), "m" (*reg) : "memory" );
+}
+
+static inline void clear_mfp_bit( unsigned irq, int type )
+
+{	unsigned char	mask, *reg;
+	
+	mask = ~(1 << (irq & 7));
+	reg = (unsigned char *)&mfp.int_en_a + type*4 +
+		  ((irq & 8) >> 2) + (((irq-8) & 16) << 3);
+	if (type == MFP_PENDING || type == MFP_SERVICE)
+		__asm__ __volatile__ ( "moveb %0,%1"
+				      : : "di" (mask), "m" (*reg) : "memory" );
+	else
+		__asm__ __volatile__ ( "andb %0,%1"
+				      : : "di" (mask), "m" (*reg) : "memory" );
+}
+
+/*
+ * {en,dis}able_irq have the usual semantics of temporary blocking the
+ * interrupt, but not loosing requests that happen between disabling and
+ * enabling. This is done with the MFP mask registers.
+ */
+
+static inline void atari_enable_irq( unsigned irq )
+
+{
+	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return;
+	set_mfp_bit( irq, MFP_MASK );
+}
+
+static inline void atari_disable_irq( unsigned irq )
+
+{
+	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return;
+	clear_mfp_bit( irq, MFP_MASK );
+}
+
+/*
+ * In opposite to {en,dis}able_irq, requests between turn{off,on}_irq are not
+ * "stored"
+ */
+
+extern inline void atari_turnon_irq( unsigned irq )
+
+{
+	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return;
+	set_mfp_bit( irq, MFP_ENABLE );
+}
+
+extern inline void atari_turnoff_irq( unsigned irq )
+
+{
+	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return;
+	clear_mfp_bit( irq, MFP_ENABLE );
+	clear_mfp_bit( irq, MFP_PENDING );
+}
+
+extern inline void atari_clear_pending_irq( unsigned irq )
+
+{
+	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return;
+	clear_mfp_bit( irq, MFP_PENDING );
+}
+
+extern inline int atari_irq_pending( unsigned irq )
+
+{
+	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return( 0 );
+	return( get_mfp_bit( irq, MFP_PENDING ) );
+}
+
+unsigned long atari_register_vme_int( void );
+void atari_unregister_vme_int( unsigned long );
+
+#endif /* linux/atariints.h */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/joystick.h linux-2.1.79/include/asm-m68k/atari/joystick.h
--- linux-2.1.79.orig/include/asm-m68k/atari/joystick.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/joystick.h	Wed Apr 24 18:17:15 1996
@@ -0,0 +1,22 @@
+#ifndef _LINUX_ATARI_JOYSTICK_H
+#define _LINUX_ATARI_JOYSTICK_H
+
+/*
+ * linux/include/linux/atari_joystick.h
+ * header file for Atari Joystick driver
+ * by Robert de Vries (robert@and.nl) on 19Jul93
+ */
+
+void atari_joystick_interrupt(char*);
+int atari_joystick_init(void);
+extern int atari_mouse_buttons;
+
+struct joystick_status {
+	char		fire;
+	char		dir;
+	int		ready;
+	int		active;
+	struct wait_queue *wait;
+};
+
+#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/keyboard.h linux-2.1.79/include/asm-m68k/atari/keyboard.h
--- linux-2.1.79.orig/include/asm-m68k/atari/keyboard.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/keyboard.h	Wed May 22 18:03:20 1996
@@ -0,0 +1,40 @@
+/*
+** atarikb.h -- This header contains the prototypes of functions of
+**              the intelligent keyboard of the Atari needed by the
+**              mouse and joystick drivers.
+**
+** Copyright 1994 by Robert de Vries
+**
+** 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.
+**
+** Created: 20 Feb 1994 by Robert de Vries
+*/
+
+#ifndef _LINUX_ATARIKB_H
+#define _LINUX_ATARIKB_H
+
+void ikbd_write(const char *, int);
+void ikbd_mouse_button_action(int mode);
+void ikbd_mouse_rel_pos(void);
+void ikbd_mouse_abs_pos(int xmax, int ymax);
+void ikbd_mouse_kbd_mode(int dx, int dy);
+void ikbd_mouse_thresh(int x, int y);
+void ikbd_mouse_scale(int x, int y);
+void ikbd_mouse_pos_get(int *x, int *y);
+void ikbd_mouse_pos_set(int x, int y);
+void ikbd_mouse_y0_bot(void);
+void ikbd_mouse_y0_top(void);
+void ikbd_mouse_disable(void);
+void ikbd_joystick_event_on(void);
+void ikbd_joystick_event_off(void);
+void ikbd_joystick_get_state(void);
+void ikbd_joystick_disable(void);
+
+/* Hook for MIDI serial driver */
+extern void (*atari_MIDI_interrupt_hook) (void);
+/* Hook for mouse driver */
+extern void (*atari_mouse_interrupt_hook) (char *);
+
+#endif /* _LINUX_ATARIKB_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/mouse.h linux-2.1.79/include/asm-m68k/atari/mouse.h
--- linux-2.1.79.orig/include/asm-m68k/atari/mouse.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/mouse.h	Wed Apr 24 18:17:15 1996
@@ -0,0 +1,20 @@
+#ifndef _LINUX_ATARI_MOUSE_H
+#define _LINUX_ATARI_MOUSE_H
+
+/*
+ * linux/include/linux/atari_mouse.h
+ * header file for Atari Mouse driver
+ * by Robert de Vries (robert@and.nl) on 19Jul93
+ */
+
+struct mouse_status {
+	char		buttons;
+	short		dx;
+	short		dy;
+	int		ready;
+	int		active;
+	struct wait_queue *wait;
+	struct fasync_struct *fasyncptr;
+};
+
+#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/stdma.h linux-2.1.79/include/asm-m68k/atari/stdma.h
--- linux-2.1.79.orig/include/asm-m68k/atari/stdma.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/stdma.h	Fri Jul 26 17:49:57 1996
@@ -0,0 +1,22 @@
+
+#ifndef _atari_stdma_h
+#define _atari_stdma_h
+
+
+#include <asm/irq.h>
+
+
+/***************************** Prototypes *****************************/
+
+void stdma_lock(void (*handler)(int, void *, struct pt_regs *), void *data); 
+void stdma_release( void );
+int stdma_others_waiting( void );
+int stdma_islocked( void );
+void *stdma_locked_by( void );
+void stdma_init( void );
+
+/************************* End of Prototypes **************************/
+
+
+
+#endif  /* _atari_stdma_h */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari/stram.h linux-2.1.79/include/asm-m68k/atari/stram.h
--- linux-2.1.79.orig/include/asm-m68k/atari/stram.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/atari/stram.h	Wed Dec 17 19:57:07 1997
@@ -0,0 +1,17 @@
+#ifndef _M68K_ATARI_STRAM_H
+#define _M68K_ATARI_STRAM_H
+
+/*
+ * Functions for Atari ST-RAM management
+ */
+
+/* public interface */
+void *atari_stram_alloc( long size, unsigned long *start_mem,
+						 const char *owner );
+void atari_stram_free( void *);
+
+/* functions called internally by other parts of the kernel */
+void atari_stram_init( void);
+void atari_stram_reserve_pages( unsigned long start_mem );
+
+#endif /*_M68K_ATARI_STRAM_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari_SCCserial.h linux-2.1.79/include/asm-m68k/atari_SCCserial.h
--- linux-2.1.79.orig/include/asm-m68k/atari_SCCserial.h	Fri Jan  9 18:15:07 1998
+++ linux-2.1.79/include/asm-m68k/atari_SCCserial.h	Thu Jan  1 01:00:00 1970
@@ -1,64 +0,0 @@
-#ifndef _ATARI_SCCSERIAL_H
-#define _ATARI_SCCSERIAL_H
-
-/* Special configuration ioctls for the Atari SCC5380 Serial
- * Communications Controller
- */
-
-/* ioctl command codes */
-
-#define TIOCGATSCC	0x54c0	/* get SCC configuration */
-#define TIOCSATSCC	0x54c1	/* set SCC configuration */
-#define TIOCDATSCC	0x54c2	/* reset configuration to defaults */
-
-/* Clock sources */
-
-#define CLK_RTxC	0
-#define CLK_TRxC	1
-#define CLK_PCLK	2
-
-/* baud_bases for the common clocks in the Atari. These are the real
- * frequencies divided by 16.
- */
-   
-#define SCC_BAUD_BASE_TIMC	19200	/* 0.3072 MHz from TT-MFP, Timer C */
-#define SCC_BAUD_BASE_BCLK	153600	/* 2.4576 MHz */
-#define SCC_BAUD_BASE_PCLK4	229500	/* 3.6720 MHz */
-#define SCC_BAUD_BASE_PCLK	503374	/* 8.0539763 MHz */
-#define SCC_BAUD_BASE_NONE	0		/* for not connected or unused
-						 * clock sources */
-
-#define SCC_BAUD_BASE_MVME_PCLK	781250	/* 12.5 MHz */
-#define SCC_BAUD_BASE_BVM	460800	/* 7.3728 MHz */
-#define SCC_BAUD_BASE_MVME	625000	/* 10.000 MHz */
-
-/* The SCC configuration structure */
-
-struct atari_SCCserial {
-	unsigned	RTxC_base;	/* base_baud of RTxC */
-	unsigned	TRxC_base;	/* base_baud of TRxC */
-	unsigned	PCLK_base;	/* base_baud of PCLK, for both channels! */
-	struct {
-		unsigned clksrc;	/* CLK_RTxC, CLK_TRxC or CLK_PCLK */
-		unsigned divisor;	/* divisor for base baud, valid values:
-					 * see below */
-	} baud_table[17];		/* For 50, 75, 110, 135, 150, 200, 300,
-					 * 600, 1200, 1800, 2400, 4800, 9600,
-					 * 19200, 38400, 57600 and 115200 bps. The
-					 * last two could be replaced by other
-					 * rates > 38400 if they're not possible.
-					 */
-};
-
-/* The following divisors are valid:
- *
- *   - CLK_RTxC: 1 or even (1, 2 and 4 are the direct modes, > 4 use
- *               the BRG)
- *
- *   - CLK_TRxC: 1, 2 or 4 (no BRG, only direct modes possible)
- *
- *   - CLK_PCLK: >= 4 and even (no direct modes, only BRG)
- *
- */
-
-#endif /* _ATARI_SCCSERIAL_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari_SLM.h linux-2.1.79/include/asm-m68k/atari_SLM.h
--- linux-2.1.79.orig/include/asm-m68k/atari_SLM.h	Fri Sep 27 19:24:49 1996
+++ linux-2.1.79/include/asm-m68k/atari_SLM.h	Thu Jan  1 01:00:00 1970
@@ -1,28 +0,0 @@
-
-#ifndef _ATARI_SLM_H
-#define _ATARI_SLM_H
-
-/* Atari SLM laser printer specific ioctls */
-
-#define	SLMIOGSTAT	0xa100
-#define	SLMIOGPSIZE	0xa101
-#define	SLMIOGMFEED	0xa102
-
-#define	SLMIORESET	0xa140
-
-#define	SLMIOSPSIZE	0xa181
-#define	SLMIOSMFEED	0xa182
-
-/* Status returning structure (SLMIOGSTAT) */
-struct SLM_status {
-	int		stat;		/* numeric status code */
-	char	str[40];	/* status string */
-};
-
-/* Paper size structure (SLMIO[GS]PSIZE) */
-struct SLM_paper_size {
-	int		width;
-	int		height;
-};
-
-#endif /* _ATARI_SLM_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari_acsi.h linux-2.1.79/include/asm-m68k/atari_acsi.h
--- linux-2.1.79.orig/include/asm-m68k/atari_acsi.h	Wed Jul 10 18:14:27 1996
+++ linux-2.1.79/include/asm-m68k/atari_acsi.h	Thu Jan  1 01:00:00 1970
@@ -1,37 +0,0 @@
-#ifndef _ASM_ATARI_ACSI_H
-#define _ASM_ATARI_ACSI_H
-
-/* Functions exported by drivers/block/acsi.c */
-
-void acsi_delay_start( void );
-void acsi_delay_end( long usec );
-int acsi_wait_for_IRQ( unsigned timeout );
-int acsi_wait_for_noIRQ( unsigned timeout );
-int acsicmd_nodma( const char *cmd, int enable);
-int acsi_getstatus( void );
-int acsi_extstatus( char *buffer, int cnt );
-void acsi_end_extstatus( void );
-int acsi_extcmd( unsigned char *buffer, int cnt );
-
-/* The ACSI buffer is guarantueed to reside in ST-RAM and may be used by other
- * drivers that work on the ACSI bus, too. It's data are valid only as long as
- * the ST-DMA is locked. */
-extern char *acsi_buffer;
-extern unsigned long phys_acsi_buffer;
-
-/* Utility macros */
-
-/* Send one data byte over the bus and set mode for next operation
- * with one move.l -- Atari recommends this...
- */
-
-#define DMA_LONG_WRITE(data,mode)							\
-    do {													\
-		*((unsigned long *)&dma_wd.fdc_acces_seccount) = 	\
-			((data)<<16) | (mode);							\
-	} while(0)
-
-#define ENABLE_IRQ()	atari_turnon_irq( IRQ_MFP_ACSI )
-#define DISABLE_IRQ()	atari_turnoff_irq( IRQ_MFP_ACSI )
-
-#endif /* _ASM_ATARI_ACSI_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari_joystick.h linux-2.1.79/include/asm-m68k/atari_joystick.h
--- linux-2.1.79.orig/include/asm-m68k/atari_joystick.h	Wed Apr 24 18:17:15 1996
+++ linux-2.1.79/include/asm-m68k/atari_joystick.h	Thu Jan  1 01:00:00 1970
@@ -1,22 +0,0 @@
-#ifndef _LINUX_ATARI_JOYSTICK_H
-#define _LINUX_ATARI_JOYSTICK_H
-
-/*
- * linux/include/linux/atari_joystick.h
- * header file for Atari Joystick driver
- * by Robert de Vries (robert@and.nl) on 19Jul93
- */
-
-void atari_joystick_interrupt(char*);
-int atari_joystick_init(void);
-extern int atari_mouse_buttons;
-
-struct joystick_status {
-	char		fire;
-	char		dir;
-	int		ready;
-	int		active;
-	struct wait_queue *wait;
-};
-
-#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari_mouse.h linux-2.1.79/include/asm-m68k/atari_mouse.h
--- linux-2.1.79.orig/include/asm-m68k/atari_mouse.h	Wed Apr 24 18:17:15 1996
+++ linux-2.1.79/include/asm-m68k/atari_mouse.h	Thu Jan  1 01:00:00 1970
@@ -1,20 +0,0 @@
-#ifndef _LINUX_ATARI_MOUSE_H
-#define _LINUX_ATARI_MOUSE_H
-
-/*
- * linux/include/linux/atari_mouse.h
- * header file for Atari Mouse driver
- * by Robert de Vries (robert@and.nl) on 19Jul93
- */
-
-struct mouse_status {
-	char		buttons;
-	short		dx;
-	short		dy;
-	int		ready;
-	int		active;
-	struct wait_queue *wait;
-	struct fasync_struct *fasyncptr;
-};
-
-#endif
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari_stdma.h linux-2.1.79/include/asm-m68k/atari_stdma.h
--- linux-2.1.79.orig/include/asm-m68k/atari_stdma.h	Fri Jul 26 17:49:57 1996
+++ linux-2.1.79/include/asm-m68k/atari_stdma.h	Thu Jan  1 01:00:00 1970
@@ -1,22 +0,0 @@
-
-#ifndef _atari_stdma_h
-#define _atari_stdma_h
-
-
-#include <asm/irq.h>
-
-
-/***************************** Prototypes *****************************/
-
-void stdma_lock(void (*handler)(int, void *, struct pt_regs *), void *data); 
-void stdma_release( void );
-int stdma_others_waiting( void );
-int stdma_islocked( void );
-void *stdma_locked_by( void );
-void stdma_init( void );
-
-/************************* End of Prototypes **************************/
-
-
-
-#endif  /* _atari_stdma_h */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atari_stram.h linux-2.1.79/include/asm-m68k/atari_stram.h
--- linux-2.1.79.orig/include/asm-m68k/atari_stram.h	Wed Dec 17 19:57:07 1997
+++ linux-2.1.79/include/asm-m68k/atari_stram.h	Thu Jan  1 01:00:00 1970
@@ -1,17 +0,0 @@
-#ifndef _M68K_ATARI_STRAM_H
-#define _M68K_ATARI_STRAM_H
-
-/*
- * Functions for Atari ST-RAM management
- */
-
-/* public interface */
-void *atari_stram_alloc( long size, unsigned long *start_mem,
-						 const char *owner );
-void atari_stram_free( void *);
-
-/* functions called internally by other parts of the kernel */
-void atari_stram_init( void);
-void atari_stram_reserve_pages( unsigned long start_mem );
-
-#endif /*_M68K_ATARI_STRAM_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atarihw.h linux-2.1.79/include/asm-m68k/atarihw.h
--- linux-2.1.79.orig/include/asm-m68k/atarihw.h	Fri Dec 19 18:39:32 1997
+++ linux-2.1.79/include/asm-m68k/atarihw.h	Thu Jan  1 01:00:00 1970
@@ -1,798 +0,0 @@
-/*
-** linux/atarihw.h -- This header defines some macros and pointers for
-**                    the various Atari custom hardware registers.
-**
-** Copyright 1994 by Bj”rn Brauel
-**
-** 5/1/94 Roman Hodek:
-**   Added definitions for TT specific chips.
-**
-** 1996-09-13 lars brinkhoff <f93labr@dd.chalmers.se>:
-**   Finally added definitions for the matrix/codec and the DSP56001 host
-**   interface.
-**
-** 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 _LINUX_ATARIHW_H_
-#define _LINUX_ATARIHW_H_
-
-#include <linux/types.h>
-#include <asm/bootinfo.h>
-
-extern u_long atari_mch_cookie;
-extern u_long atari_mch_type;
-extern u_long atari_switches;
-extern int atari_rtc_year_offset;
-extern int atari_dont_touch_floppy_select;
-
-/* convenience macros for testing machine type */
-#define MACH_IS_ST	((atari_mch_cookie >> 16) == ATARI_MCH_ST)
-#define MACH_IS_STE	((atari_mch_cookie >> 16) == ATARI_MCH_STE && \
-			 (atari_mch_cookie & 0xffff) == 0)
-#define MACH_IS_MSTE	((atari_mch_cookie >> 16) == ATARI_MCH_STE && \
-			 (atari_mch_cookie & 0xffff) == 0x10)
-#define MACH_IS_TT	((atari_mch_cookie >> 16) == ATARI_MCH_TT)
-#define MACH_IS_FALCON	((atari_mch_cookie >> 16) == ATARI_MCH_FALCON)
-#define MACH_IS_MEDUSA	(atari_mch_type == ATARI_MACH_MEDUSA)
-#define MACH_IS_HADES	(atari_mch_type == ATARI_MACH_HADES)
-#define MACH_IS_AB40	(atari_mch_type == ATARI_MACH_AB40)
-
-/* values for atari_switches */
-#define ATARI_SWITCH_IKBD	0x01
-#define ATARI_SWITCH_MIDI	0x02
-#define ATARI_SWITCH_SND6	0x04
-#define ATARI_SWITCH_SND7	0x08
-#define ATARI_SWITCH_OVSC_SHIFT	16
-#define ATARI_SWITCH_OVSC_IKBD	(ATARI_SWITCH_IKBD << ATARI_SWITCH_OVSC_SHIFT)
-#define ATARI_SWITCH_OVSC_MIDI	(ATARI_SWITCH_MIDI << ATARI_SWITCH_OVSC_SHIFT)
-#define ATARI_SWITCH_OVSC_SND6	(ATARI_SWITCH_SND6 << ATARI_SWITCH_OVSC_SHIFT)
-#define ATARI_SWITCH_OVSC_SND7	(ATARI_SWITCH_SND7 << ATARI_SWITCH_OVSC_SHIFT)
-#define ATARI_SWITCH_OVSC_MASK	0xffff0000
-	
-/*
- * Define several Hardware-Chips for indication so that for the ATARI we do
- * no longer decide whether it is a Falcon or other machine . It's just
- * important what hardware the machine uses
- */
-
-/* ++roman 08/08/95: rewritten from ORing constants to a C bitfield */
-
-#define ATARIHW_DECLARE(name)	unsigned name : 1
-#define ATARIHW_SET(name)	(atari_hw_present.name = 1)
-#define ATARIHW_PRESENT(name)	(atari_hw_present.name)
-
-struct atari_hw_present {
-    /* video hardware */
-    ATARIHW_DECLARE(STND_SHIFTER);	/* ST-Shifter - no base low ! */
-    ATARIHW_DECLARE(EXTD_SHIFTER);	/* STe-Shifter - 24 bit address */
-    ATARIHW_DECLARE(TT_SHIFTER);	/* TT-Shifter */
-    ATARIHW_DECLARE(VIDEL_SHIFTER);	/* Falcon-Shifter */
-    /* sound hardware */
-    ATARIHW_DECLARE(YM_2149);		/* Yamaha YM 2149 */
-    ATARIHW_DECLARE(PCM_8BIT);		/* PCM-Sound in STe-ATARI */
-    ATARIHW_DECLARE(CODEC);		/* CODEC Sound (Falcon) */
-    /* disk storage interfaces */
-    ATARIHW_DECLARE(TT_SCSI);		/* Directly mapped NCR5380 */
-    ATARIHW_DECLARE(ST_SCSI);		/* NCR5380 via ST-DMA (Falcon) */
-    ATARIHW_DECLARE(ACSI);		/* Standard ACSI like in STs */
-    ATARIHW_DECLARE(IDE);		/* IDE Interface */
-    ATARIHW_DECLARE(FDCSPEED);		/* 8/16 MHz switch for FDC */
-    /* other I/O hardware */
-    ATARIHW_DECLARE(ST_MFP);		/* The ST-MFP (there should be no Atari
-					   without it... but who knows?) */
-    ATARIHW_DECLARE(TT_MFP);		/* 2nd MFP */
-    ATARIHW_DECLARE(SCC);		/* Serial Communications Contr. */
-    ATARIHW_DECLARE(ST_ESCC);		/* SCC Z83230 in an ST */
-    ATARIHW_DECLARE(ANALOG_JOY);	/* Paddle Interface for STe
-					   and Falcon */
-    ATARIHW_DECLARE(MICROWIRE);		/* Microwire Interface */
-    /* DMA */
-    ATARIHW_DECLARE(STND_DMA);		/* 24 Bit limited ST-DMA */
-    ATARIHW_DECLARE(EXTD_DMA);		/* 32 Bit ST-DMA */
-    ATARIHW_DECLARE(SCSI_DMA);		/* DMA for the NCR5380 */
-    ATARIHW_DECLARE(SCC_DMA);		/* DMA for the SCC */
-    /* real time clocks */
-    ATARIHW_DECLARE(TT_CLK);		/* TT compatible clock chip */
-    ATARIHW_DECLARE(MSTE_CLK);		/* Mega ST(E) clock chip */
-    /* supporting hardware */
-    ATARIHW_DECLARE(SCU);		/* System Control Unit */
-    ATARIHW_DECLARE(BLITTER);		/* Blitter */
-    ATARIHW_DECLARE(VME);		/* VME Bus */
-    ATARIHW_DECLARE(DSP56K);		/* DSP56k processor in Falcon */
-};
-
-extern struct atari_hw_present atari_hw_present;
-
-
-/* Reading the MFP port register gives a machine independent delay, since the
- * MFP always has a 8 MHz clock. This avoids problems with the varying length
- * of nops on various machines. Somebody claimed that the tstb takes 600 ns.
- */
-#define	MFPDELAY() \
-	__asm__ __volatile__ ( "tstb %0" : : "m" (mfp.par_dt_reg) : "cc" );
-
-/* Do cache push/invalidate for DMA read/write. This function obeys the
- * snooping on some machines (Medusa) and processors: The Medusa itself can
- * snoop, but only the '040 can source data from its cache to DMA writes i.e.,
- * reads from memory). Both '040 and '060 invalidate cache entries on snooped
- * DMA reads (i.e., writes to memory).
- */
-
-#include <linux/mm.h>
-#include <asm/pgtable.h>
-
-static inline void dma_cache_maintenance( unsigned long paddr,
-					  unsigned long len,
-					  int writeflag )
-
-{
-	if (writeflag) {
-		if (!MACH_IS_MEDUSA || CPU_IS_060)
-			cache_push( paddr, len );
-	}
-	else {
-		if (!MACH_IS_MEDUSA)
-			cache_clear( paddr, len );
-	}
-}
-
-
-/* 
-** Shifter  
- */
-#define ST_LOW  0
-#define ST_MID  1
-#define ST_HIGH 2
-#define TT_LOW  7
-#define TT_MID  4
-#define TT_HIGH 6
-
-#define SHF_BAS (0xffff8200)    
-struct SHIFTER 
- {
- 	u_char pad1;
-	u_char bas_hi;
-	u_char pad2;
-	u_char bas_md;
-	u_char pad3;
-	u_char volatile vcounthi;
- 	u_char pad4;
- 	u_char volatile vcountmid;
- 	u_char pad5;
- 	u_char volatile vcountlow;
- 	u_char volatile syncmode;
- 	u_char pad6;
- 	u_char pad7; 
-	u_char bas_lo;
- };
-# define shifter ((*(volatile struct SHIFTER *)SHF_BAS))
-
-#define SHF_FBAS (0xffff820e)
-struct SHIFTER_F030
- {
-  u_short off_next;
-  u_short scn_width;
- };                             
-# define shifter_f030 ((*(volatile struct SHIFTER_F030 *)SHF_FBAS))
-
-
-#define	SHF_TBAS (0xffff8200)
-struct SHIFTER_TT {
-	u_char	char_dummy0;
-	u_char	bas_hi;			/* video mem base addr, high and mid byte */
-	u_char	char_dummy1;
-	u_char	bas_md;
-	u_char	char_dummy2;
-	u_char	vcount_hi;		/* pointer to currently displayed byte */
-	u_char	char_dummy3;
-	u_char	vcount_md;
-	u_char	char_dummy4;
-	u_char	vcount_lo;
-	u_short	st_sync;		/* ST compatible sync mode register, unused */
-	u_char	char_dummy5;
-	u_char	bas_lo;			/* video mem addr, low byte */
-	u_char	char_dummy6[2+3*16];
-	/* $ffff8240: */
-	u_short	color_reg[16];	/* 16 color registers */
-	u_char	st_shiftmode;	/* ST compatible shift mode register, unused */
-	u_char  char_dummy7;
-	u_short tt_shiftmode;	/* TT shift mode register */
-
-
-};
-#define	shifter_tt	((*(volatile struct SHIFTER_TT *)SHF_TBAS))
-
-/* values for shifter_tt->tt_shiftmode */
-#define	TT_SHIFTER_STLOW		0x0000
-#define	TT_SHIFTER_STMID		0x0100
-#define	TT_SHIFTER_STHIGH		0x0200
-#define	TT_SHIFTER_TTLOW		0x0700
-#define	TT_SHIFTER_TTMID		0x0400
-#define	TT_SHIFTER_TTHIGH		0x0600
-#define	TT_SHIFTER_MODEMASK	0x0700
-#define TT_SHIFTER_NUMMODE	0x0008
-#define	TT_SHIFTER_PALETTE_MASK	0x000f
-#define	TT_SHIFTER_GRAYMODE		0x1000
-
-/* 256 TT palette registers */
-#define	TT_PALETTE_BASE	(0xffff8400)
-#define	tt_palette	((volatile u_short *)TT_PALETTE_BASE)
-
-#define	TT_PALETTE_RED_MASK		0x0f00
-#define	TT_PALETTE_GREEN_MASK	0x00f0
-#define	TT_PALETTE_BLUE_MASK	0x000f
-
-/*
-** Falcon030 VIDEL Video Controller
-** for description see File 'linux\tools\atari\hardware.txt
- */
-#define f030_col ((u_long *)		0xffff9800)
-#define f030_xreg ((u_short*)		0xffff8282)
-#define f030_yreg ((u_short*)		0xffff82a2)
-#define f030_creg ((u_short*)		0xffff82c0)
-#define f030_sreg ((u_short*)		0xffff8260)
-#define f030_mreg ((u_short*)		0xffff820a)
-#define f030_linewidth ((u_short*)      0xffff820e)
-#define f030_hscroll ((u_char*)		0xffff8265)
-
-#define VIDEL_BAS (0xffff8260)
-struct VIDEL {
-	u_short st_shift;
-	u_short pad1;
-	u_char  xoffset_s;
-	u_char  xoffset;
-	u_short f_shift;
-	u_char  pad2[0x1a];
-	u_short hht;
-	u_short hbb;
-	u_short hbe;
-	u_short hdb;
-	u_short hde;
-	u_short hss;
-	u_char  pad3[0x14];
-	u_short vft;
-	u_short vbb;
-	u_short vbe;
-	u_short vdb;
-	u_short vde;
-	u_short vss;
-	u_char  pad4[0x12];
-	u_short control;
-	u_short mode;
-};
-#define	videl	((*(volatile struct VIDEL *)VIDEL_BAS))
-
-/*
-** DMA/WD1772 Disk Controller
- */                          
- 
-#define FWD_BAS (0xffff8604)  
-struct DMA_WD
- {
-  u_short fdc_acces_seccount;
-  u_short dma_mode_status;
-  u_char dma_vhi;	/* Some extended ST-DMAs can handle 32 bit addresses */
-  u_char dma_hi;
-  u_char char_dummy2;
-  u_char dma_md;
-  u_char char_dummy3;
-  u_char dma_lo;
-  u_short fdc_speed;
- };
-# define dma_wd ((*(volatile struct DMA_WD *)FWD_BAS))
-/* alias */
-#define	st_dma dma_wd
-/* The two highest bytes of an extended DMA as a short; this is a must
- * for the Medusa.
- */
-#define st_dma_ext_dmahi (*((volatile unsigned short *)0xffff8608))
-
-/*
-** YM2149 Sound Chip
-** access in bytes
- */
-
-#define YM_BAS (0xffff8800)
-struct SOUND_YM
- {
-  u_char rd_data_reg_sel;
-  u_char char_dummy1;
-  u_char wd_data;
- };
-#define sound_ym ((*(volatile struct SOUND_YM *)YM_BAS))
-
-/* TT SCSI DMA */
-
-#define	TT_SCSI_DMA_BAS	(0xffff8700)
-struct TT_DMA {
-	u_char	char_dummy0;
-	u_char	dma_addr_hi;
-	u_char	char_dummy1;
-	u_char	dma_addr_hmd;
-	u_char	char_dummy2;
-	u_char	dma_addr_lmd;
-	u_char	char_dummy3;
-	u_char	dma_addr_lo;
-	u_char	char_dummy4;
-	u_char	dma_cnt_hi;
-	u_char	char_dummy5;
-	u_char	dma_cnt_hmd;
-	u_char	char_dummy6;
-	u_char	dma_cnt_lmd;
-	u_char	char_dummy7;
-	u_char	dma_cnt_lo;
-	u_long	dma_restdata;
-	u_short	dma_ctrl;
-};
-#define	tt_scsi_dma	((*(volatile struct TT_DMA *)TT_SCSI_DMA_BAS))
-
-/* TT SCSI Controller 5380 */
-
-#define	TT_5380_BAS	(0xffff8781)
-struct TT_5380 {
-	u_char	scsi_data;
-	u_char	char_dummy1;
-	u_char	scsi_icr;
-	u_char	char_dummy2;
-	u_char	scsi_mode;
-	u_char	char_dummy3;
-	u_char	scsi_tcr;
-	u_char	char_dummy4;
-	u_char	scsi_idstat;
-	u_char	char_dummy5;
-	u_char	scsi_dmastat;
-	u_char	char_dummy6;
-	u_char	scsi_targrcv;
-	u_char	char_dummy7;
-	u_char	scsi_inircv;
-};
-#define	tt_scsi			((*(volatile struct TT_5380 *)TT_5380_BAS))
-#define	tt_scsi_regp	((volatile char *)TT_5380_BAS)
-
-
-/* 
-** Falcon DMA Sound Subsystem
- */     
-
-#define MATRIX_BASE (0xffff8930)
-struct MATRIX
-{
-  u_short source;
-  u_short destination;
-  u_char external_frequency_divider;
-  u_char internal_frequency_divider;
-};
-#define matrix (*(volatile struct MATRIX *)MATRIX_BASE)
-
-#define CODEC_BASE (0xffff8936)
-struct CODEC
-{
-  u_char tracks;
-  u_char input_source;
-#define CODEC_SOURCE_ADC        1
-#define CODEC_SOURCE_MATRIX     2
-  u_char adc_source;
-#define ADC_SOURCE_RIGHT_PSG    1
-#define ADC_SOURCE_LEFT_PSG     2
-  u_char gain;
-#define CODEC_GAIN_RIGHT        0x0f
-#define CODEC_GAIN_LEFT         0xf0
-  u_char attenuation;
-#define CODEC_ATTENUATION_RIGHT 0x0f
-#define CODEC_ATTENUATION_LEFT  0xf0
-  u_char unused1;
-  u_char status;
-#define CODEC_OVERFLOW_RIGHT    1
-#define CODEC_OVERFLOW_LEFT     2
-  u_char unused2, unused3, unused4, unused5;
-  u_char gpio_directions;
-#define GPIO_IN                 0
-#define GPIO_OUT                1
-  u_char unused6;
-  u_char gpio_data;
-};
-#define codec (*(volatile struct CODEC *)CODEC_BASE)
-
-/*
-** Falcon Blitter
-*/
-
-#define BLT_BAS (0xffff8a00)
-
-struct BLITTER
- {
-  u_short halftone[16];
-  u_short src_x_inc;
-  u_short src_y_inc;
-  u_long src_address;
-  u_short endmask1;  
-  u_short endmask2;  
-  u_short endmask3;
-  u_short dst_x_inc;
-  u_short dst_y_inc;
-  u_long dst_address;
-  u_short wd_per_line;
-  u_short ln_per_bb;
-  u_short hlf_op_reg;
-  u_short log_op_reg;
-  u_short lin_nm_reg;
-  u_short skew_reg;  
- };
-# define blitter ((*(volatile struct BLITTER *)BLT_BAS))
-
-
-/*
-** SCC Z8530
- */
- 
-#define SCC_BAS (0xffff8c81)
-struct SCC
- {
-  u_char cha_a_ctrl;
-  u_char char_dummy1;
-  u_char cha_a_data;
-  u_char char_dummy2;
-  u_char cha_b_ctrl;
-  u_char char_dummy3;
-  u_char cha_b_data;
- };
-# define scc ((*(volatile struct SCC*)SCC_BAS))
-
-/* The ESCC (Z85230) in an Atari ST. The channels are reversed! */
-# define st_escc ((*(volatile struct SCC*)0xfffffa31))
-# define st_escc_dsr ((*(volatile char *)0xfffffa39))
-
-/* TT SCC DMA Controller (same chip as SCSI DMA) */
-
-#define	TT_SCC_DMA_BAS	(0xffff8c00)
-#define	tt_scc_dma	((*(volatile struct TT_DMA *)TT_SCC_DMA_BAS))
-
-/*
-** VIDEL Palette Register 
- */
-
-#define FPL_BAS (0xffff9800)
-struct VIDEL_PALETTE
- {
-  u_long reg[256];
- };
-# define videl_palette ((*(volatile struct VIDEL_PALETTE*)FPL_BAS))
-
-
-/*
-** Falcon DSP Host Interface
- */
-
-#define DSP56K_HOST_INTERFACE_BASE (0xffffa200)
-struct DSP56K_HOST_INTERFACE {
-  u_char icr;
-#define DSP56K_ICR_RREQ	0x01
-#define DSP56K_ICR_TREQ	0x02
-#define DSP56K_ICR_HF0	0x08
-#define DSP56K_ICR_HF1	0x10
-#define DSP56K_ICR_HM0	0x20
-#define DSP56K_ICR_HM1	0x40
-#define DSP56K_ICR_INIT	0x80
-  
-  u_char cvr;
-#define DSP56K_CVR_HV_MASK 0x1f
-#define DSP56K_CVR_HC	0x80
-
-  u_char isr;
-#define DSP56K_ISR_RXDF	0x01
-#define DSP56K_ISR_TXDE	0x02
-#define DSP56K_ISR_TRDY	0x04
-#define DSP56K_ISR_HF2	0x08
-#define DSP56K_ISR_HF3	0x10
-#define DSP56K_ISR_DMA	0x40
-#define DSP56K_ISR_HREQ	0x80
-  
-  u_char ivr;
-
-  union {
-    u_char b[4];
-    u_short w[2];
-    u_long l;
-  } data;
-};
-#define dsp56k_host_interface ((*(volatile struct DSP56K_HOST_INTERFACE *)DSP56K_HOST_INTERFACE_BASE))
- 
-/*
-** MFP 68901
- */
- 
-#define MFP_BAS (0xfffffa01)
-struct MFP
- {
-  u_char par_dt_reg;
-  u_char char_dummy1;
-  u_char active_edge;
-  u_char char_dummy2;
-  u_char data_dir;
-  u_char char_dummy3;
-  u_char int_en_a;
-  u_char char_dummy4;
-  u_char int_en_b;
-  u_char char_dummy5;
-  u_char int_pn_a;
-  u_char char_dummy6;
-  u_char int_pn_b;
-  u_char char_dummy7;
-  u_char int_sv_a;
-  u_char char_dummy8;
-  u_char int_sv_b;
-  u_char char_dummy9;
-  u_char int_mk_a;
-  u_char char_dummy10;
-  u_char int_mk_b;
-  u_char char_dummy11;
-  u_char vec_adr;
-  u_char char_dummy12;
-  u_char tim_ct_a;
-  u_char char_dummy13;
-  u_char tim_ct_b;
-  u_char char_dummy14;
-  u_char tim_ct_cd;
-  u_char char_dummy15;
-  u_char tim_dt_a;
-  u_char char_dummy16;
-  u_char tim_dt_b;
-  u_char char_dummy17;
-  u_char tim_dt_c;
-  u_char char_dummy18;
-  u_char tim_dt_d;
-  u_char char_dummy19;
-  u_char sync_char;
-  u_char char_dummy20;
-  u_char usart_ctr;
-  u_char char_dummy21;
-  u_char rcv_stat;
-  u_char char_dummy22;
-  u_char trn_stat;
-  u_char char_dummy23;
-  u_char usart_dta;
- };
-# define mfp ((*(volatile struct MFP*)MFP_BAS))
-
-/* TT's second MFP */
-
-#define	TT_MFP_BAS	(0xfffffa81)
-# define tt_mfp ((*(volatile struct MFP*)TT_MFP_BAS))
-
-
-/* TT System Control Unit */
-
-#define	TT_SCU_BAS	(0xffff8e01)
-struct TT_SCU {
-	u_char	sys_mask;
-	u_char	char_dummy1;
-	u_char	sys_stat;
-	u_char	char_dummy2;
-	u_char	softint;
-	u_char	char_dummy3;
-	u_char	vmeint;
-	u_char	char_dummy4;
-	u_char	gp_reg1;
-	u_char	char_dummy5;
-	u_char	gp_reg2;
-	u_char	char_dummy6;
-	u_char	vme_mask;
-	u_char	char_dummy7;
-	u_char	vme_stat;
-};
-#define	tt_scu	((*(volatile struct TT_SCU *)TT_SCU_BAS))
-
-/* TT real time clock */
-
-#define	TT_RTC_BAS	(0xffff8961)
-struct TT_RTC {
-	u_char	regsel;
-	u_char	dummy;
-	u_char	data;
-};
-#define	tt_rtc	((*(volatile struct TT_RTC *)TT_RTC_BAS))
-
-
-/*
-** ACIA 6850
- */
-/* constants for the ACIA registers */
-
-/* baudrate selection and reset (Baudrate = clock/factor) */
-#define ACIA_DIV1  0
-#define ACIA_DIV16 1
-#define ACIA_DIV64 2
-#define ACIA_RESET 3
-
-/* character format */
-#define ACIA_D7E2S (0<<2)	/* 7 data, even parity, 2 stop */
-#define ACIA_D7O2S (1<<2)	/* 7 data, odd parity, 2 stop */
-#define ACIA_D7E1S (2<<2)	/* 7 data, even parity, 1 stop */
-#define ACIA_D7O1S (3<<2)	/* 7 data, odd parity, 1 stop */
-#define ACIA_D8N2S (4<<2)	/* 8 data, no parity, 2 stop */
-#define ACIA_D8N1S (5<<2)	/* 8 data, no parity, 1 stop */
-#define ACIA_D8E1S (6<<2)	/* 8 data, even parity, 1 stop */
-#define ACIA_D8O1S (7<<2)	/* 8 data, odd parity, 1 stop */
-
-/* transmit control */
-#define ACIA_RLTID (0<<5)	/* RTS low, TxINT disabled */
-#define ACIA_RLTIE (1<<5)	/* RTS low, TxINT enabled */
-#define ACIA_RHTID (2<<5)	/* RTS high, TxINT disabled */
-#define ACIA_RLTIDSB (3<<5)	/* RTS low, TxINT disabled, send break */
-
-/* receive control */
-#define ACIA_RID (0<<7)		/* RxINT disabled */
-#define ACIA_RIE (1<<7)		/* RxINT enabled */
-
-/* status fields of the ACIA */
-#define ACIA_RDRF 1		/* Receive Data Register Full */
-#define ACIA_TDRE (1<<1)	/* Transmit Data Register Empty */
-#define ACIA_DCD  (1<<2)	/* Data Carrier Detect */
-#define ACIA_CTS  (1<<3)	/* Clear To Send */
-#define ACIA_FE   (1<<4)	/* Framing Error */
-#define ACIA_OVRN (1<<5)	/* Receiver Overrun */
-#define ACIA_PE   (1<<6)	/* Parity Error */
-#define ACIA_IRQ  (1<<7)	/* Interrupt Request */
-
-#define ACIA_BAS (0xfffffc00)
-struct ACIA 
- {
-  u_char key_ctrl;
-  u_char char_dummy1;
-  u_char key_data;
-  u_char char_dummy2;
-  u_char mid_ctrl;
-  u_char char_dummy3;
-  u_char mid_data;
- };
-# define acia ((*(volatile struct ACIA*)ACIA_BAS))
-
-#define	TT_DMASND_BAS (0xffff8900)
-struct TT_DMASND {
-	u_char	int_ctrl;	/* Falcon: Interrupt control */
-	u_char	ctrl;
-	u_char	pad2;
-	u_char	bas_hi;
-	u_char	pad3;
-	u_char	bas_mid;
-	u_char	pad4;
-	u_char	bas_low;
-	u_char	pad5;
-	u_char	addr_hi;
-	u_char	pad6;
-	u_char	addr_mid;
-	u_char	pad7;
-	u_char	addr_low;
-	u_char	pad8;
-	u_char	end_hi;
-	u_char	pad9;
-	u_char	end_mid;
-	u_char	pad10;
-	u_char	end_low;
-	u_char	pad11[12];
-	u_char	track_select;	/* Falcon */
-	u_char	mode;
- 	u_char	pad12[14];
- 	/* Falcon only: */
- 	u_short	cbar_src;
- 	u_short cbar_dst;
- 	u_char	ext_div;
- 	u_char	int_div;
- 	u_char	rec_track_select;
- 	u_char	dac_src;
- 	u_char	adc_src;
- 	u_char	input_gain;
- 	u_short	output_atten;
-};
-# define tt_dmasnd ((*(volatile struct TT_DMASND *)TT_DMASND_BAS))
-
-#define DMASND_MFP_INT_REPLAY     0x01
-#define DMASND_MFP_INT_RECORD     0x02
-#define DMASND_TIMERA_INT_REPLAY  0x04
-#define DMASND_TIMERA_INT_RECORD  0x08
-
-#define	DMASND_CTRL_OFF		  0x00
-#define	DMASND_CTRL_ON		  0x01
-#define	DMASND_CTRL_REPEAT	  0x02
-#define DMASND_CTRL_RECORD_ON     0x10
-#define DMASND_CTRL_RECORD_OFF    0x00
-#define DMASND_CTRL_RECORD_REPEAT 0x20
-#define DMASND_CTRL_SELECT_REPLAY 0x00
-#define DMASND_CTRL_SELECT_RECORD 0x80
-#define	DMASND_MODE_MONO	  0x80
-#define	DMASND_MODE_STEREO	  0x00
-#define DMASND_MODE_8BIT	  0x00
-#define DMASND_MODE_16BIT	  0x40	/* Falcon only */
-#define	DMASND_MODE_6KHZ	  0x00	/* Falcon: mute */
-#define	DMASND_MODE_12KHZ	  0x01
-#define	DMASND_MODE_25KHZ	  0x02
-#define	DMASND_MODE_50KHZ	  0x03
- 
-
-#define DMASNDSetBase(bufstart)						\
-    do {								\
-	tt_dmasnd.bas_hi  = (unsigned char)(((bufstart) & 0xff0000) >> 16); \
-	tt_dmasnd.bas_mid = (unsigned char)(((bufstart) & 0x00ff00) >> 8); \
-	tt_dmasnd.bas_low = (unsigned char) ((bufstart) & 0x0000ff); \
-    } while( 0 )
-
-#define DMASNDGetAdr() ((tt_dmasnd.addr_hi << 16) +	\
-			(tt_dmasnd.addr_mid << 8) +	\
-			(tt_dmasnd.addr_low))
-
-#define DMASNDSetEnd(bufend)				\
-    do {						\
-	tt_dmasnd.end_hi  = (unsigned char)(((bufend) & 0xff0000) >> 16); \
-	tt_dmasnd.end_mid = (unsigned char)(((bufend) & 0x00ff00) >> 8); \
-	tt_dmasnd.end_low = (unsigned char) ((bufend) & 0x0000ff); \
-    } while( 0 )
-
-
-#define	TT_MICROWIRE_BAS	(0xffff8922)
-struct TT_MICROWIRE {
-	u_short	data;
-	u_short	mask;
-};
-# define tt_microwire ((*(volatile struct TT_MICROWIRE *)TT_MICROWIRE_BAS))
-
-#define	MW_LM1992_ADDR		0x0400
-
-#define	MW_LM1992_VOLUME(dB)	\
-    (0x0c0 | ((dB) < -80 ? 0 : (dB) > 0 ? 40 : (((dB) + 80) / 2)))
-#define	MW_LM1992_BALLEFT(dB)	\
-    (0x140 | ((dB) < -40 ? 0 : (dB) > 0 ? 20 : (((dB) + 40) / 2)))
-#define	MW_LM1992_BALRIGHT(dB)	\
-    (0x100 | ((dB) < -40 ? 0 : (dB) > 0 ? 20 : (((dB) + 40) / 2)))
-#define	MW_LM1992_TREBLE(dB)	\
-    (0x080 | ((dB) < -12 ? 0 : (dB) > 12 ? 12 : (((dB) / 2) + 6)))
-#define	MW_LM1992_BASS(dB)	\
-    (0x040 | ((dB) < -12 ? 0 : (dB) > 12 ? 12 : (((dB) / 2) + 6)))
-
-#define	MW_LM1992_PSG_LOW	0x000
-#define	MW_LM1992_PSG_HIGH	0x001
-#define	MW_LM1992_PSG_OFF	0x002
-
-#define MSTE_RTC_BAS	(0xfffffc21)
-
-struct MSTE_RTC {
-	u_char sec_ones;
-	u_char dummy1;
-	u_char sec_tens;
-	u_char dummy2;
-	u_char min_ones;
-	u_char dummy3;
-	u_char min_tens;
-	u_char dummy4;
-	u_char hr_ones;
-	u_char dummy5;
-	u_char hr_tens;
-	u_char dummy6;
-	u_char weekday;
-	u_char dummy7;
-	u_char day_ones;
-	u_char dummy8;
-	u_char day_tens;
-	u_char dummy9;
-	u_char mon_ones;
-	u_char dummy10;
-	u_char mon_tens;
-	u_char dummy11;
-	u_char year_ones;
-	u_char dummy12;
-	u_char year_tens;
-	u_char dummy13;
-	u_char mode;
-	u_char dummy14;
-	u_char test;
-	u_char dummy15;
-	u_char reset;
-};
-
-#define mste_rtc ((*(volatile struct MSTE_RTC *)MSTE_RTC_BAS))
-
-#endif /* linux/atarihw.h */
-
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atariints.h linux-2.1.79/include/asm-m68k/atariints.h
--- linux-2.1.79.orig/include/asm-m68k/atariints.h	Wed Jan 15 17:47:08 1997
+++ linux-2.1.79/include/asm-m68k/atariints.h	Thu Jan  1 01:00:00 1970
@@ -1,215 +0,0 @@
-/*
-** atariints.h -- Atari Linux interrupt handling structs and prototypes
-**
-** Copyright 1994 by Bj”rn Brauel
-**
-** 5/2/94 Roman Hodek:
-**   TT interrupt definitions added.
-**
-** 12/02/96: (Roman)
-**   Adapted to new int handling scheme (see ataints.c); revised numbering
-**
-** 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 _LINUX_ATARIINTS_H_
-#define _LINUX_ATARIINTS_H_
-
-#include <asm/irq.h>
-#include <asm/atarihw.h>
-
-/*
-** Atari Interrupt sources.
-**
-*/
-
-#define STMFP_SOURCE_BASE  8
-#define TTMFP_SOURCE_BASE  24
-#define SCC_SOURCE_BASE    40
-#define VME_SOURCE_BASE    56
-#define VME_MAX_SOURCES    16
-
-#define NUM_ATARI_SOURCES   (VME_SOURCE_BASE+VME_MAX_SOURCES-STMFP_SOURCE_BASE)
-
-/* convert vector number to int source number */
-#define IRQ_VECTOR_TO_SOURCE(v)	((v) - ((v) < 0x20 ? 0x18 : (0x40-8)))
-
-/* convert irq_handler index to vector number */
-#define IRQ_SOURCE_TO_VECTOR(i)	((i) + ((i) < 8 ? 0x18 : (0x40-8)))
-
-/* interrupt service types */
-#define IRQ_TYPE_SLOW     0
-#define IRQ_TYPE_FAST     1
-#define IRQ_TYPE_PRIO     2
-
-#define	IRQ_SPURIOUS      (0)
-
-/* auto-vector interrupts */
-#define IRQ_AUTO_1        (1)
-#define IRQ_AUTO_2        (2)
-#define IRQ_AUTO_3        (3)
-#define IRQ_AUTO_4        (4)
-#define IRQ_AUTO_5        (5)
-#define IRQ_AUTO_6        (6)
-#define IRQ_AUTO_7        (7)
-
-/* ST-MFP interrupts */
-#define IRQ_MFP_BUSY      (8)
-#define IRQ_MFP_DCD       (9)
-#define IRQ_MFP_CTS  	  (10)
-#define IRQ_MFP_GPU 	  (11)
-#define IRQ_MFP_TIMD      (12)
-#define IRQ_MFP_TIMC	  (13)
-#define IRQ_MFP_ACIA	  (14)
-#define IRQ_MFP_FDC       (15)
-#define IRQ_MFP_ACSI      IRQ_MFP_FDC
-#define IRQ_MFP_FSCSI     IRQ_MFP_FDC
-#define IRQ_MFP_IDE       IRQ_MFP_FDC
-#define IRQ_MFP_TIMB      (16)
-#define IRQ_MFP_SERERR    (17)
-#define IRQ_MFP_SEREMPT   (18)
-#define IRQ_MFP_RECERR    (19)
-#define IRQ_MFP_RECFULL   (20)
-#define IRQ_MFP_TIMA      (21)
-#define IRQ_MFP_RI        (22)
-#define IRQ_MFP_MMD       (23)
-
-/* TT-MFP interrupts */
-#define IRQ_TT_MFP_IO0       (24)
-#define IRQ_TT_MFP_IO1       (25)
-#define IRQ_TT_MFP_SCC	     (26)
-#define IRQ_TT_MFP_RI 	     (27)
-#define IRQ_TT_MFP_TIMD      (28)
-#define IRQ_TT_MFP_TIMC	     (29)
-#define IRQ_TT_MFP_DRVRDY    (30)
-#define IRQ_TT_MFP_SCSIDMA   (31)
-#define IRQ_TT_MFP_TIMB      (32)
-#define IRQ_TT_MFP_SERERR    (33)
-#define IRQ_TT_MFP_SEREMPT   (34)
-#define IRQ_TT_MFP_RECERR    (35)
-#define IRQ_TT_MFP_RECFULL   (36)
-#define IRQ_TT_MFP_TIMA      (37)
-#define IRQ_TT_MFP_RTC       (38)
-#define IRQ_TT_MFP_SCSI      (39)
-
-/* SCC interrupts */
-#define IRQ_SCCB_TX	     (40)
-#define IRQ_SCCB_STAT	     (42)
-#define IRQ_SCCB_RX	     (44)
-#define IRQ_SCCB_SPCOND	     (46)
-#define IRQ_SCCA_TX	     (48)
-#define IRQ_SCCA_STAT	     (50)
-#define IRQ_SCCA_RX	     (52)
-#define IRQ_SCCA_SPCOND	     (54)
-
-
-#define INT_CLK   24576	    /* CLK while int_clk =2.456MHz and divide = 100 */
-#define INT_TICKS 246	    /* to make sched_time = 99.902... HZ */
-
-
-#define MFP_ENABLE	0
-#define MFP_PENDING	1
-#define MFP_SERVICE	2
-#define MFP_MASK	3
-
-/* Utility functions for setting/clearing bits in the interrupt registers of
- * the MFP. 'type' should be constant, if 'irq' is constant, too, code size is
- * reduced. set_mfp_bit() is nonsense for PENDING and SERVICE registers. */
-
-static inline int get_mfp_bit( unsigned irq, int type )
-
-{	unsigned char	mask, *reg;
-	
-	mask = 1 << (irq & 7);
-	reg = (unsigned char *)&mfp.int_en_a + type*4 +
-		  ((irq & 8) >> 2) + (((irq-8) & 16) << 3);
-	return( *reg & mask );
-}
-
-static inline void set_mfp_bit( unsigned irq, int type )
-
-{	unsigned char	mask, *reg;
-	
-	mask = 1 << (irq & 7);
-	reg = (unsigned char *)&mfp.int_en_a + type*4 +
-		  ((irq & 8) >> 2) + (((irq-8) & 16) << 3);
-	__asm__ __volatile__ ( "orb %0,%1"
-			      : : "di" (mask), "m" (*reg) : "memory" );
-}
-
-static inline void clear_mfp_bit( unsigned irq, int type )
-
-{	unsigned char	mask, *reg;
-	
-	mask = ~(1 << (irq & 7));
-	reg = (unsigned char *)&mfp.int_en_a + type*4 +
-		  ((irq & 8) >> 2) + (((irq-8) & 16) << 3);
-	if (type == MFP_PENDING || type == MFP_SERVICE)
-		__asm__ __volatile__ ( "moveb %0,%1"
-				      : : "di" (mask), "m" (*reg) : "memory" );
-	else
-		__asm__ __volatile__ ( "andb %0,%1"
-				      : : "di" (mask), "m" (*reg) : "memory" );
-}
-
-/*
- * {en,dis}able_irq have the usual semantics of temporary blocking the
- * interrupt, but not loosing requests that happen between disabling and
- * enabling. This is done with the MFP mask registers.
- */
-
-static inline void atari_enable_irq( unsigned irq )
-
-{
-	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return;
-	set_mfp_bit( irq, MFP_MASK );
-}
-
-static inline void atari_disable_irq( unsigned irq )
-
-{
-	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return;
-	clear_mfp_bit( irq, MFP_MASK );
-}
-
-/*
- * In opposite to {en,dis}able_irq, requests between turn{off,on}_irq are not
- * "stored"
- */
-
-extern inline void atari_turnon_irq( unsigned irq )
-
-{
-	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return;
-	set_mfp_bit( irq, MFP_ENABLE );
-}
-
-extern inline void atari_turnoff_irq( unsigned irq )
-
-{
-	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return;
-	clear_mfp_bit( irq, MFP_ENABLE );
-	clear_mfp_bit( irq, MFP_PENDING );
-}
-
-extern inline void atari_clear_pending_irq( unsigned irq )
-
-{
-	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return;
-	clear_mfp_bit( irq, MFP_PENDING );
-}
-
-extern inline int atari_irq_pending( unsigned irq )
-
-{
-	if (irq < STMFP_SOURCE_BASE || irq >= SCC_SOURCE_BASE) return( 0 );
-	return( get_mfp_bit( irq, MFP_PENDING ) );
-}
-
-unsigned long atari_register_vme_int( void );
-void atari_unregister_vme_int( unsigned long );
-
-#endif /* linux/atariints.h */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/atarikb.h linux-2.1.79/include/asm-m68k/atarikb.h
--- linux-2.1.79.orig/include/asm-m68k/atarikb.h	Wed May 22 18:03:20 1996
+++ linux-2.1.79/include/asm-m68k/atarikb.h	Thu Jan  1 01:00:00 1970
@@ -1,40 +0,0 @@
-/*
-** atarikb.h -- This header contains the prototypes of functions of
-**              the intelligent keyboard of the Atari needed by the
-**              mouse and joystick drivers.
-**
-** Copyright 1994 by Robert de Vries
-**
-** 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.
-**
-** Created: 20 Feb 1994 by Robert de Vries
-*/
-
-#ifndef _LINUX_ATARIKB_H
-#define _LINUX_ATARIKB_H
-
-void ikbd_write(const char *, int);
-void ikbd_mouse_button_action(int mode);
-void ikbd_mouse_rel_pos(void);
-void ikbd_mouse_abs_pos(int xmax, int ymax);
-void ikbd_mouse_kbd_mode(int dx, int dy);
-void ikbd_mouse_thresh(int x, int y);
-void ikbd_mouse_scale(int x, int y);
-void ikbd_mouse_pos_get(int *x, int *y);
-void ikbd_mouse_pos_set(int x, int y);
-void ikbd_mouse_y0_bot(void);
-void ikbd_mouse_y0_top(void);
-void ikbd_mouse_disable(void);
-void ikbd_joystick_event_on(void);
-void ikbd_joystick_event_off(void);
-void ikbd_joystick_get_state(void);
-void ikbd_joystick_disable(void);
-
-/* Hook for MIDI serial driver */
-extern void (*atari_MIDI_interrupt_hook) (void);
-/* Hook for mouse driver */
-extern void (*atari_mouse_interrupt_hook) (char *);
-
-#endif /* _LINUX_ATARIKB_H */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/ide.h linux-2.1.79/include/asm-m68k/ide.h
--- linux-2.1.79.orig/include/asm-m68k/ide.h	Wed Jan 14 21:42:32 1998
+++ linux-2.1.79/include/asm-m68k/ide.h	Thu Jan 15 01:51:44 1998
@@ -38,7 +38,7 @@
 #include <asm/irq.h>
 
 #ifdef CONFIG_ATARI
-#include <asm/atari_stdma.h>
+#include <asm/atari/stdma.h>
 #endif
 
 typedef unsigned char * ide_ioreg_t;
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/io.h linux-2.1.79/include/asm-m68k/io.h
--- linux-2.1.79.orig/include/asm-m68k/io.h	Wed Dec 17 19:57:09 1997
+++ linux-2.1.79/include/asm-m68k/io.h	Thu Jan 15 09:22:42 1998
@@ -6,9 +6,9 @@
 #include <asm/byteorder.h>
 
 #ifdef CONFIG_ATARI
-#include <asm/atarihw.h>
+#include <asm/atari/hardware.h>
 
-#define SLOW_DOWN_IO	MFPDELAY()
+#define SLOW_DOWN_IO	do { if (MACH_IS_ATARI) MFPDELAY(); } while (0)
 #endif
 
 /*
@@ -62,8 +62,8 @@
  * except on the PCI bus of the Hades.
  */
 #ifdef CONFIG_HADES
-#define virt_to_bus(a) (virt_to_phys(a) + (is_hades ? 0x80000000 : 0))
-#define bus_to_virt(a) (phys_to_virt((a) - (is_hades ? 0x80000000 : 0)))
+#define virt_to_bus(a) (virt_to_phys(a) + (MACH_IS_HADES ? 0x80000000 : 0))
+#define bus_to_virt(a) (phys_to_virt((a) - (MACH_IS_HADES ? 0x80000000 : 0)))
 #else
 #define virt_to_bus virt_to_phys
 #define bus_to_virt phys_to_virt
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/mvme16x/hardware.h linux-2.1.79/include/asm-m68k/mvme16x/hardware.h
--- linux-2.1.79.orig/include/asm-m68k/mvme16x/hardware.h	Thu Jan  1 01:00:00 1970
+++ linux-2.1.79/include/asm-m68k/mvme16x/hardware.h	Fri Jan  9 18:15:09 1998
@@ -0,0 +1,118 @@
+#ifndef _M68K_MVME16xHW_H_
+#define _M68K_MVME16xHW_H_
+
+#include <asm/irq.h>
+
+/* Board ID data structure - pointer to this retrieved from Bug by head.S */
+
+/* Note, bytes 12 and 13 are board no in BCD (0162,0166,0167,0177,etc) */
+
+extern long mvme_bdid_ptr;
+
+typedef struct {
+	char	bdid[4];
+	u_char	rev, mth, day, yr;
+	u_short	size, reserved;
+	u_short	brdno;
+	char brdsuffix[2];
+	u_long	options;
+	u_short	clun, dlun, ctype, dnum;
+	u_long	option2;
+} t_bdid, *p_bdid;
+
+
+typedef struct {
+	u_char	ack_icr,
+		flt_icr,
+		sel_icr,
+		pe_icr,
+		bsy_icr,
+		spare1,
+		isr,
+		cr,
+		spare2,
+		spare3,
+		spare4,
+		data;
+} lpr_ctrl;
+
+#define LPR_REGS	((volatile lpr_ctrl *)0xfff42030)
+
+#define I596_BASE	0xfff46000
+
+#define SCC_A_ADDR	0xfff45005
+#define SCC_B_ADDR	0xfff45001
+
+#define IRQ_MVME162_TYPE_PRIO	0
+
+#define IRQ_MVME167_PRN		0x54
+#define IRQ_MVME16x_I596	0x57
+#define IRQ_MVME16x_SCSI	0x55
+#define IRQ_MVME16x_FLY		0x7f
+#define IRQ_MVME167_SER_ERR	0x5c
+#define IRQ_MVME167_SER_MODEM	0x5d
+#define IRQ_MVME167_SER_TX	0x5e
+#define IRQ_MVME167_SER_RX	0x5f
+#define IRQ_MVME16x_TIMER	0x59
+
+/* SCC interrupts, for MVME162 */
+#define IRQ_MVME162_SCC_BASE		0x40
+#define IRQ_MVME162_SCCB_TX		0x40
+#define IRQ_MVME162_SCCB_STAT		0x42
+#define IRQ_MVME162_SCCB_RX		0x44
+#define IRQ_MVME162_SCCB_SPCOND		0x46
+#define IRQ_MVME162_SCCA_TX		0x48
+#define IRQ_MVME162_SCCA_STAT		0x4a
+#define IRQ_MVME162_SCCA_RX		0x4c
+#define IRQ_MVME162_SCCA_SPCOND		0x4e
+
+/* MVME162 version register */
+
+#define MVME162_VERSION_REG	0xfff4202e
+
+extern unsigned short mvme16x_config;
+
+/* Lower 8 bits must match the revision register in the MC2 chip */
+
+#define MVME16x_CONFIG_SPEED_32		0x0001
+#define MVME16x_CONFIG_NO_VMECHIP2	0x0002
+#define MVME16x_CONFIG_NO_SCSICHIP	0x0004
+#define MVME16x_CONFIG_NO_ETHERNET	0x0008
+#define MVME16x_CONFIG_GOT_FPU		0x0010
+
+#define MVME16x_CONFIG_GOT_LP		0x0100
+#define MVME16x_CONFIG_GOT_CD2401	0x0200
+#define MVME16x_CONFIG_GOT_SCCA		0x0400
+#define MVME16x_CONFIG_GOT_SCCB		0x0800
+
+/* Specials for the ethernet driver */
+
+#define CA()		(((struct i596_reg *)dev->base_addr)->ca = 1)
+
+#define MPU_PORT(c,x)	\
+  ((struct i596_reg *)(dev->base_addr))->porthi = ((c) | (u32)(x)) & 0xffff; \
+  ((struct i596_reg *)(dev->base_addr))->portlo = ((c) | (u32)(x)) >> 16
+
+#define SCP_SYSBUS	0x00000054
+
+#define WSWAPrfd(x)	((struct i596_rfd *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
+#define WSWAPrbd(x)	((struct i596_rbd *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
+#define WSWAPiscp(x)	((struct i596_iscp *)(((u32)(x)<<16) | ((((u32)(x)))>>16)))
+#define WSWAPscb(x)	((struct i596_scb *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
+#define WSWAPcmd(x)	((struct i596_cmd *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
+#define WSWAPtbd(x)	((struct i596_tbd *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
+#define WSWAPchar(x)	((char *)            (((u32)(x)<<16) | ((((u32)(x)))>>16)))
+
+/*
+ * The MPU_PORT command allows direct access to the 82596. With PORT access
+ * the following commands are available (p5-18). The 32-bit port command
+ * must be word-swapped with the most significant word written first.
+ */
+#define PORT_RESET	0x00	/* reset 82596 */
+#define PORT_SELFTEST	0x01	/* selftest */
+#define PORT_ALTSCP	0x02	/* alternate SCB address */
+#define PORT_ALTDUMP	0x03	/* Alternate DUMP address */
+
+#define ISCP_BUSY	0x00010000
+
+#endif /* _M68K_MVME16xHW_H_ */
diff -urNX exclude linux-2.1.79.orig/include/asm-m68k/mvme16xhw.h linux-2.1.79/include/asm-m68k/mvme16xhw.h
--- linux-2.1.79.orig/include/asm-m68k/mvme16xhw.h	Fri Jan  9 18:15:09 1998
+++ linux-2.1.79/include/asm-m68k/mvme16xhw.h	Thu Jan  1 01:00:00 1970
@@ -1,118 +0,0 @@
-#ifndef _M68K_MVME16xHW_H_
-#define _M68K_MVME16xHW_H_
-
-#include <asm/irq.h>
-
-/* Board ID data structure - pointer to this retrieved from Bug by head.S */
-
-/* Note, bytes 12 and 13 are board no in BCD (0162,0166,0167,0177,etc) */
-
-extern long mvme_bdid_ptr;
-
-typedef struct {
-	char	bdid[4];
-	u_char	rev, mth, day, yr;
-	u_short	size, reserved;
-	u_short	brdno;
-	char brdsuffix[2];
-	u_long	options;
-	u_short	clun, dlun, ctype, dnum;
-	u_long	option2;
-} t_bdid, *p_bdid;
-
-
-typedef struct {
-	u_char	ack_icr,
-		flt_icr,
-		sel_icr,
-		pe_icr,
-		bsy_icr,
-		spare1,
-		isr,
-		cr,
-		spare2,
-		spare3,
-		spare4,
-		data;
-} lpr_ctrl;
-
-#define LPR_REGS	((volatile lpr_ctrl *)0xfff42030)
-
-#define I596_BASE	0xfff46000
-
-#define SCC_A_ADDR	0xfff45005
-#define SCC_B_ADDR	0xfff45001
-
-#define IRQ_MVME162_TYPE_PRIO	0
-
-#define IRQ_MVME167_PRN		0x54
-#define IRQ_MVME16x_I596	0x57
-#define IRQ_MVME16x_SCSI	0x55
-#define IRQ_MVME16x_FLY		0x7f
-#define IRQ_MVME167_SER_ERR	0x5c
-#define IRQ_MVME167_SER_MODEM	0x5d
-#define IRQ_MVME167_SER_TX	0x5e
-#define IRQ_MVME167_SER_RX	0x5f
-#define IRQ_MVME16x_TIMER	0x59
-
-/* SCC interrupts, for MVME162 */
-#define IRQ_MVME162_SCC_BASE		0x40
-#define IRQ_MVME162_SCCB_TX		0x40
-#define IRQ_MVME162_SCCB_STAT		0x42
-#define IRQ_MVME162_SCCB_RX		0x44
-#define IRQ_MVME162_SCCB_SPCOND		0x46
-#define IRQ_MVME162_SCCA_TX		0x48
-#define IRQ_MVME162_SCCA_STAT		0x4a
-#define IRQ_MVME162_SCCA_RX		0x4c
-#define IRQ_MVME162_SCCA_SPCOND		0x4e
-
-/* MVME162 version register */
-
-#define MVME162_VERSION_REG	0xfff4202e
-
-extern unsigned short mvme16x_config;
-
-/* Lower 8 bits must match the revision register in the MC2 chip */
-
-#define MVME16x_CONFIG_SPEED_32		0x0001
-#define MVME16x_CONFIG_NO_VMECHIP2	0x0002
-#define MVME16x_CONFIG_NO_SCSICHIP	0x0004
-#define MVME16x_CONFIG_NO_ETHERNET	0x0008
-#define MVME16x_CONFIG_GOT_FPU		0x0010
-
-#define MVME16x_CONFIG_GOT_LP		0x0100
-#define MVME16x_CONFIG_GOT_CD2401	0x0200
-#define MVME16x_CONFIG_GOT_SCCA		0x0400
-#define MVME16x_CONFIG_GOT_SCCB		0x0800
-
-/* Specials for the ethernet driver */
-
-#define CA()		(((struct i596_reg *)dev->base_addr)->ca = 1)
-
-#define MPU_PORT(c,x)	\
-  ((struct i596_reg *)(dev->base_addr))->porthi = ((c) | (u32)(x)) & 0xffff; \
-  ((struct i596_reg *)(dev->base_addr))->portlo = ((c) | (u32)(x)) >> 16
-
-#define SCP_SYSBUS	0x00000054
-
-#define WSWAPrfd(x)	((struct i596_rfd *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
-#define WSWAPrbd(x)	((struct i596_rbd *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
-#define WSWAPiscp(x)	((struct i596_iscp *)(((u32)(x)<<16) | ((((u32)(x)))>>16)))
-#define WSWAPscb(x)	((struct i596_scb *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
-#define WSWAPcmd(x)	((struct i596_cmd *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
-#define WSWAPtbd(x)	((struct i596_tbd *) (((u32)(x)<<16) | ((((u32)(x)))>>16)))
-#define WSWAPchar(x)	((char *)            (((u32)(x)<<16) | ((((u32)(x)))>>16)))
-
-/*
- * The MPU_PORT command allows direct access to the 82596. With PORT access
- * the following commands are available (p5-18). The 32-bit port command
- * must be word-swapped with the most significant word written first.
- */
-#define PORT_RESET	0x00	/* reset 82596 */
-#define PORT_SELFTEST	0x01	/* selftest */
-#define PORT_ALTSCP	0x02	/* alternate SCB address */
-#define PORT_ALTDUMP	0x03	/* Alternate DUMP address */
-
-#define ISCP_BUSY	0x00010000
-
-#endif /* _M68K_MVME16xHW_H_ */
diff -urNX exclude linux-2.1.79.orig/include/linux/mc146818rtc.h linux-2.1.79/include/linux/mc146818rtc.h
--- linux-2.1.79.orig/include/linux/mc146818rtc.h	Thu Dec 18 08:55:09 1997
+++ linux-2.1.79/include/linux/mc146818rtc.h	Thu Jan 15 09:58:31 1998
@@ -19,8 +19,8 @@
 #ifdef CONFIG_ATARI
 /* RTC in Atari machines */
 
-#include <asm/atarihw.h>
-#include <asm/atariints.h>
+#include <asm/atari/hardware.h>
+#include <asm/atari/ints.h>
 #define RTC_HAS_IRQ	(ATARIHW_PRESENT(TT_MFP))
 #define RTC_IRQ 	IRQ_TT_MFP_RTC
 #define RTC_IRQ_FLAGS	IRQ_TYPE_FAST
diff -urNX exclude linux-2.1.79.orig/include/linux/msdos_fs.h linux-2.1.79/include/linux/msdos_fs.h
--- linux-2.1.79.orig/include/linux/msdos_fs.h	Wed Jan 14 22:39:27 1998
+++ linux-2.1.79/include/linux/msdos_fs.h	Thu Jan 15 08:01:39 1998
@@ -224,7 +224,7 @@
 extern void cache_init(void);
 void cache_lookup(struct inode *inode,int cluster,int *f_clu,int *d_clu);
 void cache_add(struct inode *inode,int f_clu,int d_clu);
-int get_cluster(struct inode *inode,int cluster);
+int fat_get_cluster(struct inode *inode,int cluster);
 
 /* inode.c */
 extern int fat_bmap(struct inode *inode,int block);
@@ -258,7 +258,7 @@
 
 /* mmap.c */
 extern int fat_mmap(struct file *, struct vm_area_struct *);
-extern int fat_readpage(struct inode *, struct page *);
+extern int fat_readpage(struct dentry *, struct page *);
 
 
 /* vfat.c */
diff -urNX exclude linux-2.1.79.orig/include/net/neighbour.h linux-2.1.79/include/net/neighbour.h
--- linux-2.1.79.orig/include/net/neighbour.h	Wed Jan 14 21:43:35 1998
+++ linux-2.1.79/include/net/neighbour.h	Thu Jan 15 07:59:34 1998
@@ -249,12 +249,12 @@
 	return 0;
 }
 
-extern __inline__ int neigh_table_lock(struct neigh_table *tbl)
+extern __inline__ void neigh_table_lock(struct neigh_table *tbl)
 {
 	atomic_inc(&tbl->lock);
 }
 
-extern __inline__ int neigh_table_unlock(struct neigh_table *tbl)
+extern __inline__ void neigh_table_unlock(struct neigh_table *tbl)
 {
 	atomic_dec(&tbl->lock);
 }
diff -urNX exclude linux-2.1.79.orig/kernel/fork.c linux-2.1.79/kernel/fork.c
--- linux-2.1.79.orig/kernel/fork.c	Wed Jan 14 21:43:38 1998
+++ linux-2.1.79/kernel/fork.c	Wed Jan 14 23:27:29 1998
@@ -435,7 +435,9 @@
  */
 int do_fork(unsigned long clone_flags, unsigned long usp, struct pt_regs *regs)
 {
+#ifdef __SMP__
         int i;
+#endif
 	int nr;
 	int error = -ENOMEM;
 	struct task_struct *p;
