r3934 - trunk/kernel/source/linux-2.6/debian/patches-debian
Sven Luther
luther at costa.debian.org
Tue Aug 16 18:15:56 UTC 2005
Author: luther
Date: 2005-08-16 18:15:54 +0000 (Tue, 16 Aug 2005)
New Revision: 3934
Added:
trunk/kernel/source/linux-2.6/debian/patches-debian/powerpc-apus.patch
Log:
Added powerpc-apus patch, not yet enabled though, as it needs checking if it
will not break main powerpc stuff.
Added: trunk/kernel/source/linux-2.6/debian/patches-debian/powerpc-apus.patch
===================================================================
--- trunk/kernel/source/linux-2.6/debian/patches-debian/powerpc-apus.patch 2005-08-16 16:56:13 UTC (rev 3933)
+++ trunk/kernel/source/linux-2.6/debian/patches-debian/powerpc-apus.patch 2005-08-16 18:15:54 UTC (rev 3934)
@@ -0,0 +1,3085 @@
+#
+# PowerPC/Apus support patch
+# Needed support for Amiga PowerUP boards.
+# Author: mostly Roman Zippel <zippel at linux-m68k.org>
+# Upstream status: got synced with 2.6.12 recently, so in better status than
+# previous apus patches. Only 81k left.
+#
+
+diff -Nur -x CVS linux-2.6.12/arch/ppc/amiga/amiints.c 2.6/arch/ppc/amiga/amiints.c
+--- linux-2.6.12/arch/ppc/amiga/amiints.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/amiga/amiints.c 2004-02-04 22:21:34.000000000 +0100
+@@ -67,9 +67,10 @@
+
+ static short ami_ablecount[AMI_IRQS];
+
+-static void ami_badint(int irq, void *dev_id, struct pt_regs *fp)
++static irqreturn_t ami_badint(int irq, void *dev_id, struct pt_regs *fp)
+ {
+ /* num_spurious += 1;*/
++ return IRQ_NONE;
+ }
+
+ /*
+@@ -206,7 +207,7 @@
+ * The builtin Amiga hardware interrupt handlers.
+ */
+
+-static void ami_int1(int irq, void *dev_id, struct pt_regs *fp)
++static irqreturn_t ami_int1(int irq, void *dev_id, struct pt_regs *fp)
+ {
+ unsigned short ints = custom.intreqr & custom.intenar;
+
+@@ -227,9 +228,10 @@
+ custom.intreq = IF_SOFT;
+ amiga_do_irq(IRQ_AMIGA_SOFT, fp);
+ }
++ return IRQ_HANDLED;
+ }
+
+-static void ami_int3(int irq, void *dev_id, struct pt_regs *fp)
++static irqreturn_t ami_int3(int irq, void *dev_id, struct pt_regs *fp)
+ {
+ unsigned short ints = custom.intreqr & custom.intenar;
+
+@@ -248,9 +250,11 @@
+ /* if a vertical blank interrupt */
+ if (ints & IF_VERTB)
+ amiga_do_irq_list(IRQ_AMIGA_VERTB, fp);
++
++ return IRQ_HANDLED;
+ }
+
+-static void ami_int4(int irq, void *dev_id, struct pt_regs *fp)
++static irqreturn_t ami_int4(int irq, void *dev_id, struct pt_regs *fp)
+ {
+ unsigned short ints = custom.intreqr & custom.intenar;
+
+@@ -277,9 +281,10 @@
+ custom.intreq = IF_AUD3;
+ amiga_do_irq(IRQ_AMIGA_AUD3, fp);
+ }
++ return IRQ_HANDLED;
+ }
+
+-static void ami_int5(int irq, void *dev_id, struct pt_regs *fp)
++static irqreturn_t ami_int5(int irq, void *dev_id, struct pt_regs *fp)
+ {
+ unsigned short ints = custom.intreqr & custom.intenar;
+
+@@ -294,11 +299,13 @@
+ custom.intreq = IF_DSKSYN;
+ amiga_do_irq(IRQ_AMIGA_DSKSYN, fp);
+ }
++ return IRQ_HANDLED;
+ }
+
+-static void ami_int7(int irq, void *dev_id, struct pt_regs *fp)
++static irqreturn_t ami_int7(int irq, void *dev_id, struct pt_regs *fp)
+ {
+ panic ("level 7 interrupt received\n");
++ return IRQ_NONE;
+ }
+
+ #ifdef CONFIG_APUS
+diff -Nur -x CVS linux-2.6.12/arch/ppc/amiga/cia.c 2.6/arch/ppc/amiga/cia.c
+--- linux-2.6.12/arch/ppc/amiga/cia.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/amiga/cia.c 2004-02-04 22:21:34.000000000 +0100
+@@ -134,7 +134,7 @@
+ return cia_able_irq_private(base, mask);
+ }
+
+-static void cia_handler(int irq, void *dev_id, struct pt_regs *fp)
++static irqreturn_t cia_handler(int irq, void *dev_id, struct pt_regs *fp)
+ {
+ struct ciabase *base = (struct ciabase *)dev_id;
+ irq_desc_t *desc;
+@@ -156,6 +156,7 @@
+ desc++;
+ }
+ amiga_do_irq_list(base->server_irq, fp);
++ return IRQ_HANDLED;
+ }
+
+ void __init cia_init_IRQ(struct ciabase *base)
+diff -Nur -x CVS linux-2.6.12/arch/ppc/amiga/config.c 2.6/arch/ppc/amiga/config.c
+--- linux-2.6.12/arch/ppc/amiga/config.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/amiga/config.c 2005-07-30 20:52:47.000000000 +0200
+@@ -20,11 +20,12 @@
+ #include <linux/mm.h>
+ #include <linux/kd.h>
+ #include <linux/tty.h>
++#include <linux/rtc.h>
+ #include <linux/console.h>
+ #include <linux/init.h>
+-#ifdef CONFIG_ZORRO
++#include <linux/interrupt.h>
+ #include <linux/zorro.h>
+-#endif
++#include <linux/delay.h>
+
+ #include <asm/bootinfo.h>
+ #include <asm/setup.h>
+@@ -71,29 +72,9 @@
+
+ extern char m68k_debug_device[];
+
+-static void amiga_sched_init(irqreturn_t (*handler)(int, void *, struct pt_regs *));
+-/* amiga specific irq functions */
+-extern void amiga_init_IRQ (void);
+-extern void (*amiga_default_handler[]) (int, void *, struct pt_regs *);
+-extern int amiga_request_irq (unsigned int irq,
+- void (*handler)(int, void *, struct pt_regs *),
+- unsigned long flags, const char *devname,
+- void *dev_id);
+-extern void amiga_free_irq (unsigned int irq, void *dev_id);
+-extern void amiga_enable_irq (unsigned int);
+-extern void amiga_disable_irq (unsigned int);
+ static void amiga_get_model(char *model);
+ static int amiga_get_hardware_list(char *buffer);
+ /* amiga specific timer functions */
+-static unsigned long amiga_gettimeoffset (void);
+-static void a3000_gettod (int *, int *, int *, int *, int *, int *);
+-static void a2000_gettod (int *, int *, int *, int *, int *, int *);
+-static int amiga_hwclk (int, struct hwclk_time *);
+-static int amiga_set_clock_mmss (unsigned long);
+-#ifdef CONFIG_AMIGA_FLOPPY
+-extern void amiga_floppy_setup(char *, int *);
+-#endif
+-static void amiga_reset (void);
+ extern void amiga_init_sound(void);
+ static void amiga_savekmsg_init(void);
+ static void amiga_mem_console_write(struct console *co, const char *b,
+@@ -101,9 +82,6 @@
+ void amiga_serial_console_write(struct console *co, const char *s,
+ unsigned int count);
+ static void amiga_debug_init(void);
+-#ifdef CONFIG_HEARTBEAT
+-static void amiga_heartbeat(int on);
+-#endif
+
+ static struct console amiga_console_driver = {
+ .name = "debug",
+@@ -384,48 +362,15 @@
+ for (i = 0; i < 4; i++)
+ request_resource(&iomem_resource, &((struct resource *)&mb_resources)[i]);
+
+- mach_sched_init = amiga_sched_init;
+- mach_init_IRQ = amiga_init_IRQ;
+-#ifndef CONFIG_APUS
+- mach_default_handler = &amiga_default_handler;
+- mach_request_irq = amiga_request_irq;
+- mach_free_irq = amiga_free_irq;
+- enable_irq = amiga_enable_irq;
+- disable_irq = amiga_disable_irq;
+-#endif
+- mach_get_model = amiga_get_model;
+- mach_get_hardware_list = amiga_get_hardware_list;
+- mach_gettimeoffset = amiga_gettimeoffset;
+ if (AMIGAHW_PRESENT(A3000_CLK)){
+- mach_gettod = a3000_gettod;
+ rtc_resource.name = "A3000 RTC";
+ request_resource(&iomem_resource, &rtc_resource);
+ }
+ else{ /* if (AMIGAHW_PRESENT(A2000_CLK)) */
+- mach_gettod = a2000_gettod;
+ rtc_resource.name = "A2000 RTC";
+ request_resource(&iomem_resource, &rtc_resource);
+ }
+
+- mach_max_dma_address = 0xffffffff; /*
+- * default MAX_DMA=0xffffffff
+- * on all machines. If we don't
+- * do so, the SCSI code will not
+- * be able to allocate any mem
+- * for transfers, unless we are
+- * dealing with a Z2 mem only
+- * system. /Jes
+- */
+-
+- mach_hwclk = amiga_hwclk;
+- mach_set_clock_mmss = amiga_set_clock_mmss;
+-#ifdef CONFIG_AMIGA_FLOPPY
+- mach_floppy_setup = amiga_floppy_setup;
+-#endif
+- mach_reset = amiga_reset;
+-#ifdef CONFIG_HEARTBEAT
+- mach_heartbeat = amiga_heartbeat;
+-#endif
+
+ /* Fill in the clock values (based on the 700 kHz E-Clock) */
+ amiga_masterclock = 40*amiga_eclock; /* 28 MHz */
+@@ -473,242 +418,141 @@
+ *(unsigned char *)ZTWO_VADDR(0xde0002) |= 0x80;
+ }
+
+-static unsigned short jiffy_ticks;
+-
+-static void __init amiga_sched_init(irqreturn_t (*timer_routine)(int, void *,
+- struct pt_regs *))
+-{
+- static struct resource sched_res = {
+- "timer", 0x00bfd400, 0x00bfd5ff,
+- };
+- jiffy_ticks = (amiga_eclock+HZ/2)/HZ;
+-
+- if (request_resource(&mb_resources._ciab, &sched_res))
+- printk("Cannot allocate ciab.ta{lo,hi}\n");
+- ciab.cra &= 0xC0; /* turn off timer A, continuous mode, from Eclk */
+- ciab.talo = jiffy_ticks % 256;
+- ciab.tahi = jiffy_ticks / 256;
+-
+- /* install interrupt service routine for CIAB Timer A
+- *
+- * Please don't change this to use ciaa, as it interferes with the
+- * SCSI code. We'll have to take a look at this later
+- */
+- request_irq(IRQ_AMIGA_CIAB_TA, timer_routine, 0, "timer", NULL);
+- /* start timer */
+- ciab.cra |= 0x11;
+-}
+-
+ #define TICK_SIZE 10000
+
+-extern unsigned char cia_get_irq_mask(unsigned int irq);
+-
+-/* This is always executed with interrupts disabled. */
+-static unsigned long amiga_gettimeoffset (void)
+-{
+- unsigned short hi, lo, hi2;
+- unsigned long ticks, offset = 0;
+-
+- /* read CIA B timer A current value */
+- hi = ciab.tahi;
+- lo = ciab.talo;
+- hi2 = ciab.tahi;
+-
+- if (hi != hi2) {
+- lo = ciab.talo;
+- hi = hi2;
+- }
+-
+- ticks = hi << 8 | lo;
+-
+- if (ticks > jiffy_ticks / 2)
+- /* check for pending interrupt */
+- if (cia_get_irq_mask(IRQ_AMIGA_CIAB) & CIA_ICR_TA)
+- offset = 10000;
+-
+- ticks = jiffy_ticks - ticks;
+- ticks = (10000 * ticks) / jiffy_ticks;
+-
+- return ticks + offset;
+-}
+-
+-static void a3000_gettod (int *yearp, int *monp, int *dayp,
+- int *hourp, int *minp, int *secp)
+-{
+- volatile struct tod3000 *tod = TOD_3000;
+-
+- tod->cntrl1 = TOD3000_CNTRL1_HOLD;
+-
+- *secp = tod->second1 * 10 + tod->second2;
+- *minp = tod->minute1 * 10 + tod->minute2;
+- *hourp = tod->hour1 * 10 + tod->hour2;
+- *dayp = tod->day1 * 10 + tod->day2;
+- *monp = tod->month1 * 10 + tod->month2;
+- *yearp = tod->year1 * 10 + tod->year2;
+-
+- tod->cntrl1 = TOD3000_CNTRL1_FREE;
+-}
+-
+-static void a2000_gettod (int *yearp, int *monp, int *dayp,
+- int *hourp, int *minp, int *secp)
+-{
+- volatile struct tod2000 *tod = TOD_2000;
+-
+- tod->cntrl1 = TOD2000_CNTRL1_HOLD;
+-
+- while (tod->cntrl1 & TOD2000_CNTRL1_BUSY)
+- ;
+-
+- *secp = tod->second1 * 10 + tod->second2;
+- *minp = tod->minute1 * 10 + tod->minute2;
+- *hourp = (tod->hour1 & 3) * 10 + tod->hour2;
+- *dayp = tod->day1 * 10 + tod->day2;
+- *monp = tod->month1 * 10 + tod->month2;
+- *yearp = tod->year1 * 10 + tod->year2;
+-
+- if (!(tod->cntrl3 & TOD2000_CNTRL3_24HMODE)){
+- if (!(tod->hour1 & TOD2000_HOUR1_PM) && *hourp == 12)
+- *hourp = 0;
+- else if ((tod->hour1 & TOD2000_HOUR1_PM) && *hourp != 12)
+- *hourp += 12;
+- }
+-
+- tod->cntrl1 &= ~TOD2000_CNTRL1_HOLD;
+-}
+-
+-static int amiga_hwclk(int op, struct hwclk_time *t)
++int amiga_hwclk(int op, struct rtc_time *t)
+ {
+ if (AMIGAHW_PRESENT(A3000_CLK)) {
+- volatile struct tod3000 *tod = TOD_3000;
+-
+- tod->cntrl1 = TOD3000_CNTRL1_HOLD;
++ tod_3000.cntrl1 = TOD3000_CNTRL1_HOLD;
+
+ if (!op) { /* read */
+- t->sec = tod->second1 * 10 + tod->second2;
+- t->min = tod->minute1 * 10 + tod->minute2;
+- t->hour = tod->hour1 * 10 + tod->hour2;
+- t->day = tod->day1 * 10 + tod->day2;
+- t->wday = tod->weekday;
+- t->mon = tod->month1 * 10 + tod->month2 - 1;
+- t->year = tod->year1 * 10 + tod->year2;
+- if (t->year <= 69)
+- t->year += 100;
++ t->tm_sec = tod_3000.second1 * 10 + tod_3000.second2;
++ t->tm_min = tod_3000.minute1 * 10 + tod_3000.minute2;
++ t->tm_hour = tod_3000.hour1 * 10 + tod_3000.hour2;
++ t->tm_mday = tod_3000.day1 * 10 + tod_3000.day2;
++ t->tm_wday = tod_3000.weekday;
++ t->tm_mon = tod_3000.month1 * 10 + tod_3000.month2 - 1;
++ t->tm_year = tod_3000.year1 * 10 + tod_3000.year2;
++ if (t->tm_year <= 69)
++ t->tm_year += 100;
+ } else {
+- tod->second1 = t->sec / 10;
+- tod->second2 = t->sec % 10;
+- tod->minute1 = t->min / 10;
+- tod->minute2 = t->min % 10;
+- tod->hour1 = t->hour / 10;
+- tod->hour2 = t->hour % 10;
+- tod->day1 = t->day / 10;
+- tod->day2 = t->day % 10;
+- if (t->wday != -1)
+- tod->weekday = t->wday;
+- tod->month1 = (t->mon + 1) / 10;
+- tod->month2 = (t->mon + 1) % 10;
+- if (t->year >= 100)
+- t->year -= 100;
+- tod->year1 = t->year / 10;
+- tod->year2 = t->year % 10;
++ tod_3000.second1 = t->tm_sec / 10;
++ tod_3000.second2 = t->tm_sec % 10;
++ tod_3000.minute1 = t->tm_min / 10;
++ tod_3000.minute2 = t->tm_min % 10;
++ tod_3000.hour1 = t->tm_hour / 10;
++ tod_3000.hour2 = t->tm_hour % 10;
++ tod_3000.day1 = t->tm_mday / 10;
++ tod_3000.day2 = t->tm_mday % 10;
++ if (t->tm_wday != -1)
++ tod_3000.weekday = t->tm_wday;
++ tod_3000.month1 = (t->tm_mon + 1) / 10;
++ tod_3000.month2 = (t->tm_mon + 1) % 10;
++ if (t->tm_year >= 100)
++ t->tm_year -= 100;
++ tod_3000.year1 = t->tm_year / 10;
++ tod_3000.year2 = t->tm_year % 10;
+ }
+
+- tod->cntrl1 = TOD3000_CNTRL1_FREE;
++ tod_3000.cntrl1 = TOD3000_CNTRL1_FREE;
+ } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ {
+- volatile struct tod2000 *tod = TOD_2000;
++ int cnt = 5;
+
+- tod->cntrl1 = TOD2000_CNTRL1_HOLD;
+-
+- while (tod->cntrl1 & TOD2000_CNTRL1_BUSY)
+- ;
++ tod_2000.cntrl1 = TOD2000_CNTRL1_HOLD;
++
++ while ((tod_2000.cntrl1 & TOD2000_CNTRL1_BUSY) && cnt--) {
++ tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD;
++ udelay(70);
++ tod_2000.cntrl1 |= TOD2000_CNTRL1_HOLD;
++ }
++
++ if (!cnt)
++ printk(KERN_INFO "hwclk: timed out waiting for RTC (0x%x)\n", tod_2000.cntrl1);
+
+ if (!op) { /* read */
+- t->sec = tod->second1 * 10 + tod->second2;
+- t->min = tod->minute1 * 10 + tod->minute2;
+- t->hour = (tod->hour1 & 3) * 10 + tod->hour2;
+- t->day = tod->day1 * 10 + tod->day2;
+- t->wday = tod->weekday;
+- t->mon = tod->month1 * 10 + tod->month2 - 1;
+- t->year = tod->year1 * 10 + tod->year2;
+- if (t->year <= 69)
+- t->year += 100;
+-
+- if (!(tod->cntrl3 & TOD2000_CNTRL3_24HMODE)){
+- if (!(tod->hour1 & TOD2000_HOUR1_PM) && t->hour == 12)
+- t->hour = 0;
+- else if ((tod->hour1 & TOD2000_HOUR1_PM) && t->hour != 12)
+- t->hour += 12;
++ t->tm_sec = tod_2000.second1 * 10 + tod_2000.second2;
++ t->tm_min = tod_2000.minute1 * 10 + tod_2000.minute2;
++ t->tm_hour = (tod_2000.hour1 & 3) * 10 + tod_2000.hour2;
++ t->tm_mday = tod_2000.day1 * 10 + tod_2000.day2;
++ t->tm_wday = tod_2000.weekday;
++ t->tm_mon = tod_2000.month1 * 10 + tod_2000.month2 - 1;
++ t->tm_year = tod_2000.year1 * 10 + tod_2000.year2;
++ if (t->tm_year <= 69)
++ t->tm_year += 100;
++
++ if (!(tod_2000.cntrl3 & TOD2000_CNTRL3_24HMODE)){
++ if (!(tod_2000.hour1 & TOD2000_HOUR1_PM) && t->tm_hour == 12)
++ t->tm_hour = 0;
++ else if ((tod_2000.hour1 & TOD2000_HOUR1_PM) && t->tm_hour != 12)
++ t->tm_hour += 12;
+ }
+ } else {
+- tod->second1 = t->sec / 10;
+- tod->second2 = t->sec % 10;
+- tod->minute1 = t->min / 10;
+- tod->minute2 = t->min % 10;
+- if (tod->cntrl3 & TOD2000_CNTRL3_24HMODE)
+- tod->hour1 = t->hour / 10;
+- else if (t->hour >= 12)
+- tod->hour1 = TOD2000_HOUR1_PM +
+- (t->hour - 12) / 10;
++ tod_2000.second1 = t->tm_sec / 10;
++ tod_2000.second2 = t->tm_sec % 10;
++ tod_2000.minute1 = t->tm_min / 10;
++ tod_2000.minute2 = t->tm_min % 10;
++ if (tod_2000.cntrl3 & TOD2000_CNTRL3_24HMODE)
++ tod_2000.hour1 = t->tm_hour / 10;
++ else if (t->tm_hour >= 12)
++ tod_2000.hour1 = TOD2000_HOUR1_PM +
++ (t->tm_hour - 12) / 10;
+ else
+- tod->hour1 = t->hour / 10;
+- tod->hour2 = t->hour % 10;
+- tod->day1 = t->day / 10;
+- tod->day2 = t->day % 10;
+- if (t->wday != -1)
+- tod->weekday = t->wday;
+- tod->month1 = (t->mon + 1) / 10;
+- tod->month2 = (t->mon + 1) % 10;
+- if (t->year >= 100)
+- t->year -= 100;
+- tod->year1 = t->year / 10;
+- tod->year2 = t->year % 10;
++ tod_2000.hour1 = t->tm_hour / 10;
++ tod_2000.hour2 = t->tm_hour % 10;
++ tod_2000.day1 = t->tm_mday / 10;
++ tod_2000.day2 = t->tm_mday % 10;
++ if (t->tm_wday != -1)
++ tod_2000.weekday = t->tm_wday;
++ tod_2000.month1 = (t->tm_mon + 1) / 10;
++ tod_2000.month2 = (t->tm_mon + 1) % 10;
++ if (t->tm_year >= 100)
++ t->tm_year -= 100;
++ tod_2000.year1 = t->tm_year / 10;
++ tod_2000.year2 = t->tm_year % 10;
+ }
+
+- tod->cntrl1 &= ~TOD2000_CNTRL1_HOLD;
++ tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD;
+ }
+
+ return 0;
+ }
+
+-static int amiga_set_clock_mmss (unsigned long nowtime)
++int amiga_set_clock_mmss(unsigned long nowtime)
+ {
+ short real_seconds = nowtime % 60, real_minutes = (nowtime / 60) % 60;
+
+ if (AMIGAHW_PRESENT(A3000_CLK)) {
+- volatile struct tod3000 *tod = TOD_3000;
+-
+- tod->cntrl1 = TOD3000_CNTRL1_HOLD;
++ tod_3000.cntrl1 = TOD3000_CNTRL1_HOLD;
+
+- tod->second1 = real_seconds / 10;
+- tod->second2 = real_seconds % 10;
+- tod->minute1 = real_minutes / 10;
+- tod->minute2 = real_minutes % 10;
++ tod_3000.second1 = real_seconds / 10;
++ tod_3000.second2 = real_seconds % 10;
++ tod_3000.minute1 = real_minutes / 10;
++ tod_3000.minute2 = real_minutes % 10;
+
+- tod->cntrl1 = TOD3000_CNTRL1_FREE;
++ tod_3000.cntrl1 = TOD3000_CNTRL1_FREE;
+ } else /* if (AMIGAHW_PRESENT(A2000_CLK)) */ {
+- volatile struct tod2000 *tod = TOD_2000;
++ int cnt = 5;
+
+- tod->cntrl1 = TOD2000_CNTRL1_HOLD;
+-
+- while (tod->cntrl1 & TOD2000_CNTRL1_BUSY)
+- ;
+-
+- tod->second1 = real_seconds / 10;
+- tod->second2 = real_seconds % 10;
+- tod->minute1 = real_minutes / 10;
+- tod->minute2 = real_minutes % 10;
++ tod_2000.cntrl1 |= TOD2000_CNTRL1_HOLD;
+
+- tod->cntrl1 &= ~TOD2000_CNTRL1_HOLD;
+- }
++ while ((tod_2000.cntrl1 & TOD2000_CNTRL1_BUSY) && cnt--) {
++ tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD;
++ udelay(70);
++ tod_2000.cntrl1 |= TOD2000_CNTRL1_HOLD;
++ }
+
+- return 0;
+-}
++ if (!cnt)
++ printk(KERN_INFO "set_clock_mmss: timed out waiting for RTC (0x%x)\n", tod_2000.cntrl1);
+
+-static NORET_TYPE void amiga_reset( void )
+- ATTRIB_NORET;
++ tod_2000.second1 = real_seconds / 10;
++ tod_2000.second2 = real_seconds % 10;
++ tod_2000.minute1 = real_minutes / 10;
++ tod_2000.minute2 = real_minutes % 10;
+
+-static void amiga_reset (void)
+-{
+- for (;;);
++ tod_2000.cntrl1 &= ~TOD2000_CNTRL1_HOLD;
++ }
++
++ return 0;
+ }
+
+
+@@ -841,16 +685,6 @@
+ }
+ }
+
+-#ifdef CONFIG_HEARTBEAT
+-static void amiga_heartbeat(int on)
+-{
+- if (on)
+- ciaa.pra &= ~2;
+- else
+- ciaa.pra |= 2;
+-}
+-#endif
+-
+ /*
+ * Amiga specific parts of /proc
+ */
+@@ -943,19 +777,14 @@
+ u_long mem;
+ int i;
+
+- if (mach_get_model)
+- mach_get_model(model);
+- else
+- strcpy(model, "Unknown PowerPC");
++ amiga_get_model(model);
+
+ len += sprintf(buffer+len, "Model:\t\t%s\n", model);
+- len += get_cpuinfo(buffer+len);
++ //len += get_cpuinfo(buffer+len);
+ for (mem = 0, i = 0; i < m68k_realnum_memory; i++)
+ mem += m68k_memory[i].size;
+ len += sprintf(buffer+len, "System Memory:\t%ldK\n", mem>>10);
+-
+- if (mach_get_hardware_list)
+- len += mach_get_hardware_list(buffer+len);
++ len += amiga_get_hardware_list(buffer+len);
+
+ return(len);
+ }
+diff -Nur -x CVS linux-2.6.12/arch/ppc/amiga/Makefile 2.6/arch/ppc/amiga/Makefile
+--- linux-2.6.12/arch/ppc/amiga/Makefile 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/amiga/Makefile 2004-07-03 19:53:51.000000000 +0200
+@@ -1,8 +1,8 @@
+ #
+-# Makefile for Linux arch/m68k/amiga source directory
++# Makefile for Linux arch/ppc/amiga source directory
+ #
+
+-obj-y := config.o amiints.o cia.o time.o bootinfo.o amisound.o \
+- chipram.o amiga_ksyms.o
++obj-y := config.o amiints.o cia.o bootinfo.o \
++ amisound.o chipram.o amiga_ksyms.o
+
+ obj-$(CONFIG_AMIGA_PCMCIA) += pcmcia.o
+diff -Nur -x CVS linux-2.6.12/arch/ppc/amiga/time.c 2.6/arch/ppc/amiga/time.c
+--- linux-2.6.12/arch/ppc/amiga/time.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/amiga/time.c 1970-01-01 01:00:00.000000000 +0100
+@@ -1,58 +0,0 @@
+-#include <linux/config.h> /* CONFIG_HEARTBEAT */
+-#include <linux/errno.h>
+-#include <linux/sched.h>
+-#include <linux/kernel.h>
+-#include <linux/param.h>
+-#include <linux/string.h>
+-#include <linux/mm.h>
+-
+-#include <asm/machdep.h>
+-#include <asm/io.h>
+-
+-#include <linux/timex.h>
+-
+-unsigned long m68k_get_rtc_time(void)
+-{
+- unsigned int year, mon, day, hour, min, sec;
+-
+- extern void arch_gettod(int *year, int *mon, int *day, int *hour,
+- int *min, int *sec);
+-
+- arch_gettod (&year, &mon, &day, &hour, &min, &sec);
+-
+- if ((year += 1900) < 1970)
+- year += 100;
+-
+- return mktime(year, mon, day, hour, min, sec);
+-}
+-
+-int m68k_set_rtc_time(unsigned long nowtime)
+-{
+- if (mach_set_clock_mmss)
+- return mach_set_clock_mmss (nowtime);
+- return -1;
+-}
+-
+-void apus_heartbeat (void)
+-{
+-#ifdef CONFIG_HEARTBEAT
+- static unsigned cnt = 0, period = 0, dist = 0;
+-
+- if (cnt == 0 || cnt == dist)
+- mach_heartbeat( 1 );
+- else if (cnt == 7 || cnt == dist+7)
+- mach_heartbeat( 0 );
+-
+- if (++cnt > period) {
+- cnt = 0;
+- /* The hyperbolic function below modifies the heartbeat period
+- * length in dependency of the current (5min) load. It goes
+- * through the points f(0)=126, f(1)=86, f(5)=51,
+- * f(inf)->30. */
+- period = ((672<<FSHIFT)/(5*avenrun[0]+(7<<FSHIFT))) + 30;
+- dist = period / 4;
+- }
+-#endif
+- /* should be made smarter */
+- ppc_md.heartbeat_count = 1;
+-}
+diff -Nur -x CVS linux-2.6.12/arch/ppc/configs/apus_defconfig 2.6/arch/ppc/configs/apus_defconfig
+--- linux-2.6.12/arch/ppc/configs/apus_defconfig 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/configs/apus_defconfig 2005-08-04 20:04:09.000000000 +0200
+@@ -1,61 +1,99 @@
+ #
+ # Automatically generated make config: don't edit
++# Linux kernel version: 2.6.12
++# Sun Jul 31 18:13:08 2005
+ #
+ CONFIG_MMU=y
++CONFIG_GENERIC_HARDIRQS=y
+ CONFIG_RWSEM_XCHGADD_ALGORITHM=y
++CONFIG_GENERIC_CALIBRATE_DELAY=y
+ CONFIG_HAVE_DEC_LOCK=y
++CONFIG_PPC=y
++CONFIG_PPC32=y
++CONFIG_GENERIC_NVRAM=y
++CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
+
+ #
+ # Code maturity level options
+ #
+ CONFIG_EXPERIMENTAL=y
++CONFIG_CLEAN_COMPILE=y
++CONFIG_BROKEN_ON_SMP=y
++CONFIG_INIT_ENV_ARG_LIMIT=32
+
+ #
+ # General setup
+ #
++CONFIG_LOCALVERSION=""
+ CONFIG_SWAP=y
+ CONFIG_SYSVIPC=y
+-# CONFIG_BSD_PROCESS_ACCT is not set
++CONFIG_POSIX_MQUEUE=y
++CONFIG_BSD_PROCESS_ACCT=y
++# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+ CONFIG_SYSCTL=y
+-CONFIG_LOG_BUF_SHIFT=14
++# CONFIG_AUDIT is not set
++# CONFIG_HOTPLUG is not set
++CONFIG_KOBJECT_UEVENT=y
++# CONFIG_IKCONFIG is not set
+ # CONFIG_EMBEDDED is not set
++CONFIG_KALLSYMS=y
++# CONFIG_KALLSYMS_ALL is not set
++# CONFIG_KALLSYMS_EXTRA_PASS is not set
++CONFIG_PRINTK=y
++CONFIG_BUG=y
++CONFIG_BASE_FULL=y
+ CONFIG_FUTEX=y
+ CONFIG_EPOLL=y
++CONFIG_SHMEM=y
++CONFIG_CC_ALIGN_FUNCTIONS=0
++CONFIG_CC_ALIGN_LABELS=0
++CONFIG_CC_ALIGN_LOOPS=0
++CONFIG_CC_ALIGN_JUMPS=0
++# CONFIG_TINY_SHMEM is not set
++CONFIG_BASE_SMALL=0
+
+ #
+ # Loadable module support
+ #
+ CONFIG_MODULES=y
+ CONFIG_MODULE_UNLOAD=y
+-CONFIG_MODULE_FORCE_UNLOAD=y
++# CONFIG_MODULE_FORCE_UNLOAD is not set
+ CONFIG_OBSOLETE_MODPARM=y
+ # CONFIG_MODVERSIONS is not set
++# CONFIG_MODULE_SRCVERSION_ALL is not set
+ CONFIG_KMOD=y
+
+ #
+-# Platform support
++# Processor
+ #
+-CONFIG_PPC=y
+-CONFIG_PPC32=y
+ CONFIG_6xx=y
+ # CONFIG_40x is not set
++# CONFIG_44x is not set
+ # CONFIG_POWER3 is not set
++# CONFIG_POWER4 is not set
+ # CONFIG_8xx is not set
++# CONFIG_E500 is not set
++CONFIG_PPC_FPU=y
++# CONFIG_ALTIVEC is not set
++# CONFIG_TAU is not set
++# CONFIG_CPU_FREQ is not set
++# CONFIG_PM is not set
++CONFIG_PPC_STD_MMU=y
+
+ #
+-# IBM 4xx options
++# Platform options
+ #
+-# CONFIG_8260 is not set
+-CONFIG_GENERIC_ISA_DMA=y
+-CONFIG_PPC_STD_MMU=y
+-CONFIG_SERIAL_CONSOLE=y
+ # CONFIG_PPC_MULTIPLATFORM is not set
+ CONFIG_APUS=y
+-# CONFIG_WILLOW_2 is not set
++# CONFIG_KATANA is not set
++# CONFIG_WILLOW is not set
++# CONFIG_CPCI690 is not set
+ # CONFIG_PCORE is not set
+ # CONFIG_POWERPMC250 is not set
+-# CONFIG_EV64260 is not set
++# CONFIG_CHESTNUT is not set
+ # CONFIG_SPRUCE is not set
++# CONFIG_HDPU is not set
++# CONFIG_EV64260 is not set
+ # CONFIG_LOPEC is not set
+ # CONFIG_MCPN765 is not set
+ # CONFIG_MVME5100 is not set
+@@ -63,41 +101,25 @@
+ # CONFIG_PRPMC750 is not set
+ # CONFIG_PRPMC800 is not set
+ # CONFIG_SANDPOINT is not set
++# CONFIG_RADSTONE_PPC7D is not set
+ # CONFIG_ADIR is not set
+ # CONFIG_K2 is not set
+ # CONFIG_PAL4 is not set
+ # CONFIG_GEMINI is not set
++# CONFIG_EST8260 is not set
++# CONFIG_SBC82xx is not set
++# CONFIG_SBS8260 is not set
++# CONFIG_RPX8260 is not set
++# CONFIG_TQM8260 is not set
++# CONFIG_ADS8272 is not set
++# CONFIG_PQ2FADS is not set
++# CONFIG_LITE5200 is not set
++# CONFIG_MPC834x_SYS is not set
+ # CONFIG_SMP is not set
+ # CONFIG_PREEMPT is not set
+-# CONFIG_ALTIVEC is not set
+-# CONFIG_TAU is not set
+-# CONFIG_CPU_FREQ is not set
+-
+-#
+-# General setup
+-#
+ # CONFIG_HIGHMEM is not set
+-CONFIG_PCI=y
+-CONFIG_PCI_DOMAINS=y
+-CONFIG_PCI_PERMEDIA=y
+-CONFIG_KCORE_ELF=y
+ CONFIG_BINFMT_ELF=y
+-CONFIG_KERNEL_ELF=y
+ CONFIG_BINFMT_MISC=m
+-CONFIG_PCI_LEGACY_PROC=y
+-CONFIG_PCI_NAMES=y
+-# CONFIG_HOTPLUG is not set
+-
+-#
+-# Parallel port support
+-#
+-CONFIG_PARPORT=m
+-# CONFIG_PARPORT_PC is not set
+-CONFIG_PARPORT_AMIGA=m
+-# CONFIG_PARPORT_MFC3 is not set
+-# CONFIG_PARPORT_OTHER is not set
+-# CONFIG_PARPORT_1284 is not set
+-CONFIG_PPC601_SYNC_FIX=y
+ # CONFIG_CMDLINE_BOOL is not set
+ CONFIG_AMIGA=y
+ CONFIG_ZORRO=y
+@@ -105,16 +127,34 @@
+ CONFIG_APUS_FAST_EXCEPT=y
+ CONFIG_AMIGA_PCMCIA=y
+ CONFIG_AMIGA_BUILTIN_SERIAL=y
+-CONFIG_GVPIOEXT=y
++CONFIG_GVPIOEXT=m
+ CONFIG_GVPIOEXT_LP=m
+ CONFIG_GVPIOEXT_PLIP=m
+-CONFIG_MULTIFACE_III_TTY=y
+-CONFIG_A2232=y
+-CONFIG_WHIPPET_SERIAL=y
++CONFIG_MULTIFACE_III_TTY=m
++CONFIG_A2232=m
++CONFIG_WHIPPET_SERIAL=m
+ CONFIG_APNE=y
++CONFIG_SERIAL_CONSOLE=y
+ CONFIG_HEARTBEAT=y
+ CONFIG_PROC_HARDWARE=y
+ CONFIG_ZORRO_NAMES=y
++CONFIG_ISA_DMA_API=y
++
++#
++# Bus options
++#
++CONFIG_GENERIC_ISA_DMA=y
++CONFIG_PCI=y
++CONFIG_PCI_DOMAINS=y
++CONFIG_PCI_PERMEDIA=y
++CONFIG_PCI_LEGACY_PROC=y
++CONFIG_PCI_NAMES=y
++# CONFIG_PCI_DEBUG is not set
++
++#
++# PCCARD (PCMCIA/CardBus) support
++#
++# CONFIG_PCCARD is not set
+
+ #
+ # Advanced setup
+@@ -131,14 +171,36 @@
+ CONFIG_BOOT_LOAD=0x00800000
+
+ #
++# Device Drivers
++#
++
++#
++# Generic Driver Options
++#
++CONFIG_STANDALONE=y
++CONFIG_PREVENT_FIRMWARE_BUILD=y
++# CONFIG_FW_LOADER is not set
++# CONFIG_DEBUG_DRIVER is not set
++
++#
+ # Memory Technology Devices (MTD)
+ #
+ # CONFIG_MTD is not set
+
+ #
++# Parallel port support
++#
++CONFIG_PARPORT=m
++# CONFIG_PARPORT_PC is not set
++CONFIG_PARPORT_NOT_PC=y
++CONFIG_PARPORT_AMIGA=m
++# CONFIG_PARPORT_MFC3 is not set
++# CONFIG_PARPORT_GSC is not set
++# CONFIG_PARPORT_1284 is not set
++
++#
+ # Plug and Play support
+ #
+-# CONFIG_PNP is not set
+
+ #
+ # Block devices
+@@ -151,42 +213,41 @@
+ # CONFIG_BLK_CPQ_CISS_DA is not set
+ # CONFIG_BLK_DEV_DAC960 is not set
+ # CONFIG_BLK_DEV_UMEM is not set
++# CONFIG_BLK_DEV_COW_COMMON is not set
+ CONFIG_BLK_DEV_LOOP=y
++# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+ CONFIG_BLK_DEV_NBD=m
+-CONFIG_BLK_DEV_RAM=y
++# CONFIG_BLK_DEV_SX8 is not set
++CONFIG_BLK_DEV_RAM=m
++CONFIG_BLK_DEV_RAM_COUNT=16
+ CONFIG_BLK_DEV_RAM_SIZE=4096
+-CONFIG_BLK_DEV_INITRD=y
++CONFIG_INITRAMFS_SOURCE=""
++# CONFIG_LBD is not set
++# CONFIG_CDROM_PKTCDVD is not set
+
+ #
+-# Multi-device support (RAID and LVM)
++# IO Schedulers
+ #
+-CONFIG_MD=y
+-CONFIG_BLK_DEV_MD=m
+-CONFIG_MD_LINEAR=m
+-CONFIG_MD_RAID0=m
+-CONFIG_MD_RAID1=m
+-CONFIG_MD_RAID5=m
+-# CONFIG_MD_MULTIPATH is not set
+-CONFIG_BLK_DEV_DM=m
++CONFIG_IOSCHED_NOOP=y
++CONFIG_IOSCHED_AS=y
++CONFIG_IOSCHED_DEADLINE=y
++CONFIG_IOSCHED_CFQ=y
++# CONFIG_ATA_OVER_ETH is not set
+
+ #
+-# ATA/IDE/MFM/RLL support
++# ATA/ATAPI/MFM/RLL support
+ #
+ CONFIG_IDE=y
+-
+-#
+-# IDE, ATA and ATAPI Block devices
+-#
+ CONFIG_BLK_DEV_IDE=y
+
+ #
+ # Please see Documentation/ide.txt for help/info on IDE drives
+ #
+-# CONFIG_BLK_DEV_HD is not set
++# CONFIG_BLK_DEV_IDE_SATA is not set
+ CONFIG_BLK_DEV_IDEDISK=y
+ # CONFIG_IDEDISK_MULTI_MODE is not set
+-# CONFIG_IDEDISK_STROKE is not set
+ CONFIG_BLK_DEV_IDECD=y
++# CONFIG_BLK_DEV_IDETAPE is not set
+ CONFIG_BLK_DEV_IDEFLOPPY=y
+ CONFIG_BLK_DEV_IDESCSI=m
+ # CONFIG_IDE_TASK_IOCTL is not set
+@@ -194,15 +255,21 @@
+ #
+ # IDE chipset support/bugfixes
+ #
++CONFIG_IDE_GENERIC=y
+ # CONFIG_BLK_DEV_IDEPCI is not set
++# CONFIG_IDE_ARM is not set
+ CONFIG_BLK_DEV_GAYLE=y
+ CONFIG_BLK_DEV_IDEDOUBLER=y
+ CONFIG_BLK_DEV_BUDDHA=y
++# CONFIG_BLK_DEV_IDEDMA is not set
++# CONFIG_IDEDMA_AUTO is not set
++# CONFIG_BLK_DEV_HD is not set
+
+ #
+-# SCSI support
++# SCSI device support
+ #
+ CONFIG_SCSI=y
++CONFIG_SCSI_PROC_FS=y
+
+ #
+ # SCSI support type (disk, tape, CD-ROM)
+@@ -218,53 +285,56 @@
+ # Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+ #
+ # CONFIG_SCSI_MULTI_LUN is not set
+-# CONFIG_SCSI_REPORT_LUNS is not set
+ CONFIG_SCSI_CONSTANTS=y
+ CONFIG_SCSI_LOGGING=y
+
+ #
++# SCSI Transport Attributes
++#
++# CONFIG_SCSI_SPI_ATTRS is not set
++# CONFIG_SCSI_FC_ATTRS is not set
++# CONFIG_SCSI_ISCSI_ATTRS is not set
++
++#
+ # SCSI low-level drivers
+ #
+ # CONFIG_BLK_DEV_3W_XXXX_RAID is not set
++# CONFIG_SCSI_3W_9XXX is not set
+ # CONFIG_SCSI_ACARD is not set
+ # CONFIG_SCSI_AACRAID is not set
+ # CONFIG_SCSI_AIC7XXX is not set
+ # CONFIG_SCSI_AIC7XXX_OLD is not set
+ # CONFIG_SCSI_AIC79XX is not set
+ # CONFIG_SCSI_DPT_I2O is not set
+-# CONFIG_SCSI_ADVANSYS is not set
+-# CONFIG_SCSI_IN2000 is not set
+-# CONFIG_SCSI_AM53C974 is not set
+-# CONFIG_SCSI_MEGARAID is not set
++# CONFIG_MEGARAID_NEWGEN is not set
++# CONFIG_MEGARAID_LEGACY is not set
++# CONFIG_SCSI_SATA is not set
+ # CONFIG_SCSI_BUSLOGIC is not set
+-# CONFIG_SCSI_CPQFCTS is not set
+ # CONFIG_SCSI_DMX3191D is not set
+ # CONFIG_SCSI_EATA is not set
+-# CONFIG_SCSI_EATA_PIO is not set
+ # CONFIG_SCSI_FUTURE_DOMAIN is not set
+ # CONFIG_SCSI_GDTH is not set
+-# CONFIG_SCSI_GENERIC_NCR5380 is not set
+-# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set
++# CONFIG_SCSI_IPS is not set
+ # CONFIG_SCSI_INITIO is not set
+ # CONFIG_SCSI_INIA100 is not set
+ # CONFIG_SCSI_PPA is not set
+ # CONFIG_SCSI_IMM is not set
+-# CONFIG_SCSI_NCR53C7xx is not set
+ # CONFIG_SCSI_SYM53C8XX_2 is not set
+-# CONFIG_SCSI_NCR53C8XX is not set
+-# CONFIG_SCSI_SYM53C8XX is not set
+-# CONFIG_SCSI_PCI2000 is not set
+-# CONFIG_SCSI_PCI2220I is not set
+-# CONFIG_SCSI_QLOGIC_ISP is not set
++# CONFIG_SCSI_IPR is not set
+ # CONFIG_SCSI_QLOGIC_FC is not set
+ # CONFIG_SCSI_QLOGIC_1280 is not set
++CONFIG_SCSI_QLA2XXX=y
++# CONFIG_SCSI_QLA21XX is not set
++# CONFIG_SCSI_QLA22XX is not set
++# CONFIG_SCSI_QLA2300 is not set
++# CONFIG_SCSI_QLA2322 is not set
++# CONFIG_SCSI_QLA6312 is not set
++# CONFIG_SCSI_LPFC is not set
+ # CONFIG_SCSI_DC395x is not set
+ # CONFIG_SCSI_DC390T is not set
+-# CONFIG_SCSI_U14_34F is not set
+ # CONFIG_SCSI_NSP32 is not set
+ # CONFIG_SCSI_DEBUG is not set
+ CONFIG_A3000_SCSI=y
+-CONFIG_A4000T_SCSI=y
+ CONFIG_A2091_SCSI=y
+ CONFIG_GVP11_SCSI=y
+ CONFIG_CYBERSTORM_SCSI=y
+@@ -272,18 +342,35 @@
+ CONFIG_BLZ2060_SCSI=y
+ CONFIG_BLZ1230_SCSI=y
+ CONFIG_FASTLANE_SCSI=y
+-CONFIG_A4091_SCSI=y
+-CONFIG_WARPENGINE_SCSI=y
+-CONFIG_BLZ603EPLUS_SCSI=y
+ CONFIG_OKTAGON_SCSI=y
+
+ #
++# Multi-device support (RAID and LVM)
++#
++CONFIG_MD=y
++CONFIG_BLK_DEV_MD=m
++CONFIG_MD_LINEAR=m
++CONFIG_MD_RAID0=m
++CONFIG_MD_RAID1=m
++CONFIG_MD_RAID10=m
++CONFIG_MD_RAID5=m
++# CONFIG_MD_RAID6 is not set
++# CONFIG_MD_MULTIPATH is not set
++# CONFIG_MD_FAULTY is not set
++CONFIG_BLK_DEV_DM=m
++# CONFIG_DM_CRYPT is not set
++# CONFIG_DM_SNAPSHOT is not set
++# CONFIG_DM_MIRROR is not set
++# CONFIG_DM_ZERO is not set
++# CONFIG_DM_MULTIPATH is not set
++
++#
+ # Fusion MPT device support
+ #
+ # CONFIG_FUSION is not set
+
+ #
+-# IEEE 1394 (FireWire) support (EXPERIMENTAL)
++# IEEE 1394 (FireWire) support
+ #
+ # CONFIG_IEEE1394 is not set
+
+@@ -293,6 +380,10 @@
+ # CONFIG_I2O is not set
+
+ #
++# Macintosh device drivers
++#
++
++#
+ # Networking support
+ #
+ CONFIG_NET=y
+@@ -300,11 +391,8 @@
+ #
+ # Networking options
+ #
+-CONFIG_PACKET=m
++CONFIG_PACKET=y
+ CONFIG_PACKET_MMAP=y
+-CONFIG_NETLINK_DEV=m
+-CONFIG_NETFILTER=y
+-# CONFIG_NETFILTER_DEBUG is not set
+ CONFIG_UNIX=y
+ # CONFIG_NET_KEY is not set
+ CONFIG_INET=y
+@@ -314,16 +402,29 @@
+ # CONFIG_NET_IPIP is not set
+ # CONFIG_NET_IPGRE is not set
+ # CONFIG_ARPD is not set
+-# CONFIG_INET_ECN is not set
+ CONFIG_SYN_COOKIES=y
+ # CONFIG_INET_AH is not set
+ # CONFIG_INET_ESP is not set
+ # CONFIG_INET_IPCOMP is not set
++# CONFIG_INET_TUNNEL is not set
++CONFIG_IP_TCPDIAG=y
++# CONFIG_IP_TCPDIAG_IPV6 is not set
++
++#
++# IP: Virtual Server Configuration
++#
++# CONFIG_IP_VS is not set
++# CONFIG_IPV6 is not set
++CONFIG_NETFILTER=y
++# CONFIG_NETFILTER_DEBUG is not set
+
+ #
+ # IP: Netfilter Configuration
+ #
+ CONFIG_IP_NF_CONNTRACK=m
++# CONFIG_IP_NF_CT_ACCT is not set
++# CONFIG_IP_NF_CONNTRACK_MARK is not set
++# CONFIG_IP_NF_CT_PROTO_SCTP is not set
+ CONFIG_IP_NF_FTP=m
+ CONFIG_IP_NF_IRC=m
+ CONFIG_IP_NF_TFTP=m
+@@ -331,11 +432,13 @@
+ CONFIG_IP_NF_QUEUE=m
+ CONFIG_IP_NF_IPTABLES=m
+ CONFIG_IP_NF_MATCH_LIMIT=m
++# CONFIG_IP_NF_MATCH_IPRANGE is not set
+ CONFIG_IP_NF_MATCH_MAC=m
+ # CONFIG_IP_NF_MATCH_PKTTYPE is not set
+ CONFIG_IP_NF_MATCH_MARK=m
+ CONFIG_IP_NF_MATCH_MULTIPORT=m
+ CONFIG_IP_NF_MATCH_TOS=m
++# CONFIG_IP_NF_MATCH_RECENT is not set
+ # CONFIG_IP_NF_MATCH_ECN is not set
+ # CONFIG_IP_NF_MATCH_DSCP is not set
+ # CONFIG_IP_NF_MATCH_AH_ESP is not set
+@@ -345,15 +448,23 @@
+ CONFIG_IP_NF_MATCH_HELPER=m
+ CONFIG_IP_NF_MATCH_STATE=m
+ CONFIG_IP_NF_MATCH_CONNTRACK=m
+-CONFIG_IP_NF_MATCH_UNCLEAN=m
+ CONFIG_IP_NF_MATCH_OWNER=m
++# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
++# CONFIG_IP_NF_MATCH_REALM is not set
++# CONFIG_IP_NF_MATCH_SCTP is not set
++# CONFIG_IP_NF_MATCH_COMMENT is not set
++# CONFIG_IP_NF_MATCH_HASHLIMIT is not set
+ CONFIG_IP_NF_FILTER=m
+ CONFIG_IP_NF_TARGET_REJECT=m
+-CONFIG_IP_NF_TARGET_MIRROR=m
++CONFIG_IP_NF_TARGET_LOG=m
++CONFIG_IP_NF_TARGET_ULOG=m
++CONFIG_IP_NF_TARGET_TCPMSS=m
+ CONFIG_IP_NF_NAT=m
+ CONFIG_IP_NF_NAT_NEEDED=y
+ CONFIG_IP_NF_TARGET_MASQUERADE=m
+ CONFIG_IP_NF_TARGET_REDIRECT=m
++# CONFIG_IP_NF_TARGET_NETMAP is not set
++# CONFIG_IP_NF_TARGET_SAME is not set
+ CONFIG_IP_NF_NAT_SNMP_BASIC=m
+ CONFIG_IP_NF_NAT_IRC=m
+ CONFIG_IP_NF_NAT_FTP=m
+@@ -364,64 +475,64 @@
+ CONFIG_IP_NF_TARGET_ECN=m
+ CONFIG_IP_NF_TARGET_DSCP=m
+ CONFIG_IP_NF_TARGET_MARK=m
+-CONFIG_IP_NF_TARGET_LOG=m
+-CONFIG_IP_NF_TARGET_ULOG=m
+-CONFIG_IP_NF_TARGET_TCPMSS=m
++# CONFIG_IP_NF_TARGET_CLASSIFY is not set
++# CONFIG_IP_NF_RAW is not set
+ CONFIG_IP_NF_ARPTABLES=m
+ CONFIG_IP_NF_ARPFILTER=m
+-CONFIG_IP_NF_COMPAT_IPCHAINS=m
+-# CONFIG_IP_NF_COMPAT_IPFWADM is not set
+-# CONFIG_IPV6 is not set
+-# CONFIG_XFRM_USER is not set
++# CONFIG_IP_NF_ARP_MANGLE is not set
+
+ #
+ # SCTP Configuration (EXPERIMENTAL)
+ #
+-CONFIG_IPV6_SCTP__=y
+ # CONFIG_IP_SCTP is not set
+ # CONFIG_ATM is not set
++# CONFIG_BRIDGE is not set
+ # CONFIG_VLAN_8021Q is not set
+-# CONFIG_LLC is not set
+ # CONFIG_DECNET is not set
+-# CONFIG_BRIDGE is not set
++# CONFIG_LLC2 is not set
++# CONFIG_IPX is not set
++# CONFIG_ATALK is not set
+ # CONFIG_X25 is not set
+ # CONFIG_LAPB is not set
+ # CONFIG_NET_DIVERT is not set
+ # CONFIG_ECONET is not set
+ # CONFIG_WAN_ROUTER is not set
+-# CONFIG_NET_HW_FLOWCONTROL is not set
+
+ #
+ # QoS and/or fair queueing
+ #
+ # CONFIG_NET_SCHED is not set
++# CONFIG_NET_CLS_ROUTE is not set
+
+ #
+ # Network testing
+ #
+ # CONFIG_NET_PKTGEN is not set
++# CONFIG_NETPOLL is not set
++# CONFIG_NET_POLL_CONTROLLER is not set
++# CONFIG_HAMRADIO is not set
++# CONFIG_IRDA is not set
++# CONFIG_BT is not set
+ CONFIG_NETDEVICES=y
++CONFIG_DUMMY=m
++# CONFIG_BONDING is not set
++# CONFIG_EQUALIZER is not set
++CONFIG_TUN=m
+
+ #
+ # ARCnet devices
+ #
+ # CONFIG_ARCNET is not set
+-CONFIG_DUMMY=m
+-# CONFIG_BONDING is not set
+-# CONFIG_EQUALIZER is not set
+-CONFIG_TUN=m
+-# CONFIG_ETHERTAP is not set
+
+ #
+ # Ethernet (10 or 100Mbit)
+ #
+ CONFIG_NET_ETHERNET=y
+ # CONFIG_MII is not set
+-# CONFIG_OAKNET is not set
+ CONFIG_ARIADNE=y
+-# CONFIG_ZORRO8390 is not set
+ CONFIG_A2065=y
+ CONFIG_HYDRA=y
++CONFIG_ZORRO8390=y
+ # CONFIG_HAPPYMEAL is not set
+ # CONFIG_SUNGEM is not set
+ # CONFIG_NET_VENDOR_3COM is not set
+@@ -445,11 +556,28 @@
+ # CONFIG_R8169 is not set
+ # CONFIG_SK98LIN is not set
+ # CONFIG_TIGON3 is not set
++# CONFIG_BNX2 is not set
+
+ #
+ # Ethernet (10000 Mbit)
+ #
+ # CONFIG_IXGB is not set
++# CONFIG_S2IO is not set
++
++#
++# Token Ring devices
++#
++# CONFIG_TR is not set
++
++#
++# Wireless LAN (non-hamradio)
++#
++# CONFIG_NET_RADIO is not set
++
++#
++# Wan interfaces
++#
++# CONFIG_WAN is not set
+ # CONFIG_FDDI is not set
+ # CONFIG_HIPPI is not set
+ CONFIG_PLIP=m
+@@ -465,96 +593,29 @@
+ CONFIG_SLIP_COMPRESSED=y
+ CONFIG_SLIP_SMART=y
+ CONFIG_SLIP_MODE_SLIP6=y
+-
+-#
+-# Wireless LAN (non-hamradio)
+-#
+-# CONFIG_NET_RADIO is not set
+-
+-#
+-# Token Ring devices (depends on LLC=y)
+-#
+ # CONFIG_NET_FC is not set
+-# CONFIG_RCPCI is not set
+ # CONFIG_SHAPER is not set
+-
+-#
+-# Wan interfaces
+-#
+-# CONFIG_WAN is not set
+-
+-#
+-# Amateur Radio support
+-#
+-# CONFIG_HAMRADIO is not set
+-
+-#
+-# IrDA (infrared) support
+-#
+-# CONFIG_IRDA is not set
++# CONFIG_NETCONSOLE is not set
+
+ #
+ # ISDN subsystem
+ #
+-# CONFIG_ISDN_BOOL is not set
++# CONFIG_ISDN is not set
+
+ #
+-# Graphics support
++# Telephony Support
+ #
+-CONFIG_FB=y
+-# CONFIG_FB_CIRRUS is not set
+-CONFIG_FB_PM2=y
+-# CONFIG_FB_PM2_FIFO_DISCONNECT is not set
+-# CONFIG_FB_PM2_PCI is not set
+-CONFIG_FB_PM2_CVPPC=y
+-CONFIG_FB_CYBER2000=y
+-CONFIG_FB_AMIGA=y
+-CONFIG_FB_AMIGA_OCS=y
+-CONFIG_FB_AMIGA_ECS=y
+-CONFIG_FB_AMIGA_AGA=y
+-CONFIG_FB_CYBER=y
+-CONFIG_FB_VIRGE=y
+-CONFIG_FB_RETINAZ3=y
+-CONFIG_FB_FM2=y
+-# CONFIG_FB_CT65550 is not set
+-# CONFIG_FB_IMSTT is not set
+-# CONFIG_FB_S3TRIO is not set
+-# CONFIG_FB_VGA16 is not set
+-# CONFIG_FB_RIVA is not set
+-# CONFIG_FB_MATROX is not set
+-# CONFIG_FB_RADEON is not set
+-# CONFIG_FB_ATY128 is not set
+-# CONFIG_FB_ATY is not set
+-# CONFIG_FB_SIS is not set
+-# CONFIG_FB_NEOMAGIC is not set
+-# CONFIG_FB_3DFX is not set
+-# CONFIG_FB_VOODOO1 is not set
+-# CONFIG_FB_TRIDENT is not set
+-# CONFIG_FB_PM3 is not set
+-# CONFIG_FB_VIRTUAL is not set
+-
+-#
+-# Logo configuration
+-#
+-CONFIG_LOGO=y
+-CONFIG_LOGO_LINUX_MONO=y
+-CONFIG_LOGO_LINUX_VGA16=y
+-CONFIG_LOGO_LINUX_CLUT224=y
+-
+-#
+-# Old CD-ROM drivers (not SCSI, not IDE)
+-#
+-# CONFIG_CD_NO_IDESCSI is not set
++# CONFIG_PHONE is not set
+
+ #
+ # Input device support
+ #
+-CONFIG_INPUT=m
++CONFIG_INPUT=y
+
+ #
+ # Userland interfaces
+ #
+-CONFIG_INPUT_MOUSEDEV=m
++CONFIG_INPUT_MOUSEDEV=y
+ CONFIG_INPUT_MOUSEDEV_PSAUX=y
+ CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+ CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+@@ -564,42 +625,37 @@
+ CONFIG_INPUT_EVBUG=m
+
+ #
+-# Input I/O drivers
+-#
+-# CONFIG_GAMEPORT is not set
+-CONFIG_SOUND_GAMEPORT=y
+-CONFIG_SERIO=y
+-# CONFIG_SERIO_I8042 is not set
+-CONFIG_SERIO_SERPORT=y
+-# CONFIG_SERIO_CT82C710 is not set
+-# CONFIG_SERIO_PARKBD is not set
+-
+-#
+ # Input Device Drivers
+ #
+ CONFIG_INPUT_KEYBOARD=y
+-CONFIG_KEYBOARD_ATKBD=m
++# CONFIG_KEYBOARD_ATKBD is not set
+ # CONFIG_KEYBOARD_SUNKBD is not set
++# CONFIG_KEYBOARD_LKKBD is not set
+ # CONFIG_KEYBOARD_XTKBD is not set
+ # CONFIG_KEYBOARD_NEWTON is not set
+-CONFIG_KEYBOARD_AMIGA=m
++CONFIG_KEYBOARD_AMIGA=y
+ CONFIG_INPUT_MOUSE=y
+-CONFIG_MOUSE_PS2=m
+-CONFIG_MOUSE_SERIAL=m
++# CONFIG_MOUSE_PS2 is not set
++# CONFIG_MOUSE_SERIAL is not set
+ CONFIG_MOUSE_AMIGA=m
++# CONFIG_MOUSE_VSXXXAA is not set
+ # CONFIG_INPUT_JOYSTICK is not set
+ # CONFIG_INPUT_TOUCHSCREEN is not set
+ CONFIG_INPUT_MISC=y
+-# CONFIG_INPUT_PCSPKR is not set
+ CONFIG_INPUT_UINPUT=m
+
+ #
+-# Macintosh device drivers
++# Hardware I/O ports
+ #
++# CONFIG_SERIO is not set
++# CONFIG_GAMEPORT is not set
+
+ #
+ # Character devices
+ #
++CONFIG_VT=y
++CONFIG_VT_CONSOLE=y
++CONFIG_HW_CONSOLE=y
+ # CONFIG_SERIAL_NONSTANDARD is not set
+
+ #
+@@ -610,34 +666,16 @@
+ #
+ # Non-8250 serial port support
+ #
++# CONFIG_SERIAL_JSM is not set
+ CONFIG_UNIX98_PTYS=y
+-CONFIG_UNIX98_PTY_COUNT=256
++CONFIG_LEGACY_PTYS=y
++CONFIG_LEGACY_PTY_COUNT=256
+ CONFIG_PRINTER=m
+ # CONFIG_LP_CONSOLE is not set
+ # CONFIG_PPDEV is not set
+ # CONFIG_TIPAR is not set
+
+ #
+-# I2C support
+-#
+-# CONFIG_I2C is not set
+-
+-#
+-# I2C Hardware Sensors Mainboard support
+-#
+-
+-#
+-# I2C Hardware Sensors Chip support
+-#
+-# CONFIG_I2C_SENSOR is not set
+-
+-#
+-# Mice
+-#
+-CONFIG_BUSMOUSE=y
+-# CONFIG_QIC02_TAPE is not set
+-
+-#
+ # IPMI
+ #
+ # CONFIG_IPMI_HANDLER is not set
+@@ -656,11 +694,28 @@
+ #
+ # Ftape, the floppy tape device driver
+ #
+-# CONFIG_FTAPE is not set
+ # CONFIG_AGP is not set
+ # CONFIG_DRM is not set
+ # CONFIG_RAW_DRIVER is not set
+-# CONFIG_HANGCHECK_TIMER is not set
++
++#
++# TPM devices
++#
++# CONFIG_TCG_TPM is not set
++
++#
++# I2C support
++#
++# CONFIG_I2C is not set
++
++#
++# Dallas's 1-wire bus
++#
++# CONFIG_W1 is not set
++
++#
++# Misc devices
++#
+
+ #
+ # Multimedia devices
+@@ -673,6 +728,154 @@
+ # CONFIG_DVB is not set
+
+ #
++# Graphics support
++#
++CONFIG_FB=y
++CONFIG_FB_CFB_FILLRECT=y
++CONFIG_FB_CFB_COPYAREA=y
++CONFIG_FB_CFB_IMAGEBLIT=y
++CONFIG_FB_SOFT_CURSOR=y
++# CONFIG_FB_MACMODES is not set
++# CONFIG_FB_MODE_HELPERS is not set
++# CONFIG_FB_TILEBLITTING is not set
++# CONFIG_FB_CIRRUS is not set
++# CONFIG_FB_PM2 is not set
++CONFIG_FB_CYBER2000=y
++CONFIG_FB_AMIGA=y
++CONFIG_FB_AMIGA_OCS=y
++CONFIG_FB_AMIGA_ECS=y
++CONFIG_FB_AMIGA_AGA=y
++CONFIG_FB_FM2=y
++# CONFIG_FB_CT65550 is not set
++# CONFIG_FB_ASILIANT is not set
++# CONFIG_FB_IMSTT is not set
++# CONFIG_FB_VGA16 is not set
++# CONFIG_FB_NVIDIA is not set
++# CONFIG_FB_RIVA is not set
++# CONFIG_FB_MATROX is not set
++# CONFIG_FB_RADEON_OLD is not set
++# CONFIG_FB_RADEON is not set
++# CONFIG_FB_ATY128 is not set
++# CONFIG_FB_ATY is not set
++# CONFIG_FB_SAVAGE is not set
++# CONFIG_FB_SIS is not set
++# CONFIG_FB_NEOMAGIC is not set
++# CONFIG_FB_KYRO is not set
++# CONFIG_FB_3DFX is not set
++# CONFIG_FB_VOODOO1 is not set
++# CONFIG_FB_TRIDENT is not set
++# CONFIG_FB_S1D13XXX is not set
++# CONFIG_FB_VIRTUAL is not set
++
++#
++# Console display driver support
++#
++CONFIG_VGA_CONSOLE=y
++CONFIG_DUMMY_CONSOLE=y
++CONFIG_FRAMEBUFFER_CONSOLE=y
++# CONFIG_FONTS is not set
++CONFIG_FONT_8x8=y
++CONFIG_FONT_8x16=y
++CONFIG_FONT_PEARL_8x8=y
++
++#
++# Logo configuration
++#
++CONFIG_LOGO=y
++CONFIG_LOGO_LINUX_MONO=y
++CONFIG_LOGO_LINUX_VGA16=y
++CONFIG_LOGO_LINUX_CLUT224=y
++# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
++
++#
++# Sound
++#
++CONFIG_SOUND=y
++CONFIG_DMASOUND_PAULA=m
++CONFIG_DMASOUND=m
++
++#
++# Advanced Linux Sound Architecture
++#
++# CONFIG_SND is not set
++
++#
++# Open Sound System
++#
++CONFIG_SOUND_PRIME=m
++# CONFIG_SOUND_BT878 is not set
++# CONFIG_SOUND_CMPCI is not set
++# CONFIG_SOUND_EMU10K1 is not set
++# CONFIG_SOUND_FUSION is not set
++# CONFIG_SOUND_CS4281 is not set
++# CONFIG_SOUND_ES1370 is not set
++# CONFIG_SOUND_ES1371 is not set
++# CONFIG_SOUND_ESSSOLO1 is not set
++# CONFIG_SOUND_MAESTRO is not set
++# CONFIG_SOUND_MAESTRO3 is not set
++# CONFIG_SOUND_ICH is not set
++# CONFIG_SOUND_SONICVIBES is not set
++# CONFIG_SOUND_TRIDENT is not set
++# CONFIG_SOUND_MSNDCLAS is not set
++# CONFIG_SOUND_MSNDPIN is not set
++# CONFIG_SOUND_VIA82CXXX is not set
++CONFIG_SOUND_OSS=m
++CONFIG_SOUND_TRACEINIT=y
++# CONFIG_SOUND_DMAP is not set
++# CONFIG_SOUND_AD1816 is not set
++# CONFIG_SOUND_AD1889 is not set
++# CONFIG_SOUND_SGALAXY is not set
++# CONFIG_SOUND_ADLIB is not set
++# CONFIG_SOUND_ACI_MIXER is not set
++# CONFIG_SOUND_CS4232 is not set
++# CONFIG_SOUND_SSCAPE is not set
++# CONFIG_SOUND_GUS is not set
++CONFIG_SOUND_VMIDI=m
++# CONFIG_SOUND_TRIX is not set
++# CONFIG_SOUND_MSS is not set
++# CONFIG_SOUND_MPU401 is not set
++# CONFIG_SOUND_NM256 is not set
++# CONFIG_SOUND_MAD16 is not set
++# CONFIG_SOUND_PAS is not set
++# CONFIG_SOUND_PSS is not set
++# CONFIG_SOUND_SB is not set
++# CONFIG_SOUND_AWE32_SYNTH is not set
++# CONFIG_SOUND_WAVEFRONT is not set
++# CONFIG_SOUND_MAUI is not set
++# CONFIG_SOUND_YM3812 is not set
++# CONFIG_SOUND_OPL3SA1 is not set
++# CONFIG_SOUND_OPL3SA2 is not set
++# CONFIG_SOUND_YMFPCI is not set
++# CONFIG_SOUND_UART6850 is not set
++# CONFIG_SOUND_AEDSP16 is not set
++# CONFIG_SOUND_ALI5455 is not set
++# CONFIG_SOUND_FORTE is not set
++# CONFIG_SOUND_RME96XX is not set
++# CONFIG_SOUND_AD1980 is not set
++
++#
++# USB support
++#
++CONFIG_USB_ARCH_HAS_HCD=y
++CONFIG_USB_ARCH_HAS_OHCI=y
++# CONFIG_USB is not set
++
++#
++# USB Gadget Support
++#
++# CONFIG_USB_GADGET is not set
++
++#
++# MMC/SD Card support
++#
++# CONFIG_MMC is not set
++
++#
++# InfiniBand support
++#
++# CONFIG_INFINIBAND is not set
++
++#
+ # File systems
+ #
+ CONFIG_EXT2_FS=y
+@@ -686,10 +889,15 @@
+ CONFIG_FS_MBCACHE=y
+ # CONFIG_REISERFS_FS is not set
+ # CONFIG_JFS_FS is not set
++
++#
++# XFS support
++#
+ # CONFIG_XFS_FS is not set
+ CONFIG_MINIX_FS=y
+-CONFIG_ROMFS_FS=y
++CONFIG_ROMFS_FS=m
+ # CONFIG_QUOTA is not set
++CONFIG_DNOTIFY=y
+ CONFIG_AUTOFS_FS=m
+ CONFIG_AUTOFS4_FS=m
+
+@@ -707,16 +915,21 @@
+ CONFIG_FAT_FS=y
+ CONFIG_MSDOS_FS=y
+ CONFIG_VFAT_FS=y
++CONFIG_FAT_DEFAULT_CODEPAGE=437
++CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+ # CONFIG_NTFS_FS is not set
+
+ #
+ # Pseudo filesystems
+ #
+ CONFIG_PROC_FS=y
++CONFIG_PROC_KCORE=y
++CONFIG_SYSFS=y
+ # CONFIG_DEVFS_FS is not set
+-CONFIG_DEVPTS_FS=y
+ # CONFIG_DEVPTS_FS_XATTR is not set
+ CONFIG_TMPFS=y
++# CONFIG_TMPFS_XATTR is not set
++# CONFIG_HUGETLB_PAGE is not set
+ CONFIG_RAMFS=y
+
+ #
+@@ -725,10 +938,11 @@
+ # CONFIG_ADFS_FS is not set
+ CONFIG_AFFS_FS=y
+ CONFIG_HFS_FS=y
++# CONFIG_HFSPLUS_FS is not set
+ # CONFIG_BEFS_FS is not set
+ # CONFIG_BFS_FS is not set
+ # CONFIG_EFS_FS is not set
+-CONFIG_CRAMFS=y
++CONFIG_CRAMFS=m
+ # CONFIG_VXFS_FS is not set
+ # CONFIG_HPFS_FS is not set
+ # CONFIG_QNX4FS_FS is not set
+@@ -741,6 +955,7 @@
+ CONFIG_NFS_FS=y
+ CONFIG_NFS_V3=y
+ # CONFIG_NFS_V4 is not set
++# CONFIG_NFS_DIRECTIO is not set
+ CONFIG_NFSD=m
+ CONFIG_NFSD_V3=y
+ # CONFIG_NFSD_V4 is not set
+@@ -749,13 +964,14 @@
+ CONFIG_LOCKD_V4=y
+ CONFIG_EXPORTFS=m
+ CONFIG_SUNRPC=y
+-# CONFIG_SUNRPC_GSS is not set
++# CONFIG_RPCSEC_GSS_KRB5 is not set
++# CONFIG_RPCSEC_GSS_SPKM3 is not set
+ CONFIG_SMB_FS=m
+ # CONFIG_SMB_NLS_DEFAULT is not set
+ # CONFIG_CIFS is not set
+ # CONFIG_NCP_FS is not set
+ CONFIG_CODA_FS=m
+-# CONFIG_INTERMEZZO_FS is not set
++# CONFIG_CODA_FS_OLD_API is not set
+ # CONFIG_AFS_FS is not set
+
+ #
+@@ -773,17 +989,15 @@
+ CONFIG_SOLARIS_X86_PARTITION=y
+ CONFIG_UNIXWARE_DISKLABEL=y
+ # CONFIG_LDM_PARTITION is not set
+-# CONFIG_NEC98_PARTITION is not set
+ # CONFIG_SGI_PARTITION is not set
+ # CONFIG_ULTRIX_PARTITION is not set
+ # CONFIG_SUN_PARTITION is not set
+ # CONFIG_EFI_PARTITION is not set
+-CONFIG_SMB_NLS=y
+-CONFIG_NLS=y
+
+ #
+ # Native Language Support
+ #
++CONFIG_NLS=y
+ CONFIG_NLS_DEFAULT="iso8859-1"
+ CONFIG_NLS_CODEPAGE_437=m
+ CONFIG_NLS_CODEPAGE_737=m
+@@ -806,8 +1020,9 @@
+ CONFIG_NLS_CODEPAGE_949=m
+ CONFIG_NLS_CODEPAGE_874=m
+ CONFIG_NLS_ISO8859_8=m
+-# CONFIG_NLS_CODEPAGE_1250 is not set
++CONFIG_NLS_CODEPAGE_1250=m
+ CONFIG_NLS_CODEPAGE_1251=m
++CONFIG_NLS_ASCII=m
+ CONFIG_NLS_ISO8859_1=m
+ CONFIG_NLS_ISO8859_2=m
+ CONFIG_NLS_ISO8859_3=m
+@@ -824,97 +1039,47 @@
+ CONFIG_NLS_UTF8=m
+
+ #
+-# Sound
+-#
+-CONFIG_SOUND=y
+-CONFIG_DMASOUND_PAULA=m
+-CONFIG_DMASOUND=m
+-
+-#
+-# Advanced Linux Sound Architecture
+-#
+-# CONFIG_SND is not set
+-
+-#
+-# Open Sound System
+-#
+-CONFIG_SOUND_PRIME=m
+-# CONFIG_SOUND_BT878 is not set
+-# CONFIG_SOUND_CMPCI is not set
+-# CONFIG_SOUND_EMU10K1 is not set
+-# CONFIG_SOUND_FUSION is not set
+-# CONFIG_SOUND_CS4281 is not set
+-# CONFIG_SOUND_ES1370 is not set
+-# CONFIG_SOUND_ES1371 is not set
+-# CONFIG_SOUND_ESSSOLO1 is not set
+-# CONFIG_SOUND_MAESTRO is not set
+-# CONFIG_SOUND_MAESTRO3 is not set
+-# CONFIG_SOUND_ICH is not set
+-# CONFIG_SOUND_RME96XX is not set
+-# CONFIG_SOUND_SONICVIBES is not set
+-# CONFIG_SOUND_TRIDENT is not set
+-# CONFIG_SOUND_MSNDCLAS is not set
+-# CONFIG_SOUND_MSNDPIN is not set
+-# CONFIG_SOUND_VIA82CXXX is not set
+-CONFIG_SOUND_OSS=m
+-CONFIG_SOUND_TRACEINIT=y
+-CONFIG_SOUND_DMAP=y
+-# CONFIG_SOUND_AD1816 is not set
+-# CONFIG_SOUND_SGALAXY is not set
+-# CONFIG_SOUND_ADLIB is not set
+-# CONFIG_SOUND_ACI_MIXER is not set
+-# CONFIG_SOUND_CS4232 is not set
+-# CONFIG_SOUND_SSCAPE is not set
+-# CONFIG_SOUND_GUS is not set
+-CONFIG_SOUND_VMIDI=m
+-# CONFIG_SOUND_TRIX is not set
+-# CONFIG_SOUND_MSS is not set
+-# CONFIG_SOUND_MPU401 is not set
+-# CONFIG_SOUND_NM256 is not set
+-# CONFIG_SOUND_MAD16 is not set
+-# CONFIG_SOUND_PAS is not set
+-# CONFIG_SOUND_PSS is not set
+-# CONFIG_SOUND_SB is not set
+-# CONFIG_SOUND_AWE32_SYNTH is not set
+-# CONFIG_SOUND_WAVEFRONT is not set
+-# CONFIG_SOUND_MAUI is not set
+-# CONFIG_SOUND_YM3812 is not set
+-# CONFIG_SOUND_OPL3SA1 is not set
+-# CONFIG_SOUND_OPL3SA2 is not set
+-# CONFIG_SOUND_YMFPCI is not set
+-# CONFIG_SOUND_UART6850 is not set
+-# CONFIG_SOUND_AEDSP16 is not set
+-
+-#
+-# USB support
+-#
+-# CONFIG_USB is not set
+-# CONFIG_USB_GADGET is not set
+-
+-#
+-# Bluetooth support
+-#
+-# CONFIG_BT is not set
+-
+-#
+ # Library routines
+ #
+-# CONFIG_CRC32 is not set
++CONFIG_CRC_CCITT=y
++CONFIG_CRC32=y
++CONFIG_LIBCRC32C=m
+ CONFIG_ZLIB_INFLATE=y
+ CONFIG_ZLIB_DEFLATE=y
+
+ #
++# Profiling support
++#
++# CONFIG_PROFILING is not set
++
++#
+ # Kernel hacking
+ #
+-# CONFIG_DEBUG_KERNEL is not set
+-# CONFIG_KALLSYMS is not set
++# CONFIG_PRINTK_TIME is not set
++CONFIG_DEBUG_KERNEL=y
++CONFIG_MAGIC_SYSRQ=y
++CONFIG_LOG_BUF_SHIFT=14
++# CONFIG_SCHEDSTATS is not set
++# CONFIG_DEBUG_SLAB is not set
++# CONFIG_DEBUG_SPINLOCK is not set
++# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
++# CONFIG_DEBUG_KOBJECT is not set
++# CONFIG_DEBUG_INFO is not set
++# CONFIG_DEBUG_FS is not set
++# CONFIG_XMON is not set
++# CONFIG_BDI_SWITCH is not set
+
+ #
+ # Security options
+ #
++# CONFIG_KEYS is not set
+ # CONFIG_SECURITY is not set
+
+ #
+ # Cryptographic options
+ #
+ # CONFIG_CRYPTO is not set
++
++#
++# Hardware crypto devices
++#
+diff -Nur -x CVS linux-2.6.12/arch/ppc/kernel/entry.S 2.6/arch/ppc/kernel/entry.S
+--- linux-2.6.12/arch/ppc/kernel/entry.S 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/kernel/entry.S 2005-07-31 03:18:11.000000000 +0200
+@@ -1026,3 +1026,6 @@
+ /* XXX load up BATs and panic */
+
+ #endif /* CONFIG_PPC_OF */
++
++ .global __head_end
++__head_end:
+diff -Nur -x CVS linux-2.6.12/arch/ppc/kernel/head.S 2.6/arch/ppc/kernel/head.S
+--- linux-2.6.12/arch/ppc/kernel/head.S 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/kernel/head.S 2005-08-04 01:40:55.000000000 +0200
+@@ -353,6 +353,28 @@
+ #if defined(CONFIG_GEMINI) && defined(CONFIG_SMP)
+ . = 0x100
+ b __secondary_start_gemini
++#elif defined(CONFIG_APUS)
++ . = 0x100
++ mfspr r4,SPRN_HID0
++ li r3,0
++ ori r3,r3,0xc000
++ andc r4,r4,r3
++ mtspr SPRN_HID0,r4
++ isync
++ sync
++ lis r8,0x6170
++ ori r8,r8,0x7573
++ lis r9,0xfff0
++ lwz r9,0x1f8(r9)
++ lis r1,init_thread_union at ha
++ addi r1,r1,init_thread_union at l
++ addi r1,r1,THREAD_SIZE-STACK_FRAME_OVERHEAD
++ subis r1,r1,KERNELBASE at h
++ add r1,r1,r9
++ mr r3,r8
++ mr r4,r9
++ mtlr r4
++ blrl
+ #else
+ EXCEPTION(0x100, Reset, UnknownException, EXC_XFER_STD)
+ #endif
+@@ -408,7 +430,15 @@
+ bne 1f /* if not, try to put a PTE */
+ mfspr r4,SPRN_DAR /* into the hash table */
+ rlwinm r3,r10,32-15,21,21 /* DSISR_STORE -> _PAGE_RW */
++#ifndef CONFIG_APUS
+ bl hash_page
++#else
++ lis r5,hash_page at h
++ ori r5,r5,hash_page at l
++ tophys(r5,r5)
++ mtlr r5
++ blrl
++#endif
+ 1: stw r10,_DSISR(r11)
+ mr r5,r10
+ mfspr r4,SPRN_DAR
+@@ -433,7 +463,15 @@
+ beq 1f /* if so, try to put a PTE */
+ li r3,0 /* into the hash table */
+ mr r4,r12 /* SRR0 is fault address */
++#ifndef CONFIG_APUS
+ bl hash_page
++#else
++ lis r5,hash_page at h
++ ori r5,r5,hash_page at l
++ tophys(r5,r5)
++ mtlr r5
++ blrl
++#endif
+ 1: mr r4,r12
+ mr r5,r9
+ EXC_XFER_EE_LITE(0x400, handle_page_fault)
+@@ -1201,19 +1239,6 @@
+ bl machine_init
+ bl MMU_init
+
+-#ifdef CONFIG_APUS
+- /* Copy exception code to exception vector base on APUS. */
+- lis r4,KERNELBASE at h
+-#ifdef CONFIG_APUS_FAST_EXCEPT
+- lis r3,0xfff0 /* Copy to 0xfff00000 */
+-#else
+- lis r3,0 /* Copy to 0x00000000 */
+-#endif
+- li r5,0x4000 /* # bytes of memory to copy */
+- li r6,0
+- bl copy_and_flush /* copy the first 0x4000 bytes */
+-#endif /* CONFIG_APUS */
+-
+ /*
+ * Go back to running unmapped so we can load up new values
+ * for SDR1 (hash table pointer) and the segment registers
+@@ -1231,6 +1256,22 @@
+ /* Load up the kernel context */
+ 2: bl load_up_mmu
+
++#ifdef CONFIG_APUS
++ /* Copy exception code to exception vector base on APUS. */
++ lis r4,KERNELBASE at h
++ tophys(r4,r4)
++#ifdef CONFIG_APUS_FAST_EXCEPT
++ lis r3,0xfff0 /* Copy to 0xfff00000 */
++#else
++ lis r3,0 /* Copy to 0x00000000 */
++#endif
++ lis r5,__head_end at h /* # bytes of memory to copy */
++ ori r5,r5,__head_end at l
++ subis r5,r5,KERNELBASE at h
++ li r6,0
++ bl copy_and_flush /* copy the first 0x4000 bytes */
++#endif /* CONFIG_APUS */
++
+ #ifdef CONFIG_BDI_SWITCH
+ /* Add helper information for the Abatron bdiGDB debugger.
+ * We do this here because we know the mmu is disabled, and
+@@ -1411,6 +1452,17 @@
+ mtspr SPRN_DBAT0U,r11 /* bit in upper BAT register */
+ mtspr SPRN_IBAT0L,r8
+ mtspr SPRN_IBAT0U,r11
++#ifdef CONFIG_APUS
++ /* map ZII space for early debug prints */
++ lis r8,0x8000
++ ori r8,r8,0x01ff
++ mtspr SPRN_DBAT2U,r8
++ mtspr SPRN_IBAT2U,r8
++ lis r8,0x0000
++ ori r8,r8,0x002a
++ mtspr SPRN_DBAT2L,r8
++ mtspr SPRN_IBAT2L,r8
++#endif
+ isync
+ blr
+
+diff -Nur -x CVS linux-2.6.12/arch/ppc/kernel/Makefile 2.6/arch/ppc/kernel/Makefile
+--- linux-2.6.12/arch/ppc/kernel/Makefile 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/kernel/Makefile 2005-07-31 03:18:11.000000000 +0200
+@@ -9,10 +9,11 @@
+ extra-$(CONFIG_8xx) := head_8xx.o
+ extra-$(CONFIG_6xx) += idle_6xx.o
+ extra-$(CONFIG_POWER4) += idle_power4.o
++extra-y += entry.o
+ extra-$(CONFIG_PPC_FPU) += fpu.o
+ extra-y += vmlinux.lds
+
+-obj-y := entry.o traps.o irq.o idle.o time.o misc.o \
++obj-y := traps.o irq.o idle.o time.o misc.o \
+ process.o signal.o ptrace.o align.o \
+ semaphore.o syscalls.o setup.o \
+ cputable.o ppc_htab.o perfmon.o
+diff -Nur -x CVS linux-2.6.12/arch/ppc/kernel/misc.S 2.6/arch/ppc/kernel/misc.S
+--- linux-2.6.12/arch/ppc/kernel/misc.S 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/kernel/misc.S 2005-07-31 03:18:12.000000000 +0200
+@@ -1368,7 +1368,11 @@
+ .long sys_fstat64
+ .long sys_pciconfig_read
+ .long sys_pciconfig_write
++#ifdef CONFIG_PCI
+ .long sys_pciconfig_iobase /* 200 */
++#else
++ .long sys_ni_syscall
++#endif
+ .long sys_ni_syscall /* 201 - reserved - MacOnLinux - new */
+ .long sys_getdents64
+ .long sys_pivot_root
+diff -Nur -x CVS linux-2.6.12/arch/ppc/kernel/ppc_ksyms.c 2.6/arch/ppc/kernel/ppc_ksyms.c
+--- linux-2.6.12/arch/ppc/kernel/ppc_ksyms.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/kernel/ppc_ksyms.c 2005-07-31 03:18:12.000000000 +0200
+@@ -69,8 +69,6 @@
+ long long __ashldi3(long long, int);
+ long long __lshrdi3(long long, int);
+
+-extern unsigned long mm_ptov (unsigned long paddr);
+-
+ EXPORT_SYMBOL(clear_pages);
+ EXPORT_SYMBOL(clear_user_page);
+ EXPORT_SYMBOL(do_signal);
+@@ -147,7 +145,6 @@
+ EXPORT_SYMBOL(_insl_ns);
+ EXPORT_SYMBOL(_outsl_ns);
+ EXPORT_SYMBOL(iopa);
+-EXPORT_SYMBOL(mm_ptov);
+ EXPORT_SYMBOL(ioremap);
+ #ifdef CONFIG_44x
+ EXPORT_SYMBOL(ioremap64);
+diff -Nur -x CVS linux-2.6.12/arch/ppc/kernel/setup.c 2.6/arch/ppc/kernel/setup.c
+--- linux-2.6.12/arch/ppc/kernel/setup.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/kernel/setup.c 2005-08-04 01:42:52.000000000 +0200
+@@ -550,6 +550,7 @@
+ #endif /* CONFIG_SERIAL_CORE_CONSOLE */
+ #endif /* CONFIG_PPC_MULTIPLATFORM */
+
++#ifndef CONFIG_APUS
+ struct bi_record *find_bootinfo(void)
+ {
+ struct bi_record *rec;
+@@ -601,6 +602,7 @@
+ rec = (struct bi_record *)((ulong)rec + rec->size);
+ }
+ }
++#endif
+
+ /*
+ * Find out what kind of machine we're on and save any data we need
+diff -Nur -x CVS linux-2.6.12/arch/ppc/kernel/time.c 2.6/arch/ppc/kernel/time.c
+--- linux-2.6.12/arch/ppc/kernel/time.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/kernel/time.c 2005-07-31 03:18:12.000000000 +0200
+@@ -150,6 +150,7 @@
+ tb_last_stamp = jiffy_stamp;
+ do_timer(regs);
+
++#ifndef CONFIG_APUS
+ /*
+ * update the rtc when needed, this should be performed on the
+ * right fraction of a second. Half or full second ?
+@@ -176,6 +177,7 @@
+ /* Try again one minute later */
+ last_rtc_update += 60;
+ }
++#endif
+ write_sequnlock(&xtime_lock);
+ }
+ if ( !disarm_decr[smp_processor_id()] )
+diff -Nur -x CVS linux-2.6.12/arch/ppc/Makefile 2.6/arch/ppc/Makefile
+--- linux-2.6.12/arch/ppc/Makefile 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/Makefile 2005-07-31 03:18:11.000000000 +0200
+@@ -51,6 +51,8 @@
+ head-$(CONFIG_44x) := arch/ppc/kernel/head_44x.o
+ head-$(CONFIG_FSL_BOOKE) := arch/ppc/kernel/head_fsl_booke.o
+
++head-y += arch/ppc/mm/hashtable.o
++head-y += arch/ppc/kernel/entry.o
+ head-$(CONFIG_6xx) += arch/ppc/kernel/idle_6xx.o
+ head-$(CONFIG_POWER4) += arch/ppc/kernel/idle_power4.o
+ head-$(CONFIG_PPC_FPU) += arch/ppc/kernel/fpu.o
+@@ -73,7 +75,9 @@
+
+ .PHONY: $(BOOT_TARGETS)
+
++ifndef CONFIG_APUS
+ all: uImage zImage
++endif
+
+ CPPFLAGS_vmlinux.lds := -Upowerpc
+
+diff -Nur -x CVS linux-2.6.12/arch/ppc/mm/init.c 2.6/arch/ppc/mm/init.c
+--- linux-2.6.12/arch/ppc/mm/init.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/mm/init.c 2005-07-31 03:18:12.000000000 +0200
+@@ -61,9 +61,6 @@
+ unsigned long total_memory;
+ unsigned long total_lowmem;
+
+-unsigned long ppc_memstart;
+-unsigned long ppc_memoffset = PAGE_OFFSET;
+-
+ int mem_init_done;
+ int init_bootmem_done;
+ int boot_mapsize;
+diff -Nur -x CVS linux-2.6.12/arch/ppc/mm/Makefile 2.6/arch/ppc/mm/Makefile
+--- linux-2.6.12/arch/ppc/mm/Makefile 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/mm/Makefile 2004-09-25 23:09:43.000000000 +0200
+@@ -5,7 +5,8 @@
+ obj-y := fault.o init.o mem_pieces.o \
+ mmu_context.o pgtable.o
+
+-obj-$(CONFIG_PPC_STD_MMU) += hashtable.o ppc_mmu.o tlb.o
++extra-$(CONFIG_PPC_STD_MMU) := hashtable.o
++obj-$(CONFIG_PPC_STD_MMU) += ppc_mmu.o tlb.o
+ obj-$(CONFIG_40x) += 4xx_mmu.o
+ obj-$(CONFIG_44x) += 44x_mmu.o
+ obj-$(CONFIG_FSL_BOOKE) += fsl_booke_mmu.o
+diff -Nur -x CVS linux-2.6.12/arch/ppc/mm/pgtable.c 2.6/arch/ppc/mm/pgtable.c
+--- linux-2.6.12/arch/ppc/mm/pgtable.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/mm/pgtable.c 2005-07-31 03:18:12.000000000 +0200
+@@ -191,8 +191,8 @@
+ * Don't allow anybody to remap normal RAM that we're using.
+ * mem_init() sets high_memory so only do the check after that.
+ */
+- if ( mem_init_done && (p < virt_to_phys(high_memory)) )
+- {
++ if (mem_init_done && (p + size >= virt_to_phys(KERNELBASE)) &&
++ (p < virt_to_phys(high_memory))) {
+ printk("__ioremap(): phys addr "PHYS_FMT" is RAM lr %p\n", p,
+ __builtin_return_address(0));
+ return NULL;
+@@ -430,42 +430,3 @@
+
+ return(pa);
+ }
+-
+-/* This is will find the virtual address for a physical one....
+- * Swiped from APUS, could be dangerous :-).
+- * This is only a placeholder until I really find a way to make this
+- * work. -- Dan
+- */
+-unsigned long
+-mm_ptov (unsigned long paddr)
+-{
+- unsigned long ret;
+-#if 0
+- if (paddr < 16*1024*1024)
+- ret = ZTWO_VADDR(paddr);
+- else {
+- int i;
+-
+- for (i = 0; i < kmap_chunk_count;){
+- unsigned long phys = kmap_chunks[i++];
+- unsigned long size = kmap_chunks[i++];
+- unsigned long virt = kmap_chunks[i++];
+- if (paddr >= phys
+- && paddr < (phys + size)){
+- ret = virt + paddr - phys;
+- goto exit;
+- }
+- }
+-
+- ret = (unsigned long) __va(paddr);
+- }
+-exit:
+-#ifdef DEBUGPV
+- printk ("PTOV(%lx)=%lx\n", paddr, ret);
+-#endif
+-#else
+- ret = (unsigned long)paddr + KERNELBASE;
+-#endif
+- return ret;
+-}
+-
+diff -Nur -x CVS linux-2.6.12/arch/ppc/platforms/apus_setup.c 2.6/arch/ppc/platforms/apus_setup.c
+--- linux-2.6.12/arch/ppc/platforms/apus_setup.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/platforms/apus_setup.c 2005-08-04 01:43:41.000000000 +0200
+@@ -17,11 +17,14 @@
+ #include <linux/kernel.h>
+ #include <linux/sched.h>
+ #include <linux/init.h>
++#include <linux/interrupt.h>
++#include <linux/irq.h>
+ #include <linux/initrd.h>
++#include <linux/module.h>
+ #include <linux/seq_file.h>
+
+ /* Needs INITSERIAL call in head.S! */
+-#undef APUS_DEBUG
++#define APUS_DEBUG
+
+ #include <asm/bootinfo.h>
+ #include <asm/setup.h>
+@@ -32,52 +35,26 @@
+ #include <asm/dma.h>
+ #include <asm/machdep.h>
+ #include <asm/time.h>
++#include <asm/tlbflush.h>
+
+ unsigned long m68k_machtype;
+ char debug_device[6] = "";
+
+-extern void amiga_init_IRQ(void);
+-
+-extern void apus_setup_pci_ptrs(void);
+-
+-void (*mach_sched_init) (void (*handler)(int, void *, struct pt_regs *)) __initdata = NULL;
+-/* machine dependent irq functions */
+-void (*mach_init_IRQ) (void) __initdata = NULL;
+-void (*(*mach_default_handler)[]) (int, void *, struct pt_regs *) = NULL;
+-void (*mach_get_model) (char *model) = NULL;
+-int (*mach_get_hardware_list) (char *buffer) = NULL;
+-int (*mach_get_irq_list) (struct seq_file *, void *) = NULL;
+-void (*mach_process_int) (int, struct pt_regs *) = NULL;
+-/* machine dependent timer functions */
+-unsigned long (*mach_gettimeoffset) (void);
+-void (*mach_gettod) (int*, int*, int*, int*, int*, int*);
+-int (*mach_hwclk) (int, struct hwclk_time*) = NULL;
+-int (*mach_set_clock_mmss) (unsigned long) = NULL;
+-void (*mach_reset)( void );
+-long mach_max_dma_address = 0x00ffffff; /* default set to the lower 16MB */
+-#if defined(CONFIG_AMIGA_FLOPPY)
+-void (*mach_floppy_setup) (char *, int *) __initdata = NULL;
+-#endif
+-#ifdef CONFIG_HEARTBEAT
+-void (*mach_heartbeat) (int) = NULL;
+-extern void apus_heartbeat (void);
+-#endif
+-
+-extern unsigned long amiga_model;
+-extern unsigned decrementer_count;/* count value for 1e6/HZ microseconds */
+-extern unsigned count_period_num; /* 1 decrementer count equals */
+-extern unsigned count_period_den; /* count_period_num / count_period_den us */
+-
+ int num_memory = 0;
+ struct mem_info memory[NUM_MEMINFO];/* memory description */
+ /* FIXME: Duplicate memory data to avoid conflicts with m68k shared code. */
+ int m68k_realnum_memory = 0;
+ struct mem_info m68k_memory[NUM_MEMINFO];/* memory description */
+
++unsigned long ppc_memstart;
++unsigned long ppc_pgstart;
++unsigned long ppc_memoffset;
++
++EXPORT_SYMBOL(ppc_memoffset);
++EXPORT_SYMBOL(ppc_pgstart);
++
+ struct mem_info ramdisk;
+
+-extern void amiga_floppy_setup(char *, int *);
+-extern void config_amiga(void);
+
+ static int __60nsram = 0;
+
+@@ -92,25 +69,43 @@
+ */
+ unsigned long apus_get_rtc_time(void)
+ {
+-#ifdef CONFIG_APUS
+- extern unsigned long m68k_get_rtc_time(void);
++ struct rtc_time t;
+
+- return m68k_get_rtc_time ();
+-#else
+- return 0;
+-#endif
++ amiga_hwclk(0, &t);
++ t.tm_year += 1900;
++
++ return mktime(t.tm_year, t.tm_mon, t.tm_mday,
++ t.tm_hour, t.tm_min, t.tm_sec);
+ }
+
+ int apus_set_rtc_time(unsigned long nowtime)
+ {
+-#ifdef CONFIG_APUS
+- extern int m68k_set_rtc_time(unsigned long nowtime);
++ return amiga_set_clock_mmss(nowtime);
++}
+
+- return m68k_set_rtc_time (nowtime);
+-#else
+- return 0;
+-#endif
++#ifdef CONFIG_HEARTBEAT
++static void apus_heartbeat(void)
++{
++ static unsigned cnt = 0, period = 0, dist = 0;
++
++ if (cnt == 0 || cnt == dist)
++ ciaa.pra &= ~2;
++ else if (cnt == 7 || cnt == dist + 7)
++ ciaa.pra |= 2;
++
++ if (++cnt > period) {
++ cnt = 0;
++ /* The hyperbolic function below modifies the heartbeat period
++ * length in dependency of the current (5min) load. It goes
++ * through the points f(0)=126, f(1)=86, f(5)=51,
++ * f(inf)->30. */
++ period = ((672<<FSHIFT) / (5*avenrun[0] + (7<<FSHIFT))) + 30;
++ dist = period / 4;
++ }
++ /* should be made smarter */
++ ppc_md.heartbeat_count = 1;
+ }
++#endif
+
+ /*********************************************************** SETUP */
+ /* From arch/m68k/kernel/setup.c. */
+@@ -206,8 +201,8 @@
+
+ void apus_calibrate_decr(void)
+ {
+-#ifdef CONFIG_APUS
+ unsigned long freq;
++ unsigned int tmp;
+
+ /* This algorithm for determining the bus speed was
+ contributed by Ralph Schmidt. */
+@@ -239,15 +234,34 @@
+ freq = 15000000;
+ } else if ((bus_speed >= 63) && (bus_speed < 69)) {
+ bus_speed = 67;
+- freq = 16666667;
++ freq = 16500000;
+ } else {
+ printk ("APUS: Unable to determine bus speed (%d). "
+- "Defaulting to 50MHz", bus_speed);
++ "Defaulting to 50MHz\n", bus_speed);
+ bus_speed = 50;
+ freq = 12500000;
+ speed_test_failed = 1;
+ }
+
++ ciab.cra = (ciab.cra & 0xc0) | 0x08;
++ ciab.icr;
++ wmb();
++ ciab.talo = 0;
++ wmb();
++ ciab.tahi = 0x80;
++ wmb();
++
++ get_current_tb(&start);
++ while (!(ciab.icr & 1))
++ barrier();
++ get_current_tb(&stop);
++
++ tmp = stop - start;
++ start = tmp * amiga_eclock;
++ stop = mulhwu(tmp, amiga_eclock);
++ start += stop << 32;
++ freq = start / 0x8000;
++
+ /* Ease diagnostics... */
+ {
+ extern int __map_without_bats;
+@@ -285,36 +299,8 @@
+
+ __bus_speed = bus_speed;
+ __speed_test_failed = speed_test_failed;
+-#endif
+-}
+-
+-void arch_gettod(int *year, int *mon, int *day, int *hour,
+- int *min, int *sec)
+-{
+-#ifdef CONFIG_APUS
+- if (mach_gettod)
+- mach_gettod(year, mon, day, hour, min, sec);
+- else
+- *year = *mon = *day = *hour = *min = *sec = 0;
+-#endif
+ }
+
+-/* for "kbd-reset" cmdline param */
+-__init
+-void kbd_reset_setup(char *str, int *ints)
+-{
+-}
+-
+-/*********************************************************** FLOPPY */
+-#if defined(CONFIG_AMIGA_FLOPPY)
+-__init
+-void floppy_setup(char *str, int *ints)
+-{
+- if (mach_floppy_setup)
+- mach_floppy_setup (str, ints);
+-}
+-#endif
+-
+ /*********************************************************** MEMORY */
+ #define KMAP_MAX 32
+ unsigned long kmap_chunks[KMAP_MAX*3];
+@@ -330,26 +316,22 @@
+ va &= PAGE_MASK;
+
+ dir = pgd_offset( mm, va );
+- if (dir)
+- {
++ if (dir) {
+ pmd = pmd_offset(dir, va & PAGE_MASK);
+ if (pmd && pmd_present(*pmd))
+- {
+- pte = pte_offset(pmd, va);
+- }
++ pte = pte_offset_kernel(pmd, va);
+ }
+ return pte;
+ }
+
+
+ /* Again simulating an m68k/mm/kmap.c function. */
+-void kernel_set_cachemode( unsigned long address, unsigned long size,
+- unsigned int cmode )
++void kernel_set_cachemode(unsigned long address, unsigned long size,
++ unsigned int cmode)
+ {
+- unsigned long mask, flags;
++ unsigned long mask, flags, end;
+
+- switch (cmode)
+- {
++ switch (cmode) {
+ case IOMAP_FULL_CACHING:
+ mask = ~(_PAGE_NO_CACHE | _PAGE_GUARDED);
+ flags = 0;
+@@ -359,60 +341,29 @@
+ flags = (_PAGE_NO_CACHE | _PAGE_GUARDED);
+ break;
+ default:
+- panic ("kernel_set_cachemode() doesn't support mode %d\n",
+- cmode);
++ panic("kernel_set_cachemode() doesn't support mode %d\n", cmode);
+ break;
+ }
+
+- size /= PAGE_SIZE;
++ end = address + size;
+ address &= PAGE_MASK;
+- while (size--)
+- {
++ while (address < end) {
+ pte_t *pte;
+
+ pte = my_find_pte(&init_mm, address);
+- if ( !pte )
+- {
++ if (!pte) {
+ printk("pte NULL in kernel_set_cachemode()\n");
+ return;
+ }
+
+- pte_val (*pte) &= mask;
+- pte_val (*pte) |= flags;
++ pte_val(*pte) &= mask;
++ pte_val(*pte) |= flags;
+ flush_tlb_page(find_vma(&init_mm,address),address);
+
+ address += PAGE_SIZE;
+ }
+ }
+
+-unsigned long mm_ptov (unsigned long paddr)
+-{
+- unsigned long ret;
+- if (paddr < 16*1024*1024)
+- ret = ZTWO_VADDR(paddr);
+- else {
+- int i;
+-
+- for (i = 0; i < kmap_chunk_count;){
+- unsigned long phys = kmap_chunks[i++];
+- unsigned long size = kmap_chunks[i++];
+- unsigned long virt = kmap_chunks[i++];
+- if (paddr >= phys
+- && paddr < (phys + size)){
+- ret = virt + paddr - phys;
+- goto exit;
+- }
+- }
+-
+- ret = (unsigned long) __va(paddr);
+- }
+-exit:
+-#ifdef DEBUGPV
+- printk ("PTOV(%lx)=%lx\n", paddr, ret);
+-#endif
+- return ret;
+-}
+-
+ int mm_end_of_chunk (unsigned long addr, int len)
+ {
+ if (memory[0].addr + memory[0].size == addr + len)
+@@ -422,11 +373,10 @@
+
+ /*********************************************************** CACHE */
+
+-#define L1_CACHE_BYTES 32
+ #define MAX_CACHE_SIZE 8192
+-void cache_push(__u32 addr, int length)
++void cache_push(u32 paddr, int length)
+ {
+- addr = mm_ptov(addr);
++ char *addr = __va(paddr);
+
+ if (MAX_CACHE_SIZE < length)
+ length = MAX_CACHE_SIZE;
+@@ -443,12 +393,14 @@
+ : : "r" (addr));
+ }
+
+-void cache_clear(__u32 addr, int length)
++void cache_clear(u32 paddr, int length)
+ {
++ char *addr;
++
+ if (MAX_CACHE_SIZE < length)
+ length = MAX_CACHE_SIZE;
+
+- addr = mm_ptov(addr);
++ addr = __va(paddr);
+
+ __asm ("dcbf 0,%0\n\t"
+ "sync \n\t"
+@@ -518,6 +470,8 @@
+ level = (ipl_emu >> 3) & IPLEMU_IPLMASK;
+ mask = IPLEMU_SETRESET|IPLEMU_DISABLEINT|level;
+ level ^= 7;
++ if (!level)
++ return -1;
+
+ /* Save previous IPL value */
+ if (last_ipl[level])
+@@ -535,6 +489,15 @@
+ return level + IRQ_AMIGA_AUTO;
+ }
+
++unsigned int apus_startup_irq(unsigned int irq)
++{
++ return 0;
++}
++
++void apus_ack_irq(unsigned int irq)
++{
++}
++
+ void apus_end_irq(unsigned int irq)
+ {
+ unsigned char ipl_emu;
+@@ -646,10 +609,12 @@
+ __debug_ser_out('\r');
+ }
+
++#ifdef APUS_DEBUG
+ static void apus_progress(char *s, unsigned short value)
+ {
+ __debug_print_string(s);
+ }
++#endif
+
+ /****************************************************** init */
+
+@@ -664,6 +629,8 @@
+
+ struct hw_interrupt_type amiga_sys_irqctrl = {
+ .typename = "Amiga IPL",
++ .startup = apus_startup_irq,
++ .ack = apus_ack_irq,
+ .end = apus_end_irq,
+ };
+
+@@ -677,33 +644,32 @@
+ unsigned long __init apus_find_end_of_memory(void)
+ {
+ int shadow = 0;
+- unsigned long total;
++ unsigned long total, size;
+
+ /* The memory size reported by ADOS excludes the 512KB
+ reserved for PPC exception registers and possibly 512KB
+ containing a shadow of the ADOS ROM. */
+- {
+- unsigned long size = memory[0].size;
+-
+- /* If 2MB aligned, size was probably user
+- specified. We can't tell anything about shadowing
+- in this case so skip shadow assignment. */
+- if (0 != (size & 0x1fffff)){
+- /* Align to 512KB to ensure correct handling
+- of both memfile and system specified
+- sizes. */
+- size = ((size+0x0007ffff) & 0xfff80000);
+- /* If memory is 1MB aligned, assume
+- shadowing. */
+- shadow = !(size & 0x80000);
+- }
++ size = memory[0].size;
+
+- /* Add the chunk that ADOS does not see. by aligning
+- the size to the nearest 2MB limit upwards. */
+- memory[0].size = ((size+0x001fffff) & 0xffe00000);
+- }
++ /* If 2MB aligned, size was probably user
++ specified. We can't tell anything about shadowing
++ in this case so skip shadow assignment. */
++ if (size & 0x1fffff){
++ /* Align to 512KB to ensure correct handling
++ of both memfile and system specified
++ sizes. */
++ size = ((size+0x0007ffff) & 0xfff80000);
++ /* If memory is 1MB aligned, assume
++ shadowing. */
++ shadow = !(size & 0x80000);
++ }
++
++ /* Add the chunk that ADOS does not see. by aligning
++ the size to the nearest 2MB limit upwards. */
++ memory[0].size = (size + 0x001fffff) & 0xffe00000;
+
+ ppc_memstart = memory[0].addr;
++ ppc_pgstart = memory[0].addr >> PAGE_SHIFT;
+ ppc_memoffset = PAGE_OFFSET - PPC_MEMSTART;
+ total = memory[0].size;
+
+diff -Nur -x CVS linux-2.6.12/arch/ppc/platforms/ivms8.h 2.6/arch/ppc/platforms/ivms8.h
+--- linux-2.6.12/arch/ppc/platforms/ivms8.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/arch/ppc/platforms/ivms8.h 2004-02-01 00:24:09.000000000 +0100
+@@ -40,8 +40,7 @@
+ #define IDE0_BASE_OFFSET 0x0000 /* Offset in PCMCIA memory */
+ #define IDE0_DATA_REG_OFFSET 0x0000
+ #define IDE0_ERROR_REG_OFFSET 0x0081
+-#define IDE0_NSECTOR_REG_OFFSET 0x0082
+-#define IDE0_SECTOR_REG_OFFSET 0x0083
++#define IDE0_NSECTOR_REG_OFFine ID0_SEC#define IDE0_SECTOR_REG_OFFSET 0x0083
+ #define IDE0_LCYL_REG_OFFSET 0x0084
+ #define IDE0_HCYL_REG_OFFSET 0x0085
+ #define IDE0_SELECT_REG_OFFSET 0x0086
+diff -Nur -x CVS linux-2.6.12/drivers/block/amiflop.c 2.6/drivers/block/amiflop.c
+--- linux-2.6.12/drivers/block/amiflop.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/drivers/block/amiflop.c 2005-07-31 01:06:43.000000000 +0200
+@@ -59,6 +59,7 @@
+ #include <linux/hdreg.h>
+ #include <linux/delay.h>
+ #include <linux/init.h>
++#include <linux/interrupt.h>
+ #include <linux/amifdreg.h>
+ #include <linux/amifd.h>
+ #include <linux/buffer_head.h>
+diff -Nur -x CVS linux-2.6.12/drivers/net/wan/sdla.c 2.6/drivers/net/wan/sdla.c
+--- linux-2.6.12/drivers/net/wan/sdla.c 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/drivers/net/wan/sdla.c 2005-07-30 23:51:18.000000000 +0200
+@@ -128,7 +128,7 @@
+
+ addr += bytes;
+ temp += bytes;
+- len -= bic v;
++ len -= bytes;
+ }
+ }
+
+diff -Nur -x CVS linux-2.6.12/include/asm-m68k/bootinfo.h 2.6/include/asm-m68k/bootinfo.h
+--- linux-2.6.12/include/asm-m68k/bootinfo.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/include/asm-m68k/bootinfo.h 2005-07-30 22:49:24.000000000 +0200
+@@ -81,6 +81,8 @@
+ #define BI_AMIGA_ECLOCK 0x8005 /* EClock frequency (u_long) */
+ #define BI_AMIGA_CHIPSET 0x8006 /* native chipset present (u_long) */
+ #define BI_AMIGA_SERPER 0x8007 /* serial port period (u_short) */
++#define BI_AMIGA_PUP_BRIDGE 0x8008 /* powerup bridge (u_short) */
++#define BI_AMIGA_BPPC_SCSI 0x8009 /* blizzard ppc scsi*/
+
+ /*
+ * Atari-specific tags
+diff -Nur -x CVS linux-2.6.12/include/asm-ppc/amigahw.h 2.6/include/asm-ppc/amigahw.h
+--- linux-2.6.12/include/asm-ppc/amigahw.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/include/asm-ppc/amigahw.h 2004-07-03 19:59:46.000000000 +0200
+@@ -1,6 +1,6 @@
+-#ifdef __KERNEL__
+ #ifndef __ASMPPC_AMIGAHW_H
+ #define __ASMPPC_AMIGAHW_H
++#ifdef __KERNEL__
+
+ #include <linux/config.h>
+ #include <asm-m68k/amigahw.h>
+@@ -12,6 +12,13 @@
+ #define CHIP_PHYSADDR (0x004000)
+ #endif
+
++struct rtc_time;
++
++extern void amiga_init_IRQ(void);
++extern int amiga_hwclk(int, struct rtc_time *);
++extern int amiga_set_clock_mmss (unsigned long nowtime);
++extern void config_amiga(void);
++extern void apus_setup_pci_ptrs(void);
+
+-#endif /* __ASMPPC_AMIGAHW_H */
+ #endif /* __KERNEL__ */
++#endif /* __ASMPPC_AMIGAHW_H */
+diff -Nur -x CVS linux-2.6.12/include/asm-ppc/bootinfo.h 2.6/include/asm-ppc/bootinfo.h
+--- linux-2.6.12/include/asm-ppc/bootinfo.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/include/asm-ppc/bootinfo.h 2004-02-21 22:42:00.000000000 +0100
+@@ -36,7 +36,6 @@
+ extern void bootinfo_init(struct bi_record *rec);
+ extern void bootinfo_append(unsigned long tag, unsigned long size, void * data);
+ extern void parse_bootinfo(struct bi_record *rec);
+-extern unsigned long boot_mem_size;
+
+ static inline struct bi_record *
+ bootinfo_addr(unsigned long offset)
+@@ -47,6 +46,7 @@
+ }
+ #endif /* CONFIG_APUS */
+
++extern unsigned long boot_mem_size;
+
+ #endif /* _PPC_BOOTINFO_H */
+ #endif /* __KERNEL__ */
+diff -Nur -x CVS linux-2.6.12/include/asm-ppc/current.h 2.6/include/asm-ppc/current.h
+--- linux-2.6.12/include/asm-ppc/current.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/include/asm-ppc/current.h 2004-02-04 22:21:36.000000000 +0100
+@@ -1,11 +1,11 @@
+-#ifdef __KERNEL__
+ #ifndef _PPC_CURRENT_H
+ #define _PPC_CURRENT_H
++#ifdef __KERNEL__
+
+ /*
+ * We keep `current' in r2 for speed.
+ */
+ register struct task_struct *current asm ("r2");
+
+-#endif /* !(_PPC_CURRENT_H) */
+ #endif /* __KERNEL__ */
++#endif /* !(_PPC_CURRENT_H) */
+diff -Nur -x CVS linux-2.6.12/include/asm-ppc/io.h 2.6/include/asm-ppc/io.h
+--- linux-2.6.12/include/asm-ppc/io.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/include/asm-ppc/io.h 2005-07-31 03:18:36.000000000 +0200
+@@ -1,6 +1,6 @@
+-#ifdef __KERNEL__
+ #ifndef _PPC_IO_H
+ #define _PPC_IO_H
++#ifdef __KERNEL__
+
+ #include <linux/config.h>
+ #include <linux/string.h>
+@@ -294,10 +294,10 @@
+ __do_out_asm(outb, "stbx")
+ #ifdef CONFIG_APUS
+ __do_in_asm(inb, "lbzx")
+-__do_in_asm(inw, "lhz%U1%X1")
+-__do_in_asm(inl, "lwz%U1%X1")
+-__do_out_asm(outl,"stw%U0%X0")
+-__do_out_asm(outw, "sth%U0%X0")
++__do_in_asm(inw, "lhzx")
++__do_in_asm(inl, "lwzx")
++__do_out_asm(outl,"stwx")
++__do_out_asm(outw, "sthx")
+ #elif defined (CONFIG_8260_PCI9)
+ /* in asm cannot be defined if PCI9 workaround is used */
+ #define inb(port) in_8((port)+___IO_BASE)
+@@ -377,12 +377,19 @@
+ extern void __iomem *ioremap64(unsigned long long address, unsigned long size);
+ #endif
+ #define ioremap_nocache(addr, size) ioremap((addr), (size))
++#define ioremap_writethrough(addr, size) __ioremap((addr), (size), _PAGE_WRITETHRU)
+ extern void iounmap(volatile void __iomem *addr);
+ extern unsigned long iopa(unsigned long addr);
+ extern unsigned long mm_ptov(unsigned long addr) __attribute_const__;
+ extern void io_block_mapping(unsigned long virt, phys_addr_t phys,
+ unsigned int size, int flags);
+
++/* Values for nocacheflag and cmode */
++#define IOMAP_FULL_CACHING 0
++#define IOMAP_NOCACHE_SER 1
++#define IOMAP_NOCACHE_NONSER 2
++#define IOMAP_WRITETHROUGH 3
++
+ /*
+ * The PCI bus is inherently Little-Endian. The PowerPC is being
+ * run Big-Endian. Thus all values which cross the [PCI] barrier
+@@ -392,24 +399,16 @@
+ */
+ extern inline unsigned long virt_to_bus(volatile void * address)
+ {
+-#ifndef CONFIG_APUS
+ if (address == (void *)0)
+ return 0;
+- return (unsigned long)address - KERNELBASE + PCI_DRAM_OFFSET;
+-#else
+- return iopa ((unsigned long) address);
+-#endif
++ return __pa(address) + PCI_DRAM_OFFSET;
+ }
+
+ extern inline void * bus_to_virt(unsigned long address)
+ {
+-#ifndef CONFIG_APUS
+ if (address == 0)
+ return NULL;
+- return (void *)(address - PCI_DRAM_OFFSET + KERNELBASE);
+-#else
+- return (void*) mm_ptov (address);
+-#endif
++ return __va(address) - PCI_DRAM_OFFSET;
+ }
+
+ /*
+@@ -418,20 +417,12 @@
+ */
+ extern inline unsigned long virt_to_phys(volatile void * address)
+ {
+-#ifndef CONFIG_APUS
+- return (unsigned long) address - KERNELBASE;
+-#else
+- return iopa ((unsigned long) address);
+-#endif
++ return __pa(address);
+ }
+
+ extern inline void * phys_to_virt(unsigned long address)
+ {
+-#ifndef CONFIG_APUS
+- return (void *) (address + KERNELBASE);
+-#else
+- return (void*) mm_ptov (address);
+-#endif
++ return __va(address);
+ }
+
+ /*
+@@ -546,8 +537,6 @@
+ extern void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long max);
+ extern void pci_iounmap(struct pci_dev *dev, void __iomem *);
+
+-#endif /* _PPC_IO_H */
+-
+ #ifdef CONFIG_8260_PCI9
+ #include <asm/mpc8260_pci9.h>
+ #endif
+@@ -564,3 +553,4 @@
+ #define xlate_dev_kmem_ptr(p) p
+
+ #endif /* __KERNEL__ */
++#endif /* _PPC_IO_H */
+diff -Nur -x CVS linux-2.6.12/include/asm-ppc/machdep.h 2.6/include/asm-ppc/machdep.h
+--- linux-2.6.12/include/asm-ppc/machdep.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/include/asm-ppc/machdep.h 2005-07-31 03:18:37.000000000 +0200
+@@ -8,10 +8,6 @@
+ #include <asm/setup.h>
+ #include <asm/page.h>
+
+-#ifdef CONFIG_APUS
+-#include <asm-m68k/machdep.h>
+-#endif
+-
+ struct pt_regs;
+ struct pci_bus;
+ struct pci_dev;
+diff -Nur -x CVS linux-2.6.12/include/asm-ppc/pgtable.h 2.6/include/asm-ppc/pgtable.h
+--- linux-2.6.12/include/asm-ppc/pgtable.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/include/asm-ppc/pgtable.h 2005-07-31 03:18:37.000000000 +0200
+@@ -679,7 +679,7 @@
+ #define pmd_page_kernel(pmd) \
+ ((unsigned long) __va(pmd_val(pmd) & PAGE_MASK))
+ #define pmd_page(pmd) \
+- (mem_map + (pmd_val(pmd) >> PAGE_SHIFT))
++ pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT)
+ #else
+ #define pmd_page_kernel(pmd) \
+ ((unsigned long) (pmd_val(pmd) & PAGE_MASK))
+diff -Nur -x CVS linux-2.6.12/include/asm-ppc/zorro.h 2.6/include/asm-ppc/zorro.h
+--- linux-2.6.12/include/asm-ppc/zorro.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/include/asm-ppc/zorro.h 2005-08-04 01:48:26.000000000 +0200
+@@ -3,13 +3,50 @@
+
+ #include <asm/io.h>
+
+-#define z_readb in_8
+-#define z_readw in_be16
+-#define z_readl in_be32
+-
+-#define z_writeb(val, port) out_8((port), (val))
+-#define z_writew(val, port) out_be16((port), (val))
+-#define z_writel(val, port) out_be32((port), (val))
++static inline unsigned int z_readb(unsigned long addr)
++{
++ unsigned int ret;
++
++ ret = *(volatile u8 *)addr;
++ eieio();
++ return ret;
++}
++
++static inline unsigned int z_readw(unsigned long addr)
++{
++ unsigned int ret;
++
++ ret = *(volatile u16 *)addr;
++ eieio();
++ return ret;
++}
++
++static inline unsigned int z_readl(unsigned long addr)
++{
++ unsigned int ret;
++
++ ret = *(volatile u32 *)addr;
++ eieio();
++ return ret;
++}
++
++static inline void z_writeb(unsigned int val, unsigned long addr)
++{
++ *(volatile u8 *)addr = val;
++ eieio();
++}
++
++static inline void z_writew(unsigned int val, unsigned long addr)
++{
++ *(volatile u16 *)addr = val;
++ eieio();
++}
++
++static inline void z_writel(unsigned int val,unsigned long addr)
++{
++ *(volatile u32 *)addr = val;
++ eieio();
++}
+
+ #define z_memset_io(a,b,c) memset((void *)(a),(b),(c))
+ #define z_memcpy_fromio(a,b,c) memcpy((a),(void *)(b),(c))
+@@ -19,7 +56,6 @@
+ unsigned long flags);
+
+ extern void *ioremap(unsigned long address, unsigned long size);
+-extern void iounmap(void *addr);
+
+ extern void *__ioremap(unsigned long address, unsigned long size,
+ unsigned long flags);
+diff -Nur -x CVS linux-2.6.12/include/net/dn_route.h 2.6/include/net/dn_route.h
+--- linux-2.6.12/include/net/dn_route.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/include/net/dn_route.h 2004-02-01 00:44:56.000000000 +0100
+@@ -26,8 +26,7 @@
+ #define DN_RT_F_PF 0x80 /* Padding Follows */
+ #define DN_RT_F_VER 0x40 /* Version =0 discard packet if ==1 */
+ #define DN_RT_F_IE 0x20 /* Intra Ethernet, Reserved in short pkt */
+-#define DN_RT_F_RTS 0x10 /* Packet is being re */
+-#defi */
++#define DN_RT_F_RTS 0x10 /* Packet is being returned to sender */
+ #define DN_RT_F_RQR 0x08 /* Return packet to sender upon non-delivery */
+
+ /* Mask for types of routing packets */
+diff -Nur -x CVS linux-2.6.12/include/video/vga.h 2.6/include/video/vga.h
+--- linux-2.6.12/include/video/vga.h 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/include/video/vga.h 2005-07-30 20:52:54.000000000 +0200
+@@ -28,6 +28,7 @@
+ * Ugh, we don't have PCI space, so map readb() and friends to use Zorro space
+ * for MMIO accesses. This should make cirrusfb work again on Amiga
+ */
++#include <asm/zorro.h>
+ #undef inb_p
+ #undef inw_p
+ #undef outb_p
+@@ -36,11 +37,17 @@
+ #undef writeb
+ #undef writew
+ #define inb_p(port) 0
++#undef inw_p
+ #define inw_p(port) 0
++#undef outb_p
+ #define outb_p(port, val) do { } while (0)
++#undef outw
+ #define outw(port, val) do { } while (0)
++#undef readb
+ #define readb z_readb
++#undef writeb
+ #define writeb z_writeb
++#undef writew
+ #define writew z_writew
+ #endif
+ #include <asm/byteorder.h>
+diff -Nur -x CVS linux-2.6.12/Makefile 2.6/Makefile
+--- linux-2.6.12/Makefile 2005-06-17 21:48:29.000000000 +0200
++++ 2.6/Makefile 2005-07-31 03:18:04.000000000 +0200
+@@ -190,8 +190,8 @@
+ # Default value for CROSS_COMPILE is not to prefix executables
+ # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
+
+-ARCH ?= $(SUBARCH)
+-CROSS_COMPILE ?=
++ARCH ?= ppc
++CROSS_COMPILE ?= powerpc-linux-
+
+ # Architecture as present in compile.h
+ UTS_MACHINE := $(ARCH)
More information about the Kernel-svn-changes
mailing list