]> git.neil.brown.name Git - history.git/commitdiff
Import 2.3.30pre3 2.3.30pre3
authorLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:28:52 +0000 (15:28 -0500)
committerLinus Torvalds <torvalds@linuxfoundation.org>
Fri, 23 Nov 2007 20:28:52 +0000 (15:28 -0500)
115 files changed:
Documentation/BUG-HUNTING
Documentation/Changes
arch/alpha/kernel/alpha_ksyms.c
arch/alpha/kernel/core_irongate.c
arch/alpha/kernel/sys_nautilus.c
arch/i386/kernel/semaphore.c
arch/i386/kernel/traps.c
arch/ppc/Makefile
arch/ppc/apus_defconfig [deleted file]
arch/ppc/boot/Makefile
arch/ppc/boot/head.S
arch/ppc/boot/misc.c
arch/ppc/chrp_defconfig [deleted file]
arch/ppc/chrpboot/main.c
arch/ppc/chrpboot/string.S [deleted file]
arch/ppc/coffboot/main.c
arch/ppc/common_defconfig [deleted file]
arch/ppc/config.in
arch/ppc/configs/apus_defconfig [new file with mode: 0644]
arch/ppc/configs/chrp_defconfig [new file with mode: 0644]
arch/ppc/configs/common_defconfig [new file with mode: 0644]
arch/ppc/configs/gemini_defconfig [new file with mode: 0644]
arch/ppc/configs/mbx_defconfig [new file with mode: 0644]
arch/ppc/configs/oak_defconfig [new file with mode: 0644]
arch/ppc/configs/pmac_defconfig [new file with mode: 0644]
arch/ppc/configs/prep_defconfig [new file with mode: 0644]
arch/ppc/configs/walnut_defconfig [new file with mode: 0644]
arch/ppc/defconfig
arch/ppc/gemini_defconfig [deleted file]
arch/ppc/kernel/Makefile
arch/ppc/kernel/align.c
arch/ppc/kernel/entry.S
arch/ppc/kernel/gemini_prom.S
arch/ppc/kernel/gemini_setup.c
arch/ppc/kernel/head.S
arch/ppc/kernel/head_4xx.S [new file with mode: 0644]
arch/ppc/kernel/misc.S
arch/ppc/kernel/mk_defs.c
arch/ppc/kernel/oak_setup.c [new file with mode: 0644]
arch/ppc/kernel/oak_setup.h [new file with mode: 0644]
arch/ppc/kernel/open_pic.h
arch/ppc/kernel/pci.c
arch/ppc/kernel/pmac_nvram.c [new file with mode: 0644]
arch/ppc/kernel/pmac_pci.c
arch/ppc/kernel/pmac_support.c [deleted file]
arch/ppc/kernel/ppc_asm.h
arch/ppc/kernel/ppc_asm.tmpl
arch/ppc/kernel/ppc_ksyms.c
arch/ppc/kernel/prep_setup.c
arch/ppc/kernel/process.c
arch/ppc/kernel/prom.c
arch/ppc/kernel/setup.c
arch/ppc/kernel/smp.c
arch/ppc/kernel/traps.c
arch/ppc/mbx_defconfig [deleted file]
arch/ppc/mm/Makefile
arch/ppc/mm/fault.c
arch/ppc/mm/init.c
arch/ppc/mm/mem_pieces.c [new file with mode: 0644]
arch/ppc/mm/mem_pieces.h [new file with mode: 0644]
arch/ppc/pmac_defconfig [deleted file]
arch/ppc/prep_defconfig [deleted file]
arch/ppc/treeboot/Makefile [new file with mode: 0644]
arch/ppc/treeboot/crt0.S [new file with mode: 0644]
arch/ppc/treeboot/elf.pl [new file with mode: 0644]
arch/ppc/treeboot/irSect.c [new file with mode: 0644]
arch/ppc/treeboot/irSect.h [new file with mode: 0644]
arch/ppc/treeboot/ld.script [new file with mode: 0644]
arch/ppc/treeboot/main.c [new file with mode: 0644]
arch/ppc/treeboot/misc.S [new file with mode: 0644]
arch/ppc/treeboot/mkevimg [new file with mode: 0644]
arch/ppc/treeboot/mkirimg [new file with mode: 0644]
arch/ppc/xmon/ppc-opc.c
drivers/net/sk98lin/skge.c
drivers/scsi/megaraid.c
drivers/scsi/ncr53c8xx.c
drivers/scsi/sym53c8xx.c
drivers/sound/sb_card.c
drivers/usb/keyboard.c
drivers/usb/ohci-hcd.c
drivers/usb/ohci-root-hub.c
drivers/video/Config.in
fs/buffer.c
fs/coda/file.c
fs/fat/file.c
fs/hpfs/file.c
fs/ncpfs/dir.c
fs/nfs/read.c
fs/nfs/write.c
fs/qnx4/file.c
fs/romfs/inode.c
fs/smbfs/file.c
include/asm-i386/atomic.h
include/asm-i386/rwlock.h [new file with mode: 0644]
include/asm-i386/semaphore.h
include/asm-i386/smplock.h
include/asm-i386/spinlock.h
include/asm-ppc/board.h [new file with mode: 0644]
include/asm-ppc/bootinfo.h
include/asm-ppc/io.h
include/asm-ppc/machdep.h
include/asm-ppc/oak.h [new file with mode: 0644]
include/asm-ppc/pgtable.h
include/asm-ppc/processor.h
include/asm-ppc/ptrace.h
include/asm-ppc/walnut.h [new file with mode: 0644]
include/linux/fs.h
include/linux/nfs_fs.h
include/linux/pagemap.h
include/net/sock.h
kernel/ksyms.c
kernel/sched.c
mm/filemap.c
mm/page_alloc.c
net/core/neighbour.c

index fc7e0abd67cd72a8c50d2ac8a6c42d3348c77299..ca29242dbc38d83328c2866d5413e719a3662997 100644 (file)
@@ -85,8 +85,8 @@ work to narrow it down.
 If you get it down to a routine, you'll probably get a fix in 24 hours.
 
 My apologies to Linus and the other kernel hackers for describing this
-brute force approach, it's hardly what a kernel hack would do.  However,
-it does work and it lets non-hackers help bug fix.  And it is cool
+brute force approach, it's hardly what a kernel hacker would do.  However,
+it does work and it lets non-hackers help fix bugs.  And it is cool
 because Linux snapshots will let you do this - something that you can't
-do with vender supplied releases.
+do with vendor supplied releases.
 
index 5045fd4bc98f2b0e49e6f40c60cee409d4cce10e..03c6c9fc48eba5fda25f0b8d06b79dddc94c7c4d 100644 (file)
@@ -43,7 +43,7 @@ Current Minimal Requirements
 encountered a bug!  If you're unsure what version you're currently
 running, the suggested command should tell you.
 
-- Kernel modutils       2.3.6                   ; insmod -V
+- Kernel modutils       2.3.7                   ; insmod -V
 - Gnu C                 2.7.2.3                 ; gcc --version
 - Binutils              2.9.1.0.7               ; ld -v
 - Linux libc5 C Library         5.4.46                  ; ls -l /lib/libc*
@@ -576,8 +576,8 @@ ftp://metalab.unc.edu/pub/Linux/GCC/ld.so-1.9.9.tar.gz
 Modules utilities
 =================
 
-The 2.3.6 release:
-ftp://ftp.ocs.com.au/pub/modutils/v2.3/modutils-2.3.6.tar.gz
+The 2.3.7 release:
+ftp://ftp.ocs.com.au/pub/modutils/v2.3/modutils-2.3.7.tar.gz
 
 Procps utilities
 ================
index 0983740f249bdcee5b36d4f35d88e7c29fadde13..c8224cbd3cbd791732e57c328d27a35e139741ad 100644 (file)
@@ -123,6 +123,7 @@ EXPORT_SYMBOL(csum_tcpudp_magic);
 EXPORT_SYMBOL(ip_compute_csum);
 EXPORT_SYMBOL(ip_fast_csum);
 EXPORT_SYMBOL(csum_partial_copy);
+EXPORT_SYMBOL(csum_partial_copy_nocheck);
 EXPORT_SYMBOL(csum_partial_copy_from_user);
 EXPORT_SYMBOL(csum_ipv6_magic);
 
index c6aadd21824ea3842655088b980932d99cb9dee9..ef686277c63af374b3a07742f873fd1adb3207d0 100644 (file)
@@ -9,7 +9,6 @@
  * Code common to all IRONGATE core logic chips.
  */
 
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/pci.h>
index 7b79d04f1d2ca637573f4f10cfb7c4d4bfb6c6ef..710b23585936dd29ccd3812a5482c3f6c6387635 100644 (file)
@@ -24,6 +24,7 @@
  *     2 USB ports
  */
 
+#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/mm.h>
index cf556282d3117da351db29c39082c54ddf737c25..c530eece062789ab202dfb42c9e64db51f196dea 100644 (file)
@@ -2,7 +2,17 @@
  * i386 semaphore implementation.
  *
  * (C) Copyright 1999 Linus Torvalds
+ *
+ * Portions Copyright 1999 Red Hat, Inc.
+ *
+ *     This program is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     as published by the Free Software Foundation; either version
+ *     2 of the License, or (at your option) any later version.
+ *
+ * rw semaphores implemented November 1999 by Benjamin LaHaise <bcrl@redhat.com>
  */
+#include <linux/config.h>
 #include <linux/sched.h>
 
 #include <asm/semaphore.h>
@@ -218,3 +228,226 @@ asm(
        "popl %eax\n\t"
        "ret"
 );
+
+asm(
+"
+.align 4
+.globl __down_read_failed
+__down_read_failed:
+       pushl   %edx
+       pushl   %ecx
+       jnc     2f
+
+3:     call    down_read_failed_biased
+
+1:     popl    %ecx
+       popl    %edx
+       ret
+
+2:     call    down_read_failed
+       " LOCK "subl    $1,(%eax)
+       jns     1b
+       jnc     2b
+       jmp     3b
+"
+);
+
+asm(
+"
+.align 4
+.globl __down_write_failed
+__down_write_failed:
+       pushl   %edx
+       pushl   %ecx
+       jnc     2f
+
+3:     call    down_write_failed_biased
+
+1:     popl    %ecx
+       popl    %edx
+       ret
+
+2:     call    down_write_failed
+       " LOCK "subl    $" RW_LOCK_BIAS_STR ",(%eax)
+       jz      1b
+       jnc     2b
+       jmp     3b
+"
+);
+
+struct rw_semaphore *FASTCALL(rwsem_wake_readers(struct rw_semaphore *sem));
+struct rw_semaphore *FASTCALL(rwsem_wake_writer(struct rw_semaphore *sem));
+
+struct rw_semaphore *FASTCALL(down_read_failed_biased(struct rw_semaphore *sem));
+struct rw_semaphore *FASTCALL(down_write_failed_biased(struct rw_semaphore *sem));
+struct rw_semaphore *FASTCALL(down_read_failed(struct rw_semaphore *sem));
+struct rw_semaphore *FASTCALL(down_write_failed(struct rw_semaphore *sem));
+
+struct rw_semaphore *down_read_failed_biased(struct rw_semaphore *sem)
+{
+       struct task_struct *tsk = current;
+       DECLARE_WAITQUEUE(wait, tsk);
+
+       add_wait_queue(&sem->wait, &wait);      /* put ourselves at the head of the list */
+
+       for (;;) {
+               if (sem->read_bias_granted && xchg(&sem->read_bias_granted, 0))
+                       break;
+               set_task_state(tsk, TASK_UNINTERRUPTIBLE);
+               if (!sem->read_bias_granted)
+                       schedule();
+       }
+
+       remove_wait_queue(&sem->wait, &wait);
+       tsk->state = TASK_RUNNING;
+
+       return sem;
+}
+
+struct rw_semaphore *down_write_failed_biased(struct rw_semaphore *sem)
+{
+       struct task_struct *tsk = current;
+       DECLARE_WAITQUEUE(wait, tsk);
+
+       add_wait_queue_exclusive(&sem->write_bias_wait, &wait); /* put ourselves at the end of the list */
+
+       for (;;) {
+               if (sem->write_bias_granted && xchg(&sem->write_bias_granted, 0))
+                       break;
+               set_task_state(tsk, TASK_UNINTERRUPTIBLE | TASK_EXCLUSIVE);
+               if (!sem->write_bias_granted)
+                       schedule();
+       }
+
+       remove_wait_queue(&sem->write_bias_wait, &wait);
+       tsk->state = TASK_RUNNING;
+
+       /* if the lock is currently unbiased, awaken the sleepers
+        * FIXME: this wakes up the readers early in a bit of a
+        * stampede -> bad!
+        */
+       if (atomic_read(&sem->count) >= 0)
+               wake_up(&sem->wait);
+
+       return sem;
+}
+
+/* Wait for the lock to become unbiased.  Readers
+ * are non-exclusive. =)
+ */
+struct rw_semaphore *down_read_failed(struct rw_semaphore *sem)
+{
+       struct task_struct *tsk = current;
+       DECLARE_WAITQUEUE(wait, tsk);
+
+       __up_read(sem); /* this takes care of granting the lock */
+
+       add_wait_queue(&sem->wait, &wait);
+
+       while (atomic_read(&sem->count) < 0) {
+               set_task_state(tsk, TASK_UNINTERRUPTIBLE);
+               if (atomic_read(&sem->count) >= 0)
+                       break;
+               schedule();
+       }
+
+       remove_wait_queue(&sem->wait, &wait);
+       tsk->state = TASK_RUNNING;
+
+       return sem;
+}
+
+/* Wait for the lock to become unbiased. Since we're
+ * a writer, we'll make ourselves exclusive.
+ */
+struct rw_semaphore *down_write_failed(struct rw_semaphore *sem)
+{
+       struct task_struct *tsk = current;
+       DECLARE_WAITQUEUE(wait, tsk);
+
+       __up_write(sem);        /* this takes care of granting the lock */
+
+       add_wait_queue_exclusive(&sem->wait, &wait);
+
+       while (atomic_read(&sem->count) < 0) {
+               set_task_state(tsk, TASK_UNINTERRUPTIBLE | TASK_EXCLUSIVE);
+               if (atomic_read(&sem->count) >= 0)
+                       break;  /* we must attempt to aquire or bias the lock */
+               schedule();
+       }
+
+       remove_wait_queue(&sem->wait, &wait);
+       tsk->state = TASK_RUNNING;
+
+       return sem;
+}
+
+asm(
+"
+.align 4
+.globl __rwsem_wake
+__rwsem_wake:
+       pushl   %edx
+       pushl   %ecx
+
+       jz      1f
+       call    rwsem_wake_readers
+       jmp     2f
+
+1:     call    rwsem_wake_writer
+
+2:     popl    %ecx
+       popl    %edx
+       ret
+"
+);
+
+/* Called when someone has done an up that transitioned from
+ * negative to non-negative, meaning that the lock has been
+ * granted to whomever owned the bias.
+ */
+struct rw_semaphore *rwsem_wake_readers(struct rw_semaphore *sem)
+{
+       if (xchg(&sem->read_bias_granted, 1))
+               BUG();
+       wake_up(&sem->wait);
+       return sem;
+}
+
+struct rw_semaphore *rwsem_wake_writer(struct rw_semaphore *sem)
+{
+       if (xchg(&sem->write_bias_granted, 1))
+               BUG();
+       wake_up(&sem->write_bias_wait);
+       return sem;
+}
+
+#if defined(CONFIG_SMP)
+asm(
+"
+.align 4
+.globl __write_lock_failed
+__write_lock_failed:
+       " LOCK "addl    $" RW_LOCK_BIAS_STR ",(%eax)
+1:     cmpl    $" RW_LOCK_BIAS_STR ",(%eax)
+       jne     1b
+
+       " LOCK "subl    $" RW_LOCK_BIAS_STR ",(%eax)
+       jnz     __write_lock_failed
+       ret
+
+
+.align 4
+.globl __read_lock_failed
+__read_lock_failed:
+       lock ; incl     (%eax)
+1:     cmpl    $1,(%eax)
+       js      1b
+
+       lock ; decl     (%eax)
+       js      __read_lock_failed
+       ret
+"
+);
+#endif
+
index ad713cf2dd9dae00a064dfc7a42150e84be44dba..d4cf508e54fe333aeb13a878ee22b16855d9ece4 100644 (file)
@@ -201,7 +201,7 @@ static void show_registers(struct pt_regs *regs)
        printk("\n");
 }      
 
-spinlock_t die_lock;
+spinlock_t die_lock = SPIN_LOCK_UNLOCKED;
 
 void die(const char * str, struct pt_regs * regs, long err)
 {
index 82bdb59ed0d901337333aef08ece8ab458a0a27b..a41c086ead95946d31609f8316ed0f5eed79910d 100644 (file)
@@ -21,11 +21,15 @@ endif
 ASFLAGS                =
 LINKFLAGS      = -T arch/ppc/vmlinux.lds -Ttext $(KERNELLOAD) -Bstatic
 CFLAGSINC      = -D__KERNEL__ -I$(TOPDIR)/include -D__powerpc__
-CFLAGS         := $(CFLAGS) -I$(HPATH) -D__powerpc__ -fsigned-char -msoft-float \
-               -pipe -fno-builtin -ffixed-r2 -Wno-uninitialized -mmultiple \
-               -mstring
+CFLAGS         := $(CFLAGS) -I$(HPATH) -D__powerpc__ -fsigned-char \
+               -msoft-float -pipe -fno-builtin -ffixed-r2 -Wno-uninitialized \
+               -mmultiple -mstring
 CPP            = $(CC) -E $(CFLAGS)
 
+ifdef CONFIG_4xx
+CFLAGS := $(CFLAGS) -mcpu=403
+endif
+
 ifdef CONFIG_8xx
 CFLAGS := $(CFLAGS) -mcpu=860 -I../8xx_io
 endif
@@ -34,10 +38,13 @@ ifdef CONFIG_PPC64
 CFLAGS := $(CFLAGS) -Wa,-mppc64bridge #-mpowerpc64
 endif
 
-ifndef CONFIG_8xx
-HEAD := arch/ppc/kernel/head.o
+ifdef CONFIG_4xx
+  HEAD := arch/ppc/kernel/head_4xx.o
 else
-HEAD := arch/ppc/kernel/head_8xx.o
+  ifdef CONFIG_8xx
+    HEAD := arch/ppc/kernel/head_8xx.o
+  endif
+  HEAD := arch/ppc/kernel/head.o
 endif
 
 ARCH_SUBDIRS = arch/ppc/kernel arch/ppc/mm arch/ppc/lib
@@ -60,6 +67,7 @@ MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
 MAKECOFFBOOT = $(MAKE) -C arch/$(ARCH)/coffboot
 MAKECHRPBOOT = $(MAKE) -C arch/$(ARCH)/chrpboot
 MAKEMBXBOOT = $(MAKE) -C arch/$(ARCH)/mbxboot
+MAKETREEBOOT = $(MAKE) -C arch/$(ARCH)/treeboot
 
 ifdef CONFIG_8xx
 SUBDIRS += arch/ppc/8xx_io
@@ -77,11 +85,18 @@ checks:
 
 BOOT_TARGETS = zImage znetboot.initrd zImage.initrd
 
+ifdef CONFIG_4xx
+$(BOOT_TARGETS): $(CHECKS) vmlinux
+       @$(MAKETREEBOOT) $@
+endif
+
 ifdef CONFIG_8xx
 $(BOOT_TARGETS): $(CHECKS) vmlinux
        @$(MAKECOFFBOOT) $@
        @$(MAKEMBXBOOT) $@
-else
+endif
+
+ifdef CONFIG_6xx
 $(BOOT_TARGETS): $(CHECKS) vmlinux
        @$(MAKECOFFBOOT) $@
        @$(MAKEBOOT) $@
@@ -108,33 +123,36 @@ endif
        @$(MAKECHRPBOOT) $@
 endif
 
-gemini_config:
+.PHONY: clean_config
+clean_config:
        rm -f .config arch/ppc/defconfig
-       ln -s gemini_defconfig arch/ppc/defconfig
 
-pmac_config:
-       rm -f .config arch/ppc/defconfig
-       ln -s pmac_defconfig arch/ppc/defconfig
+gemini_config: clean_config
+       ln -s configs/gemini_defconfig arch/ppc/defconfig
 
-prep_config:
-       rm -f .config arch/ppc/defconfig
-       ln -s prep_defconfig arch/ppc/defconfig
+pmac_config: clean_config
+       ln -s configs/pmac_defconfig arch/ppc/defconfig
 
-chrp_config:
-       rm -f .config arch/ppc/defconfig
-       ln -s chrp_defconfig arch/ppc/defconfig
+prep_config: clean_config
+       ln -s configs/prep_defconfig arch/ppc/defconfig
 
-common_config:
-       rm -f .config arch/ppc/defconfig
-       ln -s common_defconfig arch/ppc/defconfig
+chrp_config: clean_config
+       ln -s configs/chrp_defconfig arch/ppc/defconfig
 
-mbx_config:
-       rm -f .config arch/ppc/defconfig
-       ln -s mbx_defconfig arch/ppc/defconfig
+common_config: clean_config
+       ln -s configs/common_defconfig arch/ppc/defconfig
 
-apus_config:
-       rm -f .config arch/ppc/defconfig
-       ln -s apus_defconfig arch/ppc/defconfig
+mbx_config: clean_config
+       ln -s configs/mbx_defconfig arch/ppc/defconfig
+
+apus_config: clean_config
+       ln -s configs/apus_defconfig arch/ppc/defconfig
+
+oak_config: clean_config
+       ln -s configs/oak_defconfig arch/ppc/defconfig
+
+walnut_config: clean_config
+       ln -s configs/walnut_defconfig arch/ppc/defconfig
 
 tags:
        etags */*.c include/{asm,linux}/*.h arch/ppc/kernel/*.{c,h}
@@ -145,6 +163,7 @@ archclean:
        @$(MAKEBOOT) clean
        @$(MAKECHRPBOOT) clean
        @$(MAKEMBXBOOT) clean
+       @$(MAKETREEBOOT) clean
 
 archmrproper:
 
diff --git a/arch/ppc/apus_defconfig b/arch/ppc/apus_defconfig
deleted file mode 100644 (file)
index f86dbd5..0000000
+++ /dev/null
@@ -1,397 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-
-#
-# Platform support
-#
-CONFIG_PPC=y
-CONFIG_6xx=y
-# CONFIG_8xx is not set
-CONFIG_PMAC=y
-# CONFIG_PREP is not set
-# CONFIG_CHRP is not set
-# CONFIG_ALL_PPC is not set
-# CONFIG_APUS is not set
-# CONFIG_MBX is not set
-# CONFIG_SMP is not set
-CONFIG_MACH_SPECIFIC=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-CONFIG_PCI=y
-# CONFIG_PCI_QUIRKS is not set
-CONFIG_PCI_OLD_PROC=y
-CONFIG_NET=y
-CONFIG_SYSCTL=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_BINFMT_ELF=y
-CONFIG_KERNEL_ELF=y
-CONFIG_BINFMT_MISC=m
-# CONFIG_BINFMT_JAVA is not set
-# CONFIG_PARPORT is not set
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FB=y
-CONFIG_FB_COMPAT_XPMAC=y
-CONFIG_PMAC_PBOOK=y
-CONFIG_MAC_KEYBOARD=y
-CONFIG_MAC_FLOPPY=y
-CONFIG_MAC_SERIAL=y
-CONFIG_ADBMOUSE=y
-CONFIG_PROC_DEVICETREE=y
-# CONFIG_KGDB is not set
-# CONFIG_XMON is not set
-# CONFIG_TOTALMP is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-CONFIG_BLK_DEV_IDEFLOPPY=y
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_IDEPCI is not set
-# CONFIG_BLK_DEV_SL82C105 is not set
-CONFIG_BLK_DEV_IDE_PMAC=y
-CONFIG_BLK_DEV_IDEDMA_PMAC=y
-CONFIG_BLK_DEV_IDEDMA=y
-CONFIG_IDEDMA_PMAC_AUTO=y
-# CONFIG_IDE_CHIPSETS is not set
-
-#
-# Additional Block Devices
-#
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE_PARPORT=y
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-CONFIG_NETLINK=y
-# CONFIG_RTNETLINK is not set
-# CONFIG_NETLINK_DEV is not set
-# CONFIG_FIREWALL is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_IP_ROUTER is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-CONFIG_IP_ALIAS=y
-# CONFIG_SYN_COOKIES is not set
-
-#
-# (it is safe to leave these untouched)
-#
-CONFIG_INET_RARP=y
-CONFIG_IP_NOSR=y
-CONFIG_SKB_LARGE=y
-# CONFIG_IPV6 is not set
-
-#
-#  
-#
-# CONFIG_IPX is not set
-CONFIG_ATALK=m
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_LLC is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-# CONFIG_CPU_IS_SLOW is not set
-# CONFIG_NET_SCHED is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=y
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-# CONFIG_CHR_DEV_SG is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-CONFIG_SCSI_CONSTANTS=y
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AHA1740 is not set
-CONFIG_SCSI_AIC7XXX=y
-# CONFIG_OVERRIDE_CMDS is not set
-CONFIG_AIC7XXX_PROC_STATS=y
-CONFIG_AIC7XXX_RESET_DELAY=15
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO is not set
-# CONFIG_SCSI_EATA 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_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_NCR53C8XX is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_ISP is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_DEBUG is not set
-CONFIG_SCSI_MESH=y
-CONFIG_SCSI_MESH_SYNC_RATE=5
-CONFIG_SCSI_MAC53C94=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_ETHERTAP is not set
-CONFIG_NET_ETHERNET=y
-CONFIG_MACE=y
-CONFIG_BMAC=y
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_RTL8139 is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_NET_ISA is not set
-CONFIG_NET_EISA=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AC3200 is not set
-# CONFIG_APRICOT is not set
-# CONFIG_CS89x0 is not set
-CONFIG_DE4X5=y
-CONFIG_DEC_ELCP=m
-# CONFIG_DGRS is not set
-# CONFIG_EEXPRESS_PRO100 is not set
-# CONFIG_LNE390 is not set
-# CONFIG_NE3210 is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_ES3210 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_ZNET is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_DLCI is not set
-# CONFIG_LTPC is not set
-# CONFIG_COPS is not set
-# CONFIG_IPDDP is not set
-CONFIG_PPP=y
-
-#
-# CCP compressors for PPP are only built as modules.
-#
-# CONFIG_SLIP is not set
-# CONFIG_NET_RADIO is not set
-# CONFIG_TR is not set
-# CONFIG_SHAPER is not set
-# CONFIG_HOSTESS_SV11 is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Console drivers
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FB_OF=y
-CONFIG_FB_CONTROL=y
-CONFIG_FB_PLATINUM=y
-CONFIG_FB_VALKYRIE=y
-CONFIG_FB_ATY=y
-CONFIG_FB_IMSTT=y
-CONFIG_FB_CT65550=y
-# CONFIG_FB_S3TRIO is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FBCON_ADVANCED is not set
-CONFIG_FBCON_CFB8=y
-CONFIG_FBCON_CFB16=y
-CONFIG_FBCON_CFB24=y
-CONFIG_FBCON_CFB32=y
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-CONFIG_FONT_SUN8x16=y
-CONFIG_FONT_SUN12x22=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=m
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-# CONFIG_MOUSE is not set
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_WATCHDOG is not set
-# CONFIG_RTC is not set
-# CONFIG_VIDEO_DEV is not set
-CONFIG_NVRAM=y
-# CONFIG_JOYSTICK is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-
-#
-# Filesystems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_EXT2_FS=y
-CONFIG_ISO9660_FS=y
-# CONFIG_JOLIET is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=m
-CONFIG_PROC_FS=y
-CONFIG_NFS_FS=y
-CONFIG_NFSD=y
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-# CONFIG_CODA_FS is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_AFFS_FS is not set
-CONFIG_HFS_FS=y
-# CONFIG_ROMFS_FS is not set
-CONFIG_AUTOFS_FS=y
-# CONFIG_UFS_FS is not set
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_SMD_DISKLABEL is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-CONFIG_DEVPTS_FS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS_CODEPAGE_437=y
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_KOI8_R is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-CONFIG_DMASOUND=y
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_OSS is not set
index 41a8a915f4780503c8a332d01217ca5588e2762d..96b6ba306ecce10c6d0c39e6706e411440730a0b 100644 (file)
@@ -134,7 +134,7 @@ znetboot.initrd : zImage.initrd
        cp zImage.initrd $(TFTPIMAGE)
 
 clean:
-       rm -f vmlinux* zvmlinux* mkprep zImage*
+       rm -f vmlinux* zvmlinux* mkprep zImage* sImage*
 
 fastdep:
        $(TOPDIR)/scripts/mkdep *.[Sch] > .depend
index 79377a2ac6676ed77b73e747d09901b53d3f81e4..cc9339c8eee0379a64fa77eb42715b4f25d949df 100644 (file)
@@ -112,14 +112,6 @@ start_ldr:
        cmpi    0,r2,0
        bne     00b
 
-       /* r4,r5 have initrd_start, size */
-       lis     r2,initrd_start@h
-       ori     r2,r2,initrd_start@l
-       lwz     r4,0(r2)
-       lis     r2,initrd_end@h
-       ori     r2,r2,initrd_end@l
-       lwz     r5,0(r2)
-       
        /* tell kernel we're prep */
        /* 
         * get start address of kernel code which is stored as a coff
index 6724a8130e9a5b9629790a704154fd41b41130e8..d25f732b8e5bdbd1011fc20b8f24ffe332585a6e 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/config.h>
 #include <asm/page.h>
 #include <asm/processor.h>
+#include <asm/bootinfo.h>
 #include <asm/mmu.h>
 #if defined(CONFIG_SERIAL_CONSOLE)
 #include "ns16550.h"
@@ -518,17 +519,39 @@ decompress_kernel(unsigned long load_addr, int num_words, unsigned long cksum,
        *cp = 0;
        puts("\n");
 
-       /* mappings on early boot can only handle 16M */
-       if ( (int)(cmd_line[0]) > (16<<20))
-               puts("cmd_line located > 16M\n");
-       if ( (int)hold_residual > (16<<20))
-               puts("hold_residual located > 16M\n");
-       if ( initrd_start > (16<<20))
-               puts("initrd_start located > 16M\n");
-       
        puts("Uncompressing Linux...");
        gunzip(0, 0x400000, zimage_start, &zimage_size);
        puts("done.\n");
+       
+       {
+               struct bi_record *rec;
+           
+               rec = (struct bi_record *)PAGE_ALIGN(zimage_size);
+           
+               rec->tag = BI_FIRST;
+               rec->size = sizeof(struct bi_record);
+               rec = (struct bi_record *)((unsigned long)rec + rec->size);
+
+               rec->tag = BI_BOOTLOADER_ID;
+               memcpy( (void *)rec->data, "prepboot", 9);
+               rec->size = sizeof(struct bi_record) + 8 + 1;
+               rec = (struct bi_record *)((unsigned long)rec + rec->size);
+           
+               rec->tag = BI_MACHTYPE;
+               rec->data[0] = _MACH_prep;
+               rec->data[1] = 1;
+               rec->size = sizeof(struct bi_record) + sizeof(unsigned long);
+               rec = (struct bi_record *)((unsigned long)rec + rec->size);
+           
+               rec->tag = BI_CMD_LINE;
+               memcpy( (char *)rec->data, cmd_line, strlen(cmd_line)+1);
+               rec->size = sizeof(struct bi_record) + strlen(cmd_line) + 1;
+               rec = (struct bi_record *)((ulong)rec + rec->size);
+               
+               rec->tag = BI_LAST;
+               rec->size = sizeof(struct bi_record);
+               rec = (struct bi_record *)((unsigned long)rec + rec->size);
+       }
        puts("Now booting the kernel\n");
        return (unsigned long)hold_residual;
 }
diff --git a/arch/ppc/chrp_defconfig b/arch/ppc/chrp_defconfig
deleted file mode 100644 (file)
index 48e305f..0000000
+++ /dev/null
@@ -1,319 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-
-#
-# Platform support
-#
-CONFIG_PPC=y
-CONFIG_6xx=y
-# CONFIG_8xx is not set
-# CONFIG_PMAC is not set
-# CONFIG_PREP is not set
-CONFIG_CHRP=y
-# CONFIG_ALL_PPC is not set
-# CONFIG_APUS is not set
-# CONFIG_MBX is not set
-# CONFIG_SMP is not set
-CONFIG_MACH_SPECIFIC=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-# CONFIG_KMOD is not set
-CONFIG_PCI=y
-# CONFIG_PCI_QUIRKS is not set
-CONFIG_PCI_OLD_PROC=y
-CONFIG_NET=y
-CONFIG_SYSCTL=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_BINFMT_ELF=y
-CONFIG_KERNEL_ELF=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_BINFMT_JAVA is not set
-# CONFIG_PARPORT is not set
-CONFIG_FB=y
-CONFIG_FB_COMPAT_XPMAC=y
-# CONFIG_PMAC_PBOOK is not set
-CONFIG_MAC_KEYBOARD=y
-# CONFIG_MAC_FLOPPY is not set
-# CONFIG_MAC_SERIAL is not set
-# CONFIG_ADBMOUSE is not set
-CONFIG_PROC_DEVICETREE=y
-# CONFIG_KGDB is not set
-# CONFIG_XMON is not set
-# CONFIG_TOTALMP is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-CONFIG_BLK_DEV_FD=y
-CONFIG_BLK_DEV_IDE=y
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_IDEPCI is not set
-CONFIG_BLK_DEV_SL82C105=y
-# CONFIG_IDE_CHIPSETS is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE_PARPORT=y
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# Networking options
-#
-# CONFIG_PACKET is not set
-# CONFIG_NETLINK is not set
-# CONFIG_FIREWALL is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_IP_ROUTER is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-CONFIG_IP_ALIAS=y
-# CONFIG_SYN_COOKIES is not set
-CONFIG_INET_RARP=y
-CONFIG_IP_NOSR=y
-CONFIG_SKB_LARGE=y
-# CONFIG_IPV6 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_LLC is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-# CONFIG_CPU_IS_SLOW is not set
-# CONFIG_NET_SCHED is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=y
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-CONFIG_CHR_DEV_SG=y
-# CONFIG_SCSI_MULTI_LUN is not set
-CONFIG_SCSI_CONSTANTS=y
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AHA1740 is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO is not set
-# CONFIG_SCSI_EATA 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_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-CONFIG_SCSI_NCR53C8XX=y
-CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
-CONFIG_SCSI_NCR53C8XX_MAX_TAGS=4
-CONFIG_SCSI_NCR53C8XX_SYNC=5
-# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
-# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
-# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_ISP is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_DEBUG is not set
-CONFIG_SCSI_MESH=y
-CONFIG_SCSI_MESH_SYNC_RATE=10
-CONFIG_SCSI_MAC53C94=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_NET_ETHERNET=y
-# CONFIG_MACE is not set
-# CONFIG_BMAC is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_RTL8139 is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_NET_ISA is not set
-CONFIG_NET_EISA=y
-# CONFIG_PCNET32 is not set
-# CONFIG_AC3200 is not set
-# CONFIG_APRICOT is not set
-# CONFIG_CS89x0 is not set
-# CONFIG_DE4X5 is not set
-CONFIG_DEC_ELCP=y
-# CONFIG_DGRS is not set
-# CONFIG_EEXPRESS_PRO100 is not set
-# CONFIG_LNE390 is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_TLAN is not set
-# CONFIG_ES3210 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_ZNET is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FDDI is not set
-# CONFIG_DLCI is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_RADIO is not set
-# CONFIG_TR is not set
-# CONFIG_SHAPER is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Console drivers
-#
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FB_OF=y
-# CONFIG_FB_CONTROL is not set
-# CONFIG_FB_PLATINUM is not set
-# CONFIG_FB_VALKYRIE is not set
-CONFIG_FB_ATY=y
-CONFIG_FB_IMSTT=y
-# CONFIG_FB_CT65550 is not set
-# CONFIG_FB_S3TRIO is not set
-CONFIG_FB_VGA=y
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FBCON_ADVANCED is not set
-CONFIG_FBCON_CFB8=y
-CONFIG_FBCON_CFB16=y
-CONFIG_FBCON_CFB24=y
-CONFIG_FBCON_CFB32=y
-CONFIG_FBCON_VGA=y
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-# CONFIG_FBCON_FONTS is not set
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_UNIX98_PTYS is not set
-# CONFIG_MOUSE is not set
-# CONFIG_UMISC is not set
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_WATCHDOG is not set
-# CONFIG_RTC is not set
-# CONFIG_VIDEO_DEV is not set
-CONFIG_NVRAM=y
-# CONFIG_JOYSTICK is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-
-#
-# Filesystems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_EXT2_FS=y
-CONFIG_ISO9660_FS=y
-# CONFIG_JOLIET is not set
-# CONFIG_FAT_FS is not set
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_NFS_FS=y
-# CONFIG_NFSD is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-# CONFIG_CODA_FS is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_AFFS_FS is not set
-CONFIG_HFS_FS=y
-# CONFIG_ROMFS_FS is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_ADFS_FS is not set
-CONFIG_MAC_PARTITION=y
-# CONFIG_NLS is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_OSS is not set
index 80db69a7b10896bc00b90c622a9fc66602a57a76..bf506552a5fa9fe2b9c370b3765afefa4517df4d 100644 (file)
@@ -8,6 +8,10 @@
  */
 #include "../coffboot/nonstdio.h"
 #include "../coffboot/zlib.h"
+#include <asm/bootinfo.h>
+#include <asm/processor.h>
+#define __KERNEL__
+#include <asm/page.h>
 
 extern void *finddevice(const char *);
 extern int getprop(void *, const char *, void *, int);
@@ -71,6 +75,30 @@ chrpboot(int a1, int a2, void *prom)
     sa = (unsigned long)PROG_START;
     printf("start address = 0x%x\n\r", sa);
 
+    {
+           struct bi_record *rec;
+           
+           rec = (struct bi_record *)PAGE_ALIGN((unsigned long)dst+len);
+           
+           rec->tag = BI_FIRST;
+           rec->size = sizeof(struct bi_record);
+           rec = (struct bi_record *)((unsigned long)rec + rec->size);
+
+           rec->tag = BI_BOOTLOADER_ID;
+           sprintf( (char *)rec->data, "chrpboot");
+           rec->size = sizeof(struct bi_record) + strlen("chrpboot") + 1;
+           rec = (struct bi_record *)((unsigned long)rec + rec->size);
+           
+           rec->tag = BI_MACHTYPE;
+           rec->data[0] = _MACH_chrp;
+           rec->data[1] = 1;
+           rec->size = sizeof(struct bi_record) + sizeof(unsigned long);
+           rec = (struct bi_record *)((unsigned long)rec + rec->size);
+           
+           rec->tag = BI_LAST;
+           rec->size = sizeof(struct bi_record);
+           rec = (struct bi_record *)((unsigned long)rec + rec->size);
+    }
     (*(void (*)())sa)(0, 0, prom, a1, a2);
 
     printf("returned?\n\r");
diff --git a/arch/ppc/chrpboot/string.S b/arch/ppc/chrpboot/string.S
deleted file mode 100644 (file)
index ba83591..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * String handling functions for PowerPC.
- *
- * Copyright (C) 1996 Paul Mackerras.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version
- * 2 of the License, or (at your option) any later version.
- */
-#define r0     0
-#define r3     3
-#define r4     4
-#define r5     5
-#define r6     6
-#define r7     7
-#define r8     8
-
-       .globl  strcpy
-strcpy:
-       addi    r5,r3,-1
-       addi    r4,r4,-1
-1:     lbzu    r0,1(r4)
-       cmpwi   0,r0,0
-       stbu    r0,1(r5)
-       bne     1b
-       blr
-
-       .globl  strncpy
-strncpy:
-       cmpwi   0,r5,0
-       beqlr
-       mtctr   r5
-       addi    r6,r3,-1
-       addi    r4,r4,-1
-1:     lbzu    r0,1(r4)
-       cmpwi   0,r0,0
-       stbu    r0,1(r6)
-       bdnzf   2,1b            /* dec ctr, branch if ctr != 0 && !cr0.eq */
-       blr
-
-       .globl  strcat
-strcat:
-       addi    r5,r3,-1
-       addi    r4,r4,-1
-1:     lbzu    r0,1(r5)
-       cmpwi   0,r0,0
-       bne     1b
-       addi    r5,r5,-1
-1:     lbzu    r0,1(r4)
-       cmpwi   0,r0,0
-       stbu    r0,1(r5)
-       bne     1b
-       blr
-
-       .globl  strcmp
-strcmp:
-       addi    r5,r3,-1
-       addi    r4,r4,-1
-1:     lbzu    r3,1(r5)
-       cmpwi   1,r3,0
-       lbzu    r0,1(r4)
-       subf.   r3,r0,r3
-       beqlr   1
-       beq     1b
-       blr
-
-       .globl  strlen
-strlen:
-       addi    r4,r3,-1
-1:     lbzu    r0,1(r4)
-       cmpwi   0,r0,0
-       bne     1b
-       subf    r3,r3,r4
-       blr
-
-       .globl  memset
-memset:
-       rlwimi  r4,r4,8,16,23
-       rlwimi  r4,r4,16,0,15
-       addi    r6,r3,-4
-       cmplwi  0,r5,4
-       blt     7f
-       stwu    r4,4(r6)
-       beqlr
-       andi.   r0,r6,3
-       add     r5,r0,r5
-       subf    r6,r0,r6
-       rlwinm  r0,r5,32-2,2,31
-       mtctr   r0
-       bdz     6f
-1:     stwu    r4,4(r6)
-       bdnz    1b
-6:     andi.   r5,r5,3
-7:     cmpwi   0,r5,0
-       beqlr
-       mtctr   r5
-       addi    r6,r6,3
-8:     stbu    r4,1(r6)
-       bdnz    8b
-       blr
-
-       .globl  bcopy
-bcopy:
-       mr      r6,r3
-       mr      r3,r4
-       mr      r4,r6
-       b       memcpy
-
-       .globl  memmove
-memmove:
-       cmplw   0,r3,r4
-       bgt     backwards_memcpy
-       /* fall through */
-
-       .globl  memcpy
-memcpy:
-       rlwinm. r7,r5,32-3,3,31         /* r0 = r5 >> 3 */
-       addi    r6,r3,-4
-       addi    r4,r4,-4
-       beq     2f                      /* if less than 8 bytes to do */
-       andi.   r0,r6,3                 /* get dest word aligned */
-       mtctr   r7
-       bne     5f
-1:     lwz     r7,4(r4)
-       lwzu    r8,8(r4)
-       stw     r7,4(r6)
-       stwu    r8,8(r6)
-       bdnz    1b
-       andi.   r5,r5,7
-2:     cmplwi  0,r5,4
-       blt     3f
-       lwzu    r0,4(r4)
-       addi    r5,r5,-4
-       stwu    r0,4(r6)
-3:     cmpwi   0,r5,0
-       beqlr
-       mtctr   r5
-       addi    r4,r4,3
-       addi    r6,r6,3
-4:     lbzu    r0,1(r4)
-       stbu    r0,1(r6)
-       bdnz    4b
-       blr
-5:     subfic  r0,r0,4
-       mtctr   r0
-6:     lbz     r7,4(r4)
-       addi    r4,r4,1
-       stb     r7,4(r6)
-       addi    r6,r6,1
-       bdnz    6b
-       subf    r5,r0,r5
-       rlwinm. r7,r5,32-3,3,31
-       beq     2b
-       mtctr   r7
-       b       1b
-
-       .globl  backwards_memcpy
-backwards_memcpy:
-       rlwinm. r7,r5,32-3,3,31         /* r0 = r5 >> 3 */
-       add     r6,r3,r5
-       add     r4,r4,r5
-       beq     2f
-       andi.   r0,r6,3
-       mtctr   r7
-       bne     5f
-1:     lwz     r7,-4(r4)
-       lwzu    r8,-8(r4)
-       stw     r7,-4(r6)
-       stwu    r8,-8(r6)
-       bdnz    1b
-       andi.   r5,r5,7
-2:     cmplwi  0,r5,4
-       blt     3f
-       lwzu    r0,-4(r4)
-       subi    r5,r5,4
-       stwu    r0,-4(r6)
-3:     cmpwi   0,r5,0
-       beqlr
-       mtctr   r5
-4:     lbzu    r0,-1(r4)
-       stbu    r0,-1(r6)
-       bdnz    4b
-       blr
-5:     mtctr   r0
-6:     lbzu    r7,-1(r4)
-       stbu    r7,-1(r6)
-       bdnz    6b
-       subf    r5,r0,r5
-       rlwinm. r7,r5,32-3,3,31
-       beq     2b
-       mtctr   r7
-       b       1b
-
-       .globl  memcmp
-memcmp:
-       cmpwi   0,r5,0
-       blelr
-       mtctr   r5
-       addi    r6,r3,-1
-       addi    r4,r4,-1
-1:     lbzu    r3,1(r6)
-       lbzu    r0,1(r4)
-       subf.   r3,r0,r3
-       bdnzt   2,1b
-       blr
index b3a310e1751b82abdb8c4437febb6a9a509d37dc..56d29b84f1086748ca14683c7b9647a1f0b6ed9e 100644 (file)
@@ -9,6 +9,10 @@
 #include "nonstdio.h"
 #include "rs6000.h"
 #include "zlib.h"
+#include <asm/bootinfo.h>
+#include <asm/processor.h>
+#define __KERNEL__
+#include <asm/page.h>
 
 extern void *finddevice(const char *);
 extern int getprop(void *, const char *, void *, int);
@@ -106,6 +110,31 @@ coffboot(int a1, int a2, void *prom)
 #if 0
     pause();
 #endif
+    {
+           struct bi_record *rec;
+
+           rec = (struct bi_record *)PAGE_ALIGN((unsigned long)dst+len);
+           
+           rec->tag = BI_FIRST;
+           rec->size = sizeof(struct bi_record);
+           rec = (struct bi_record *)((unsigned long)rec + rec->size);
+
+           rec->tag = BI_BOOTLOADER_ID;
+           sprintf( (char *)rec->data, "coffboot");
+           rec->size = sizeof(struct bi_record) + strlen("coffboot") + 1;
+           rec = (struct bi_record *)((unsigned long)rec + rec->size);
+           
+           rec->tag = BI_MACHTYPE;
+           rec->data[0] = _MACH_Pmac;
+           rec->data[1] = 1;
+           rec->size = sizeof(struct bi_record) + sizeof(unsigned long);
+           rec = (struct bi_record *)((unsigned long)rec + rec->size);
+           
+           rec->tag = BI_LAST;
+           rec->size = sizeof(struct bi_record);
+           rec = (struct bi_record *)((unsigned long)rec + rec->size);
+    }
+    
     (*(void (*)())sa)(a1, a2, prom);
 
     printf("returned?\n");
@@ -165,7 +194,6 @@ void gunzip(void *dst, int dstlen, unsigned char *src, int *lenp)
        printf("gunzip: ran out of data in header\n");
        exit();
     }
-printf("done 1\n");
     s.zalloc = zalloc;
     s.zfree = zfree;
     r = inflateInit2(&s, -MAX_WBITS);
@@ -177,14 +205,11 @@ printf("done 1\n");
     s.avail_in = *lenp - i;
     s.next_out = dst;
     s.avail_out = dstlen;
-printf("doing inflate\n");
     r = inflate(&s, Z_FINISH);
-printf("done inflate\n");
     if (r != Z_OK && r != Z_STREAM_END) {
        printf("inflate returned %d\n", r);
        exit();
     }
     *lenp = s.next_out - (unsigned char *) dst;
-printf("doing end\n");
     inflateEnd(&s);
 }
diff --git a/arch/ppc/common_defconfig b/arch/ppc/common_defconfig
deleted file mode 100644 (file)
index 8b232d7..0000000
+++ /dev/null
@@ -1,578 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-
-#
-# Platform support
-#
-CONFIG_PPC=y
-CONFIG_6xx=y
-# CONFIG_PPC64 is not set
-# CONFIG_82xx is not set
-# CONFIG_8xx is not set
-# CONFIG_PMAC is not set
-# CONFIG_PREP is not set
-# CONFIG_CHRP is not set
-CONFIG_ALL_PPC=y
-# CONFIG_GEMINI is not set
-# CONFIG_APUS is not set
-# CONFIG_SMP is not set
-CONFIG_6xx=y
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODVERSIONS=y
-CONFIG_KMOD=y
-
-#
-# General setup
-#
-CONFIG_PCI=y
-CONFIG_NET=y
-CONFIG_SYSCTL=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_BINFMT_ELF=y
-CONFIG_KERNEL_ELF=y
-# CONFIG_BINFMT_MISC is not set
-
-#
-# PCMCIA/CardBus support
-#
-# CONFIG_PCMCIA is not set
-# CONFIG_PARPORT is not set
-CONFIG_VGA_CONSOLE=y
-CONFIG_FB=y
-CONFIG_FB_COMPAT_XPMAC=y
-CONFIG_PMAC_PBOOK=y
-CONFIG_MAC_FLOPPY=y
-CONFIG_MAC_SERIAL=y
-CONFIG_ADB=y
-CONFIG_ADB_CUDA=y
-CONFIG_ADB_MACIO=y
-CONFIG_ADB_PMU=y
-CONFIG_ADB_KEYBOARD=y
-CONFIG_PROC_DEVICETREE=y
-# CONFIG_TOTALMP is not set
-CONFIG_BOOTX_TEXT=y
-# CONFIG_MOTOROLA_HOTSWAP is not set
-# CONFIG_CMDLINE_BOOL is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-CONFIG_BLK_DEV_FD=y
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-CONFIG_BLK_DEV_IDEFLOPPY=y
-# CONFIG_BLK_DEV_IDESCSI is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_IDEPCI is not set
-CONFIG_BLK_DEV_SL82C105=y
-CONFIG_BLK_DEV_IDE_PMAC=y
-CONFIG_BLK_DEV_IDEDMA_PMAC=y
-CONFIG_IDEDMA_PMAC_AUTO=y
-CONFIG_BLK_DEV_IDEDMA=y
-CONFIG_IDEDMA_AUTO=y
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_BLK_CPQ_DA is not set
-
-#
-# Additional Block Devices
-#
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_XD is not set
-# CONFIG_BLK_DEV_DAC960 is not set
-CONFIG_PARIDE_PARPORT=y
-# CONFIG_PARIDE is not set
-CONFIG_BLK_DEV_IDE_MODES=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_NETLINK=y
-# CONFIG_RTNETLINK is not set
-# CONFIG_NETLINK_DEV is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_IP_ROUTER is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-CONFIG_IP_ALIAS=y
-CONFIG_SYN_COOKIES=y
-
-#
-# (it is safe to leave these untouched)
-#
-CONFIG_SKB_LARGE=y
-# CONFIG_IPV6 is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-
-#
-#  
-#
-# CONFIG_IPX is not set
-CONFIG_ATALK=m
-# CONFIG_DECNET is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_LLC is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=y
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-# CONFIG_CHR_DEV_SG is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-CONFIG_SCSI_CONSTANTS=y
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AHA1740 is not set
-CONFIG_SCSI_AIC7XXX=y
-# CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT is not set
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
-CONFIG_AIC7XXX_PROC_STATS=y
-CONFIG_AIC7XXX_RESET_DELAY=15
-# CONFIG_SCSI_IPS 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_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_DMA 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_SIM710 is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_NCR53C8XX is not set
-CONFIG_SCSI_SYM53C8XX=y
-CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
-CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
-CONFIG_SCSI_NCR53C8XX_SYNC=20
-# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
-# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
-# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
-# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_ISP is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_DEBUG is not set
-CONFIG_SCSI_MESH=y
-CONFIG_SCSI_MESH_SYNC_RATE=5
-CONFIG_SCSI_MAC53C94=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MACE=y
-CONFIG_BMAC=y
-# CONFIG_NCR885E is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_RTL8139 is not set
-# CONFIG_SIS900 is not set
-# CONFIG_DM9102 is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_NET_ISA is not set
-CONFIG_NET_EISA=y
-CONFIG_PCNET32=y
-# CONFIG_ADAPTEC_STARFIRE is not set
-# CONFIG_ACENIC is not set
-# CONFIG_AC3200 is not set
-# CONFIG_APRICOT is not set
-# CONFIG_CS89x0 is not set
-CONFIG_DE4X5=y
-# CONFIG_DEC_ELCP is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEXPRESS_PRO100 is not set
-# CONFIG_LNE390 is not set
-# CONFIG_NE3210 is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_ES3210 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_ZNET is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_LTPC is not set
-# CONFIG_COPS is not set
-# CONFIG_IPDDP is not set
-CONFIG_PPP=y
-# CONFIG_PPP_ASYNC is not set
-# CONFIG_PPP_SYNC_TTY is not set
-# CONFIG_PPP_DEFLATE is not set
-# CONFIG_PPP_BSDCOMP is not set
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Token Ring driver support
-#
-# CONFIG_TR is not set
-# 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
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Old CD-ROM drivers (not SCSI, not IDE)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Console drivers
-#
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_CLGEN is not set
-# CONFIG_FB_PM2 is not set
-CONFIG_FB_OF=y
-CONFIG_FB_CONTROL=y
-CONFIG_FB_PLATINUM=y
-CONFIG_FB_VALKYRIE=y
-CONFIG_FB_IMSTT=y
-CONFIG_FB_CT65550=y
-# CONFIG_FB_S3TRIO is not set
-# CONFIG_FB_VGA16 is not set
-CONFIG_FB_MATROX=y
-# CONFIG_FB_MATROX_MILLENIUM is not set
-CONFIG_FB_MATROX_MYSTIQUE=y
-CONFIG_FB_MATROX_G100=y
-# CONFIG_FB_MATROX_MULTIHEAD is not set
-CONFIG_FB_ATY=y
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FBCON_ADVANCED is not set
-CONFIG_FBCON_CFB8=y
-CONFIG_FBCON_CFB16=y
-CONFIG_FBCON_CFB24=y
-CONFIG_FBCON_CFB32=y
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-CONFIG_FONT_SUN8x16=y
-CONFIG_FONT_SUN12x22=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=m
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# Mice
-#
-CONFIG_BUSMOUSE=y
-# CONFIG_ATIXL_BUSMOUSE is not set
-# CONFIG_LOGIBUSMOUSE is not set
-# CONFIG_MS_BUSMOUSE is not set
-# CONFIG_ADBMOUSE is not set
-CONFIG_MOUSE=y
-CONFIG_PSMOUSE=y
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_WATCHDOG is not set
-CONFIG_NVRAM=y
-# CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Joystick support
-#
-# CONFIG_JOYSTICK is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_DRM is not set
-
-#
-# USB drivers - not for the faint of heart
-#
-# CONFIG_USB is not set
-
-#
-# Filesystems
-#
-# CONFIG_QUOTA is not set
-CONFIG_AUTOFS_FS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-CONFIG_HFS_FS=y
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
-# CONFIG_EFS_FS is not set
-CONFIG_ISO9660_FS=y
-# CONFIG_JOLIET is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_BFS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFSD=y
-# CONFIG_NFSD_SUN is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-# CONFIG_SMB_FS is not set
-# CONFIG_NCP_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-CONFIG_DMASOUND=y
-# CONFIG_SOUND_CMPCI 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_SONICVIBES is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_SOUND_OSS=y
-# CONFIG_SOUND_DMAP is not set
-# CONFIG_SOUND_AD1816 is not set
-# CONFIG_SOUND_SGALAXY is not set
-CONFIG_SOUND_CS4232=m
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_GUS is not set
-# CONFIG_SOUND_VMIDI is not set
-# 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_SOFTOSS is not set
-# CONFIG_SOUND_SB is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_VIA82CXXX is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_OPL3SA2 is not set
-# CONFIG_SOUND_UART6850 is not set
-
-#
-# Additional low level sound drivers
-#
-# CONFIG_LOWLEVEL_SOUND is not set
-
-#
-# Kernel hacking
-#
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_KGDB is not set
-CONFIG_XMON=y
index 325935ffee4ed2279b6cfc2bf1131cbc09866472..4ca5417740fe3bb792d4a1a8052ad85bfadca4df 100644 (file)
@@ -12,35 +12,49 @@ endmenu
 mainmenu_option next_comment
 comment 'Platform support'
 define_bool CONFIG_PPC y
-choice 'Processor type' \
-       "6xx/7xx                CONFIG_6xx \
-        630/Power3(64-Bit)     CONFIG_PPC64 \
-        82xx                   CONFIG_82xx \
-        8xx                    CONFIG_8xx" 6xx/7xx
+choice 'Processor Type'        \
+       "6xx/7xx                CONFIG_6xx      \
+        4xx                    CONFIG_4xx      \
+        630/Power3(64-Bit)     CONFIG_PPC64    \
+        82xx                   CONFIG_82xx     \
+        8xx                    CONFIG_8xx"     6xx/7xx
+
+if [ "$CONFIG_4xx" = "y" ]; then
+    choice 'Machine Type'                      \
+       "Oak                    CONFIG_OAK      \
+        Walnut                 CONFIG_WALNUT"  Oak
+fi
 
 if [ "$CONFIG_8xx" = "y" ]; then
-  choice 'Processor Model' \
-       "821    CONFIG_MPC821 \
-        823    CONFIG_MPC823 \
-        850    CONFIG_MPC850 \
-        855    CONFIG_MPC855 \
-        860    CONFIG_MPC860 \
-        860T   CONFIG_MPC860T" 860
   define_bool CONFIG_SERIAL_CONSOLE y
-  choice 'Machine Type' \
-       "RPX-Lite       CONFIG_RPXLITE \
-        RPX-Classic    CONFIG_RPXCLASSIC \
-        BSE-IP         CONFIG_BSEIP \
-        MBX            CONFIG_MBX \
-        WinCept        CONFIG_WINCEPT" RPX-Lite
-else
-  choice 'Machine Type' \
-       "PowerMac       CONFIG_PMAC \
-        PReP/MTX       CONFIG_PREP \
-        CHRP           CONFIG_CHRP \
-        PowerMac/PReP/CHRP     CONFIG_ALL_PPC \
-        Gemini         CONFIG_GEMINI \
-        APUS           CONFIG_APUS" PowerMac
+
+  choice 'Processor Model'     \
+       "821            CONFIG_MPC821           \
+        823            CONFIG_MPC823           \
+        850            CONFIG_MPC850           \
+        855            CONFIG_MPC855           \
+        860            CONFIG_MPC860           \
+        860T           CONFIG_MPC860T"         860
+
+  choice 'Machine Type'                \
+       "RPX-Lite       CONFIG_RPXLITE          \
+        RPX-Classic    CONFIG_RPXCLASSIC       \
+        BSE-IP         CONFIG_BSEIP            \
+        MBX            CONFIG_MBX              \
+        WinCept        CONFIG_WINCEPT"         RPX-Lite
+fi
+if [ "$CONFIG_6xx" = "y" ]; then
+  choice 'Machine Type'                \
+       "PowerMac       CONFIG_PMAC             \
+        PReP/MTX       CONFIG_PREP             \
+        CHRP           CONFIG_CHRP             \
+        PowerMac/PReP/CHRP     CONFIG_ALL_PPC  \
+        Gemini         CONFIG_GEMINI           \
+        APUS           CONFIG_APUS"            PowerMac
+fi
+
+if [ "$CONFIG_PPC64" = "y" ]; then
+  define_bool CONFIG_ALL_PPC y
 fi
 
 bool 'Symmetric multi-processing support' CONFIG_SMP
@@ -52,12 +66,8 @@ if [ "$CONFIG_ALL_PPC" != "y" ];then
   define_bool CONFIG_MACH_SPECIFIC y
 fi
 
-if [ "$CONFIG_8xx" = "y" ]; then
+if [ "$CONFIG_4xx" = "y" ] || [ "$CONFIG_8xx" = "y" ]; then
   bool 'Math emulation' CONFIG_MATH_EMULATION
-else
-  if [ "$CONFIG_PPC64" != "y" ];then
-    define_bool CONFIG_6xx y
-  fi
 fi
 endmenu
 
@@ -75,12 +85,12 @@ comment 'General setup'
 
 if [ "$CONFIG_APUS" = "y" ]; then
   define_bool CONFIG_PCI n
-else
-  if [ "$CONFIG_8xx" = "y" ]; then
+else if [ "$CONFIG_OAK" = "y" ]; then
+  define_bool CONFIG_PCI n
+else if [ "$CONFIG_8xx" = "y" ]; then
     bool 'QSpan PCI' CONFIG_PCI
-  else
+else
     define_bool CONFIG_PCI y
-  fi
 fi
 
 bool 'Networking support' CONFIG_NET
diff --git a/arch/ppc/configs/apus_defconfig b/arch/ppc/configs/apus_defconfig
new file mode 100644 (file)
index 0000000..f86dbd5
--- /dev/null
@@ -0,0 +1,397 @@
+#
+# Automatically generated make config: don't edit
+#
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_6xx=y
+# CONFIG_8xx is not set
+CONFIG_PMAC=y
+# CONFIG_PREP is not set
+# CONFIG_CHRP is not set
+# CONFIG_ALL_PPC is not set
+# CONFIG_APUS is not set
+# CONFIG_MBX is not set
+# CONFIG_SMP is not set
+CONFIG_MACH_SPECIFIC=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+CONFIG_PCI=y
+# CONFIG_PCI_QUIRKS is not set
+CONFIG_PCI_OLD_PROC=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+CONFIG_BINFMT_MISC=m
+# CONFIG_BINFMT_JAVA is not set
+# CONFIG_PARPORT is not set
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_FB=y
+CONFIG_FB_COMPAT_XPMAC=y
+CONFIG_PMAC_PBOOK=y
+CONFIG_MAC_KEYBOARD=y
+CONFIG_MAC_FLOPPY=y
+CONFIG_MAC_SERIAL=y
+CONFIG_ADBMOUSE=y
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
+# CONFIG_TOTALMP is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+CONFIG_BLK_DEV_IDEFLOPPY=y
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+# CONFIG_BLK_DEV_IDEPCI is not set
+# CONFIG_BLK_DEV_SL82C105 is not set
+CONFIG_BLK_DEV_IDE_PMAC=y
+CONFIG_BLK_DEV_IDEDMA_PMAC=y
+CONFIG_BLK_DEV_IDEDMA=y
+CONFIG_IDEDMA_PMAC_AUTO=y
+# CONFIG_IDE_CHIPSETS is not set
+
+#
+# Additional Block Devices
+#
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_XD is not set
+CONFIG_PARIDE_PARPORT=y
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_NETLINK=y
+# CONFIG_RTNETLINK is not set
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_FIREWALL is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_IP_ALIAS=y
+# CONFIG_SYN_COOKIES is not set
+
+#
+# (it is safe to leave these untouched)
+#
+CONFIG_INET_RARP=y
+CONFIG_IP_NOSR=y
+CONFIG_SKB_LARGE=y
+# CONFIG_IPV6 is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+CONFIG_ATALK=m
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+# CONFIG_CPU_IS_SLOW is not set
+# CONFIG_NET_SCHED is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+# CONFIG_CHR_DEV_SG is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+CONFIG_SCSI_CONSTANTS=y
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+CONFIG_SCSI_AIC7XXX=y
+# CONFIG_OVERRIDE_CMDS is not set
+CONFIG_AIC7XXX_PROC_STATS=y
+CONFIG_AIC7XXX_RESET_DELAY=15
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_AM53C974 is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA_DMA is not set
+# CONFIG_SCSI_EATA_PIO is not set
+# CONFIG_SCSI_EATA 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_NCR53C406A is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+# CONFIG_SCSI_NCR53C8XX is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_DEBUG is not set
+CONFIG_SCSI_MESH=y
+CONFIG_SCSI_MESH_SYNC_RATE=5
+CONFIG_SCSI_MAC53C94=y
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_ETHERTAP is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MACE=y
+CONFIG_BMAC=y
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_RTL8139 is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_EISA=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_CS89x0 is not set
+CONFIG_DE4X5=y
+CONFIG_DEC_ELCP=m
+# CONFIG_DGRS is not set
+# CONFIG_EEXPRESS_PRO100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_NE3210 is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_ES3210 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_ZNET is not set
+# CONFIG_NET_POCKET is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_DLCI is not set
+# CONFIG_LTPC is not set
+# CONFIG_COPS is not set
+# CONFIG_IPDDP is not set
+CONFIG_PPP=y
+
+#
+# CCP compressors for PPP are only built as modules.
+#
+# CONFIG_SLIP is not set
+# CONFIG_NET_RADIO is not set
+# CONFIG_TR is not set
+# CONFIG_SHAPER is not set
+# CONFIG_HOSTESS_SV11 is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FB_OF=y
+CONFIG_FB_CONTROL=y
+CONFIG_FB_PLATINUM=y
+CONFIG_FB_VALKYRIE=y
+CONFIG_FB_ATY=y
+CONFIG_FB_IMSTT=y
+CONFIG_FB_CT65550=y
+# CONFIG_FB_S3TRIO is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+CONFIG_FBCON_CFB24=y
+CONFIG_FBCON_CFB32=y
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+CONFIG_FONT_SUN8x16=y
+CONFIG_FONT_SUN12x22=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=m
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+# CONFIG_MOUSE is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_RTC is not set
+# CONFIG_VIDEO_DEV is not set
+CONFIG_NVRAM=y
+# CONFIG_JOYSTICK is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_EXT2_FS=y
+CONFIG_ISO9660_FS=y
+# CONFIG_JOLIET is not set
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+# CONFIG_UMSDOS_FS is not set
+CONFIG_VFAT_FS=m
+CONFIG_PROC_FS=y
+CONFIG_NFS_FS=y
+CONFIG_NFSD=y
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_CODA_FS is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_AFFS_FS is not set
+CONFIG_HFS_FS=y
+# CONFIG_ROMFS_FS is not set
+CONFIG_AUTOFS_FS=y
+# CONFIG_UFS_FS is not set
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_SMD_DISKLABEL is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+CONFIG_DEVPTS_FS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_KOI8_R is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+CONFIG_DMASOUND=y
+# CONFIG_SOUND_ES1370 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_SONICVIBES is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_OSS is not set
diff --git a/arch/ppc/configs/chrp_defconfig b/arch/ppc/configs/chrp_defconfig
new file mode 100644 (file)
index 0000000..48e305f
--- /dev/null
@@ -0,0 +1,319 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_6xx=y
+# CONFIG_8xx is not set
+# CONFIG_PMAC is not set
+# CONFIG_PREP is not set
+CONFIG_CHRP=y
+# CONFIG_ALL_PPC is not set
+# CONFIG_APUS is not set
+# CONFIG_MBX is not set
+# CONFIG_SMP is not set
+CONFIG_MACH_SPECIFIC=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+# CONFIG_KMOD is not set
+CONFIG_PCI=y
+# CONFIG_PCI_QUIRKS is not set
+CONFIG_PCI_OLD_PROC=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_BINFMT_JAVA is not set
+# CONFIG_PARPORT is not set
+CONFIG_FB=y
+CONFIG_FB_COMPAT_XPMAC=y
+# CONFIG_PMAC_PBOOK is not set
+CONFIG_MAC_KEYBOARD=y
+# CONFIG_MAC_FLOPPY is not set
+# CONFIG_MAC_SERIAL is not set
+# CONFIG_ADBMOUSE is not set
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
+# CONFIG_TOTALMP is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+CONFIG_BLK_DEV_IDE=y
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+# CONFIG_BLK_DEV_IDEPCI is not set
+CONFIG_BLK_DEV_SL82C105=y
+# CONFIG_IDE_CHIPSETS is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_XD is not set
+CONFIG_PARIDE_PARPORT=y
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK is not set
+# CONFIG_FIREWALL is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_IP_ALIAS=y
+# CONFIG_SYN_COOKIES is not set
+CONFIG_INET_RARP=y
+CONFIG_IP_NOSR=y
+CONFIG_SKB_LARGE=y
+# CONFIG_IPV6 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+# CONFIG_CPU_IS_SLOW is not set
+# CONFIG_NET_SCHED is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+CONFIG_CHR_DEV_SG=y
+# CONFIG_SCSI_MULTI_LUN is not set
+CONFIG_SCSI_CONSTANTS=y
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_AM53C974 is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA_DMA is not set
+# CONFIG_SCSI_EATA_PIO is not set
+# CONFIG_SCSI_EATA 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_NCR53C406A is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+CONFIG_SCSI_NCR53C8XX=y
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=4
+CONFIG_SCSI_NCR53C8XX_SYNC=5
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
+# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_DEBUG is not set
+CONFIG_SCSI_MESH=y
+CONFIG_SCSI_MESH_SYNC_RATE=10
+CONFIG_SCSI_MAC53C94=y
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_NET_ETHERNET=y
+# CONFIG_MACE is not set
+# CONFIG_BMAC is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_RTL8139 is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_EISA=y
+# CONFIG_PCNET32 is not set
+# CONFIG_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_CS89x0 is not set
+# CONFIG_DE4X5 is not set
+CONFIG_DEC_ELCP=y
+# CONFIG_DGRS is not set
+# CONFIG_EEXPRESS_PRO100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_TLAN is not set
+# CONFIG_ES3210 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_ZNET is not set
+# CONFIG_NET_POCKET is not set
+# CONFIG_FDDI is not set
+# CONFIG_DLCI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_RADIO is not set
+# CONFIG_TR is not set
+# CONFIG_SHAPER is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FB_OF=y
+# CONFIG_FB_CONTROL is not set
+# CONFIG_FB_PLATINUM is not set
+# CONFIG_FB_VALKYRIE is not set
+CONFIG_FB_ATY=y
+CONFIG_FB_IMSTT=y
+# CONFIG_FB_CT65550 is not set
+# CONFIG_FB_S3TRIO is not set
+CONFIG_FB_VGA=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+CONFIG_FBCON_CFB24=y
+CONFIG_FBCON_CFB32=y
+CONFIG_FBCON_VGA=y
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+# CONFIG_FBCON_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+# CONFIG_SERIAL_CONSOLE is not set
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_UNIX98_PTYS is not set
+# CONFIG_MOUSE is not set
+# CONFIG_UMISC is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_RTC is not set
+# CONFIG_VIDEO_DEV is not set
+CONFIG_NVRAM=y
+# CONFIG_JOYSTICK is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_EXT2_FS=y
+CONFIG_ISO9660_FS=y
+# CONFIG_JOLIET is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_NFS_FS=y
+# CONFIG_NFSD is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_CODA_FS is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_AFFS_FS is not set
+CONFIG_HFS_FS=y
+# CONFIG_ROMFS_FS is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_ADFS_FS is not set
+CONFIG_MAC_PARTITION=y
+# CONFIG_NLS is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+# CONFIG_SOUND_ES1370 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_SONICVIBES is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_OSS is not set
diff --git a/arch/ppc/configs/common_defconfig b/arch/ppc/configs/common_defconfig
new file mode 100644 (file)
index 0000000..4a8d6b5
--- /dev/null
@@ -0,0 +1,582 @@
+#
+# Automatically generated make config: don't edit
+#
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_6xx=y
+# CONFIG_4xx is not set
+# CONFIG_PPC64 is not set
+# CONFIG_82xx is not set
+# CONFIG_8xx is not set
+# CONFIG_PMAC is not set
+# CONFIG_PREP is not set
+# CONFIG_CHRP is not set
+CONFIG_ALL_PPC=y
+# CONFIG_GEMINI is not set
+# CONFIG_APUS is not set
+# CONFIG_SMP is not set
+# CONFIG_ALTIVEC is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODVERSIONS=y
+CONFIG_KMOD=y
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+CONFIG_PCI=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_KCORE_ELF=y
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# PCMCIA/CardBus support
+#
+# CONFIG_PCMCIA is not set
+# CONFIG_PARPORT is not set
+CONFIG_VGA_CONSOLE=y
+CONFIG_FB=y
+CONFIG_FB_COMPAT_XPMAC=y
+CONFIG_PMAC_PBOOK=y
+CONFIG_MAC_FLOPPY=y
+CONFIG_MAC_SERIAL=y
+CONFIG_ADB=y
+CONFIG_ADB_CUDA=y
+CONFIG_ADB_MACIO=y
+CONFIG_ADB_PMU=y
+CONFIG_ADB_KEYBOARD=y
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_TOTALMP is not set
+CONFIG_BOOTX_TEXT=y
+# CONFIG_MOTOROLA_HOTSWAP is not set
+# CONFIG_CMDLINE_BOOL is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+CONFIG_BLK_DEV_IDEFLOPPY=y
+# CONFIG_BLK_DEV_IDESCSI is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+# CONFIG_BLK_DEV_IDEPCI is not set
+CONFIG_BLK_DEV_SL82C105=y
+CONFIG_BLK_DEV_IDE_PMAC=y
+CONFIG_BLK_DEV_IDEDMA_PMAC=y
+CONFIG_IDEDMA_PMAC_AUTO=y
+CONFIG_BLK_DEV_IDEDMA=y
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_BLK_CPQ_DA is not set
+
+#
+# Additional Block Devices
+#
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+CONFIG_PARIDE_PARPORT=y
+# CONFIG_PARIDE is not set
+CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_NETLINK=y
+# CONFIG_RTNETLINK is not set
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_IP_ALIAS=y
+CONFIG_SYN_COOKIES=y
+
+#
+# (it is safe to leave these untouched)
+#
+CONFIG_SKB_LARGE=y
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+CONFIG_ATALK=m
+# CONFIG_DECNET is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+# CONFIG_CHR_DEV_SG is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+CONFIG_SCSI_CONSTANTS=y
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+CONFIG_SCSI_AIC7XXX=y
+# CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT is not set
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
+CONFIG_AIC7XXX_PROC_STATS=y
+CONFIG_AIC7XXX_RESET_DELAY=15
+# CONFIG_SCSI_IPS 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_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_EATA_DMA 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_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_SIM710 is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+# CONFIG_SCSI_NCR53C8XX is not set
+CONFIG_SCSI_SYM53C8XX=y
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
+CONFIG_SCSI_NCR53C8XX_SYNC=20
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
+# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
+# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_DEBUG is not set
+CONFIG_SCSI_MESH=y
+CONFIG_SCSI_MESH_SYNC_RATE=5
+CONFIG_SCSI_MAC53C94=y
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_ETHERTAP is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MACE=y
+CONFIG_BMAC=y
+# CONFIG_NCR885E is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_RTL8139 is not set
+# CONFIG_DM9102 is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_EISA=y
+CONFIG_PCNET32=y
+# CONFIG_ADAPTEC_STARFIRE is not set
+# CONFIG_ACENIC is not set
+# CONFIG_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_CS89x0 is not set
+CONFIG_DE4X5=y
+# CONFIG_DEC_ELCP is not set
+# CONFIG_DGRS is not set
+# CONFIG_EEXPRESS_PRO100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_NE3210 is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_SIS900 is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_ES3210 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_ZNET is not set
+# CONFIG_NET_POCKET is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_LTPC is not set
+# CONFIG_COPS is not set
+# CONFIG_IPDDP is not set
+CONFIG_PPP=y
+# CONFIG_PPP_ASYNC is not set
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_BSDCOMP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring driver support
+#
+# CONFIG_TR is not set
+# 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
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_CLGEN is not set
+# CONFIG_FB_PM2 is not set
+CONFIG_FB_OF=y
+CONFIG_FB_CONTROL=y
+CONFIG_FB_PLATINUM=y
+CONFIG_FB_VALKYRIE=y
+CONFIG_FB_IMSTT=y
+CONFIG_FB_CT65550=y
+# CONFIG_FB_S3TRIO is not set
+# CONFIG_FB_VGA16 is not set
+CONFIG_FB_MATROX=y
+CONFIG_FB_MATROX_MILLENIUM=y
+CONFIG_FB_MATROX_MYSTIQUE=y
+CONFIG_FB_MATROX_G100=y
+# CONFIG_FB_MATROX_MULTIHEAD is not set
+CONFIG_FB_ATY=y
+CONFIG_FB_ATY128=y
+CONFIG_FB_3DFX=y
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+CONFIG_FBCON_CFB24=y
+CONFIG_FBCON_CFB32=y
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+CONFIG_FONT_SUN8x16=y
+CONFIG_FONT_SUN12x22=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=m
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# Mice
+#
+CONFIG_BUSMOUSE=y
+# CONFIG_ATIXL_BUSMOUSE is not set
+# CONFIG_LOGIBUSMOUSE is not set
+# CONFIG_MS_BUSMOUSE is not set
+# CONFIG_ADBMOUSE is not set
+CONFIG_MOUSE=y
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+CONFIG_NVRAM=y
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Joystick support
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_DRM is not set
+
+#
+# Support for USB
+#
+CONFIG_USB=y
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+CONFIG_USB_OHCI=y
+CONFIG_USB_OHCI_DEBUG=y
+# CONFIG_USB_OHCI_HCD is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEBUG_ISOC=y
+CONFIG_USB_PROC=y
+# CONFIG_USB_EZUSB is not set
+
+#
+# USB Devices
+#
+CONFIG_USB_HUB=y
+CONFIG_USB_MOUSE=y
+CONFIG_USB_HP_SCANNER=m
+CONFIG_USB_KBD=y
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_CPIA is not set
+# CONFIG_USB_DC2XX is not set
+CONFIG_USB_SCSI=m
+CONFIG_USB_SCSI_DEBUG=y
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+CONFIG_AUTOFS_FS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_ISO9660_FS=y
+# CONFIG_JOLIET is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFSD=y
+# CONFIG_NFSD_SUN is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_NLS is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+CONFIG_DMASOUND=y
+# CONFIG_SOUND_CMPCI 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_SONICVIBES is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+CONFIG_SOUND_OSS=y
+# CONFIG_SOUND_DMAP is not set
+# CONFIG_SOUND_AD1816 is not set
+# CONFIG_SOUND_SGALAXY is not set
+CONFIG_SOUND_CS4232=m
+# CONFIG_SOUND_SSCAPE is not set
+# CONFIG_SOUND_GUS is not set
+# CONFIG_SOUND_VMIDI is not set
+# 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_SOFTOSS is not set
+# CONFIG_SOUND_SB is not set
+# CONFIG_SOUND_WAVEFRONT is not set
+# CONFIG_SOUND_MAUI is not set
+# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_SOUND_YM3812 is not set
+# CONFIG_SOUND_OPL3SA1 is not set
+# CONFIG_SOUND_OPL3SA2 is not set
+# CONFIG_SOUND_UART6850 is not set
+
+#
+# Additional low level sound drivers
+#
+# CONFIG_LOWLEVEL_SOUND is not set
+
+#
+# Kernel hacking
+#
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_KGDB is not set
+CONFIG_XMON=y
diff --git a/arch/ppc/configs/gemini_defconfig b/arch/ppc/configs/gemini_defconfig
new file mode 100644 (file)
index 0000000..2b0d3a1
--- /dev/null
@@ -0,0 +1,409 @@
+#
+# Automatically generated make config: don't edit
+#
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_6xx=y
+# CONFIG_4xx is not set
+# CONFIG_PPC64 is not set
+# CONFIG_82xx is not set
+# CONFIG_8xx is not set
+# CONFIG_PMAC is not set
+# CONFIG_PREP is not set
+# CONFIG_CHRP is not set
+# CONFIG_ALL_PPC is not set
+CONFIG_GEMINI=y
+# CONFIG_APUS is not set
+# CONFIG_SMP is not set
+# CONFIG_ALTIVEC is not set
+CONFIG_MACH_SPECIFIC=y
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODVERSIONS=y
+CONFIG_KMOD=y
+
+#
+# General setup
+#
+# CONFIG_PCI is not set
+CONFIG_PCI=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_KCORE_ELF=y
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+# CONFIG_BINFMT_MISC is not set
+
+#
+# PCMCIA/CardBus support
+#
+# CONFIG_PCMCIA is not set
+# CONFIG_PARPORT is not set
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_FB is not set
+# CONFIG_PMAC_PBOOK is not set
+# CONFIG_MAC_FLOPPY is not set
+# CONFIG_MAC_SERIAL is not set
+# CONFIG_ADB is not set
+# CONFIG_PROC_DEVICETREE is not set
+# CONFIG_TOTALMP is not set
+# CONFIG_BOOTX_TEXT is not set
+# CONFIG_MOTOROLA_HOTSWAP is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_IDE is not set
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_ONLY is not set
+# CONFIG_BLK_CPQ_DA is not set
+
+#
+# Additional Block Devices
+#
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+CONFIG_PARIDE_PARPORT=y
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_NETLINK=y
+# CONFIG_RTNETLINK is not set
+# CONFIG_NETLINK_DEV is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_IP_ALIAS=y
+CONFIG_SYN_COOKIES=y
+
+#
+# (it is safe to leave these untouched)
+#
+CONFIG_SKB_LARGE=y
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_DECNET is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+# CONFIG_CHR_DEV_SG is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+CONFIG_SCSI_CONSTANTS=y
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_IPS 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_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_EATA_DMA 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_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_SIM710 is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+# CONFIG_SCSI_NCR53C8XX is not set
+CONFIG_SCSI_SYM53C8XX=y
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
+CONFIG_SCSI_NCR53C8XX_SYNC=20
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
+# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
+# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_MESH is not set
+# CONFIG_SCSI_MAC53C94 is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_ETHERTAP is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_MACE is not set
+# CONFIG_BMAC is not set
+CONFIG_NCR885E=y
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_RTL8139 is not set
+# CONFIG_DM9102 is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_EISA is not set
+# CONFIG_NET_POCKET is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring driver support
+#
+# CONFIG_TR is not set
+# 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
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+# CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Joystick support
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_DRM is not set
+
+#
+# Support for USB
+#
+# CONFIG_USB is not set
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_ISO9660_FS=y
+# CONFIG_JOLIET is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+# CONFIG_NFS_FS is not set
+# CONFIG_NFSD is not set
+# CONFIG_SUNRPC is not set
+# CONFIG_LOCKD is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_NLS is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
diff --git a/arch/ppc/configs/mbx_defconfig b/arch/ppc/configs/mbx_defconfig
new file mode 100644 (file)
index 0000000..7080efb
--- /dev/null
@@ -0,0 +1,266 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+# CONFIG_6xx is not set
+CONFIG_8xx=y
+# CONFIG_PMAC is not set
+# CONFIG_PREP is not set
+# CONFIG_CHRP is not set
+# CONFIG_ALL_PPC is not set
+# CONFIG_APUS is not set
+CONFIG_MBX=y
+CONFIG_MACH_SPECIFIC=y
+# CONFIG_SMP is not set
+CONFIG_SERIAL_CONSOLE=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+# CONFIG_MODULES is not set
+CONFIG_PCI=y
+# CONFIG_PCI_QUIRKS is not set
+CONFIG_PCI_OLD_PROC=y
+CONFIG_NET=y
+# CONFIG_SYSCTL is not set
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_BINFMT_JAVA is not set
+# CONFIG_PARPORT is not set
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_FB is not set
+# CONFIG_PMAC_PBOOK is not set
+# CONFIG_MAC_KEYBOARD is not set
+# CONFIG_MAC_FLOPPY is not set
+# CONFIG_MAC_SERIAL is not set
+# CONFIG_ADBMOUSE is not set
+# CONFIG_BLK_DEV_IDE_PMAC is not set
+# CONFIG_PROC_DEVICETREE is not set
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
+# CONFIG_TOTALMP is not set
+# CONFIG_BOOTX_TEXT is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+CONFIG_BLK_DEV_IDE=y
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_BLK_DEV_IDECD is not set
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_BLK_DEV_IDEDMA=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+CONFIG_IDEDMA_PCI_AUTO=y
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_VIA82CXXX is not set
+# CONFIG_BLK_DEV_CMD646 is not set
+CONFIG_BLK_DEV_SL82C105=y
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_BLK_DEV_LOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_BLK_DEV_XD is not set
+CONFIG_PARIDE_PARPORT=y
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK is not set
+# CONFIG_FIREWALL is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_ALIAS is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_RARP is not set
+CONFIG_IP_NOSR=y
+CONFIG_SKB_LARGE=y
+# CONFIG_IPV6 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+CONFIG_CPU_IS_SLOW=y
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_NET_ETHERNET=y
+# CONFIG_MACE is not set
+# CONFIG_BMAC is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_RTL8139 is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_ACENIC is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_EISA is not set
+# CONFIG_NET_POCKET is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_DLCI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_RADIO is not set
+# CONFIG_TR is not set
+# CONFIG_SHAPER is not set
+# CONFIG_HOSTESS_SV11 is not set
+# CONFIG_COSA is not set
+# CONFIG_RCPCI is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+
+#
+# Character devices
+#
+CONFIG_VT=y
+# CONFIG_VT_CONSOLE is not set
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_UNIX98_PTYS is not set
+# CONFIG_MOUSE is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Joystick support
+#
+# CONFIG_JOYSTICK is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MAC_PARTITION is not set
+# CONFIG_SMD_DISKLABEL is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_NLS is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
diff --git a/arch/ppc/configs/oak_defconfig b/arch/ppc/configs/oak_defconfig
new file mode 100644 (file)
index 0000000..eb6d80f
--- /dev/null
@@ -0,0 +1,296 @@
+#
+# Default configuration for the IBM PowerPC 403 "Oak" evaluation boards.
+#
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_4xx=y
+# CONFIG_6xx is not set
+# CONFIG_PPC64 is not set
+# CONFIG_82xx is not set
+# CONFIG_8xx is not set
+CONFIG_403=y
+# CONFIG_405 is not set
+CONFIG_OAK=y
+# CONFIG_SMP is not set
+CONFIG_MACH_SPECIFIC=y
+# CONFIG_MATH_EMULATION is not set
+
+#
+# General setup
+#
+# CONFIG_EXPERIMENTAL is not set
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+# CONFIG_PCI is not set
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+CONFIG_BINFMT_MISC=y
+
+#
+# PCMCIA/CardBus support
+#
+# CONFIG_PCMCIA is not set
+# CONFIG_PARPORT is not set
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_FB is not set
+# CONFIG_PMAC_PBOOK is not set
+# CONFIG_MAC_FLOPPY is not set
+# CONFIG_MAC_SERIAL is not set
+# CONFIG_ADB is not set
+# CONFIG_PROC_DEVICETREE is not set
+# CONFIG_TOTALMP is not set
+# CONFIG_BOOTX_TEXT is not set
+# CONFIG_MOTOROLA_HOTSWAP is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_IDE is not set
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_ONLY is not set
+# CONFIG_BLK_CPQ_DA is not set
+
+#
+# Additional Block Devices
+#
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+CONFIG_PARIDE_PARPORT=y
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_IP_ALIAS=y
+CONFIG_SYN_COOKIES=y
+
+#
+# (it is safe to leave these untouched)
+#
+# CONFIG_SKB_LARGE is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_MACE is not set
+# CONFIG_BMAC is not set
+# CONFIG_NCR885E is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_DEPCA is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_EISA is not set
+# CONFIG_NET_POCKET is not set
+# CONFIG_FDDI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring driver support
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_UNIX98_PTYS is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Joystick support
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+
+#
+# USB drivers - not for the faint of heart
+#
+# CONFIG_USB is not set
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+CONFIG_AUTOFS_FS=y
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_ROMFS_FS=y
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_NLS is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
diff --git a/arch/ppc/configs/pmac_defconfig b/arch/ppc/configs/pmac_defconfig
new file mode 100644 (file)
index 0000000..514843d
--- /dev/null
@@ -0,0 +1,549 @@
+#
+# Automatically generated make config: don't edit
+#
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_6xx=y
+# CONFIG_PPC64 is not set
+# CONFIG_82xx is not set
+# CONFIG_8xx is not set
+CONFIG_PMAC=y
+# CONFIG_PREP is not set
+# CONFIG_CHRP is not set
+# CONFIG_ALL_PPC is not set
+# CONFIG_GEMINI is not set
+# CONFIG_APUS is not set
+# CONFIG_SMP is not set
+CONFIG_MACH_SPECIFIC=y
+CONFIG_6xx=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+CONFIG_PCI=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+CONFIG_BINFMT_MISC=m
+
+#
+# PCMCIA/Cardbus support
+#
+CONFIG_PCMCIA=m
+CONFIG_CARDBUS=y
+# CONFIG_PARPORT is not set
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_FB=y
+CONFIG_FB_COMPAT_XPMAC=y
+CONFIG_PMAC_PBOOK=y
+CONFIG_MAC_FLOPPY=y
+CONFIG_MAC_SERIAL=y
+# CONFIG_SERIAL_CONSOLE is not set
+CONFIG_ADB=y
+CONFIG_ADB_CUDA=y
+CONFIG_ADB_MACIO=y
+CONFIG_ADB_PMU=y
+CONFIG_ADB_KEYBOARD=y
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_TOTALMP is not set
+CONFIG_BOOTX_TEXT=y
+# CONFIG_MOTOROLA_HOTSWAP is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+CONFIG_BLK_DEV_IDE=y
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+# CONFIG_IDEDISK_MULTI_MODE is not set
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+CONFIG_BLK_DEV_IDEFLOPPY=y
+# CONFIG_BLK_DEV_IDESCSI is not set
+
+#
+# IDE chipset support/bugfixes
+#
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+CONFIG_BLK_DEV_IDEPCI=y
+CONFIG_BLK_DEV_IDEDMA_PCI=y
+CONFIG_IDEDMA_PCI_AUTO=y
+CONFIG_IDEDMA_NEW_DRIVE_LISTINGS=y
+CONFIG_IDEDMA_PCI_EXPERIMENTAL=y
+# CONFIG_BLK_DEV_OFFBOARD is not set
+# CONFIG_BLK_DEV_AEC6210 is not set
+CONFIG_BLK_DEV_CMD646=y
+# CONFIG_BLK_DEV_CY82C693 is not set
+# CONFIG_BLK_DEV_HPT34X is not set
+# CONFIG_BLK_DEV_HPT366 is not set
+# CONFIG_BLK_DEV_NS87415 is not set
+# CONFIG_BLK_DEV_OPTI621 is not set
+# CONFIG_BLK_DEV_PDC202XX is not set
+# CONFIG_BLK_DEV_TRM290 is not set
+# CONFIG_BLK_DEV_SL82C105 is not set
+CONFIG_BLK_DEV_IDE_PMAC=y
+CONFIG_BLK_DEV_IDEDMA_PMAC=y
+CONFIG_IDEDMA_PMAC_AUTO=y
+CONFIG_BLK_DEV_IDEDMA=y
+CONFIG_IDEDMA_AUTO=y
+# CONFIG_IDE_CHIPSETS is not set
+# CONFIG_BLK_CPQ_DA is not set
+
+#
+# Additional Block Devices
+#
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_XD is not set
+CONFIG_PARIDE_PARPORT=y
+# CONFIG_PARIDE is not set
+CONFIG_BLK_DEV_IDE_MODES=y
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_NETLINK=y
+# CONFIG_RTNETLINK is not set
+# CONFIG_NETLINK_DEV is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_IP_ALIAS=y
+# CONFIG_SYN_COOKIES is not set
+
+#
+# (it is safe to leave these untouched)
+#
+CONFIG_SKB_LARGE=y
+# CONFIG_IPV6 is not set
+# CONFIG_KHTTPD is not set
+# CONFIG_ATM is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+CONFIG_ATALK=m
+# CONFIG_DECNET is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+# CONFIG_CHR_DEV_SG is not set
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+CONFIG_SCSI_CONSTANTS=y
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_ACARD is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+CONFIG_SCSI_AIC7XXX=y
+# CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT is not set
+CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
+CONFIG_AIC7XXX_PROC_STATS=y
+CONFIG_AIC7XXX_RESET_DELAY=15
+# CONFIG_SCSI_IPS 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_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA is not set
+# CONFIG_SCSI_EATA_DMA 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_INITIO is not set
+# CONFIG_SCSI_INIA100 is not set
+# CONFIG_SCSI_NCR53C406A is not set
+# CONFIG_SCSI_SYM53C416 is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+# CONFIG_SCSI_NCR53C8XX is not set
+# CONFIG_SCSI_SYM53C8XX is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_QLOGIC_FC is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_DEBUG is not set
+CONFIG_SCSI_MESH=y
+CONFIG_SCSI_MESH_SYNC_RATE=5
+CONFIG_SCSI_MAC53C94=y
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_ETHERTAP is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MACE=y
+CONFIG_BMAC=y
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_RTL8139 is not set
+# CONFIG_SIS900 is not set
+# CONFIG_DM9102 is not set
+# CONFIG_AT1700 is not set
+# CONFIG_DEPCA is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_EISA=y
+# CONFIG_PCNET32 is not set
+# CONFIG_ACENIC is not set
+# CONFIG_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_CS89x0 is not set
+CONFIG_DE4X5=y
+# CONFIG_DEC_ELCP is not set
+# CONFIG_DGRS is not set
+# CONFIG_EEXPRESS_PRO100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_NE3210 is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_TLAN is not set
+# CONFIG_VIA_RHINE is not set
+# CONFIG_ES3210 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_ZNET is not set
+# CONFIG_NET_POCKET is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+
+#
+# Appletalk devices
+#
+# CONFIG_LTPC is not set
+# CONFIG_COPS is not set
+# CONFIG_IPDDP is not set
+CONFIG_PPP=y
+CONFIG_PPP_ASYNC=y
+CONFIG_PPP_DEFLATE=y
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring driver support
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+# CONFIG_RCPCI is not set
+# CONFIG_SHAPER is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# PCMCIA network devices
+#
+# CONFIG_PCMCIA_PCNET is not set
+# CONFIG_PCMCIA_3C589 is not set
+# CONFIG_PCMCIA_RAYCS is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+
+#
+# Frame-buffer support
+#
+CONFIG_FB=y
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_CLGEN is not set
+# CONFIG_FB_PM2 is not set
+CONFIG_FB_OF=y
+CONFIG_FB_CONTROL=y
+CONFIG_FB_PLATINUM=y
+CONFIG_FB_VALKYRIE=y
+CONFIG_FB_IMSTT=y
+CONFIG_FB_CT65550=y
+# CONFIG_FB_S3TRIO is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_MATROX is not set
+CONFIG_FB_ATY=y
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FBCON_ADVANCED is not set
+CONFIG_FBCON_CFB8=y
+CONFIG_FBCON_CFB16=y
+CONFIG_FBCON_CFB24=y
+CONFIG_FBCON_CFB32=y
+# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
+CONFIG_FBCON_FONTS=y
+# CONFIG_FONT_8x8 is not set
+CONFIG_FONT_8x16=y
+CONFIG_FONT_SUN8x16=y
+CONFIG_FONT_SUN12x22=y
+# CONFIG_FONT_6x11 is not set
+# CONFIG_FONT_PEARL_8x8 is not set
+# CONFIG_FONT_ACORN_8x8 is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=m
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_UNIX98_PTYS=y
+CONFIG_UNIX98_PTY_COUNT=256
+
+#
+# Mice
+#
+CONFIG_BUSMOUSE=y
+# CONFIG_ATIXL_BUSMOUSE is not set
+# CONFIG_LOGIBUSMOUSE is not set
+# CONFIG_MS_BUSMOUSE is not set
+CONFIG_ADBMOUSE=y
+# CONFIG_MOUSE is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_WATCHDOG is not set
+CONFIG_NVRAM=y
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Joystick support
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+# CONFIG_DRM is not set
+
+#
+# USB drivers - not for the faint of heart
+#
+CONFIG_USB=y
+
+#
+# USB Controllers
+#
+# CONFIG_USB_UHCI is not set
+CONFIG_USB_OHCI=y
+CONFIG_USB_OHCI_DEBUG=y
+# CONFIG_USB_OHCI_HCD is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEBUG_ISOC=y
+CONFIG_USB_PROC=y
+# CONFIG_USB_EZUSB is not set
+
+#
+# USB Devices
+#
+CONFIG_USB_HUB=y
+CONFIG_USB_MOUSE=y
+CONFIG_USB_HP_SCANNER=m
+CONFIG_USB_KBD=y
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_CPIA is not set
+CONFIG_USB_SCSI=m
+CONFIG_USB_SCSI_DEBUG=y
+# CONFIG_USB_USS720 is not set
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+CONFIG_AUTOFS_FS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_ISO9660_FS=y
+# CONFIG_JOLIET is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_DEVPTS_FS=y
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_NFSD=y
+# CONFIG_NFSD_SUN is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_OSF_PARTITION is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_NLS is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+CONFIG_DMASOUND=y
+# CONFIG_SOUND_CMPCI 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_SONICVIBES is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+# CONFIG_SOUND_OSS is not set
+
+#
+# Kernel hacking
+#
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
diff --git a/arch/ppc/configs/prep_defconfig b/arch/ppc/configs/prep_defconfig
new file mode 100644 (file)
index 0000000..01c314c
--- /dev/null
@@ -0,0 +1,361 @@
+#
+# Automatically generated by make menuconfig: don't edit
+#
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_6xx=y
+# CONFIG_8xx is not set
+# CONFIG_PMAC is not set
+CONFIG_PREP=y
+# CONFIG_CHRP is not set
+# CONFIG_ALL_PPC is not set
+# CONFIG_APUS is not set
+# CONFIG_MBX is not set
+# CONFIG_SMP is not set
+CONFIG_MACH_SPECIFIC=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_MODULES=y
+CONFIG_MODVERSIONS=y
+CONFIG_KMOD=y
+CONFIG_PCI=y
+# CONFIG_PCI_QUIRKS is not set
+CONFIG_PCI_OLD_PROC=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_BINFMT_JAVA is not set
+# CONFIG_PARPORT is not set
+# CONFIG_FB is not set
+CONFIG_VGA_CONSOLE=y
+# CONFIG_PMAC_PBOOK is not set
+# CONFIG_MAC_KEYBOARD is not set
+# CONFIG_MAC_FLOPPY is not set
+# CONFIG_MAC_SERIAL is not set
+# CONFIG_ADBMOUSE is not set
+# CONFIG_PROC_DEVICETREE is not set
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
+
+#
+# Plug and Play support
+#
+# CONFIG_PNP is not set
+
+#
+# Block devices
+#
+CONFIG_BLK_DEV_FD=y
+CONFIG_BLK_DEV_IDE=y
+# CONFIG_BLK_DEV_HD_IDE is not set
+CONFIG_BLK_DEV_IDEDISK=y
+CONFIG_BLK_DEV_IDECD=y
+# CONFIG_BLK_DEV_IDETAPE is not set
+# CONFIG_BLK_DEV_IDEFLOPPY is not set
+# CONFIG_BLK_DEV_IDESCSI is not set
+# CONFIG_BLK_DEV_CMD640 is not set
+# CONFIG_BLK_DEV_RZ1000 is not set
+# CONFIG_BLK_DEV_IDEPCI is not set
+# CONFIG_BLK_DEV_SL82C105 is not set
+# CONFIG_IDE_CHIPSETS is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_XD is not set
+CONFIG_PARIDE_PARPORT=y
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK is not set
+# CONFIG_FIREWALL is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+# CONFIG_IP_PNP is not set
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_ALIAS is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_INET_RARP is not set
+# CONFIG_IP_NOSR is not set
+CONFIG_SKB_LARGE=y
+# CONFIG_IPV6 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_LLC is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_FASTROUTE is not set
+# CONFIG_NET_HW_FLOWCONTROL is not set
+# CONFIG_CPU_IS_SLOW is not set
+# CONFIG_NET_SCHED is not set
+
+#
+# SCSI support
+#
+CONFIG_SCSI=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=y
+CONFIG_BLK_DEV_SR=y
+CONFIG_BLK_DEV_SR_VENDOR=y
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_SCSI_7000FASST is not set
+# CONFIG_SCSI_AHA152X is not set
+# CONFIG_SCSI_AHA1542 is not set
+# CONFIG_SCSI_AHA1740 is not set
+# CONFIG_SCSI_AIC7XXX is not set
+# CONFIG_SCSI_ADVANSYS is not set
+# CONFIG_SCSI_IN2000 is not set
+# CONFIG_SCSI_AM53C974 is not set
+# CONFIG_SCSI_BUSLOGIC is not set
+# CONFIG_SCSI_DTC3280 is not set
+# CONFIG_SCSI_EATA_DMA is not set
+# CONFIG_SCSI_EATA_PIO is not set
+# CONFIG_SCSI_EATA 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_NCR53C406A is not set
+# CONFIG_SCSI_NCR53C7xx is not set
+CONFIG_SCSI_NCR53C8XX=y
+CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
+CONFIG_SCSI_NCR53C8XX_MAX_TAGS=4
+CONFIG_SCSI_NCR53C8XX_SYNC=5
+# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
+CONFIG_SCSI_NCR53C8XX_IOMAPPED=y
+# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
+# CONFIG_SCSI_PAS16 is not set
+# CONFIG_SCSI_PCI2000 is not set
+# CONFIG_SCSI_PCI2220I is not set
+# CONFIG_SCSI_PSI240I is not set
+# CONFIG_SCSI_QLOGIC_FAS is not set
+# CONFIG_SCSI_QLOGIC_ISP is not set
+# CONFIG_SCSI_SEAGATE is not set
+# CONFIG_SCSI_DC390T is not set
+# CONFIG_SCSI_T128 is not set
+# CONFIG_SCSI_U14_34F is not set
+# CONFIG_SCSI_ULTRASTOR is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_MESH is not set
+# CONFIG_SCSI_MAC53C94 is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+CONFIG_NET_ETHERNET=y
+# CONFIG_MACE is not set
+# CONFIG_BMAC is not set
+# CONFIG_NET_VENDOR_3COM is not set
+CONFIG_LANCE=y
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_RTL8139 is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_NET_ISA is not set
+CONFIG_NET_EISA=y
+CONFIG_PCNET32=y
+# CONFIG_AC3200 is not set
+# CONFIG_APRICOT is not set
+# CONFIG_CS89x0 is not set
+CONFIG_DE4X5=y
+# CONFIG_DEC_ELCP is not set
+# CONFIG_DGRS is not set
+# CONFIG_EEXPRESS_PRO100 is not set
+# CONFIG_LNE390 is not set
+# CONFIG_NE2K_PCI is not set
+# CONFIG_TLAN is not set
+# CONFIG_ES3210 is not set
+# CONFIG_EPIC100 is not set
+# CONFIG_ZNET is not set
+# CONFIG_NET_POCKET is not set
+# CONFIG_FDDI is not set
+# CONFIG_DLCI is not set
+CONFIG_PPP=m
+# CONFIG_SLIP is not set
+# CONFIG_NET_RADIO is not set
+# CONFIG_TR is not set
+# CONFIG_SHAPER is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_MOUSE=y
+# CONFIG_ATIXL_BUSMOUSE is not set
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MS_BUSMOUSE is not set
+CONFIG_PSMOUSE=y
+# CONFIG_82C710_MOUSE is not set
+# CONFIG_PC110_PAD is not set
+# CONFIG_UMISC is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_RTC is not set
+# CONFIG_VIDEO_DEV is not set
+# CONFIG_NVRAM is not set
+# CONFIG_JOYSTICK is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+# CONFIG_MINIX_FS is not set
+CONFIG_EXT2_FS=y
+CONFIG_ISO9660_FS=y
+# CONFIG_JOLIET is not set
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_NFS_FS=y
+# CONFIG_NFSD is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_CODA_FS is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_ADFS_FS is not set
+# CONFIG_DEVPTS_FS is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_NLS=y
+
+#
+# Native Language Support
+#
+# CONFIG_NLS_CODEPAGE_437 is not set
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_1 is not set
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_KOI8_R is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+# CONFIG_SOUND_ES1370 is not set
+# CONFIG_SOUND_ES1371 is not set
+# CONFIG_SOUND_SONICVIBES is not set
+# CONFIG_SOUND_MSNDCLAS is not set
+# CONFIG_SOUND_MSNDPIN is not set
+CONFIG_SOUND_OSS=y
+# CONFIG_SOUND_PAS is not set
+# CONFIG_SOUND_SB is not set
+# CONFIG_SOUND_ADLIB is not set
+# CONFIG_SOUND_GUS is not set
+# CONFIG_SOUND_MPU401 is not set
+# CONFIG_SOUND_PSS is not set
+# CONFIG_SOUND_MSS is not set
+# CONFIG_SOUND_SSCAPE is not set
+# CONFIG_SOUND_TRIX is not set
+# CONFIG_SOUND_MAD16 is not set
+# CONFIG_SOUND_WAVEFRONT is not set
+CONFIG_SOUND_CS4232=y
+CONFIG_CS4232_BASE=530
+CONFIG_CS4232_IRQ=11
+CONFIG_CS4232_DMA=0
+CONFIG_CS4232_DMA2=3
+CONFIG_CS4232_MPU_BASE=330
+CONFIG_CS4232_MPU_IRQ=9
+# CONFIG_SOUND_MAUI is not set
+# CONFIG_SOUND_SGALAXY is not set
+# CONFIG_SOUND_OPL3SA1 is not set
+# CONFIG_SOUND_SOFTOSS is not set
+# CONFIG_SOUND_YM3812 is not set
+# CONFIG_SOUND_VMIDI is not set
+# CONFIG_SOUND_UART6850 is not set
+
+#
+# Additional low level sound drivers
+#
+# CONFIG_LOWLEVEL_SOUND is not set
diff --git a/arch/ppc/configs/walnut_defconfig b/arch/ppc/configs/walnut_defconfig
new file mode 100644 (file)
index 0000000..9903c89
--- /dev/null
@@ -0,0 +1,296 @@
+#
+# Default configuration for the IBM PowerPC 405GP "Walnut" evaluation board.
+#
+
+#
+# Platform support
+#
+CONFIG_PPC=y
+CONFIG_4xx=y
+# CONFIG_6xx is not set
+# CONFIG_PPC64 is not set
+# CONFIG_82xx is not set
+# CONFIG_8xx is not set
+CONFIG_403=y
+# CONFIG_405 is not set
+CONFIG_OAK=y
+# CONFIG_SMP is not set
+CONFIG_MACH_SPECIFIC=y
+# CONFIG_MATH_EMULATION is not set
+
+#
+# General setup
+#
+# CONFIG_EXPERIMENTAL is not set
+CONFIG_MODULES=y
+# CONFIG_MODVERSIONS is not set
+CONFIG_KMOD=y
+CONFIG_PCI=y
+CONFIG_NET=y
+CONFIG_SYSCTL=y
+CONFIG_SYSVIPC=y
+# CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_BINFMT_ELF=y
+CONFIG_KERNEL_ELF=y
+CONFIG_BINFMT_MISC=y
+
+#
+# PCMCIA/CardBus support
+#
+# CONFIG_PCMCIA is not set
+# CONFIG_PARPORT is not set
+# CONFIG_VGA_CONSOLE is not set
+# CONFIG_FB is not set
+# CONFIG_PMAC_PBOOK is not set
+# CONFIG_MAC_FLOPPY is not set
+# CONFIG_MAC_SERIAL is not set
+# CONFIG_ADB is not set
+# CONFIG_PROC_DEVICETREE is not set
+# CONFIG_TOTALMP is not set
+# CONFIG_BOOTX_TEXT is not set
+# CONFIG_MOTOROLA_HOTSWAP is not set
+
+#
+# Plug and Play configuration
+#
+# CONFIG_PNP is not set
+# CONFIG_ISAPNP is not set
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_DEV_IDE is not set
+
+#
+# Please see Documentation/ide.txt for help/info on IDE drives
+#
+# CONFIG_BLK_DEV_HD_ONLY is not set
+# CONFIG_BLK_CPQ_DA is not set
+
+#
+# Additional Block Devices
+#
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_MD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_BLK_DEV_XD is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+CONFIG_PARIDE_PARPORT=y
+# CONFIG_PARIDE is not set
+# CONFIG_BLK_DEV_IDE_MODES is not set
+# CONFIG_BLK_DEV_HD is not set
+
+#
+# Networking options
+#
+# CONFIG_PACKET is not set
+# CONFIG_NETLINK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_FILTER is not set
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_IP_ROUTER is not set
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_IP_ALIAS=y
+CONFIG_SYN_COOKIES=y
+
+#
+# (it is safe to leave these untouched)
+#
+# CONFIG_SKB_LARGE is not set
+
+#
+#  
+#
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+
+#
+# SCSI support
+#
+# CONFIG_SCSI is not set
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+
+#
+# ARCnet devices
+#
+# CONFIG_ARCNET is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_SB1000 is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+# CONFIG_MACE is not set
+# CONFIG_BMAC is not set
+# CONFIG_NCR885E is not set
+# CONFIG_NET_VENDOR_3COM is not set
+# CONFIG_LANCE is not set
+# CONFIG_NET_VENDOR_SMC is not set
+# CONFIG_NET_VENDOR_RACAL is not set
+# CONFIG_DEPCA is not set
+# CONFIG_NET_ISA is not set
+# CONFIG_NET_EISA is not set
+# CONFIG_NET_POCKET is not set
+# CONFIG_FDDI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Token Ring driver support
+#
+# CONFIG_TR is not set
+# CONFIG_NET_FC is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+
+#
+# Amateur Radio support
+#
+# CONFIG_HAMRADIO is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Old CD-ROM drivers (not SCSI, not IDE)
+#
+# CONFIG_CD_NO_IDESCSI is not set
+
+#
+# Console drivers
+#
+
+#
+# Frame-buffer support
+#
+# CONFIG_FB is not set
+
+#
+# Character devices
+#
+# CONFIG_VT is not set
+CONFIG_SERIAL=y
+CONFIG_SERIAL_CONSOLE=y
+# CONFIG_SERIAL_EXTENDED is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_UNIX98_PTYS is not set
+
+#
+# Mice
+#
+# CONFIG_BUSMOUSE is not set
+# CONFIG_MOUSE is not set
+# CONFIG_QIC02_TAPE is not set
+# CONFIG_WATCHDOG is not set
+# CONFIG_NVRAM is not set
+# CONFIG_RTC is not set
+
+#
+# Video For Linux
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Joystick support
+#
+# CONFIG_JOYSTICK is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+
+#
+# Ftape, the floppy tape device driver
+#
+# CONFIG_FTAPE is not set
+
+#
+# USB drivers - not for the faint of heart
+#
+# CONFIG_USB is not set
+
+#
+# Filesystems
+#
+# CONFIG_QUOTA is not set
+CONFIG_AUTOFS_FS=y
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_FAT_FS is not set
+# CONFIG_MSDOS_FS is not set
+# CONFIG_UMSDOS_FS is not set
+# CONFIG_VFAT_FS is not set
+# CONFIG_ISO9660_FS is not set
+# CONFIG_JOLIET is not set
+# CONFIG_UDF_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_NTFS_FS is not set
+# CONFIG_HPFS_FS is not set
+CONFIG_PROC_FS=y
+CONFIG_ROMFS_FS=y
+CONFIG_EXT2_FS=y
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+# CONFIG_CODA_FS is not set
+CONFIG_NFS_FS=y
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_SUNRPC=y
+CONFIG_LOCKD=y
+# CONFIG_SMB_FS is not set
+# CONFIG_NCP_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MAC_PARTITION=y
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_NLS is not set
+
+#
+# Sound
+#
+# CONFIG_SOUND is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_KGDB is not set
+# CONFIG_XMON is not set
index 8b232d723cc76d60b82776d60c251b38b4443dd1..4a8d6b5727138038b848d28de36f2c6d6e6bfc90 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_EXPERIMENTAL=y
 #
 CONFIG_PPC=y
 CONFIG_6xx=y
+# CONFIG_4xx is not set
 # CONFIG_PPC64 is not set
 # CONFIG_82xx is not set
 # CONFIG_8xx is not set
@@ -22,7 +23,7 @@ CONFIG_ALL_PPC=y
 # CONFIG_GEMINI is not set
 # CONFIG_APUS is not set
 # CONFIG_SMP is not set
-CONFIG_6xx=y
+# CONFIG_ALTIVEC is not set
 
 #
 # Loadable module support
@@ -34,11 +35,13 @@ CONFIG_KMOD=y
 #
 # General setup
 #
+# CONFIG_PCI is not set
 CONFIG_PCI=y
 CONFIG_NET=y
 CONFIG_SYSCTL=y
 CONFIG_SYSVIPC=y
 # CONFIG_BSD_PROCESS_ACCT is not set
+CONFIG_KCORE_ELF=y
 CONFIG_BINFMT_ELF=y
 CONFIG_KERNEL_ELF=y
 # CONFIG_BINFMT_MISC is not set
@@ -273,7 +276,6 @@ CONFIG_BMAC=y
 # CONFIG_NET_VENDOR_RACAL is not set
 # CONFIG_YELLOWFIN is not set
 # CONFIG_RTL8139 is not set
-# CONFIG_SIS900 is not set
 # CONFIG_DM9102 is not set
 # CONFIG_AT1700 is not set
 # CONFIG_DEPCA is not set
@@ -292,6 +294,7 @@ CONFIG_DE4X5=y
 # CONFIG_LNE390 is not set
 # CONFIG_NE3210 is not set
 # CONFIG_NE2K_PCI is not set
+# CONFIG_SIS900 is not set
 # CONFIG_TLAN is not set
 # CONFIG_VIA_RHINE is not set
 # CONFIG_ES3210 is not set
@@ -356,6 +359,7 @@ CONFIG_PPP=y
 #
 CONFIG_FB=y
 CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FB_RIVA is not set
 # CONFIG_FB_CLGEN is not set
 # CONFIG_FB_PM2 is not set
 CONFIG_FB_OF=y
@@ -367,13 +371,13 @@ CONFIG_FB_CT65550=y
 # CONFIG_FB_S3TRIO is not set
 # CONFIG_FB_VGA16 is not set
 CONFIG_FB_MATROX=y
-# CONFIG_FB_MATROX_MILLENIUM is not set
+CONFIG_FB_MATROX_MILLENIUM=y
 CONFIG_FB_MATROX_MYSTIQUE=y
 CONFIG_FB_MATROX_G100=y
 # CONFIG_FB_MATROX_MULTIHEAD is not set
 CONFIG_FB_ATY=y
-# CONFIG_FB_ATY128 is not set
-# CONFIG_FB_3DFX is not set
+CONFIG_FB_ATY128=y
+CONFIG_FB_3DFX=y
 # CONFIG_FB_VIRTUAL is not set
 # CONFIG_FBCON_ADVANCED is not set
 CONFIG_FBCON_CFB8=y
@@ -414,6 +418,10 @@ CONFIG_PSMOUSE=y
 # CONFIG_82C710_MOUSE is not set
 # CONFIG_PC110_PAD is not set
 # CONFIG_QIC02_TAPE is not set
+
+#
+# Watchdog Cards
+#
 # CONFIG_WATCHDOG is not set
 CONFIG_NVRAM=y
 # CONFIG_RTC is not set
@@ -438,9 +446,40 @@ CONFIG_NVRAM=y
 # CONFIG_DRM is not set
 
 #
-# USB drivers - not for the faint of heart
+# Support for USB
+#
+CONFIG_USB=y
+
+#
+# USB Controllers
 #
-# CONFIG_USB is not set
+# CONFIG_USB_UHCI is not set
+CONFIG_USB_OHCI=y
+CONFIG_USB_OHCI_DEBUG=y
+# CONFIG_USB_OHCI_HCD is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEBUG_ISOC=y
+CONFIG_USB_PROC=y
+# CONFIG_USB_EZUSB is not set
+
+#
+# USB Devices
+#
+CONFIG_USB_HUB=y
+CONFIG_USB_MOUSE=y
+CONFIG_USB_HP_SCANNER=m
+CONFIG_USB_KBD=y
+# CONFIG_USB_AUDIO is not set
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_SERIAL is not set
+# CONFIG_USB_CPIA is not set
+# CONFIG_USB_DC2XX is not set
+CONFIG_USB_SCSI=m
+CONFIG_USB_SCSI_DEBUG=y
 
 #
 # Filesystems
@@ -449,11 +488,9 @@ CONFIG_NVRAM=y
 CONFIG_AUTOFS_FS=y
 # CONFIG_ADFS_FS is not set
 # CONFIG_AFFS_FS is not set
-CONFIG_HFS_FS=y
-CONFIG_FAT_FS=y
-CONFIG_MSDOS_FS=y
-# CONFIG_UMSDOS_FS is not set
-CONFIG_VFAT_FS=y
+# CONFIG_HFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_FAT_FS is not set
 # CONFIG_EFS_FS is not set
 CONFIG_ISO9660_FS=y
 # CONFIG_JOLIET is not set
@@ -466,7 +503,6 @@ CONFIG_DEVPTS_FS=y
 # CONFIG_QNX4FS_FS is not set
 # CONFIG_ROMFS_FS is not set
 CONFIG_EXT2_FS=y
-# CONFIG_BFS_FS is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is not set
 
@@ -493,39 +529,7 @@ CONFIG_MSDOS_PARTITION=y
 # CONFIG_UNIXWARE_DISKLABEL is not set
 # CONFIG_SGI_PARTITION is not set
 # CONFIG_SUN_PARTITION is not set
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_ISO8859_14 is not set
-# CONFIG_NLS_ISO8859_15 is not set
-# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS is not set
 
 #
 # Sound
diff --git a/arch/ppc/gemini_defconfig b/arch/ppc/gemini_defconfig
deleted file mode 100644 (file)
index cebd77d..0000000
+++ /dev/null
@@ -1,407 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-
-#
-# Platform support
-#
-CONFIG_PPC=y
-CONFIG_6xx=y
-# CONFIG_PPC64 is not set
-# CONFIG_82xx is not set
-# CONFIG_8xx is not set
-# CONFIG_MPC821 is not set
-# CONFIG_MPC823 is not set
-# CONFIG_MPC850 is not set
-# CONFIG_MPC855 is not set
-# CONFIG_MPC860 is not set
-# CONFIG_MPC860T is not set
-# CONFIG_RPXLITE is not set
-# CONFIG_RPXCLASSIC is not set
-# CONFIG_BSEIP is not set
-# CONFIG_MBX is not set
-# CONFIG_WINCEPT is not set
-# CONFIG_PMAC is not set
-# CONFIG_PREP is not set
-# CONFIG_CHRP is not set
-# CONFIG_ALL_PPC is not set
-CONFIG_GEMINI=y
-# CONFIG_APUS is not set
-# CONFIG_SMP is not set
-CONFIG_MACH_SPECIFIC=y
-CONFIG_6xx=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_MODULES=y
-CONFIG_MODVERSIONS=y
-CONFIG_KMOD=y
-CONFIG_PCI=y
-CONFIG_NET=y
-CONFIG_SYSCTL=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_BINFMT_ELF=y
-CONFIG_KERNEL_ELF=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_PARPORT is not set
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_FB is not set
-# CONFIG_PMAC_PBOOK is not set
-# CONFIG_MAC_FLOPPY is not set
-# CONFIG_MAC_SERIAL is not set
-# CONFIG_ADB is not set
-# CONFIG_PROC_DEVICETREE is not set
-# CONFIG_TOTALMP is not set
-# CONFIG_BOOTX_TEXT is not set
-# CONFIG_MOTOROLA_HOTSWAP is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-# CONFIG_BLK_DEV_IDE is not set
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_ONLY is not set
-# CONFIG_BLK_CPQ_DA is not set
-
-#
-# Additional Block Devices
-#
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE_PARPORT=y
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_DEV_IDE_MODES is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_NETLINK=y
-# CONFIG_RTNETLINK is not set
-# CONFIG_NETLINK_DEV is not set
-# CONFIG_NETFILTER is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_IP_ROUTER is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-CONFIG_IP_ALIAS=y
-CONFIG_SYN_COOKIES=y
-
-#
-# (it is safe to leave these untouched)
-#
-CONFIG_SKB_LARGE=y
-# CONFIG_IPV6 is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-
-#
-#  
-#
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_DECNET is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_LLC is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-# CONFIG_CHR_DEV_ST is not set
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-# CONFIG_CHR_DEV_SG is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-CONFIG_SCSI_CONSTANTS=y
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AHA1740 is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_IPS 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_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_DMA 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_G_NCR5380_PORT is not set
-# CONFIG_SCSI_G_NCR5380_MEM is not set
-# CONFIG_SCSI_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_NCR53C8XX is not set
-CONFIG_SCSI_SYM53C8XX=y
-CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
-CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
-CONFIG_SCSI_NCR53C8XX_SYNC=20
-# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
-# CONFIG_SCSI_NCR53C8XX_IOMAPPED is not set
-# CONFIG_SCSI_NCR53C8XX_PQS_PDS is not set
-# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_ISP is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_MESH is not set
-# CONFIG_SCSI_MAC53C94 is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-# CONFIG_MACE is not set
-# CONFIG_BMAC is not set
-CONFIG_NCR885E=y
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_RTL8139 is not set
-# CONFIG_SIS900 is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_ACENIC is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_EISA is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_RADIO is not set
-
-#
-# Token ring devices
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_HOSTESS_SV11 is not set
-# CONFIG_COSA is not set
-# CONFIG_SEALEVEL_4021 is not set
-# CONFIG_DLCI is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Old CD-ROM drivers (not SCSI, not IDE)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Console drivers
-#
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# Mice
-#
-CONFIG_BUSMOUSE=y
-# CONFIG_ATIXL_BUSMOUSE is not set
-# CONFIG_LOGIBUSMOUSE is not set
-# CONFIG_MS_BUSMOUSE is not set
-CONFIG_MOUSE=y
-CONFIG_PSMOUSE=y
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Joystick support
-#
-# CONFIG_JOYSTICK is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_FT_NORMAL_DEBUG is not set
-# CONFIG_FT_FULL_DEBUG is not set
-# CONFIG_FT_NO_TRACE is not set
-# CONFIG_FT_NO_TRACE_AT_ALL is not set
-# CONFIG_FT_STD_FDC is not set
-# CONFIG_FT_MACH2 is not set
-# CONFIG_FT_PROBE_FC10 is not set
-# CONFIG_FT_ALT_FDC is not set
-# CONFIG_DRM is not set
-
-#
-# USB drivers - not for the faint of heart
-#
-# CONFIG_USB is not set
-
-#
-# Filesystems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_FAT_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_ISO9660_FS=y
-# CONFIG_JOLIET is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-# CONFIG_NFS_FS is not set
-# CONFIG_NFSD is not set
-# CONFIG_SUNRPC is not set
-# CONFIG_LOCKD is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_NCP_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_NLS is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_MAGIC_SYSRQ is not set
-# CONFIG_KGDB is not set
-# CONFIG_XMON is not set
index 3677276b537d492fc653d418dbb978404c6e95c6..a41473fa5086ef521bdd70c0fe6ee9b5b814b4bb 100644 (file)
 
 O_TARGET := kernel.o
 OX_OBJS := ppc_ksyms.o setup.o
-KHEAD := head.o
+
+
+ifeq ($(CONFIG_4xx),y)
+  KHEAD := head_4xx.o
+else
+  ifeq ($(CONFIG_8xx),y)
+    KHEAD := head_8xx.o
+  else
+    KHEAD := head.o
+  endif
+endif
 
 ifdef CONFIG_ALL_PPC
 CONFIG_PMAC=y
@@ -47,48 +57,50 @@ ifdef CONFIG_SMP
 O_OBJS += smp.o
 endif
 
-ifeq ($(CONFIG_8xx),y)
-KHEAD := head_8xx.o
-O_OBJS += m8xx_setup.o ppc8xx_pic.o
-ifndef CONFIG_MATH_EMULATION
-O_OBJS += softemu8xx.o
-endif
-ifdef CONFIG_PCI
-O_OBJS += qspan_pci.c
+ifeq ($(CONFIG_OAK),y)
+  O_OBJS += oak_setup.o
 endif
-ifdef CONFIG_MBX
-O_OBJS += i8259.o
+
+ifeq ($(CONFIG_8xx),y)
+  O_OBJS += m8xx_setup.o ppc8xx_pic.o
+  ifndef CONFIG_MATH_EMULATION
+    O_OBJS += softemu8xx.o
+  endif
+  ifdef CONFIG_PCI
+    O_OBJS += qspan_pci.c
+  endif
+  ifdef CONFIG_MBX
+    O_OBJS += i8259.o
+  endif
 endif
-else
-O_OBJS += chrp_setup.o chrp_pci.o chrp_time.o \
-         pmac_time.o pmac_pci.o pmac_setup.o \
-         prom.o open_pic.o feature.o \
-         i8259.o pmac_pic.o indirect_pci.o \
-         gemini_pci.o gemini_prom.o gemini_setup.o
 
 ifeq ($(CONFIG_NVRAM),y)
-O_OBJS += pmac_support.o
+  O_OBJS += pmac_nvram.o
 endif
-
-ifeq ($(CONFIG_PREP), y)
-O_OBJS += prep_pci.o prep_setup.o prep_nvram.o prep_time.o residual.o
+ifeq ($(CONFIG_6xx),y)
+  O_OBJS += open_pic.o indirect_pci.o
 endif
-
-ifeq ($(CONFIG_PMAC), y)
+ifeq ($(CONFIG_APUS),y)
+  O_OBJS += apus_setup.o
 endif
-
-ifeq ($(CONFIG_PMAC), y)
+ifeq ($(CONFIG_PMAC),y)
+  O_OBJS += pmac_pic.o pmac_setup.o pmac_time.o feature.o pmac_pci.o prom.o
 endif
-
-ifdef CONFIG_APUS
-O_OBJS += apus_setup.o
+ifeq ($(CONFIG_CHRP),y)
+  O_OBJS += chrp_pci.o pmac_pci.o chrp_setup.o i8259.o \
+       chrp_time.o pmac_time.o prom.o
 endif
+ifeq ($(CONFIG_PREP),y)
+  O_OBJS += prep_pci.o i8259.o prep_setup.o prep_nvram.o prep_time.o residual.o
+endif
+ifeq ($(CONFIG_GEMINI),y)
+  O_OBJS += gemini_prom.o gemini_pci.o gemini_setup.o
 endif
 
 all: $(KHEAD) kernel.o
 
 head.o: head.S ppc_defs.h
-
+head_4xx.o: head_4xx.S ppc_defs.h
 head_8xx.o: head_8xx.S ppc_defs.h
 
 ppc_defs.h: mk_defs.c ppc_defs.head \
@@ -98,7 +110,7 @@ ppc_defs.h: mk_defs.c ppc_defs.head \
                $(TOPDIR)/include/asm/ptrace.h
        $(CC) $(CFLAGS) -S mk_defs.c
        cp ppc_defs.head ppc_defs.h
-       grep '^#define' mk_defs.s >>ppc_defs.h
+       grep '^#define' mk_defs.s >> ppc_defs.h
        rm mk_defs.s
 
 find_name : find_name.c
index 6a20863c53594992a2c992351cc02d051ee10aa2..4da6328ce724e49b0ac81872d6626a1d1d16bfae 100644 (file)
@@ -1,8 +1,11 @@
 /*
  * align.c - handle alignment exceptions for the Power PC.
  *
- * Paul Mackerras      August 1996.
- * Copyright (C) 1996 Paul Mackerras   (paulus@cs.anu.edu.au).
+ * Copyright (c) 1996 Paul Mackerras <paulus@cs.anu.edu.au>
+ * Copyright (c) 1998-1999 TiVo, Inc.
+ *   PowerPC 403GCX modifications.
+ * Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *   PowerPC 403GCX/405GP modifications.
  */
 #include <linux/kernel.h>
 #include <linux/mm.h>
@@ -16,6 +19,13 @@ struct aligninfo {
        unsigned char flags;
 };
 
+#if defined(CONFIG_4xx)
+#define        OPCD(inst)      (((inst) & 0xFC000000) >> 26)
+#define        RS(inst)        (((inst) & 0x03E00000) >> 21)
+#define        RA(inst)        (((inst) & 0x001F0000) >> 16)
+#define        IS_DFORM(code)  ((code) >= 32 && (code) <= 47)
+#endif
+
 #define INVALID        { 0, 0 }
 
 #define LD     1       /* load */
@@ -170,6 +180,9 @@ int
 fix_alignment(struct pt_regs *regs)
 {
        int instr, nb, flags;
+#if defined(CONFIG_4xx)
+       int opcode, f1, f2, f3;
+#endif
        int i, t;
        int reg, areg;
        unsigned char *addr;
@@ -180,13 +193,42 @@ fix_alignment(struct pt_regs *regs)
                unsigned char v[8];
        } data;
 
+#if defined(CONFIG_4xx)
+       /* The 4xx-family processors have no DSISR register,
+        * so we emulate it.
+        */
+
+       instr = *((unsigned int *)regs->nip);
+       opcode = OPCD(instr);
+       reg = RS(instr);
+       areg = RA(instr);
+
+       if (IS_DFORM(opcode)) {
+               f1 = 0;
+               f2 = (instr & 0x04000000) >> 26;
+               f3 = (instr & 0x78000000) >> 27;
+       } else {
+               f1 = (instr & 0x00000006) >> 1;
+               f2 = (instr & 0x00000040) >> 6;
+               f3 = (instr & 0x00000780) >> 7;
+       }
+
+       instr = ((f1 << 5) | (f2 << 4) | f3);
+#else
+       reg = (regs->dsisr >> 5) & 0x1f;        /* source/dest register */
+       areg = regs->dsisr & 0x1f;              /* register to update */
        instr = (regs->dsisr >> 10) & 0x7f;
+#endif
        nb = aligninfo[instr].len;
        if (nb == 0)
                return 0;       /* too hard or invalid instruction bits */
        flags = aligninfo[instr].flags;
-       addr = (unsigned char *) regs->dar;
-       reg = (regs->dsisr >> 5) & 0x1f;        /* source/dest register */
+
+       /* For the 4xx-family processors, the 'dar' field of the
+        * pt_regs structure is overloaded and is really from the DEAR.
+        */
+
+       addr = (unsigned char *)regs->dar;
 
        /* Verify the address of the operand */
        if (user_mode(regs)) {
@@ -280,7 +322,6 @@ fix_alignment(struct pt_regs *regs)
        }
 
        if (flags & U) {
-               areg = regs->dsisr & 0x1f;      /* register to update */
                regs->gpr[areg] = regs->dar;
        }
 
index 6133f32cafef018a59bf4651f2a46be71dfda3d3..c7247a5e03151f266ba15479e2172e8405af37b7 100644 (file)
@@ -386,13 +386,13 @@ _GLOBAL(fake_interrupt)
        mtlr    r0
        blr
 
-#ifndef CONFIG_8xx
+
 /*
  * PROM code for specific machines follows.  Put it 
  * here so it's easy to add arch-specific sections later.
  * -- Cort
  */
-       
+#if defined(CONFIG_CHRP) || defined(CONFIG_ALL_PPC)
 /*
  * On CHRP, the Run-Time Abstraction Services (RTAS) have to be
  * called with the MMU off.
@@ -432,4 +432,4 @@ enter_rtas:
        mtspr   SRR0,r8
        mtspr   SRR1,r9
        rfi                     /* return to caller */
-#endif /* CONFIG_8xx */
+#endif /* defined(CONFIG_CHRP) || defined(CONFIG_ALL_PPC) */
index 095f50e8fdbb14102cb5d00de8f6a0325cc01ce8..f91e992f47465a0182a1eba1acef8ff2c2f96a7e 100644 (file)
@@ -23,6 +23,7 @@
  *
  */
 
+_GLOBAL(prom_init)
 _GLOBAL(gemini_prom_init)
 #ifdef __SMP__
        /* Since the MMU's on, get stuff in rom space that we'll need */
index aee01f105110e737635325834de8220e5d94eb34..eda9a77fe5094899d48521ee4efda8ef7b47cd0c 100644 (file)
@@ -36,7 +36,6 @@
 
 void gemini_setup_pci_ptrs(void);
 
-static int l2_printed = 0;
 static unsigned char gemini_switch_map = 0;
 static char *gemini_board_families[] = {
        "VGM", "VSS", "KGM", "VGR", "KSS"
@@ -178,10 +177,8 @@ void __init gemini_setup_arch(void)
 
        /* take special pains to map the MPIC, since it isn't mapped yet */
        gemini_openpic_init();
-
        /* start the L2 */
        gemini_init_l2();
-
 }
 
 
@@ -219,7 +216,6 @@ gemini_get_clock_speed(void)
        return clock;
 }
 
-
 #define L2CR_PIPE_LATEWR   (0x01800000)   /* late-write SRAM */
 #define L2CR_L2CTL         (0x00100000)   /* RAM control */
 #define L2CR_INST_DISABLE  (0x00400000)   /* disable for insn's */
@@ -259,18 +255,17 @@ void __init gemini_init_l2(void)
                   probably always going to be late-write".  --Dan */
 
                if (reg & 0xc0) {
-                       if (!l2_printed) {
-                               printk("Enabling 750 L2 cache: %dKb\n", 
-                                      (128 << ((reg & 0xc0)>>6)));
-                               l2_printed=1;
-                       }
-    
+                       printk("Enabling 750 L2 cache: %dKb\n", 
+                              (128 << ((reg & 0xc0)>>6)));
                        /* take the size given */
                        cache = (((reg>>6) & 0x3)<<28);
                }
                else
+               {
+                       printk("Enabling 750 L2 cache: 1M\n");
                        /* default of 1Mb */
                        cache = 0x3<<28;
+               }
  
                reg &= 0x3;
 
@@ -278,6 +273,7 @@ void __init gemini_init_l2(void)
                   things.  If found, tune it down to 1:1.5.  -- Dan */
                if (!reg) {
 
+printk("3\n");
                        speed = gemini_get_clock_speed();
    
                        if (speed >= 300) {
@@ -297,7 +293,10 @@ void __init gemini_init_l2(void)
                   write-through.  This is fixed in IBM's 3.1 rev (I'm told), but
                   for now, always make 2.x versions use L2 write-through. --Dan */
                if (((_get_PVR()>>8) & 0xf) <= 2)
+               {
                        cache |= L2CR_L2WT;
+                       printk("L2 cache: Enabling Write-Through due to 750 Errata.\n");
+               }
 #endif
                cache |= L2CR_PIPE_LATEWR|L2CR_L2CTL|L2CR_INST_DISABLE;
                _set_L2CR(0);
@@ -480,6 +479,39 @@ void __init gemini_calibrate_decr(void)
        count_period_den = freq / 1000000;
 }
 
+int gemini_get_irq( struct pt_regs *regs )
+{
+        int irq;
+
+        irq = openpic_irq( smp_processor_id() );
+        if (irq == OPENPIC_VEC_SPURIOUS)
+                /*
+                 * Spurious interrupts should never be
+                 * acknowledged
+                 */
+               irq = -1;
+       /*
+        * I would like to openpic_eoi here but there seem to be timing problems
+        * between the openpic ack and the openpic eoi.
+        *   -- Cort
+        */
+       return irq;
+}
+
+void gemini_post_irq(int irq)
+{
+       /*
+        * If it's an i8259 irq then we've already done the
+        * openpic irq.  So we just check to make sure the controller
+        * is an openpic and if it is then eoi
+        *
+        * We do it this way since our irq_desc[irq].ctl can change
+        * with RTL and no longer be open_pic -- Cort
+        */
+       if ( irq >= open_pic.irq_offset)
+               openpic_eoi( smp_processor_id() );
+}
+
 
 void __init gemini_init(unsigned long r3, unsigned long r4, unsigned long r5,
                        unsigned long r6, unsigned long r7)
@@ -506,8 +538,8 @@ void __init gemini_init(unsigned long r3, unsigned long r4, unsigned long r5,
        ppc_md.get_cpuinfo = gemini_get_cpuinfo;
        ppc_md.irq_cannonicalize = NULL;
        ppc_md.init_IRQ = gemini_init_IRQ;
-       ppc_md.get_irq = chrp_get_irq;
-       ppc_md.post_irq = chrp_post_irq;
+       ppc_md.get_irq = gemini_get_irq;
+       ppc_md.post_irq = gemini_post_irq;
        ppc_md.init = NULL;
 
        ppc_md.restart = gemini_restart;
index 57ff53992dfc3f53df9346b5b2c630ae06fe8920..258f0056604ffb1890c36377368a15b6eaf2440a 100644 (file)
@@ -137,7 +137,7 @@ __start:
 #endif 
 /*
  * We have to do any OF calls before we map ourselves to KERNELBASE,
- * because OF may have I/O devices mapped in in that area
+ * because OF may have I/O devices mapped into that area
  * (particularly on CHRP).
  */
        mr      r31,r3                  /* save parameters */
@@ -444,7 +444,9 @@ SystemCall:
        STD_EXCEPTION(0xd00, SingleStep, SingleStepException)
 
        STD_EXCEPTION(0xe00, Trap_0e, UnknownException)
+#ifdef CONFIG_ALTIVEC  
        STD_EXCEPTION(0xf20, AltiVec, AltiVecUnavailable)
+#endif /* CONFIG_ALTIVEC */
 
 /*
  * Handle TLB miss for instruction on 603/603e.
@@ -1166,7 +1168,6 @@ __secondary_start:
        mtspr   SRR0,r3
        mtspr   SRR1,r4
        rfi
-
 #endif /* CONFIG_SMP */
 
 /*
@@ -1384,35 +1385,37 @@ cmd_line:
  *  -- Cort 
  */
 clear_bats:
-       mfmsr   r20
-       andi.   r19,r20,MSR_DR
-       beqlr
-       
+#if !defined(CONFIG_GEMINI)
        li      r20,0
+       mfspr   r9,PVR
+       rlwinm  r9,r9,16,16,31          /* r9 = 1 for 601, 4 for 604 */
+       cmpwi   r9, 1
+       beq     1f
        
        mtspr   DBAT0U,r20
-       mtspr   DBAT0L,r20
-       mtspr   IBAT0U,r20
-       mtspr   IBAT0L,r20
-       sync
-       isync
-       
+       mtspr   DBAT0L,r20      
        mtspr   DBAT1U,r20
        mtspr   DBAT1L,r20
+       mtspr   DBAT2U,r20
+       mtspr   DBAT2L,r20      
+       mtspr   DBAT3U,r20
+       mtspr   DBAT3L,r20
+1:     
+       mtspr   IBAT0U,r20
+       mtspr   IBAT0L,r20
        mtspr   IBAT1U,r20
        mtspr   IBAT1L,r20
-       sync
-       isync   
-
-       mtspr   DBAT2U,r20
-       mtspr   DBAT2L,r20
        mtspr   IBAT2U,r20
        mtspr   IBAT2L,r20
-       
-       mtspr   DBAT3U,r20
-       mtspr   DBAT3L,r20
        mtspr   IBAT3U,r20
        mtspr   IBAT3L,r20
-       
+#endif /* !defined(CONFIG_GEMINI) */
        blr
 
+flush_tlbs:
+       lis     r20, 0x1000
+1:     addic.  r20, r20, -0x1000
+       tlbie   r20
+       blt     1b
+       sync
+       blr
diff --git a/arch/ppc/kernel/head_4xx.S b/arch/ppc/kernel/head_4xx.S
new file mode 100644 (file)
index 0000000..abc6512
--- /dev/null
@@ -0,0 +1,600 @@
+/*
+ *    Copyright (c) 1995-1996 Gary Thomas <gdt@linuxppc.org>
+ *      Initial PowerPC version.
+ *    Copyright (c) 1996 Cort Dougan <cort@cs.nmt.edu>
+ *      Rewritten for PReP
+ *    Copyright (c) 1996 Paul Mackerras <paulus@cs.anu.edu.au>
+ *      Low-level exception handers, MMU support, and rewrite.
+ *    Copyright (c) 1997 Dan Malek <dmalek@jlc.net>
+ *      PowerPC 8xx modifications.
+ *    Copyright (c) 1998-1999 TiVo, Inc.
+ *      PowerPC 403GCX modifications.
+ *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *      PowerPC 403GCX/405GP modifications.
+ *
+ *    Module name: head_4xx.S
+ *
+ *    Description:
+ *      Kernel execution entry point code.
+ *
+ *    This program is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU General Public License
+ *    as published by the Free Software Foundation; either version
+ *    2 of the License, or (at your option) any later version.
+ *
+ */
+
+#include <linux/config.h>
+
+#include <asm/processor.h>
+#include <asm/4xx.h>
+#include <asm/403gcx.h>
+#include <asm/405gp.h>
+#include <asm/page.h>
+#include <asm/mmu.h>
+
+#include "ppc_asm.h"
+
+
+/* Preprocessor Defines */
+
+#define        STND_EXC        0
+#define        CRIT_EXC        1
+
+###
+### Check to make sure the right processor has been defined.
+###
+
+#if !defined(CONFIG_4xx)
+#error "This file is only appropriate for kernels supporting the PPC4xx."
+#endif
+
+###
+### Execution entry point.
+###
+
+###
+### As with the other PowerPC ports, it is expected that when code
+### execution begins here, the following registers contain valid, yet
+### optional, information:
+###
+###   r3 - ???
+###   r4 - Starting address of the init RAM disk
+###   r5 - Ending address of the init RAM disk
+###   r6 - Start of kernel command line string (e.g. "mem=96m")
+###   r7 - End of kernel command line string
+### 
+       
+       .text
+_GLOBAL(_stext)
+_GLOBAL(_start)
+       ## Save residual data, init RAM disk, and command line parameters
+       
+       mr      r31,r3
+       mr      r30,r4
+       mr      r29,r5
+       mr      r28,r6
+       mr      r27,r7
+
+       ## Set the ID for this CPU
+
+       li      r24,0
+
+       ## Establish exception vector base
+       
+       lis     r0,KERNELBASE@h
+       mtspr   SPRN_EVPR,r0
+
+       ## Jump to the main PowerPC kernel start-up code
+       
+1:     lis     r7,start_here@ha
+       addi    r7,r7,start_here@l
+       mtlr    r7
+       blr
+
+###
+### Exception vector entry code. This code runs with address translation
+### turned off (i.e. using physical addresses). We assume SPRG3 has the
+### physical address of the current task thread_struct.
+### 
+
+       ## Common exception code for all exception types.
+
+#define COMMON_PROLOG                                                       \
+0:     mtspr   SPRN_SPRG0,r20;         /* We need r20, move it to SPRG0   */\
+       mtspr   SPRN_SPRG1,r21;         /* We need r21, move it to SPRG1   */\
+       mfcr    r20;                    /* We need the CR, move it to r20  */\
+       mfspr   r21,SPRN_SPRG2;         /* Exception stack to use          */\
+       cmpwi   cr0,r21,0;              /* From user mode or RTAS?         */\
+       bne     1f;                     /* Not RTAS, branch                */\
+       tophys(r21, r1);                /* Convert vka in r1 to pka in r21 */\
+       subi    r21,r21,INT_FRAME_SIZE; /* Allocate an exception frame     */\
+1:     stw     r20,_CCR(r21);          /* Save CR on the stack            */\
+       stw     r22,GPR22(r21);         /* Save r22 on the stack           */\
+       stw     r23,GPR23(r21);         /* r23 Save on the stack           */\
+       mfspr   r20,SPRN_SPRG0;         /* Get r20 back out of SPRG0       */\
+       stw     r20,GPR20(r21);         /* Save r20 on the stack           */\
+       mfspr   r22,SPRN_SPRG1;         /* Get r21 back out of SPRG0       */\
+       stw     r22,GPR21(r21);         /* Save r21 on the stack           */\
+       mflr    r20;                                                         \
+       stw     r20,_LINK(r21);         /* Save LR on the stack            */\
+       mfctr   r22;                                                         \
+       stw     r22,_CTR(r21);          /* Save CTR on the stack           */\
+       mfspr   r20,XER;                                                     \
+       stw     r20,_XER(r21);          /* Save XER on the stack           */
+
+#define        COMMON_EPILOG                                                        \
+       stw     r0,GPR0(r21);           /* Save r0 on the stack            */\
+       stw     r1,GPR1(r21);           /* Save r1 on the stack            */\
+       stw     r2,GPR2(r21);           /* Save r2 on the stack            */\
+       stw     r1,0(r21);                                                   \
+       tovirt(r1,r21);                 /* Set-up new kernel stack pointer */\
+       SAVE_4GPRS(3, r21);             /* Save r3 through r6 on the stack */
+
+       ## Common exception code for standard (non-critical) exceptions.
+
+#define        STND_EXCEPTION_PROLOG                                                \
+       COMMON_PROLOG;                                                       \
+       mfspr   r22,SPRN_SRR0;          /* Faulting instruction address    */\
+       mfspr   r23,SPRN_SRR1;          /* MSR at the time of fault        */\
+       COMMON_EPILOG;
+
+       ## Common exception code for critical exceptions.
+       
+#define        CRIT_EXCEPTION_PROLOG                                                \
+       COMMON_PROLOG;                                                       \
+       mfspr   r22,SPRN_SRR2;          /* Faulting instruction address    */\
+       mfspr   r23,SPRN_SRR3;          /* MSR at the time of fault        */\
+       COMMON_EPILOG;
+
+###
+### Macros for specific exception types
+### 
+
+#define        START_EXCEPTION(n, label)                                            \
+       . = n;                                                               \
+label:
+
+
+#define FINISH_EXCEPTION(func)                                              \
+       bl      transfer_to_handler;                                         \
+       .long   func;                                                        \
+       .long   ret_from_except
+       
+               
+#define STND_EXCEPTION(n, label, func)                                      \
+       START_EXCEPTION(n, label);                                           \
+       STND_EXCEPTION_PROLOG;                                               \
+       addi    r3,r1,STACK_FRAME_OVERHEAD;                                  \
+       li      r0,STND_EXC;                                                 \
+       li      r20,MSR_KERNEL;                                              \
+       FINISH_EXCEPTION(func)
+
+       
+#define        CRIT_EXCEPTION(n, label, func)                                       \
+       START_EXCEPTION(n, label);                                           \
+       CRIT_EXCEPTION_PROLOG;                                               \
+       addi    r3,r1,STACK_FRAME_OVERHEAD;                                  \
+       li      r0,CRIT_EXC;                                                 \
+       li      r20,MSR_KERNEL;                                              \
+       FINISH_EXCEPTION(func)
+
+
+#define        INTR_EXCEPTION(n, label, func)                                       \
+       START_EXCEPTION(n, label);                                           \
+       STND_EXCEPTION_PROLOG;                                               \
+       addi    r3,r1,STACK_FRAME_OVERHEAD;                                  \
+       li      r0,STND_EXC;                                                 \
+       li      r20,MSR_KERNEL;                                              \
+       li      r4,0;                                                        \
+       bl      transfer_to_handler;                                         \
+_GLOBAL(do_IRQ_intercept);                                                  \
+       .long   func;                                                        \
+       .long   ret_from_except
+
+       
+###
+### Exception vectors.
+### 
+       
+### 0x0100 - Critical Interrupt Exception
+
+       CRIT_EXCEPTION(0x0100,  CriticalInterrupt,      UnknownException)
+
+### 0x0200 - Machine Check Exception
+       
+       CRIT_EXCEPTION(0x0200,  MachineCheck,           MachineCheckException)
+
+### 0x0300 - Data Storage Exception
+
+       START_EXCEPTION(0x0300, DataAccess)
+       STND_EXCEPTION_PROLOG
+       mfspr   r5,SPRN_ESR             # Grab the ESR, save it, pass as arg3
+       stw     r5,_ESR(r21)
+       mfspr   r4,SPRN_DEAR            # Grab the DEAR, save it, pass as arg2
+       stw     r4,_DEAR(r21)
+       addi    r3,r1,STACK_FRAME_OVERHEAD
+       li      r0,STND_EXC             # This is a standard exception
+       li      r20,MSR_KERNEL
+       rlwimi  r20,r23,0,16,16         # Copy EE bit from the saved MSR
+       FINISH_EXCEPTION(do_page_fault) # do_page_fault(regs, ESR, DEAR)
+       
+### 0x0400 - Instruction Storage Exception
+
+       START_EXCEPTION(0x0400, InstructionAccess)
+       STND_EXCEPTION_PROLOG
+       mr      r4,r22                  # Pass SRR0 as arg2
+       mr      r5,r23                  # Pass SRR1 as arg3
+       addi    r3,r1,STACK_FRAME_OVERHEAD
+       li      r0,STND_EXC             # This is a standard exception
+       li      r20,MSR_KERNEL
+       rlwimi  r20,r23,0,16,16         # Copy EE bit from the saved MSR
+       FINISH_EXCEPTION(do_page_fault) # do_page_fault(regs, SRR0, SRR1)
+       
+### 0x0500 - External Interrupt Exception
+
+       INTR_EXCEPTION(0x0500,  HardwareInterrupt,      do_IRQ)
+       
+### 0x0600 - Alignment Exception
+       
+       START_EXCEPTION(0x0600, Alignment)
+       STND_EXCEPTION_PROLOG
+       mfspr   r4,SPRN_DEAR            # Grab the DEAR and save it
+       stw     r4,_DEAR(r21)
+       addi    r3,r1,STACK_FRAME_OVERHEAD
+       li      r0,STND_EXC             # This is a standard exception
+       li      r20,MSR_KERNEL
+       rlwimi  r20,r23,0,16,16         # Copy EE bit from the saved MSR
+       FINISH_EXCEPTION(AlignmentException)
+
+### 0x0700 - Program Exception
+
+       START_EXCEPTION(0x0700, ProgramCheck)
+       STND_EXCEPTION_PROLOG
+       addi    r3,r1,STACK_FRAME_OVERHEAD
+       li      r0,STND_EXC             # This is a standard exception
+       li      r20,MSR_KERNEL
+       rlwimi  r20,r23,0,16,16         # Copy EE bit from the saved MSR
+       FINISH_EXCEPTION(ProgramCheckException)
+       
+       STND_EXCEPTION(0x0800,  Trap_08,                UnknownException)
+       STND_EXCEPTION(0x0900,  Trap_09,                UnknownException)
+       STND_EXCEPTION(0x0A00,  Trap_0A,                UnknownException)
+       STND_EXCEPTION(0x0B00,  Trap_0B,                UnknownException)               
+### 0x0C00 - System Call Exception
+
+       START_EXCEPTION(0x0C00, SystemCall)
+       STND_EXCEPTION_PROLOG
+       stw     r3,ORIG_GPR3(r21)
+       li      r0,STND_EXC             # This is a standard exception
+       li      r20,MSR_KERNEL
+       rlwimi  r20,r23,0,16,16         # Copy EE bit from the saved MSR
+       FINISH_EXCEPTION(DoSyscall)
+
+       STND_EXCEPTION(0x0D00,  Trap_0D,                UnknownException)
+       STND_EXCEPTION(0x0E00,  Trap_0E,                UnknownException)
+       STND_EXCEPTION(0x0F00,  Trap_0F,                UnknownException)
+
+#if 0
+### 0x1000 - Programmable Interval Timer (PIT) Exception
+
+       STND_EXCEPTION(0x1000,  PITException,           UnknownException)
+
+### 0x1010 - Fixed Interval Timer (FIT) Exception
+       
+       STND_EXCEPTION(0x1010,  FITException,           UnknownException)
+
+### 0x1020 - Watchdog Timer (WDT) Exception
+
+       CRIT_EXCEPTION(0x1020,  WDTException,           UnknownException)
+#endif
+
+### 0x1100 - Data TLB Miss Exception
+       
+       START_EXCEPTION(0x1100, DTLBMiss)
+       STND_EXCEPTION_PROLOG
+       addi    r3,r1,STACK_FRAME_OVERHEAD
+       li      r0,STND_EXC
+       li      r20,MSR_KERNEL
+       FINISH_EXCEPTION(UnknownException)
+
+### 0x1200 - Instruction TLB Miss Exception
+       
+       START_EXCEPTION(0x1200, ITLBMiss)
+       STND_EXCEPTION_PROLOG
+       addi    r3,r1,STACK_FRAME_OVERHEAD
+       li      r0,STND_EXC
+       li      r20,MSR_KERNEL
+       FINISH_EXCEPTION(UnknownException)      
+
+       STND_EXCEPTION(0x1300,  Trap_13,                UnknownException)
+       STND_EXCEPTION(0x1400,  Trap_14,                UnknownException)
+       STND_EXCEPTION(0x1500,  Trap_15,                UnknownException)
+       STND_EXCEPTION(0x1600,  Trap_16,                UnknownException)
+       STND_EXCEPTION(0x1700,  Trap_17,                UnknownException)
+       STND_EXCEPTION(0x1800,  Trap_18,                UnknownException)
+       STND_EXCEPTION(0x1900,  Trap_19,                UnknownException)
+       STND_EXCEPTION(0x1A00,  Trap_1A,                UnknownException)
+       STND_EXCEPTION(0x1B00,  Trap_1B,                UnknownException)
+       STND_EXCEPTION(0x1C00,  Trap_1C,                UnknownException)
+       STND_EXCEPTION(0x1D00,  Trap_1D,                UnknownException)
+       STND_EXCEPTION(0x1E00,  Trap_1E,                UnknownException)
+       STND_EXCEPTION(0x1F00,  Trap_1F,                UnknownException)
+       
+### 0x2000 - Debug Exception
+
+       CRIT_EXCEPTION(0x2000,  DebugTrap,              UnknownException)
+
+###
+### Other PowerPC processors, namely those derived from the 6xx-series
+### have vectors from 0x2100 through 0x2F00 defined, but marked as reserved.
+### However, for the 4xx-series processors these are neither defined nor
+### reserved.
+### 
+
+### 
+### This code finishes saving the registers to the exception frame
+### and jumps to the appropriate handler for the exception, turning
+### on address translation.
+###
+
+_GLOBAL(transfer_to_handler)
+       stw     r22,_NIP(r21)           # Save the faulting IP on the stack
+       stw     r23,_MSR(r21)           # Save the exception MSR on the stack
+       SAVE_GPR(7, r21)                # Save r7 on the stack
+       SAVE_4GPRS(8, r21)              # Save r8 through r11 on the stack
+       SAVE_8GPRS(12, r21)             # Save r12 through r19 on the stack
+       SAVE_8GPRS(24, r21)             # Save r24 through r31 on the stack
+       andi.   r23,r23,MSR_PR          # Is this from user space?
+       mfspr   r23,SPRN_SPRG3          # If from user, fix up THREAD.regs
+       beq     2f                      # No, it is from the kernel; branch.
+       addi    r24,r1,STACK_FRAME_OVERHEAD
+       stw     r24,PT_REGS(r23)        # 
+2:     addi    r2,r23,-THREAD          # Set r2 to current thread
+       tovirt(r2,r2)
+       mflr    r23
+       andi.   r24,r23,0x3f00          # Get vector offset
+       stw     r24,TRAP(r21)
+       li      r22,RESULT
+       stwcx.  r22,r22,r21             # Clear the reservation
+       li      r22,0
+       stw     r22,RESULT(r21)
+       mtspr   SPRN_SPRG2,r22          # r1 is now the kernel stack pointer
+       addi    r24,r2,TASK_STRUCT_SIZE # Check for kernel stack overflow
+       cmplw   cr0,r1,r2
+       cmplw   cr1,r1,r24
+       crand   cr1,cr1,cr4
+       bgt-    stack_ovf               # If r2 < r1 < r2 + TASK_STRUCT_SIZE
+       lwz     r24,0(r23)              # Virtual address of the handler
+       lwz     r23,4(r23)              # Handler return pointer
+       cmpwi   cr0,r0,STND_EXC         # What type of exception is this?
+       bne     3f                      # It is a critical exception...
+
+       ## Standard exception jump path
+       
+       mtspr   SPRN_SRR0,r24           # Set up the instruction pointer
+       mtspr   SPRN_SRR1,r20           # Set up the machine state register
+       mtlr    r23                     # Set up the return pointer
+       SYNC
+       rfi                             # Enable the MMU, jump to the handler
+
+       ## Critical exception jump path
+
+3:     mtspr   SPRN_SRR2,r24           # Set up the instruction pointer
+       mtspr   SPRN_SRR3,r20           # Set up the machine state register
+       mtlr    r23                     # Set up the return pointer
+       SYNC
+       rfci                            # Enable the MMU, jump to the handler
+
+###
+### On kernel stack overlow, load up an initial stack pointer and call
+### StackOverflow(regs), which should NOT return.
+### 
+
+stack_ovf:
+       addi    r3,r1,STACK_FRAME_OVERHEAD
+       lis     r1,init_task_union@ha
+       addi    r1,r1,init_task_union@l
+       addi    r1,r1,TASK_UNION_SIZE - STACK_FRAME_OVERHEAD
+       lis     r24,StackOverflow@ha
+       addi    r24,r24,StackOverflow@l
+       li      r20,MSR_KERNEL
+       mtspr   SPRN_SRR0,r24           # Set up the instruction pointer
+       mtspr   SPRN_SRR1,r20           # Set up the machine state register
+       SYNC
+       rfi                             # Enable the MMU, jump to StackOverflow
+
+###
+### extern void giveup_altivec(struct task_struct *prev)
+###
+### The PowerPC 4xx family of processors do not have AltiVec capabilities, so
+### this just returns.
+###
+
+_GLOBAL(giveup_altivec)
+       blr
+       
+###
+### extern void giveup_fpu(struct task_struct *prev)
+###
+### The PowerPC 4xx family of processors do not have an FPU, so this just
+### returns.
+###
+
+_GLOBAL(giveup_fpu)
+       blr
+
+###
+### extern void abort(void)
+###
+### At present, this routine just applies a system reset.
+### 
+       
+_GLOBAL(abort)
+       mfspr   r13,SPRN_DBCR
+       ori     r13,r13,DBCR_RST(SYSTEM)@h
+       mtspr   SPRN_DBCR,r13
+
+       
+###
+### This code is jumped-to from the startup code. It copies the kernel
+### image from wherever it happens to be currently running at in physical
+### address space to physical address 0.
+###
+### In general, for a running Linux/PPC system:
+###   Kernel Physical Address (KPA) = 0x00000000
+###   Kernel Virtual Address (KVA)  = 0xC0000000
+###
+#if 0
+relocate_kernel:
+       lis     r9,0x426f               /* if booted from BootX, don't */
+       addi    r9,r9,0x6f58            /* translate source addr */
+       cmpw    r31,r9                  /* (we have to on chrp) */
+       beq     7f
+       rlwinm  r4,r4,0,8,31            /* translate source address */
+       add     r4,r4,r3                /* to region mapped with BATs */
+7:     addis   r9,r26,klimit@ha        /* fetch klimit */
+       lwz     r25,klimit@l(r9)
+       addis   r25,r25,-KERNELBASE@h
+       li      r6,0                    /* Destination offset */
+       li      r5,0x4000               /* # bytes of memory to copy */
+       bl      copy_and_flush          /* copy the first 0x4000 bytes */
+       addi    r0,r3,4f@l              /* jump to the address of 4f */
+       mtctr   r0                      /* in copy and do the rest. */
+       bctr                            /* jump to the copy */
+4:     mr      r5,r25
+       bl      copy_and_flush          /* copy the rest */
+       b       turn_on_mmu
+
+/*
+ * Copy routine used to copy the kernel to start at physical address 0
+ * and flush and invalidate the caches as needed.
+ * r3 = dest addr, r4 = source addr, r5 = copy limit, r6 = start offset
+ * on exit, r3, r4, r5 are unchanged, r6 is updated to be >= r5.
+ */
+copy_and_flush:
+       addi    r5,r5,-4
+       addi    r6,r6,-4
+4:     li      r0,8
+       mtctr   r0
+3:     addi    r6,r6,4                 /* copy a cache line */
+       lwzx    r0,r6,r4
+       stwx    r0,r6,r3
+       bdnz    3b
+       dcbst   r6,r3                   /* write it to memory */
+       sync
+       icbi    r6,r3                   /* flush the icache line */
+       cmplw   0,r6,r5
+       blt     4b
+       isync
+       addi    r5,r5,4
+       addi    r6,r6,4
+       blr
+#endif
+       
+### 
+### This is where the main kernel code starts.
+### 
+
+start_here:
+       ## Establish a pointer to the current task
+       
+       lis     r2,init_task_union@h
+       ori     r2,r2,init_task_union@l
+       
+       ## Clear out the BSS as per ANSI C requirements
+
+       lis     r7,_end@ha
+       addi    r7,r7,_end@l
+       lis     r8,__bss_start@ha
+       addi    r8,r8,__bss_start@l
+       subf    r7,r8,r7
+       addi    r7,r7,3
+       srwi.   r7,r7,2
+       beq     2f
+       addi    r8,r8,-4
+       mtctr   r7
+       li      r0,0
+3:     stwu    r0,4(r8)
+       bdnz    3b
+
+       ## Stack
+       
+2:     addi    r1,r2,TASK_UNION_SIZE
+       li      r0,0
+       stwu    r0,-STACK_FRAME_OVERHEAD(r1)
+
+       ## Determine what type of platform this is.
+
+       mr      r3,r31
+       mr      r4,r30
+       mr      r5,r29
+       mr      r6,r28
+       mr      r7,r27
+       bl      identify_machine
+       
+       ## Initialize the memory management unit.
+
+       bl      MMU_init
+
+       ## Go back to running unmapped so that we can change to our
+       ## exception vectors.
+
+       lis     r4,2f@h
+       ori     r4,r4,2f@l
+       tophys(r4,r4)
+       li      r3,MSR_KERNEL & ~(MSR_IR|MSR_DR)
+       mtspr   SPRN_SRR0,r4            # Set up the instruction pointer
+       mtspr   SPRN_SRR1,r3            # Set up the machine state register
+       rfi
+
+       ## Load up the kernel context
+
+2:     SYNC                            # Force all PTE updates to finish
+#      tlbia                           # Clear all TLB entries
+#      sync                            # Wait for tlbia to finish...
+
+       ## Set up for using our exception vectors
+       
+       tophys(r4,r2)                   # Pointer to physical current thread
+       addi    r4,r4,THREAD            # The init task thread
+       mtspr   SPRN_SPRG3,r4           # Save it for exceptions later
+       li      r3,0                    # 
+       mtspr   SPRN_SPRG2,r3           # 0 implies r1 has kernel stack pointer
+       
+       ## Really turn on the MMU and jump into the kernel
+
+        lis     r4,MSR_KERNEL@h
+        ori     r4,r4,MSR_KERNEL@l
+        lis     r3,start_kernel@h
+        ori     r3,r3,start_kernel@l
+        mtspr   SPRN_SRR0,r3           # Set up the instruction pointer
+        mtspr   SPRN_SRR1,r4           # Set up the machine state register
+        rfi                            # Enable the MMU, jump to the kernel
+
+_GLOBAL(set_context)
+       mtspr   SPRN_PID,r3
+       tlbia
+       SYNC
+       blr
+
+###
+### We put a few things here that have to be page-aligned. This stuff
+### goes at the beginning of the data segment, which is page-aligned.
+###
+
+       .data
+_GLOBAL(sdata)
+_GLOBAL(empty_zero_page)
+       .space  4096
+_GLOBAL(swapper_pg_dir)
+       .space  4096    
+
+###
+### This space gets a copy of optional info passed to us by the bootstrap
+### which is used to pass parameters into the kernel like root=/dev/sda1, etc.
+###
+
+_GLOBAL(cmd_line)
+       .space  512
index 89994881beb02e2787edcc8eb992e73849ed76ae..da5dccfa10d9cdc4ef538cef150432cf0cf50c7b 100644 (file)
@@ -103,8 +103,7 @@ _GLOBAL(__no_use_sti)
  * We were about to enable interrupts but we have to simulate
  * some interrupts that were lost by enable_irq first.
  */
-       .globl do_lost_interrupts
-do_lost_interrupts:
+_GLOBAL(do_lost_interrupts)
        stwu    r1,-16(r1)
        mflr    r0
        stw     r0,20(r1)
@@ -758,8 +757,19 @@ _GLOBAL(_set_L2CR)
  * We restore and save the fpscr so the task gets the same result
  * and exceptions as if the cpu had performed the load or store.
  */
+
+#if defined(CONFIG_4xx)
+_GLOBAL(cvt_fd)
+       lfs     0,0(r3)
+       stfd    0,0(r4)
+       blr
+
+_GLOBAL(cvt_df)
+       lfd     0,0(r3)
+       stfs    0,0(r4)
+       blr
+#else
 _GLOBAL(cvt_fd)
-cvt_fd:
        lfd     0,-4(r5)        /* load up fpscr value */
        mtfsf   0xff,0
        lfs     0,0(r3)
@@ -769,7 +779,6 @@ cvt_fd:
        blr
 
 _GLOBAL(cvt_df)
-cvt_df:
        lfd     0,-4(r5)        /* load up fpscr value */
        mtfsf   0xff,0
        lfd     0,0(r3)
@@ -777,9 +786,9 @@ cvt_df:
        mffs    0               /* save new fpscr value */
        stfd    0,-4(r5)
        blr
+#endif
 
-        .globl  __clear_msr_me
-__clear_msr_me:
+_GLOBAL(__clear_msr_me)
         mfmsr   r0                      /* Get current interrupt state */
         lis     r3,0
         ori     r3,r3,MSR_ME
@@ -843,8 +852,7 @@ SYSCALL(read)
 /* Why isn't this a) automatic, b) written in 'C'? */  
        .data
        .align 4
-       .globl  sys_call_table
-sys_call_table:
+_GLOBAL(sys_call_table)
        .long sys_ni_syscall    /* 0  -  old "setup()" system call */
        .long sys_exit
        .long sys_fork
index 849e268fe665f19a760cd5924b39e7c4114fe045..34682bd2a89d7104855c70ca60dafe28164dc601 100644 (file)
@@ -88,7 +88,9 @@ main(void)
        DEFINE(GPR29, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[29]));
        DEFINE(GPR30, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[30]));
        DEFINE(GPR31, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, gpr[31]));
-       /* Note: these symbols include _ because they overlap with special register names */
+       /* Note: these symbols include _ because they overlap with special
+        * register names
+        */
        DEFINE(_NIP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, nip));
        DEFINE(_MSR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, msr));
        DEFINE(_CTR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, ctr));
@@ -97,6 +99,12 @@ main(void)
        DEFINE(_XER, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, xer));
        DEFINE(_DAR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dar));
        DEFINE(_DSISR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dsisr));
+       /* The PowerPC 400-class processors have neither the DAR nor the DSISR
+        * SPRs. Hence, we overload them to hold the similar DEAR and ESR SPRs
+        * for such processors.
+        */
+       DEFINE(_DEAR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dar));
+       DEFINE(_ESR, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, dsisr));
        DEFINE(ORIG_GPR3, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, orig_gpr3));
        DEFINE(RESULT, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, result));
        DEFINE(TRAP, STACK_FRAME_OVERHEAD+offsetof(struct pt_regs, trap));
diff --git a/arch/ppc/kernel/oak_setup.c b/arch/ppc/kernel/oak_setup.c
new file mode 100644 (file)
index 0000000..a9c9137
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ *
+ *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *
+ *    Module name: oak_setup.c
+ *
+ *    Description:
+ *      Architecture- / platform-specific boot-time initialization code for
+ *      the IBM PowerPC 403GCX "Oak" evaluation board. Adapted from original
+ *      code by Gary Thomas, Cort Dougan <cort@cs.nmt.edu>, and Dan Malek
+ *      <dmalek@jlc.net>.
+ *
+ */
+
+#include <linux/config.h>
+#include <linux/init.h>
+#include <linux/string.h>
+
+#include <asm/machdep.h>
+#include <asm/page.h>
+
+#include "oak_setup.h"
+
+
+void __init
+oak_init(unsigned long r3, unsigned long r4, unsigned long r5, 
+        unsigned long r6, unsigned long r7)
+{
+#if 0
+#if defined(CONFIG_BLK_DEV_INITRD)
+       /*
+        * If the init RAM disk has been configured in, and there's a valid
+        * starting address for it, set it up.
+        */
+       if (r4) {
+               initrd_start = r4 + KERNELBASE;
+               initrd_end = r5 + KERNELBASE;
+       }
+#endif /* CONFIG_BLK_DEV_INITRD */
+
+       /* Copy the kernel command line arguments to a safe place. */
+
+       if (r6) {
+               *(char *)(r7 + KERNELBASE) = 0;
+               strcpy(cmd_line, (char *)(r6 + KERNELBASE));
+       }
+#endif /* 0 */
+
+       ppc_md.setup_arch        = oak_setup_arch;
+       ppc_md.setup_residual    = NULL;
+       ppc_md.get_cpuinfo       = NULL;
+       ppc_md.irq_cannonicalize = NULL;
+       ppc_md.init_IRQ          = NULL;
+       ppc_md.get_irq           = NULL;
+       ppc_md.init              = NULL;
+
+       ppc_md.restart           = NULL;
+       ppc_md.power_off         = NULL;
+       ppc_md.halt              = NULL;
+
+       ppc_md.time_init         = NULL;
+       ppc_md.set_rtc_time      = NULL;
+       ppc_md.get_rtc_time      = NULL;
+       ppc_md.calibrate_decr    = NULL;
+
+       ppc_md.kbd_setkeycode    = NULL;
+       ppc_md.kbd_getkeycode    = NULL;
+       ppc_md.kbd_translate     = NULL;
+       ppc_md.kbd_unexpected_up = NULL;
+       ppc_md.kbd_leds          = NULL;
+       ppc_md.kbd_init_hw       = NULL;
+
+#if defined(CONFIG_MAGIC_SYSRQ)
+       ppc_md.kbd_sysrq_xlate   = NULL;
+#endif
+
+       return;
+}
+
+void __init
+oak_setup_arch(void)
+{
+
+}
diff --git a/arch/ppc/kernel/oak_setup.h b/arch/ppc/kernel/oak_setup.h
new file mode 100644 (file)
index 0000000..10f7d73
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ *
+ *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *
+ *    Module name: oak_setup.c
+ *
+ *    Description:
+ *      Architecture- / platform-specific boot-time initialization code for
+ *      the IBM PowerPC 403GCX "Oak" evaluation board. Adapted from original
+ *      code by Gary Thomas, Cort Dougan <cort@cs.nmt.edu>, and Dan Malek
+ *      <dmalek@jlc.net>.
+ *
+ */
+
+#ifndef        __OAK_SETUP_H__
+#define        __OAK_SETUP_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern void     oak_init(unsigned long r3,
+                         unsigned long ird_start, unsigned long ird_end,
+                         unsigned long cline_start, unsigned long cline_end);
+extern void     oak_setup_arch(void);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OAK_SETUP_H__ */
index ace8590bb3f469ff32e630da67ac98f05bf4d087..1097c70bf51f23b0c7f45228456dbeff4d946da8 100644 (file)
@@ -4,5 +4,6 @@
 extern struct hw_interrupt_type open_pic;
 
 void openpic_ipi_action(int cpl, void *dev_id, struct pt_regs *regs);
+void openpic_enable_IPI(u_int ipi);
 
 #endif /* _PPC_KERNEL_OPEN_PIC_H */
index 62cb66680c62ec8ec73d405344192e2c135b3737..ea2b1c2c16109f17cd7b8609e4b1bc6bd684fb1c 100644 (file)
@@ -77,6 +77,21 @@ void __init pcibios_init(void)
                ppc_md.pcibios_fixup();
 }
 
+void __init
+pcibios_fixup_pbus_ranges(struct pci_bus * bus, struct pbus_set_ranges_data * ranges)
+{
+       ranges->io_start -= bus->resource[0]->start;
+       ranges->io_end -= bus->resource[0]->start;
+       ranges->mem_start -= bus->resource[1]->start;
+       ranges->mem_end -= bus->resource[1]->start;
+}
+
+unsigned long resource_fixup(struct pci_dev * dev, struct resource * res,
+                            unsigned long start, unsigned long size)
+{
+       return start;
+}
+
 static void __init pcibios_claim_resources(struct pci_bus *bus)
 {
        struct pci_dev *dev;
@@ -117,31 +132,6 @@ char __init *pcibios_setup(char *str)
        return str;
 }
 
-#ifndef CONFIG_8xx
-/* Recursively searches any node that is of type PCI-PCI bridge. Without
- * this, the old code would miss children of P2P bridges and hence not
- * fix IRQ's for cards located behind P2P bridges.
- * - Ranjit Deshpande, 01/20/99
- */
-void __init fix_intr(struct device_node *node, struct pci_dev *dev)
-{
-       unsigned int *reg, *class_code;
-
-       for (; node != 0;node = node->sibling) {
-               class_code = (unsigned int *) get_property(node, "class-code", 0);
-               if((*class_code >> 8) == PCI_CLASS_BRIDGE_PCI)
-                       fix_intr(node->child, dev);
-               reg = (unsigned int *) get_property(node, "reg", 0);
-               if (reg == 0 || ((reg[0] >> 8) & 0xff) != dev->devfn)
-                       continue;
-               /* this is the node, see if it has interrupts */
-               if (node->n_intrs > 0) 
-                       dev->irq = node->intrs[0].line;
-               break;
-       }
-}
-#endif
-
 int pcibios_assign_resource(struct pci_dev *pdev, int resource)
 {
        return 0;
diff --git a/arch/ppc/kernel/pmac_nvram.c b/arch/ppc/kernel/pmac_nvram.c
new file mode 100644 (file)
index 0000000..1b1850a
--- /dev/null
@@ -0,0 +1,108 @@
+/*
+ * Miscellaneous procedures for dealing with the PowerMac hardware.
+ */
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/stddef.h>
+#include <linux/reboot.h>
+#include <linux/nvram.h>
+#include <linux/init.h>
+#include <asm/init.h>
+#include <asm/ptrace.h>
+#include <asm/io.h>
+#include <asm/pgtable.h>
+#include <asm/system.h>
+#include <asm/prom.h>
+#include <linux/adb.h>
+#include <linux/pmu.h>
+
+/*
+ * Read and write the non-volatile RAM on PowerMacs and CHRP machines.
+ */
+static int nvram_naddrs;
+static volatile unsigned char *nvram_addr;
+static volatile unsigned char *nvram_data;
+static int nvram_mult;
+
+#define NVRAM_SIZE     0x2000  /* 8kB of non-volatile RAM */
+
+__init
+void pmac_nvram_init(void)
+{
+       struct device_node *dp;
+
+       dp = find_devices("nvram");
+       if (dp == NULL) {
+               printk(KERN_ERR "Can't find NVRAM device\n");
+               nvram_naddrs = 0;
+               return;
+       }
+       nvram_naddrs = dp->n_addrs;
+       if (_machine == _MACH_chrp && nvram_naddrs == 1) {
+               nvram_data = ioremap(dp->addrs[0].address, dp->addrs[0].size);
+               nvram_mult = 1;
+       } else if (nvram_naddrs == 1) {
+               nvram_data = ioremap(dp->addrs[0].address, dp->addrs[0].size);
+               nvram_mult = (dp->addrs[0].size + NVRAM_SIZE - 1) / NVRAM_SIZE;
+       } else if (nvram_naddrs == 2) {
+               nvram_addr = ioremap(dp->addrs[0].address, dp->addrs[0].size);
+               nvram_data = ioremap(dp->addrs[1].address, dp->addrs[1].size);
+       } else if (nvram_naddrs == 0 && sys_ctrler == SYS_CTRLER_PMU) {
+               nvram_naddrs = -1;
+       } else {
+               printk(KERN_ERR "Don't know how to access NVRAM with %d addresses\n",
+                      nvram_naddrs);
+       }
+}
+
+__openfirmware
+unsigned char nvram_read_byte(int addr)
+{
+       struct adb_request req;
+
+       switch (nvram_naddrs) {
+#ifdef CONFIG_ADB_PMU
+       case -1:
+               if (pmu_request(&req, NULL, 3, PMU_READ_NVRAM,
+                               (addr >> 8) & 0xff, addr & 0xff))
+                       break;
+               while (!req.complete)
+                       pmu_poll();
+               return req.reply[1];
+#endif
+       case 1:
+               return nvram_data[(addr & (NVRAM_SIZE - 1)) * nvram_mult];
+       case 2:
+               *nvram_addr = addr >> 5;
+               eieio();
+               return nvram_data[(addr & 0x1f) << 4];
+       }
+       return 0;
+}
+
+__openfirmware
+void nvram_write_byte(unsigned char val, int addr)
+{
+       struct adb_request req;
+
+       switch (nvram_naddrs) {
+#ifdef CONFIG_ADB_PMU
+       case -1:
+               if (pmu_request(&req, NULL, 4, PMU_WRITE_NVRAM,
+                               (addr >> 8) & 0xff, addr & 0xff, val))
+                       break;
+               while (!req.complete)
+                       pmu_poll();
+               break;
+#endif
+       case 1:
+               nvram_data[(addr & (NVRAM_SIZE - 1)) * nvram_mult] = val;
+               break;
+       case 2:
+               *nvram_addr = addr >> 5;
+               eieio();
+               nvram_data[(addr & 0x1f) << 4] = val;
+               break;
+       }
+       eieio();
+}
index 62161f68a54b61091c7e8761425c83b060f4ba9a..bcd8a2c2b2dea143eee69f6d3146ad0d9340e4b2 100644 (file)
@@ -442,6 +442,30 @@ static void __init add_bridges(struct device_node *dev)
        }
 }
 
+/* Recursively searches any node that is of type PCI-PCI bridge. Without
+ * this, the old code would miss children of P2P bridges and hence not
+ * fix IRQ's for cards located behind P2P bridges.
+ * - Ranjit Deshpande, 01/20/99
+ */
+void __init
+fix_intr(struct device_node *node, struct pci_dev *dev)
+{
+       unsigned int *reg, *class_code;
+
+       for (; node != 0;node = node->sibling) {
+               class_code = (unsigned int *) get_property(node, "class-code", 0);
+               if((*class_code >> 8) == PCI_CLASS_BRIDGE_PCI)
+                       fix_intr(node->child, dev);
+               reg = (unsigned int *) get_property(node, "reg", 0);
+               if (reg == 0 || ((reg[0] >> 8) & 0xff) != dev->devfn)
+                       continue;
+               /* this is the node, see if it has interrupts */
+               if (node->n_intrs > 0) 
+                       dev->irq = node->intrs[0].line;
+               break;
+       }
+}
+
 void __init
 pmac_pcibios_fixup(void)
 {
diff --git a/arch/ppc/kernel/pmac_support.c b/arch/ppc/kernel/pmac_support.c
deleted file mode 100644 (file)
index 934f834..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Miscellaneous procedures for dealing with the PowerMac hardware.
- */
-#include <linux/config.h>
-#include <linux/kernel.h>
-#include <linux/stddef.h>
-#include <linux/reboot.h>
-#include <linux/nvram.h>
-#include <linux/init.h>
-#include <asm/init.h>
-#include <asm/ptrace.h>
-#include <asm/io.h>
-#include <asm/pgtable.h>
-#include <asm/system.h>
-#include <asm/prom.h>
-#include <linux/adb.h>
-#include <linux/pmu.h>
-
-/*
- * Read and write the non-volatile RAM on PowerMacs and CHRP machines.
- */
-static int nvram_naddrs;
-static volatile unsigned char *nvram_addr;
-static volatile unsigned char *nvram_data;
-static int nvram_mult;
-
-#define NVRAM_SIZE     0x2000  /* 8kB of non-volatile RAM */
-
-
-__init
-void pmac_nvram_init(void)
-{
-       struct device_node *dp;
-
-       dp = find_devices("nvram");
-       if (dp == NULL) {
-               printk(KERN_ERR "Can't find NVRAM device\n");
-               nvram_naddrs = 0;
-               return;
-       }
-       nvram_naddrs = dp->n_addrs;
-       if (_machine == _MACH_chrp && nvram_naddrs == 1) {
-               nvram_data = ioremap(dp->addrs[0].address, dp->addrs[0].size);
-               nvram_mult = 1;
-       } else if (nvram_naddrs == 1) {
-               nvram_data = ioremap(dp->addrs[0].address, dp->addrs[0].size);
-               nvram_mult = (dp->addrs[0].size + NVRAM_SIZE - 1) / NVRAM_SIZE;
-       } else if (nvram_naddrs == 2) {
-               nvram_addr = ioremap(dp->addrs[0].address, dp->addrs[0].size);
-               nvram_data = ioremap(dp->addrs[1].address, dp->addrs[1].size);
-       } else if (nvram_naddrs == 0 && sys_ctrler == SYS_CTRLER_PMU) {
-               nvram_naddrs = -1;
-       } else {
-               printk(KERN_ERR "Don't know how to access NVRAM with %d addresses\n",
-                      nvram_naddrs);
-       }
-}
-
-unsigned char nvram_read_byte(int addr)
-{
-       struct adb_request req;
-
-       switch (nvram_naddrs) {
-#ifdef CONFIG_ADB_PMU
-       case -1:
-               if (pmu_request(&req, NULL, 3, PMU_READ_NVRAM,
-                               (addr >> 8) & 0xff, addr & 0xff))
-                       break;
-               while (!req.complete)
-                       pmu_poll();
-               return req.reply[1];
-#endif
-       case 1:
-               return nvram_data[(addr & (NVRAM_SIZE - 1)) * nvram_mult];
-       case 2:
-               *nvram_addr = addr >> 5;
-               eieio();
-               return nvram_data[(addr & 0x1f) << 4];
-       }
-       return 0;
-}
-
-void nvram_write_byte(unsigned char val, int addr)
-{
-       struct adb_request req;
-
-       switch (nvram_naddrs) {
-#ifdef CONFIG_ADB_PMU
-       case -1:
-               if (pmu_request(&req, NULL, 4, PMU_WRITE_NVRAM,
-                               (addr >> 8) & 0xff, addr & 0xff, val))
-                       break;
-               while (!req.complete)
-                       pmu_poll();
-               break;
-#endif
-       case 1:
-               nvram_data[(addr & (NVRAM_SIZE - 1)) * nvram_mult] = val;
-               break;
-       case 2:
-               *nvram_addr = addr >> 5;
-               eieio();
-               nvram_data[(addr & 0x1f) << 4] = val;
-               break;
-       }
-       eieio();
-}
index 10be7ceabdeae8be1926b1fa3fa86420c7154226..2b999ab36878e3f3f31e32051ffca22613567d7d 100644 (file)
@@ -10,6 +10,9 @@
  *  as published by the Free Software Foundation; either version
  *  2 of the License, or (at your option) any later version.
  */
+
+#include <linux/config.h>
+
 #include "ppc_asm.tmpl"
 #include "ppc_defs.h"
 
        sync; \
        isync
 
-/* This instruction is not implemented on the PPC 603 or 601 */
-#define tlbia \
-       li      r4,128; \
-       mtctr   r4; \
-       lis     r4,KERNELBASE@h; \
-0:     tlbie   r4; \
-       addi    r4,r4,0x1000; \
+/*
+ * This instruction is not implemented on the PPC 603 or 601; however, on
+ * the 403GCX and 405GP tlbia IS defined and tlbie is not.
+ */
+
+#if !defined(CONFIG_4xx)
+#define tlbia                                  \
+       li      r4,128;                         \
+       mtctr   r4;                             \
+       lis     r4,KERNELBASE@h;                \
+0:     tlbie   r4;                             \
+       addi    r4,r4,0x1000;                   \
        bdnz    0b
+#endif
 
 /*
  * On APUS (Amiga PowerPC cpu upgrade board), we don't know the
index e3004c8f64dea24cff798596ef5cbbef4c7558f2..94a5bd74c4893dffaaec52b9897bf14cfa717e14 100644 (file)
@@ -1,4 +1,17 @@
-/* Register names */
+/* Condition Register Bit Fields */
+
+#define        cr0     0
+#define        cr1     1
+#define        cr2     2
+#define        cr3     3
+#define        cr4     4
+#define        cr5     5
+#define        cr6     6
+#define        cr7     7
+
+
+/* General Purpose Registers (GPRs) */
+
 #define        r0      0
 #define        r1      1
 #define        r2      2
@@ -32,6 +45,9 @@
 #define        r30     30
 #define        r31     31
 
+
+/* Floating Point Registers (FPRs) */
+
 #define        fr0     0
 #define        fr1     1
 #define        fr2     2
index 7bd21c277ad439b1d25a7bbcfbc964ee61e68f32..b858ea0d1e33c64937e2a751d1fb2d847ca9b0c2 100644 (file)
@@ -76,7 +76,7 @@ EXPORT_SYMBOL(ppc_local_bh_count);
 EXPORT_SYMBOL(kernel_flag);
 #endif /* __SMP__ */
 
-#ifndef CONFIG_8xx
+#if !defined(CONFIG_4xx) && !defined(CONFIG_8xx)
 EXPORT_SYMBOL(isa_io_base);
 EXPORT_SYMBOL(isa_mem_base);
 EXPORT_SYMBOL(pci_dram_offset);
@@ -219,8 +219,7 @@ EXPORT_SYMBOL(pmu_register_sleep_notifier);
 EXPORT_SYMBOL(pmu_unregister_sleep_notifier);
 EXPORT_SYMBOL(pmu_enable_irled);
 #endif CONFIG_PMAC_PBOOK
-EXPORT_SYMBOL(abort);
-#ifndef CONFIG_8xx
+#if defined(CONFIG_PMAC) || defined(CONFIG_ALL_PPC)
 EXPORT_SYMBOL(find_devices);
 EXPORT_SYMBOL(find_type_devices);
 EXPORT_SYMBOL(find_compatible_devices);
@@ -232,8 +231,9 @@ EXPORT_SYMBOL(pci_device_loc);
 EXPORT_SYMBOL(feature_set);
 EXPORT_SYMBOL(feature_clear);
 EXPORT_SYMBOL(feature_test);
-#endif
-#ifdef CONFIG_SCSI
+EXPORT_SYMBOL(device_is_compatible);
+#endif /* defined(CONFIG_PMAC) || defined(CONFIG_ALL_PPC) */
+#if defined(CONFIG_SCSI) && (defined(CONFIG_PMAC) || defined(CONFIG_ALL_PPC))
 EXPORT_SYMBOL(note_scsi_host);
 #endif
 EXPORT_SYMBOL(kd_mksound);
@@ -251,17 +251,16 @@ EXPORT_SYMBOL_NOVERS(memscan);
 EXPORT_SYMBOL_NOVERS(memcmp);
 
 EXPORT_SYMBOL(abs);
-#ifndef CONFIG_8xx
-EXPORT_SYMBOL(device_is_compatible);
-#endif
 
 #ifdef CONFIG_VT
 EXPORT_SYMBOL(screen_info);
 #endif
 
 EXPORT_SYMBOL(int_control);
+#if !defined(CONFIG_4xx)
 EXPORT_SYMBOL(timer_interrupt_intercept);
 EXPORT_SYMBOL(timer_interrupt);
+#endif
 extern unsigned long do_IRQ_intercept;
 EXPORT_SYMBOL(do_IRQ_intercept);
 EXPORT_SYMBOL(irq_desc);
index 1bfc63c63a8c057b91847f0ff9ad2509811dfaf8..e7f62c42947ef66b5dcb72b6a3886dedae409f68 100644 (file)
@@ -760,22 +760,6 @@ prep_init(unsigned long r3, unsigned long r4, unsigned long r5,
 
        prep_setup_pci_ptrs();
 
-#ifdef CONFIG_BLK_DEV_INITRD
-       /* take care of initrd if we have one */
-       if ( r4 )
-       {
-               initrd_start = r4 + KERNELBASE;
-               initrd_end = r5 + KERNELBASE;
-       }
-#endif /* CONFIG_BLK_DEV_INITRD */
-
-       /* take care of cmd line */
-       if ( r6  && (((char *) r6) != '\0'))
-       {
-               *(char *)(r7+KERNELBASE) = 0;
-               strcpy(cmd_line, (char *)(r6+KERNELBASE));
-       }
-
        ppc_md.setup_arch     = prep_setup_arch;
        ppc_md.setup_residual = prep_setup_residual;
        ppc_md.get_cpuinfo    = prep_get_cpuinfo;
index adeeefe33d256ed9216d1b828b023b71e71fe32a..403213883eba96cbd931feac7f212c12141921c3 100644 (file)
@@ -204,9 +204,15 @@ _switch_to(struct task_struct *prev, struct task_struct *new,
        if ( (prev->thread.regs && (prev->thread.regs->msr & MSR_VEC)) &&
             prev->thread.vrsave )
                giveup_altivec(prev);
-       if ( (new->last_processor != NO_PROC_ID) &&
+       /*
+        * The 750 doesn't broadcast invalidates with tlbie's
+        * so flush every processor switch.
+        *  -- Cort
+        */
+       if ( ((_get_PVR()>>16) == 8) &&
+            (new->last_processor != NO_PROC_ID) &&
             (new->last_processor != new->processor) && new->mm )
-               flush_tlb_mm(new->mm);
+            flush_tlb_mm(new->mm);
        prev->last_processor = prev->processor;
        current_set[smp_processor_id()] = new;
 #endif /* __SMP__ */
index 22dcf8cbef57347a98551582d8508e9562444547..049cde10f5bfa0fbd53e1b18f6ae27ef389ece49 100644 (file)
@@ -283,11 +283,6 @@ prom_init(int r3, int r4, prom_entry pp)
        int l;
        char *p, *d;
 
-#ifdef CONFIG_GEMINI
-       gemini_prom_init();
-       return;
-#endif /* CONFIG_GEMINI */
-
        /* check if we're apus, return if we are */
        if ( r3 == 0x61707573 )
                return;
index 2cf9ee71410a58af4fed2598cd7a1119a3fd92f6..d0c03685d348655c5747886d9e34d458d3706d9f 100644 (file)
@@ -30,6 +30,8 @@
 #include <asm/bootx.h>
 #include <asm/machdep.h>
 
+#include "oak_setup.h"
+
 extern void pmac_init(unsigned long r3,
                       unsigned long r4,
                       unsigned long r5,
@@ -67,11 +69,11 @@ extern void gemini_init(unsigned long r3,
                       unsigned long r7);
 
 extern boot_infos_t *boot_infos;
-extern char cmd_line[512];
 char saved_command_line[256];
 unsigned char aux_device_present;
 struct int_control_struct int_control;
 struct ide_machdep_calls ppc_ide_md;
+int parse_bootinfo(void);
 
 unsigned long ISA_DMA_THRESHOLD;
 unsigned long DMA_MODE_READ, DMA_MODE_WRITE;
@@ -84,14 +86,9 @@ int have_of = 0;
 #ifdef CONFIG_MAGIC_SYSRQ
 unsigned long SYSRQ_KEY;
 #endif /* CONFIG_MAGIC_SYSRQ */
-/* For MTX/MVME boards.. with Raven/Falcon Chipset
-      Real close to CHRP, but boot like PReP (via PPCbug)
-      There's probably a nicer way to do this.. --Troy */
-int is_powerplus = 0;
 
 struct machdep_calls ppc_md;
 
-
 /* copy of the residual data */
 #ifndef CONFIG_8xx
 extern unsigned char __res[sizeof(RESIDUAL)];
@@ -196,6 +193,7 @@ int get_cpuinfo(char *buffer)
        unsigned long len = 0;
        unsigned long bogosum = 0;
        unsigned long i;
+       unsigned short maj, min;
        
 #ifdef __SMP__
 #define CPU_PRESENT(x) (cpu_callin_map[(x)])
@@ -215,8 +213,8 @@ int get_cpuinfo(char *buffer)
                if ( i )
                        len += sprintf(len+buffer,"\n");
                len += sprintf(len+buffer,"processor\t: %lu\n",i);
-               len += sprintf(len+buffer,"cpu\t\t: ");
-       
+               len += sprintf(len+buffer,"cpu\t\t:  ");
+
                switch (GET_PVR >> 16)
                {
                case 1:
@@ -254,7 +252,7 @@ int get_cpuinfo(char *buffer)
                        len += sprintf(len+buffer, "860\n");
                        break;
                default:
-                       len += sprintf(len+buffer, "unknown (%lu)\n",
+                       len += sprintf(len+buffer, "unknown (%lx)\n",
                                       GET_PVR>>16);
                        break;
                }
@@ -294,8 +292,7 @@ int get_cpuinfo(char *buffer)
                        len += ppc_md.setup_residual(buffer + len);
                }
                
-               len += sprintf(len+buffer, "revision\t: %ld.%ld\n",
-                              (GET_PVR & 0xff00) >> 8, GET_PVR & 0xff);
+               len += sprintf(len+buffer, "revision\t: %hd.%hd\n", maj, min);
 
                len += sprintf(buffer+len, "bogomips\t: %lu.%02lu\n",
                               (CD(loops_per_sec)+2500)/500000,
@@ -341,49 +338,58 @@ unsigned long __init
 identify_machine(unsigned long r3, unsigned long r4, unsigned long r5,
                 unsigned long r6, unsigned long r7)
 {
+       int_control.int_sti = __no_use_sti;
+       int_control.int_cli = __no_use_cli;
+       int_control.int_save_flags = __no_use_save_flags;
+       int_control.int_restore_flags = __no_use_restore_flags;
 
-#ifndef CONFIG_8xx
-       if ( ppc_md.progress ) ppc_md.progress("id mach(): start", 0x100);
+       parse_bootinfo();
        
+       if ( ppc_md.progress ) ppc_md.progress("id mach(): start", 0x100);
+#if !defined(CONFIG_4xx) && !defined(CONFIG_8xx)
 #ifndef CONFIG_MACH_SPECIFIC
-       /* boot loader will tell us if we're APUS */
-       if ( r3 == 0x61707573 )
-       {
-               _machine = _MACH_apus;
-               r3 = 0;
-       }
-       /* prep boot loader tells us if we're prep or not */
-       else if ( *(unsigned long *)(KERNELBASE) == (0xdeadc0de) )
+       /* if we didn't get any bootinfo telling us what we are... */
+       if ( _machine == 0 )
        {
-               _machine = _MACH_prep;
-       } else
-       {
-               char *model;
-               struct device_node *root;
-
-               have_of = 1;
-
-               /* prom_init has already been called from __start */
-               if (boot_infos)
-                       relocate_nodes();
-
-               /* ask the OF info if we're a chrp or pmac */
-               /* we need to set _machine before calling finish_device_tree */
-               root = find_path_device("/");
-               if (root != 0) {
-                       /* assume pmac unless proven to be chrp -- Cort */
-                       _machine = _MACH_Pmac;
-                       model = get_property(root, "device_type", NULL);
-                       if (model && !strncmp("chrp", model, 4))
-                               _machine = _MACH_chrp;
-                       else {
-                               model = get_property(root, "model", NULL);
-                               if (model && !strncmp(model, "IBM", 3))
+               /* boot loader will tell us if we're APUS */
+               if ( r3 == 0x61707573 )
+               {
+                       _machine = _MACH_apus;
+                       r3 = 0;
+               }
+               /* prep boot loader tells us if we're prep or not */
+               else if ( *(unsigned long *)(KERNELBASE) == (0xdeadc0de) )
+               {
+                       _machine = _MACH_prep;
+               } else
+               {
+                       char *model;
+                       struct device_node *root;
+                       
+                       have_of = 1;
+                       
+                       /* prom_init has already been called from __start */
+                       if (boot_infos)
+                               relocate_nodes();
+                       
+                       /* ask the OF info if we're a chrp or pmac */
+                       /* we need to set _machine before calling finish_device_tree */
+                       root = find_path_device("/");
+                       if (root != 0) {
+                               /* assume pmac unless proven to be chrp -- Cort */
+                               _machine = _MACH_Pmac;
+                               model = get_property(root, "device_type", NULL);
+                               if (model && !strncmp("chrp", model, 4))
                                        _machine = _MACH_chrp;
+                               else {
+                                       model = get_property(root, "model", NULL);
+                                       if (model && !strncmp(model, "IBM", 3))
+                                               _machine = _MACH_chrp;
+                               }
                        }
+                       
+                       finish_device_tree();
                }
-
-               finish_device_tree();
        }
 #endif /* CONFIG_MACH_SPECIFIC */
 
@@ -444,11 +450,6 @@ identify_machine(unsigned long r3, unsigned long r4, unsigned long r5,
                cmd_line[sizeof(cmd_line) - 1] = 0;
        }
 
-       int_control.int_sti = __no_use_sti;
-       int_control.int_cli = __no_use_cli;
-       int_control.int_save_flags = __no_use_save_flags;
-       int_control.int_restore_flags = __no_use_restore_flags;
-
        switch (_machine)
        {
        case _MACH_Pmac:
@@ -469,7 +470,7 @@ identify_machine(unsigned long r3, unsigned long r4, unsigned long r5,
        case _MACH_gemini:
                gemini_init(r3, r4, r5, r6, r7);
                break;
-#endif         
+#endif
        default:
                printk("Unknown machine type in identify_machine!\n");
        }
@@ -478,14 +479,15 @@ identify_machine(unsigned long r3, unsigned long r4, unsigned long r5,
                extern int __map_without_bats;
                __map_without_bats = 1;
        }
-#else /* CONFIG_8xx */
-       int_control.int_sti = __no_use_sti;
-       int_control.int_cli = __no_use_cli;
-       int_control.int_save_flags = __no_use_save_flags;
-       int_control.int_restore_flags = __no_use_restore_flags;
-
+#else
+#if defined(CONFIG_4xx)
+       oak_init(r3, r4, r5, r6, r7);
+#elif defined(CONFIG_8xx)
         m8xx_init(r3, r4, r5, r6, r7);
-#endif
+#else
+#error "No board type has been defined for identify_machine()!"
+#endif /* CONFIG_4xx */
+#endif /* !CONFIG_4xx && !CONFIG_8xx */
 
        /* Look for mem= option on command line */
        if (strstr(cmd_line, "mem=")) {
@@ -513,6 +515,53 @@ identify_machine(unsigned long r3, unsigned long r4, unsigned long r5,
        ppc_md.ppc_machine = _machine;
 
        if ( ppc_md.progress ) ppc_md.progress("id mach(): done", 0x200);
+
+       return 0;
+}
+
+int parse_bootinfo(void)
+{
+       struct bi_record *rec;
+       extern char _end[];
+
+       rec = (struct bi_record *)PAGE_ALIGN((ulong)_end);
+       if ( rec->tag != BI_FIRST )
+       {
+               /*
+                * This 0x10000 offset is a terrible hack but it will go away when
+                * we have the bootloader handle all the relocation and
+                * prom calls -- Cort
+                */
+               rec = (struct bi_record *)PAGE_ALIGN((ulong)_end+0x10000);
+               if ( rec->tag != BI_FIRST )
+                       return -1;
+       }
+
+       for ( ; rec->tag != BI_LAST ;
+             rec = (struct bi_record *)((ulong)rec + rec->size) )
+       {
+               ulong *data = rec->data;
+               switch (rec->tag)
+               {
+               case BI_CMD_LINE:
+                       memcpy(cmd_line, (void *)data, rec->size);
+                       break;
+#ifdef CONFIG_BLK_DEV_INITRD
+               case BI_INITRD:
+                       initrd_start = data[0];
+                       initrd_end = data[0] + rec->size;
+                       break;
+#endif /* CONFIG_BLK_DEV_INITRD */
+#ifndef CONFIG_MACH_SPECIFIC
+               case BI_MACHTYPE:
+                       _machine = data[0];
+                       have_of = data[1];
+                       break;
+#endif /* CONFIG_MACH_SPECIFIC */
+                       
+               }
+       }
+
        return 0;
 }
 
index a213613404b89a0597fef783bf276f612ba2b4cf..3293b284c7b51d20d4452c32b5cc164fa27849f2 100644 (file)
@@ -39,6 +39,7 @@
 #include <asm/gemini.h>
 
 #include "time.h"
+#include "open_pic.h"
 int smp_threads_ready = 0;
 volatile int smp_commenced = 0;
 int smp_num_cpus = 1;
@@ -309,6 +310,7 @@ void __init smp_boot_cpus(void)
                        openpic_enable_IPI(i);
                 cpu_nr = (readb(GEMINI_CPUSTAT) & GEMINI_CPU_COUNT_MASK)>>2;
                 cpu_nr = (cpu_nr == 0) ? 4 : cpu_nr;
+cpu_nr = 2;            
                break;
        }
 
index 07e45db6b518af318b7df7729bbd6ffdda4ac3a8..47fef50d40463270a3e5f1a3a99ea056c4f96ad0 100644 (file)
@@ -128,6 +128,7 @@ MachineCheckException(struct pt_regs *regs)
        _exception(SIGSEGV, regs);      
 }
 
+#if defined(CONFIG_ALTIVEC)
 void
 AltiVecUnavailable(struct pt_regs *regs)
 {
@@ -163,6 +164,7 @@ AltiVecUnavailable(struct pt_regs *regs)
        /* enable altivec for the task on return */
        regs->msr |= MSR_VEC;
 }
+#endif /* CONFIG_ALTIVEC */
 
 void
 UnknownException(struct pt_regs *regs)
@@ -191,6 +193,20 @@ RunModeException(struct pt_regs *regs)
 void
 ProgramCheckException(struct pt_regs *regs)
 {
+#if defined(CONFIG_4xx)
+       unsigned int instr;
+       unsigned int esr = mfspr(SPRN_ESR);
+
+       if (esr & ESR_PTR) {
+#if defined(CONFIG_XMON) || defined(CONFIG_KGDB)
+               if (debugger_bpt(regs))
+                       return;
+#endif
+               _exception(SIGTRAP, regs);
+       } else {
+               _exception(SIGILL, regs);
+       }
+#else
        if (regs->msr & 0x100000) {
                /* IEEE FP exception */
                _exception(SIGFPE, regs);
@@ -204,6 +220,7 @@ ProgramCheckException(struct pt_regs *regs)
        } else {
                _exception(SIGILL, regs);
        }
+#endif
 }
 
 void
diff --git a/arch/ppc/mbx_defconfig b/arch/ppc/mbx_defconfig
deleted file mode 100644 (file)
index 7080efb..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-
-#
-# Platform support
-#
-CONFIG_PPC=y
-# CONFIG_6xx is not set
-CONFIG_8xx=y
-# CONFIG_PMAC is not set
-# CONFIG_PREP is not set
-# CONFIG_CHRP is not set
-# CONFIG_ALL_PPC is not set
-# CONFIG_APUS is not set
-CONFIG_MBX=y
-CONFIG_MACH_SPECIFIC=y
-# CONFIG_SMP is not set
-CONFIG_SERIAL_CONSOLE=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-# CONFIG_MODULES is not set
-CONFIG_PCI=y
-# CONFIG_PCI_QUIRKS is not set
-CONFIG_PCI_OLD_PROC=y
-CONFIG_NET=y
-# CONFIG_SYSCTL is not set
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_BINFMT_ELF=y
-CONFIG_KERNEL_ELF=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_BINFMT_JAVA is not set
-# CONFIG_PARPORT is not set
-# CONFIG_VGA_CONSOLE is not set
-# CONFIG_FB is not set
-# CONFIG_PMAC_PBOOK is not set
-# CONFIG_MAC_KEYBOARD is not set
-# CONFIG_MAC_FLOPPY is not set
-# CONFIG_MAC_SERIAL is not set
-# CONFIG_ADBMOUSE is not set
-# CONFIG_BLK_DEV_IDE_PMAC is not set
-# CONFIG_PROC_DEVICETREE is not set
-# CONFIG_KGDB is not set
-# CONFIG_XMON is not set
-# CONFIG_TOTALMP is not set
-# CONFIG_BOOTX_TEXT is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-CONFIG_BLK_DEV_IDE=y
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_BLK_DEV_IDECD is not set
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_RZ1000 is not set
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_BLK_DEV_IDEDMA=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-CONFIG_IDEDMA_PCI_AUTO=y
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_VIA82CXXX is not set
-# CONFIG_BLK_DEV_CMD646 is not set
-CONFIG_BLK_DEV_SL82C105=y
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_BLK_DEV_LOOP is not set
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_MD is not set
-# CONFIG_BLK_DEV_RAM is not set
-# CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE_PARPORT=y
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# Networking options
-#
-# CONFIG_PACKET is not set
-# CONFIG_NETLINK is not set
-# CONFIG_FIREWALL is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-CONFIG_IP_PNP=y
-CONFIG_IP_PNP_BOOTP=y
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_IP_ROUTER is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_ALIAS is not set
-# CONFIG_SYN_COOKIES is not set
-# CONFIG_INET_RARP is not set
-CONFIG_IP_NOSR=y
-CONFIG_SKB_LARGE=y
-# CONFIG_IPV6 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_LLC is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-CONFIG_CPU_IS_SLOW=y
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# SCSI support
-#
-# CONFIG_SCSI is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_NET_ETHERNET=y
-# CONFIG_MACE is not set
-# CONFIG_BMAC is not set
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_RTL8139 is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_ACENIC is not set
-# CONFIG_NET_ISA is not set
-# CONFIG_NET_EISA is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-# CONFIG_DLCI is not set
-# CONFIG_PPP is not set
-# CONFIG_SLIP is not set
-# CONFIG_NET_RADIO is not set
-# CONFIG_TR is not set
-# CONFIG_SHAPER is not set
-# CONFIG_HOSTESS_SV11 is not set
-# CONFIG_COSA is not set
-# CONFIG_RCPCI is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Console drivers
-#
-
-#
-# Character devices
-#
-CONFIG_VT=y
-# CONFIG_VT_CONSOLE is not set
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-# CONFIG_UNIX98_PTYS is not set
-# CONFIG_MOUSE is not set
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_WATCHDOG is not set
-# CONFIG_NVRAM is not set
-# CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Joystick support
-#
-# CONFIG_JOYSTICK is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-
-#
-# Filesystems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_FAT_FS is not set
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_ISO9660_FS is not set
-# CONFIG_JOLIET is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_ROOT_NFS=y
-# CONFIG_NFSD is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-# CONFIG_SMB_FS is not set
-# CONFIG_NCP_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_MAC_PARTITION is not set
-# CONFIG_SMD_DISKLABEL is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_NLS is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
index 2b07c722764b5c8858f7b12d59241304e054ee08..43f53ef4d3c29333a3a980d6b1ee771f66f5bd3d 100644 (file)
@@ -8,6 +8,10 @@
 # Note 2! The CFLAGS definition is now in the main makefile...
 
 O_TARGET := mm.o
-O_OBJS = fault.o init.o extable.o
+O_OBJS = fault.o init.o mem_pieces.o extable.o
+
+ifeq ($(CONFIG_4xx),y)
+O_OBJS += 4xx_tlb.o
+endif
 
 include $(TOPDIR)/Rules.make
index aa4f97acd0cd5a0af2a8d0f21676166d16d8d342..0427f21666c28993a84a07cabf4040168961a7dc 100644 (file)
@@ -52,36 +52,36 @@ void bad_page_fault(struct pt_regs *, unsigned long);
 void do_page_fault(struct pt_regs *, unsigned long, unsigned long);
 
 /*
- * The error_code parameter is DSISR for a data fault, SRR1 for
- * an instruction fault.
+ * For 600- and 800-family processors, the error_code parameter is DSISR
+ * for a data fault, SRR1 for an instruction fault. For 400-family processors
+ * the error_code parameter is ESR for a data fault, 0 for an instruction
+ * fault.
  */
 void do_page_fault(struct pt_regs *regs, unsigned long address,
                   unsigned long error_code)
 {
        struct vm_area_struct * vma;
        struct mm_struct *mm = current->mm;
+#if defined(CONFIG_4xx)
+       int is_write = error_code & ESR_DST;
+#else
+       int is_write = error_code & 0x02000000;
+#endif /* CONFIG_4xx */
 
-       /*printk("address: %08lx nip:%08lx code: %08lx %s%s%s%s%s%s\n",
-              address,regs->nip,error_code,
-              (error_code&0x40000000)?"604 tlb&htab miss ":"",
-              (error_code&0x20000000)?"603 tlbmiss ":"",
-              (error_code&0x02000000)?"write ":"",
-              (error_code&0x08000000)?"prot ":"",
-              (error_code&0x80000000)?"I/O ":"",
-              (regs->trap == 0x400)?"instr":"data"
-              );*/
-              
 #if defined(CONFIG_XMON) || defined(CONFIG_KGDB)
        if (debugger_fault_handler && regs->trap == 0x300) {
                debugger_fault_handler(regs);
                return;
        }
+#if !defined(CONFIG_4xx)
        if (error_code & 0x00400000) {
                /* DABR match */
                if (debugger_dabr_match(regs))
                        return;
        }
-#endif
+#endif /* !CONFIG_4xx */
+#endif /* CONFIG_XMON || CONFIG_KGDB */
+
        if (in_interrupt()) {
                static int complained;
                if (complained < 20) {
@@ -107,12 +107,12 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
                goto bad_area;
 
 good_area:
-#ifdef CONFIG_6xx
+#if defined(CONFIG_6xx)
        if (error_code & 0x95700000)
                /* an error such as lwarx to I/O controller space,
                   address matching DABR, eciwx, etc. */
 #endif /* CONFIG_6xx */
-#ifdef CONFIG_8xx
+#if defined(CONFIG_8xx)
         /* The MPC8xx seems to always set 0x80000000, which is
          * "undefined".  Of those that can be set, this is the only
          * one which seems bad.
@@ -124,7 +124,7 @@ good_area:
        
        
        /* a write */
-       if (error_code & 0x02000000) {
+       if (is_write) {
                if (!(vma->vm_flags & VM_WRITE))
                        goto bad_area;
        /* a read */
@@ -135,7 +135,7 @@ good_area:
                if (!(vma->vm_flags & (VM_READ | VM_EXEC)))
                        goto bad_area;
        }
-       if (!handle_mm_fault(current, vma, address, error_code & 0x02000000))
+       if (!handle_mm_fault(current, vma, address, is_write))
                goto bad_area;
        up(&mm->mmap_sem);
        /*
index da4f6fb05e17da45899e7913596d5df3743aa1e4..d4ca2fb8257ad6551e740bf71ffb7c75cf7eff12 100644 (file)
@@ -40,6 +40,7 @@
 #include <linux/blk.h>         /* for initrd_* */
 #endif
 
+#include <asm/pgalloc.h>
 #include <asm/prom.h>
 #include <asm/io.h>
 #include <asm/mmu_context.h>
 #include <asm/amigahw.h>
 #include <asm/gemini.h>
 
+#include "mem_pieces.h"
+
+#define        PGTOKB(pages)   (((pages) * PAGE_SIZE) >> 10)
+
 int prom_trashed;
 atomic_t next_mmu_context;
 unsigned long *end_of_DRAM;
@@ -71,7 +76,6 @@ extern char __prep_begin, __prep_end;
 extern char __pmac_begin, __pmac_end;
 extern char __apus_begin, __apus_end;
 extern char __openfirmware_begin, __openfirmware_end;
-char *klimit = _end;
 struct device_node *memory_node;
 unsigned long ioremap_base;
 unsigned long ioremap_bot;
@@ -98,34 +102,13 @@ void map_page(unsigned long va, unsigned long pa, int flags);
 extern void die_if_kernel(char *,struct pt_regs *,long);
 extern void show_net_buffers(void);
 
-
-/*
- * The following stuff defines a data structure for representing
- * areas of memory as an array of (address, length) pairs, and
- * procedures for manipulating them.
- */
-#define MAX_MEM_REGIONS        32
-
-struct mem_pieces {
-       int n_regions;
-       struct reg_property regions[MAX_MEM_REGIONS];
-};
 struct mem_pieces phys_mem;
-struct mem_pieces phys_avail;
-
-static void remove_mem_piece(struct mem_pieces *, unsigned, unsigned, int);
-static void set_phys_avail(void);
-void *find_mem_piece(unsigned, unsigned);
-static void print_mem_pieces(struct mem_pieces *);
-#if defined(CONFIG_PREP) || defined(CONFIG_APUS) || defined(CONFIG_ALL_PPC)
-static void append_mem_piece(struct mem_pieces *, unsigned, unsigned);
-#endif
 
 extern struct task_struct *current_set[NR_CPUS];
 
 PTE *Hash, *Hash_end;
 unsigned long Hash_size, Hash_mask;
-#ifndef CONFIG_8xx
+#if !defined(CONFIG_4xx) && !defined(CONFIG_8xx)
 #ifdef CONFIG_PPC64
 unsigned long long _SDR1;
 #else
@@ -174,12 +157,10 @@ static inline unsigned long p_mapped_by_bats(unsigned long pa)
        return 0;
 }
 
-#else /* CONFIG_8xx */
-
-/* 8xx doesn't have BATs */
+#else /* CONFIG_4xx || CONFIG_8xx */
 #define v_mapped_by_bats(x)    (0UL)
 #define p_mapped_by_bats(x)    (0UL)
-#endif /* CONFIG_8xx */
+#endif /* !CONFIG_4xx && !CONFIG_8xx */
 
 /*
  * this tells the system to map all of ram with the segregs
@@ -422,7 +403,7 @@ __ioremap(unsigned long addr, unsigned long size, unsigned long flags)
        
        if (mem_init_done) {
                struct vm_struct *area;
-               area = get_vm_area(size, VM_ALLOC);
+               area = get_vm_area(size, VM_IOREMAP);
                if (area == 0)
                        return NULL;
                v = VMALLOC_VMADDR(area->addr);
@@ -593,195 +574,14 @@ mmu_context_overflow(void)
 }
 #endif /* CONFIG_8xx */
 
-/*
- * Set phys_avail to phys_mem less the kernel text/data/bss.
- */
-static void __init set_phys_avail(void)
-{
-       unsigned long kstart, ksize;
-
-       /* we can't call the prom any more at this stage, so
-          all of memory is available (after klimit) */
-       phys_avail = phys_mem;
-
-       /*
-        * phys_avail records memory we can use.
-        * Make sure the kernel text/data/bss is not in it.
-        */
-       kstart = __pa(_stext);  /* should be 0 */
-       ksize = PAGE_ALIGN(klimit - _stext);
-       remove_mem_piece(&phys_avail, kstart, ksize, 0);
-       remove_mem_piece(&phys_avail, 0, 0x4000, 0);
-
-#ifdef CONFIG_BLK_DEV_INITRD
-       if (initrd_start) {
-               /*
-                * Remove the initialized ramdisk from the available memory.
-                */
-               remove_mem_piece(&phys_avail, __pa(initrd_start),
-                                initrd_end - initrd_start, 1);
-       }
-#endif /* CONFIG_BLK_DEV_INITRD */
-}
-
-/*
- * Scan a region for a piece of a given size with the required alignment.
- */
-void __init *find_mem_piece(unsigned size, unsigned align)
-{
-       int i;
-       unsigned a, e;
-       struct mem_pieces *mp = &phys_avail;
-
-       for (i = 0; i < mp->n_regions; ++i) {
-               a = mp->regions[i].address;
-               e = a + mp->regions[i].size;
-               a = (a + align - 1) & -align;
-               if (a + size <= e) {
-                       remove_mem_piece(mp, a, size, 1);
-                       return __va(a);
-               }
-       }
-       printk("Couldn't find %u bytes at %u alignment\n", size, align);
-       abort();
-       return NULL;
-}
-
-/*
- * Remove some memory from an array of pieces
- */
-static void __init 
-remove_mem_piece(struct mem_pieces *mp, unsigned start, unsigned size,
-                int must_exist)
-{
-       int i, j;
-       unsigned end, rs, re;
-       struct reg_property *rp;
-
-       end = start + size;
-       for (i = 0, rp = mp->regions; i < mp->n_regions; ++i, ++rp) {
-               if (end > rp->address && start < rp->address + rp->size)
-                       break;
-       }
-       if (i >= mp->n_regions) {
-               if (must_exist)
-                       printk("remove_mem_piece: [%x,%x) not in any region\n",
-                              start, end);
-               return;
-       }
-       for (; i < mp->n_regions && end > rp->address; ++i, ++rp) {
-               rs = rp->address;
-               re = rs + rp->size;
-               if (must_exist && (start < rs || end > re)) {
-                       printk("remove_mem_piece: bad overlap [%x,%x) with",
-                              start, end);
-                       print_mem_pieces(mp);
-                       must_exist = 0;
-               }
-               if (start > rs) {
-                       rp->size = start - rs;
-                       if (end < re) {
-                               /* need to split this entry */
-                               if (mp->n_regions >= MAX_MEM_REGIONS)
-                                       panic("eek... mem_pieces overflow");
-                               for (j = mp->n_regions; j > i + 1; --j)
-                                       mp->regions[j] = mp->regions[j-1];
-                               ++mp->n_regions;
-                               rp[1].address = end;
-                               rp[1].size = re - end;
-                       }
-               } else {
-                       if (end < re) {
-                               rp->address = end;
-                               rp->size = re - end;
-                       } else {
-                               /* need to delete this entry */
-                               for (j = i; j < mp->n_regions - 1; ++j)
-                                       mp->regions[j] = mp->regions[j+1];
-                               --mp->n_regions;
-                               --i;
-                               --rp;
-                       }
-               }
-       }
-}
-
-static void __init print_mem_pieces(struct mem_pieces *mp)
-{
-       int i;
-
-       for (i = 0; i < mp->n_regions; ++i)
-               printk(" [%x, %x)", mp->regions[i].address,
-                      mp->regions[i].address + mp->regions[i].size);
-       printk("\n");
-}
-
-#if defined(CONFIG_PREP) || defined(CONFIG_APUS) || defined(CONFIG_ALL_PPC)
-/*
- * Add some memory to an array of pieces
- */
-static void __init
-append_mem_piece(struct mem_pieces *mp, unsigned start, unsigned size)
-{
-       struct reg_property *rp;
-
-       if (mp->n_regions >= MAX_MEM_REGIONS)
-               return;
-       rp = &mp->regions[mp->n_regions++];
-       rp->address = start;
-       rp->size = size;
-}
-#endif
-
-#ifndef CONFIG_8xx
-static void hash_init(void);
+#if !defined(CONFIG_4xx) && !defined(CONFIG_8xx)
 static void get_mem_prop(char *, struct mem_pieces *);
-static void sort_mem_pieces(struct mem_pieces *);
-static void coalesce_mem_pieces(struct mem_pieces *);
-
-static void __init sort_mem_pieces(struct mem_pieces *mp)
-{
-       unsigned long a, s;
-       int i, j;
-
-       for (i = 1; i < mp->n_regions; ++i) {
-               a = mp->regions[i].address;
-               s = mp->regions[i].size;
-               for (j = i - 1; j >= 0; --j) {
-                       if (a >= mp->regions[j].address)
-                               break;
-                       mp->regions[j+1] = mp->regions[j];
-               }
-               mp->regions[j+1].address = a;
-               mp->regions[j+1].size = s;
-       }
-}
-
-static void __init coalesce_mem_pieces(struct mem_pieces *mp)
-{
-       unsigned long a, s, ns;
-       int i, j, d;
-
-       d = 0;
-       for (i = 0; i < mp->n_regions; i = j) {
-               a = mp->regions[i].address;
-               s = mp->regions[i].size;
-               for (j = i + 1; j < mp->n_regions
-                            && mp->regions[j].address - a <= s; ++j) {
-                       ns = mp->regions[j].address + mp->regions[j].size - a;
-                       if (ns > s)
-                               s = ns;
-               }
-               mp->regions[d].address = a;
-               mp->regions[d].size = s;
-               ++d;
-       }
-       mp->n_regions = d;
-}
 
+#if defined(CONFIG_PMAC) || defined(CONFIG_CHRP) || defined(CONFIG_ALL_PPC)
 /*
  * Read in a property describing some pieces of memory.
  */
+
 static void __init get_mem_prop(char *name, struct mem_pieces *mp)
 {
        struct reg_property *rp;
@@ -797,9 +597,10 @@ static void __init get_mem_prop(char *name, struct mem_pieces *mp)
        memcpy(mp->regions, rp, s);
 
        /* Make sure the pieces are sorted. */
-       sort_mem_pieces(mp);
-       coalesce_mem_pieces(mp);
+       mem_pieces_sort(mp);
+       mem_pieces_coalesce(mp);
 }
+#endif /* CONFIG_PMAC || CONFIG_CHRP || CONFIG_ALL_PPC */
 
 /*
  * Set up one of the I/D BAT (block address translation) register pairs.
@@ -936,7 +737,7 @@ static void __init *MMU_get_page(void)
        } else if (init_bootmem_done) {
                p = alloc_bootmem_pages(PAGE_SIZE);
        } else {
-               p = find_mem_piece(PAGE_SIZE, PAGE_SIZE);
+               p = mem_pieces_find(PAGE_SIZE, PAGE_SIZE);
        }
        if (p == 0)
                panic("couldn't get a page in MMU_get_page");
@@ -997,18 +798,32 @@ void __init free_initmem(void)
                         num_openfirmware_pages );
        
        printk ("Freeing unused kernel memory: %ldk init",
-               (num_freed_pages * PAGE_SIZE) >> 10);
+               PGTOKB(num_freed_pages));
+
        if ( num_prep_pages )
-               printk(" %ldk prep",(num_prep_pages*PAGE_SIZE)>>10);
+               printk(" %ldk prep", PGTOKB(num_prep_pages));
        if ( num_pmac_pages )
-               printk(" %ldk pmac",(num_pmac_pages*PAGE_SIZE)>>10);
+               printk(" %ldk pmac", PGTOKB(num_pmac_pages));
        if ( num_openfirmware_pages )
-               printk(" %ldk open firmware",(num_openfirmware_pages*PAGE_SIZE)>>10);
+               printk(" %ldk open firmware", PGTOKB(num_openfirmware_pages));
        if ( num_apus_pages )
-               printk(" %ldk apus",(num_apus_pages*PAGE_SIZE)>>10);
+               printk(" %ldk apus", PGTOKB(num_apus_pages));
        printk("\n");
 }
 
+#ifdef CONFIG_BLK_DEV_INITRD
+void free_initrd_mem(unsigned long start, unsigned long end)
+{
+       for (; start < end; start += PAGE_SIZE) {
+               ClearPageReserved(mem_map + MAP_NR(start));
+               set_page_count(mem_map+MAP_NR(start), 1);
+               free_page(start);
+               totalram_pages++;
+       }
+       printk ("Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
+}
+#endif
+
 /*
  * Do very early mm setup such as finding the size of memory
  * and setting up the hash table.
@@ -1152,7 +967,7 @@ void __init do_init_bootmem(void)
                                    __pa(end_of_DRAM) >> PAGE_SHIFT);
 
        /* remove the bootmem bitmap from the available memory */
-       remove_mem_piece(&phys_avail, start, boot_mapsize, 1);
+       mem_pieces_remove(&phys_avail, start, boot_mapsize, 1);
        /* add everything in phys_avail into the bootmem map */
        for (i = 0; i < phys_avail.n_regions; ++i)
                free_bootmem(phys_avail.regions[i].address,
@@ -1213,15 +1028,21 @@ void __init paging_init(void)
        empty_bad_page = alloc_bootmem_pages(PAGE_SIZE);
        empty_bad_page_table = alloc_bootmem_pages(PAGE_SIZE);
        {
-               unsigned int zones_size[2];
+               unsigned int zones_size[MAX_NR_ZONES], i;
                /*
-                * All pages are DMA-able so this is wrong - the zone code is assuming
-                * both regions have a value so this is necessary for now.
+                * All pages are DMA-able so this is wrong - the zone code is
+                * assuming both regions have a value so this is necessary for
+                * now.
                 * -- Cort
                 */
-               zones_size[0] = virt_to_phys(end_of_DRAM-(1<<20)) >> PAGE_SHIFT;
-               zones_size[1] = (1<<20) >> PAGE_SHIFT;
-
+#if 1
+               for ( i = 1; i < MAX_NR_ZONES; i++ )
+                       zones_size[i] = 1<<MAX_ORDER;
+               zones_size[0] = (virt_to_phys(end_of_DRAM) >> PAGE_SHIFT) -
+                       ((MAX_NR_ZONES-1)*(1<<MAX_ORDER));
+#else
+               zones_size[0] = virt_to_phys(end_of_DRAM) >> PAGE_SHIFT;
+#endif
                free_area_init(zones_size);
        }
 }
@@ -1232,8 +1053,9 @@ void __init mem_init(void)
        int codepages = 0;
        int datapages = 0;
        int initpages = 0;
+#if defined(CONFIG_CHRP) || defined(CONFIG_ALL_PPC)    
        extern unsigned int rtas_data, rtas_size;
-
+#endif /* defined(CONFIG_CHRP) || defined(CONFIG_ALL_PPC) */
        max_mapnr = max_low_pfn;
        high_memory = (void *) __va(max_low_pfn * PAGE_SIZE);
        num_physpages = max_mapnr;      /* RAM is assumed contiguous */
@@ -1249,11 +1071,13 @@ void __init mem_init(void)
        }
 #endif /* CONFIG_BLK_DEV_INITRD */
 
+#if defined(CONFIG_CHRP) || defined(CONFIG_ALL_PPC)    
        /* mark the RTAS pages as reserved */
        if ( rtas_data )
-               for (addr = (rtas_data+PAGE_OFFSET); addr < PAGE_ALIGN(PAGE_OFFSET+rtas_data+rtas_size) ;
-                    rtas_data += PAGE_SIZE)
+               for (addr = rtas_data; addr < PAGE_ALIGN(rtas_data+rtas_size) ;
+                    addr += PAGE_SIZE)
                        SetPageReserved(mem_map + MAP_NR(addr));
+#endif /* defined(CONFIG_CHRP) || defined(CONFIG_ALL_PPC) */
        
        for (addr = PAGE_OFFSET; addr < (unsigned long)end_of_DRAM;
             addr += PAGE_SIZE) {
@@ -1277,7 +1101,7 @@ void __init mem_init(void)
        mem_init_done = 1;
 }
 
-#ifndef CONFIG_8xx
+#if !defined(CONFIG_4xx) && !defined(CONFIG_8xx)
 #if defined(CONFIG_PMAC) || defined(CONFIG_CHRP) || defined(CONFIG_ALL_PPC)
 /*
  * On systems with Open Firmware, collect information about
@@ -1339,7 +1163,7 @@ unsigned long __init *pmac_find_end_of_memory(void)
                phys_mem.n_regions = 1;
        }
 
-       set_phys_avail();
+       set_phys_avail(&phys_mem);
 
 #undef RAM_LIMIT
        return __va(total);
@@ -1368,8 +1192,8 @@ unsigned long __init *prep_find_end_of_memory(void)
                total = 0x02000000;
                printk("Ramsize default to be %ldM\n", total>>20);
        }
-       append_mem_piece(&phys_mem, 0, total);
-       set_phys_avail();
+       mem_pieces_append(&phys_mem, 0, total);
+       set_phys_avail(&phys_mem);
 
        return (__va(total));
 }
@@ -1391,7 +1215,7 @@ unsigned long __init *gemini_find_end_of_memory(void)
        phys_mem.n_regions = 1;
        
        ret = __va(phys_mem.regions[0].size);
-       set_phys_avail();
+       set_phys_avail(&phys_mem);
        return ret;
 }
 #endif /* defined(CONFIG_GEMINI) */
@@ -1427,8 +1251,8 @@ unsigned long __init *apus_find_end_of_memory(void)
        }
 
        /* Now register the memory block. */
-       append_mem_piece(&phys_mem, memory[0].addr, memory[0].size);
-       set_phys_avail();
+       mem_pieces_append(&phys_mem, memory[0].addr, memory[0].size);
+       set_phys_avail(&phys_mem);
 
        /* Remove the memory chunks that are controlled by special
            Phase5 hardware. */
@@ -1442,8 +1266,8 @@ unsigned long __init *apus_find_end_of_memory(void)
                if (shadow)
                {
                        top -= HARDWARE_MAPPED_SIZE;
-                       remove_mem_piece(&phys_avail, top,
-                                        HARDWARE_MAPPED_SIZE, 0);
+                       mem_pieces_remove(&phys_avail, top,
+                                         HARDWARE_MAPPED_SIZE, 0);
                }
 
                /* Remove the upper 512KB where the PPC exception
@@ -1451,9 +1275,9 @@ unsigned long __init *apus_find_end_of_memory(void)
                top -= HARDWARE_MAPPED_SIZE;
 #if 0
                /* This would be neat, but it breaks on A3000 machines!? */
-               remove_mem_piece(&phys_avail, top, 16384, 0);
+               mem_pieces_remove(&phys_avail, top, 16384, 0);
 #else
-               remove_mem_piece(&phys_avail, top, HARDWARE_MAPPED_SIZE, 0);
+               mem_pieces_remove(&phys_avail, top, HARDWARE_MAPPED_SIZE, 0);
 #endif
 
        }
@@ -1512,7 +1336,7 @@ static void __init hash_init(void)
        if ( ppc_md.progress ) ppc_md.progress("hash:find piece", 0x322);
        /* Find some memory for the hash table. */
        if ( Hash_size )
-               Hash = find_mem_piece(Hash_size, Hash_size);
+               Hash = mem_pieces_find(Hash_size, Hash_size);
        else
                Hash = 0;
 
@@ -1590,7 +1414,7 @@ unsigned long __init *m8xx_find_end_of_memory(void)
        ret = __va(phys_mem.regions[0].address+
                   phys_mem.regions[0].size);
 
-       set_phys_avail();
+       set_phys_avail(&phys_mem);
        return ret;
 }
 #endif /* ndef CONFIG_8xx */
diff --git a/arch/ppc/mm/mem_pieces.c b/arch/ppc/mm/mem_pieces.c
new file mode 100644 (file)
index 0000000..138b2a4
--- /dev/null
@@ -0,0 +1,224 @@
+/*
+ *    Copyright (c) 1996 Paul Mackerras <paulus@cs.anu.edu.au>
+ *      Changes to accomodate Power Macintoshes.
+ *    Cort Dougan <cort@cs.nmt.edu>
+ *      Rewrites.
+ *    Grant Erickson <grant@lcse.umn.edu>
+ *      General rework and split from mm/init.c.
+ *
+ *    Module name: mem_pieces.c
+ *
+ *    Description:
+ *      Routines and data structures for manipulating and representing
+ *      phyiscal memory extents (i.e. address/length pairs).
+ *
+ */
+
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/stddef.h>
+#include <linux/blk.h>
+
+#include <asm/page.h>
+#include <asm/prom.h>
+
+#include "mem_pieces.h"
+
+extern char _start[], _end[];
+extern char _stext[], etext[];
+
+char *klimit = _end;
+
+struct mem_pieces phys_avail;
+
+static void mem_pieces_print(struct mem_pieces *);
+
+/*
+ * Scan a region for a piece of a given size with the required alignment.
+ */
+void __init *
+mem_pieces_find(unsigned int size, unsigned int align)
+{
+       int i;
+       unsigned a, e;
+       struct mem_pieces *mp = &phys_avail;
+
+       for (i = 0; i < mp->n_regions; ++i) {
+               a = mp->regions[i].address;
+               e = a + mp->regions[i].size;
+               a = (a + align - 1) & -align;
+               if (a + size <= e) {
+                       mem_pieces_remove(mp, a, size, 1);
+                       return __va(a);
+               }
+       }
+       panic("Couldn't find %u bytes at %u alignment\n", size, align);
+       
+       return NULL;
+}
+
+/*
+ * Remove some memory from an array of pieces
+ */
+void __init 
+mem_pieces_remove(struct mem_pieces *mp, unsigned int start, unsigned int size,
+                 int must_exist)
+{
+       int i, j;
+       unsigned int end, rs, re;
+       struct reg_property *rp;
+
+       end = start + size;
+       for (i = 0, rp = mp->regions; i < mp->n_regions; ++i, ++rp) {
+               if (end > rp->address && start < rp->address + rp->size)
+                       break;
+       }
+       if (i >= mp->n_regions) {
+               if (must_exist)
+                       printk("mem_pieces_remove: [%x,%x) not in any region\n",
+                              start, end);
+               return;
+       }
+       for (; i < mp->n_regions && end > rp->address; ++i, ++rp) {
+               rs = rp->address;
+               re = rs + rp->size;
+               if (must_exist && (start < rs || end > re)) {
+                       printk("mem_pieces_remove: bad overlap [%x,%x) with",
+                              start, end);
+                       mem_pieces_print(mp);
+                       must_exist = 0;
+               }
+               if (start > rs) {
+                       rp->size = start - rs;
+                       if (end < re) {
+                               /* need to split this entry */
+                               if (mp->n_regions >= MEM_PIECES_MAX)
+                                       panic("eek... mem_pieces overflow");
+                               for (j = mp->n_regions; j > i + 1; --j)
+                                       mp->regions[j] = mp->regions[j-1];
+                               ++mp->n_regions;
+                               rp[1].address = end;
+                               rp[1].size = re - end;
+                       }
+               } else {
+                       if (end < re) {
+                               rp->address = end;
+                               rp->size = re - end;
+                       } else {
+                               /* need to delete this entry */
+                               for (j = i; j < mp->n_regions - 1; ++j)
+                                       mp->regions[j] = mp->regions[j+1];
+                               --mp->n_regions;
+                               --i;
+                               --rp;
+                       }
+               }
+       }
+}
+
+static void __init
+mem_pieces_print(struct mem_pieces *mp)
+{
+       int i;
+
+       for (i = 0; i < mp->n_regions; ++i)
+               printk(" [%x, %x)", mp->regions[i].address,
+                      mp->regions[i].address + mp->regions[i].size);
+       printk("\n");
+}
+
+#if defined(CONFIG_PREP) || defined(CONFIG_APUS) || defined(CONFIG_ALL_PPC)
+/*
+ * Add some memory to an array of pieces
+ */
+void __init
+mem_pieces_append(struct mem_pieces *mp, unsigned int start, unsigned int size)
+{
+       struct reg_property *rp;
+
+       if (mp->n_regions >= MEM_PIECES_MAX)
+               return;
+       rp = &mp->regions[mp->n_regions++];
+       rp->address = start;
+       rp->size = size;
+}
+#endif
+
+void __init
+mem_pieces_sort(struct mem_pieces *mp)
+{
+       unsigned long a, s;
+       int i, j;
+
+       for (i = 1; i < mp->n_regions; ++i) {
+               a = mp->regions[i].address;
+               s = mp->regions[i].size;
+               for (j = i - 1; j >= 0; --j) {
+                       if (a >= mp->regions[j].address)
+                               break;
+                       mp->regions[j+1] = mp->regions[j];
+               }
+               mp->regions[j+1].address = a;
+               mp->regions[j+1].size = s;
+       }
+}
+
+void __init
+mem_pieces_coalesce(struct mem_pieces *mp)
+{
+       unsigned long a, s, ns;
+       int i, j, d;
+
+       d = 0;
+       for (i = 0; i < mp->n_regions; i = j) {
+               a = mp->regions[i].address;
+               s = mp->regions[i].size;
+               for (j = i + 1; j < mp->n_regions
+                            && mp->regions[j].address - a <= s; ++j) {
+                       ns = mp->regions[j].address + mp->regions[j].size - a;
+                       if (ns > s)
+                               s = ns;
+               }
+               mp->regions[d].address = a;
+               mp->regions[d].size = s;
+               ++d;
+       }
+       mp->n_regions = d;
+}
+
+/*
+ * Set phys_avail to phys_mem less the kernel text/data/bss.
+ */
+void __init
+set_phys_avail(struct mem_pieces *mp)
+{
+       unsigned long kstart, ksize;
+
+       /*
+        * Initially, available phyiscal memory is equivalent to all
+        * physical memory.
+        */
+
+       phys_avail = *mp;
+
+       /*
+        * Map out the kernel text/data/bss from the available physical
+        * memory.
+        */
+
+       kstart = __pa(_stext);  /* should be 0 */
+       ksize = PAGE_ALIGN(klimit - _stext);
+
+       printk("kstart = 0x%08lx, ksize = 0x%08lx\n", kstart, ksize);
+
+       mem_pieces_remove(&phys_avail, kstart, ksize, 0);
+       mem_pieces_remove(&phys_avail, 0, 0x4000, 0);
+
+#if defined(CONFIG_BLK_DEV_INITRD)
+       /* Remove the init RAM disk from the available memory. */
+       if (initrd_start) {
+               mem_pieces_remove(&phys_avail, __pa(initrd_start),
+                                 initrd_end - initrd_start, 1);
+       }
+#endif /* CONFIG_BLK_DEV_INITRD */
+}
diff --git a/arch/ppc/mm/mem_pieces.h b/arch/ppc/mm/mem_pieces.h
new file mode 100644 (file)
index 0000000..737b82a
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ *    Copyright (c) 1996 Paul Mackerras <paulus@cs.anu.edu.au>
+ *      Changes to accomodate Power Macintoshes.
+ *    Cort Dougan <cort@cs.nmt.edu>
+ *      Rewrites.
+ *    Grant Erickson <grant@lcse.umn.edu>
+ *      General rework and split from mm/init.c.
+ *
+ *    Module name: mem_pieces.h
+ *
+ *    Description:
+ *      Routines and data structures for manipulating and representing
+ *      phyiscal memory extents (i.e. address/length pairs).
+ *
+ */
+
+#ifndef __MEM_PIECES_H__
+#define        __MEM_PIECES_H__
+
+#include <linux/config.h>
+#include <linux/init.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Type Definitions */
+
+#define        MEM_PIECES_MAX  32
+
+struct mem_pieces {
+    int n_regions;
+    struct reg_property regions[MEM_PIECES_MAX];
+};
+
+
+/* Global Variables */
+
+extern char *klimit;
+extern struct mem_pieces phys_avail;
+
+
+/* Function Prototypes */
+
+extern void    *mem_pieces_find(unsigned int size, unsigned int align);
+extern void     mem_pieces_remove(struct mem_pieces *mp, unsigned int start,
+                                  unsigned int size, int must_exist);
+extern void     mem_pieces_append(struct mem_pieces *mp, unsigned int start,
+                                  unsigned int size);
+extern void     mem_pieces_coalesce(struct mem_pieces *mp);
+extern void     mem_pieces_sort(struct mem_pieces *mp);
+
+extern void     set_phys_avail(struct mem_pieces *mp);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __MEM_PIECES_H__ */
diff --git a/arch/ppc/pmac_defconfig b/arch/ppc/pmac_defconfig
deleted file mode 100644 (file)
index 514843d..0000000
+++ /dev/null
@@ -1,549 +0,0 @@
-#
-# Automatically generated make config: don't edit
-#
-
-#
-# Platform support
-#
-CONFIG_PPC=y
-CONFIG_6xx=y
-# CONFIG_PPC64 is not set
-# CONFIG_82xx is not set
-# CONFIG_8xx is not set
-CONFIG_PMAC=y
-# CONFIG_PREP is not set
-# CONFIG_CHRP is not set
-# CONFIG_ALL_PPC is not set
-# CONFIG_GEMINI is not set
-# CONFIG_APUS is not set
-# CONFIG_SMP is not set
-CONFIG_MACH_SPECIFIC=y
-CONFIG_6xx=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_MODULES=y
-# CONFIG_MODVERSIONS is not set
-CONFIG_KMOD=y
-CONFIG_PCI=y
-CONFIG_NET=y
-CONFIG_SYSCTL=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_BINFMT_ELF=y
-CONFIG_KERNEL_ELF=y
-CONFIG_BINFMT_MISC=m
-
-#
-# PCMCIA/Cardbus support
-#
-CONFIG_PCMCIA=m
-CONFIG_CARDBUS=y
-# CONFIG_PARPORT is not set
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_FB=y
-CONFIG_FB_COMPAT_XPMAC=y
-CONFIG_PMAC_PBOOK=y
-CONFIG_MAC_FLOPPY=y
-CONFIG_MAC_SERIAL=y
-# CONFIG_SERIAL_CONSOLE is not set
-CONFIG_ADB=y
-CONFIG_ADB_CUDA=y
-CONFIG_ADB_MACIO=y
-CONFIG_ADB_PMU=y
-CONFIG_ADB_KEYBOARD=y
-CONFIG_PROC_DEVICETREE=y
-# CONFIG_TOTALMP is not set
-CONFIG_BOOTX_TEXT=y
-# CONFIG_MOTOROLA_HOTSWAP is not set
-
-#
-# Plug and Play configuration
-#
-# CONFIG_PNP is not set
-# CONFIG_ISAPNP is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_FD is not set
-CONFIG_BLK_DEV_IDE=y
-
-#
-# Please see Documentation/ide.txt for help/info on IDE drives
-#
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-# CONFIG_IDEDISK_MULTI_MODE is not set
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-CONFIG_BLK_DEV_IDEFLOPPY=y
-# CONFIG_BLK_DEV_IDESCSI is not set
-
-#
-# IDE chipset support/bugfixes
-#
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_RZ1000 is not set
-CONFIG_BLK_DEV_IDEPCI=y
-CONFIG_BLK_DEV_IDEDMA_PCI=y
-CONFIG_IDEDMA_PCI_AUTO=y
-CONFIG_IDEDMA_NEW_DRIVE_LISTINGS=y
-CONFIG_IDEDMA_PCI_EXPERIMENTAL=y
-# CONFIG_BLK_DEV_OFFBOARD is not set
-# CONFIG_BLK_DEV_AEC6210 is not set
-CONFIG_BLK_DEV_CMD646=y
-# CONFIG_BLK_DEV_CY82C693 is not set
-# CONFIG_BLK_DEV_HPT34X is not set
-# CONFIG_BLK_DEV_HPT366 is not set
-# CONFIG_BLK_DEV_NS87415 is not set
-# CONFIG_BLK_DEV_OPTI621 is not set
-# CONFIG_BLK_DEV_PDC202XX is not set
-# CONFIG_BLK_DEV_TRM290 is not set
-# CONFIG_BLK_DEV_SL82C105 is not set
-CONFIG_BLK_DEV_IDE_PMAC=y
-CONFIG_BLK_DEV_IDEDMA_PMAC=y
-CONFIG_IDEDMA_PMAC_AUTO=y
-CONFIG_BLK_DEV_IDEDMA=y
-CONFIG_IDEDMA_AUTO=y
-# CONFIG_IDE_CHIPSETS is not set
-# CONFIG_BLK_CPQ_DA is not set
-
-#
-# Additional Block Devices
-#
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE_PARPORT=y
-# CONFIG_PARIDE is not set
-CONFIG_BLK_DEV_IDE_MODES=y
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# Networking options
-#
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_NETLINK=y
-# CONFIG_RTNETLINK is not set
-# CONFIG_NETLINK_DEV is not set
-CONFIG_NETFILTER=y
-# CONFIG_NETFILTER_DEBUG is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-CONFIG_IP_MULTICAST=y
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_IP_ROUTER is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_MROUTE is not set
-CONFIG_IP_ALIAS=y
-# CONFIG_SYN_COOKIES is not set
-
-#
-# (it is safe to leave these untouched)
-#
-CONFIG_SKB_LARGE=y
-# CONFIG_IPV6 is not set
-# CONFIG_KHTTPD is not set
-# CONFIG_ATM is not set
-
-#
-#  
-#
-# CONFIG_IPX is not set
-CONFIG_ATALK=m
-# CONFIG_DECNET is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_LLC is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-
-#
-# SCSI support type (disk, tape, CD-ROM)
-#
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=y
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-# CONFIG_CHR_DEV_SG is not set
-
-#
-# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
-#
-# CONFIG_SCSI_MULTI_LUN is not set
-CONFIG_SCSI_CONSTANTS=y
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_ACARD is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AHA1740 is not set
-CONFIG_SCSI_AIC7XXX=y
-# CONFIG_AIC7XXX_TCQ_ON_BY_DEFAULT is not set
-CONFIG_AIC7XXX_CMDS_PER_DEVICE=8
-CONFIG_AIC7XXX_PROC_STATS=y
-CONFIG_AIC7XXX_RESET_DELAY=15
-# CONFIG_SCSI_IPS 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_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA is not set
-# CONFIG_SCSI_EATA_DMA 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_INITIO is not set
-# CONFIG_SCSI_INIA100 is not set
-# CONFIG_SCSI_NCR53C406A is not set
-# CONFIG_SCSI_SYM53C416 is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-# CONFIG_SCSI_NCR53C8XX is not set
-# CONFIG_SCSI_SYM53C8XX is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_ISP is not set
-# CONFIG_SCSI_QLOGIC_FC is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_DEBUG is not set
-CONFIG_SCSI_MESH=y
-CONFIG_SCSI_MESH_SYNC_RATE=5
-CONFIG_SCSI_MAC53C94=y
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-
-#
-# ARCnet devices
-#
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
-CONFIG_NET_ETHERNET=y
-CONFIG_MACE=y
-CONFIG_BMAC=y
-# CONFIG_NET_VENDOR_3COM is not set
-# CONFIG_LANCE is not set
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_RTL8139 is not set
-# CONFIG_SIS900 is not set
-# CONFIG_DM9102 is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
-# CONFIG_NET_ISA is not set
-CONFIG_NET_EISA=y
-# CONFIG_PCNET32 is not set
-# CONFIG_ACENIC is not set
-# CONFIG_AC3200 is not set
-# CONFIG_APRICOT is not set
-# CONFIG_CS89x0 is not set
-CONFIG_DE4X5=y
-# CONFIG_DEC_ELCP is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEXPRESS_PRO100 is not set
-# CONFIG_LNE390 is not set
-# CONFIG_NE3210 is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_TLAN is not set
-# CONFIG_VIA_RHINE is not set
-# CONFIG_ES3210 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_ZNET is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FDDI is not set
-# CONFIG_HIPPI is not set
-
-#
-# Appletalk devices
-#
-# CONFIG_LTPC is not set
-# CONFIG_COPS is not set
-# CONFIG_IPDDP is not set
-CONFIG_PPP=y
-CONFIG_PPP_ASYNC=y
-CONFIG_PPP_DEFLATE=y
-CONFIG_PPP_BSDCOMP=m
-# CONFIG_SLIP is not set
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Token Ring driver support
-#
-# CONFIG_TR is not set
-# CONFIG_NET_FC is not set
-# CONFIG_RCPCI is not set
-# CONFIG_SHAPER is not set
-
-#
-# Wan interfaces
-#
-# CONFIG_WAN is not set
-
-#
-# PCMCIA network devices
-#
-# CONFIG_PCMCIA_PCNET is not set
-# CONFIG_PCMCIA_3C589 is not set
-# CONFIG_PCMCIA_RAYCS is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Old CD-ROM drivers (not SCSI, not IDE)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Console drivers
-#
-
-#
-# Frame-buffer support
-#
-CONFIG_FB=y
-CONFIG_DUMMY_CONSOLE=y
-# CONFIG_FB_CLGEN is not set
-# CONFIG_FB_PM2 is not set
-CONFIG_FB_OF=y
-CONFIG_FB_CONTROL=y
-CONFIG_FB_PLATINUM=y
-CONFIG_FB_VALKYRIE=y
-CONFIG_FB_IMSTT=y
-CONFIG_FB_CT65550=y
-# CONFIG_FB_S3TRIO is not set
-# CONFIG_FB_VGA16 is not set
-# CONFIG_FB_MATROX is not set
-CONFIG_FB_ATY=y
-# CONFIG_FB_3DFX is not set
-# CONFIG_FB_VIRTUAL is not set
-# CONFIG_FBCON_ADVANCED is not set
-CONFIG_FBCON_CFB8=y
-CONFIG_FBCON_CFB16=y
-CONFIG_FBCON_CFB24=y
-CONFIG_FBCON_CFB32=y
-# CONFIG_FBCON_FONTWIDTH8_ONLY is not set
-CONFIG_FBCON_FONTS=y
-# CONFIG_FONT_8x8 is not set
-CONFIG_FONT_8x16=y
-CONFIG_FONT_SUN8x16=y
-CONFIG_FONT_SUN12x22=y
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=m
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_UNIX98_PTYS=y
-CONFIG_UNIX98_PTY_COUNT=256
-
-#
-# Mice
-#
-CONFIG_BUSMOUSE=y
-# CONFIG_ATIXL_BUSMOUSE is not set
-# CONFIG_LOGIBUSMOUSE is not set
-# CONFIG_MS_BUSMOUSE is not set
-CONFIG_ADBMOUSE=y
-# CONFIG_MOUSE is not set
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_WATCHDOG is not set
-CONFIG_NVRAM=y
-# CONFIG_RTC is not set
-
-#
-# Video For Linux
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Joystick support
-#
-# CONFIG_JOYSTICK is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_APPLICOM is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-# CONFIG_DRM is not set
-
-#
-# USB drivers - not for the faint of heart
-#
-CONFIG_USB=y
-
-#
-# USB Controllers
-#
-# CONFIG_USB_UHCI is not set
-CONFIG_USB_OHCI=y
-CONFIG_USB_OHCI_DEBUG=y
-# CONFIG_USB_OHCI_HCD is not set
-
-#
-# Miscellaneous USB options
-#
-CONFIG_USB_DEBUG_ISOC=y
-CONFIG_USB_PROC=y
-# CONFIG_USB_EZUSB is not set
-
-#
-# USB Devices
-#
-CONFIG_USB_HUB=y
-CONFIG_USB_MOUSE=y
-CONFIG_USB_HP_SCANNER=m
-CONFIG_USB_KBD=y
-# CONFIG_USB_AUDIO is not set
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-# CONFIG_USB_SERIAL is not set
-# CONFIG_USB_CPIA is not set
-CONFIG_USB_SCSI=m
-CONFIG_USB_SCSI_DEBUG=y
-# CONFIG_USB_USS720 is not set
-
-#
-# Filesystems
-#
-# CONFIG_QUOTA is not set
-CONFIG_AUTOFS_FS=y
-# CONFIG_ADFS_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_FAT_FS is not set
-# CONFIG_MSDOS_FS is not set
-# CONFIG_UMSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-# CONFIG_EFS_FS is not set
-CONFIG_ISO9660_FS=y
-# CONFIG_JOLIET is not set
-# CONFIG_UDF_FS is not set
-# CONFIG_MINIX_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_HPFS_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_DEVPTS_FS=y
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_EXT2_FS=y
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-# CONFIG_CODA_FS is not set
-CONFIG_NFS_FS=y
-CONFIG_NFSD=y
-# CONFIG_NFSD_SUN is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-# CONFIG_SMB_FS is not set
-# CONFIG_NCP_FS is not set
-
-#
-# Partition Types
-#
-CONFIG_PARTITION_ADVANCED=y
-# CONFIG_OSF_PARTITION is not set
-CONFIG_MAC_PARTITION=y
-CONFIG_MSDOS_PARTITION=y
-# CONFIG_BSD_DISKLABEL is not set
-# CONFIG_SOLARIS_X86_PARTITION is not set
-# CONFIG_UNIXWARE_DISKLABEL is not set
-# CONFIG_SGI_PARTITION is not set
-# CONFIG_SUN_PARTITION is not set
-# CONFIG_AMIGA_PARTITION is not set
-# CONFIG_ATARI_PARTITION is not set
-# CONFIG_ACORN_PARTITION is not set
-# CONFIG_NLS is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-CONFIG_DMASOUND=y
-# CONFIG_SOUND_CMPCI 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_SONICVIBES is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-# CONFIG_SOUND_OSS is not set
-
-#
-# Kernel hacking
-#
-CONFIG_MAGIC_SYSRQ=y
-# CONFIG_KGDB is not set
-# CONFIG_XMON is not set
diff --git a/arch/ppc/prep_defconfig b/arch/ppc/prep_defconfig
deleted file mode 100644 (file)
index 01c314c..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-#
-# Automatically generated by make menuconfig: don't edit
-#
-
-#
-# Platform support
-#
-CONFIG_PPC=y
-CONFIG_6xx=y
-# CONFIG_8xx is not set
-# CONFIG_PMAC is not set
-CONFIG_PREP=y
-# CONFIG_CHRP is not set
-# CONFIG_ALL_PPC is not set
-# CONFIG_APUS is not set
-# CONFIG_MBX is not set
-# CONFIG_SMP is not set
-CONFIG_MACH_SPECIFIC=y
-
-#
-# General setup
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_MODULES=y
-CONFIG_MODVERSIONS=y
-CONFIG_KMOD=y
-CONFIG_PCI=y
-# CONFIG_PCI_QUIRKS is not set
-CONFIG_PCI_OLD_PROC=y
-CONFIG_NET=y
-CONFIG_SYSCTL=y
-CONFIG_SYSVIPC=y
-# CONFIG_BSD_PROCESS_ACCT is not set
-CONFIG_BINFMT_ELF=y
-CONFIG_KERNEL_ELF=y
-# CONFIG_BINFMT_MISC is not set
-# CONFIG_BINFMT_JAVA is not set
-# CONFIG_PARPORT is not set
-# CONFIG_FB is not set
-CONFIG_VGA_CONSOLE=y
-# CONFIG_PMAC_PBOOK is not set
-# CONFIG_MAC_KEYBOARD is not set
-# CONFIG_MAC_FLOPPY is not set
-# CONFIG_MAC_SERIAL is not set
-# CONFIG_ADBMOUSE is not set
-# CONFIG_PROC_DEVICETREE is not set
-# CONFIG_KGDB is not set
-# CONFIG_XMON is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNP is not set
-
-#
-# Block devices
-#
-CONFIG_BLK_DEV_FD=y
-CONFIG_BLK_DEV_IDE=y
-# CONFIG_BLK_DEV_HD_IDE is not set
-CONFIG_BLK_DEV_IDEDISK=y
-CONFIG_BLK_DEV_IDECD=y
-# CONFIG_BLK_DEV_IDETAPE is not set
-# CONFIG_BLK_DEV_IDEFLOPPY is not set
-# CONFIG_BLK_DEV_IDESCSI is not set
-# CONFIG_BLK_DEV_CMD640 is not set
-# CONFIG_BLK_DEV_RZ1000 is not set
-# CONFIG_BLK_DEV_IDEPCI is not set
-# CONFIG_BLK_DEV_SL82C105 is not set
-# CONFIG_IDE_CHIPSETS is not set
-CONFIG_BLK_DEV_LOOP=y
-# CONFIG_BLK_DEV_NBD is not set
-# CONFIG_BLK_DEV_MD is not set
-CONFIG_BLK_DEV_RAM=y
-CONFIG_BLK_DEV_INITRD=y
-# CONFIG_BLK_DEV_XD is not set
-CONFIG_PARIDE_PARPORT=y
-# CONFIG_PARIDE is not set
-# CONFIG_BLK_DEV_HD is not set
-
-#
-# Networking options
-#
-# CONFIG_PACKET is not set
-# CONFIG_NETLINK is not set
-# CONFIG_FIREWALL is not set
-# CONFIG_FILTER is not set
-CONFIG_UNIX=y
-CONFIG_INET=y
-# CONFIG_IP_MULTICAST is not set
-# CONFIG_IP_ADVANCED_ROUTER is not set
-# CONFIG_IP_PNP is not set
-# CONFIG_IP_ROUTER is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_IP_ALIAS is not set
-CONFIG_SYN_COOKIES=y
-# CONFIG_INET_RARP is not set
-# CONFIG_IP_NOSR is not set
-CONFIG_SKB_LARGE=y
-# CONFIG_IPV6 is not set
-# CONFIG_IPX is not set
-# CONFIG_ATALK is not set
-# CONFIG_X25 is not set
-# CONFIG_LAPB is not set
-# CONFIG_BRIDGE is not set
-# CONFIG_LLC is not set
-# CONFIG_ECONET is not set
-# CONFIG_WAN_ROUTER is not set
-# CONFIG_NET_FASTROUTE is not set
-# CONFIG_NET_HW_FLOWCONTROL is not set
-# CONFIG_CPU_IS_SLOW is not set
-# CONFIG_NET_SCHED is not set
-
-#
-# SCSI support
-#
-CONFIG_SCSI=y
-CONFIG_BLK_DEV_SD=y
-CONFIG_CHR_DEV_ST=y
-CONFIG_BLK_DEV_SR=y
-CONFIG_BLK_DEV_SR_VENDOR=y
-# CONFIG_CHR_DEV_SG is not set
-# CONFIG_SCSI_MULTI_LUN is not set
-# CONFIG_SCSI_CONSTANTS is not set
-# CONFIG_SCSI_LOGGING is not set
-
-#
-# SCSI low-level drivers
-#
-# CONFIG_SCSI_7000FASST is not set
-# CONFIG_SCSI_AHA152X is not set
-# CONFIG_SCSI_AHA1542 is not set
-# CONFIG_SCSI_AHA1740 is not set
-# CONFIG_SCSI_AIC7XXX is not set
-# CONFIG_SCSI_ADVANSYS is not set
-# CONFIG_SCSI_IN2000 is not set
-# CONFIG_SCSI_AM53C974 is not set
-# CONFIG_SCSI_BUSLOGIC is not set
-# CONFIG_SCSI_DTC3280 is not set
-# CONFIG_SCSI_EATA_DMA is not set
-# CONFIG_SCSI_EATA_PIO is not set
-# CONFIG_SCSI_EATA 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_NCR53C406A is not set
-# CONFIG_SCSI_NCR53C7xx is not set
-CONFIG_SCSI_NCR53C8XX=y
-CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
-CONFIG_SCSI_NCR53C8XX_MAX_TAGS=4
-CONFIG_SCSI_NCR53C8XX_SYNC=5
-# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
-CONFIG_SCSI_NCR53C8XX_IOMAPPED=y
-# CONFIG_SCSI_NCR53C8XX_SYMBIOS_COMPAT is not set
-# CONFIG_SCSI_PAS16 is not set
-# CONFIG_SCSI_PCI2000 is not set
-# CONFIG_SCSI_PCI2220I is not set
-# CONFIG_SCSI_PSI240I is not set
-# CONFIG_SCSI_QLOGIC_FAS is not set
-# CONFIG_SCSI_QLOGIC_ISP is not set
-# CONFIG_SCSI_SEAGATE is not set
-# CONFIG_SCSI_DC390T is not set
-# CONFIG_SCSI_T128 is not set
-# CONFIG_SCSI_U14_34F is not set
-# CONFIG_SCSI_ULTRASTOR is not set
-# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_MESH is not set
-# CONFIG_SCSI_MAC53C94 is not set
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-# CONFIG_ARCNET is not set
-# CONFIG_DUMMY is not set
-# CONFIG_EQUALIZER is not set
-CONFIG_NET_ETHERNET=y
-# CONFIG_MACE is not set
-# CONFIG_BMAC is not set
-# CONFIG_NET_VENDOR_3COM is not set
-CONFIG_LANCE=y
-# CONFIG_NET_VENDOR_SMC is not set
-# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_RTL8139 is not set
-# CONFIG_YELLOWFIN is not set
-# CONFIG_NET_ISA is not set
-CONFIG_NET_EISA=y
-CONFIG_PCNET32=y
-# CONFIG_AC3200 is not set
-# CONFIG_APRICOT is not set
-# CONFIG_CS89x0 is not set
-CONFIG_DE4X5=y
-# CONFIG_DEC_ELCP is not set
-# CONFIG_DGRS is not set
-# CONFIG_EEXPRESS_PRO100 is not set
-# CONFIG_LNE390 is not set
-# CONFIG_NE2K_PCI is not set
-# CONFIG_TLAN is not set
-# CONFIG_ES3210 is not set
-# CONFIG_EPIC100 is not set
-# CONFIG_ZNET is not set
-# CONFIG_NET_POCKET is not set
-# CONFIG_FDDI is not set
-# CONFIG_DLCI is not set
-CONFIG_PPP=m
-# CONFIG_SLIP is not set
-# CONFIG_NET_RADIO is not set
-# CONFIG_TR is not set
-# CONFIG_SHAPER is not set
-
-#
-# Amateur Radio support
-#
-# CONFIG_HAMRADIO is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
-#
-# CONFIG_CD_NO_IDESCSI is not set
-
-#
-# Console drivers
-#
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_SERIAL=y
-CONFIG_SERIAL_CONSOLE=y
-# CONFIG_SERIAL_EXTENDED is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-CONFIG_MOUSE=y
-# CONFIG_ATIXL_BUSMOUSE is not set
-# CONFIG_BUSMOUSE is not set
-# CONFIG_MS_BUSMOUSE is not set
-CONFIG_PSMOUSE=y
-# CONFIG_82C710_MOUSE is not set
-# CONFIG_PC110_PAD is not set
-# CONFIG_UMISC is not set
-# CONFIG_QIC02_TAPE is not set
-# CONFIG_WATCHDOG is not set
-# CONFIG_RTC is not set
-# CONFIG_VIDEO_DEV is not set
-# CONFIG_NVRAM is not set
-# CONFIG_JOYSTICK is not set
-
-#
-# Ftape, the floppy tape device driver
-#
-# CONFIG_FTAPE is not set
-
-#
-# Filesystems
-#
-# CONFIG_QUOTA is not set
-# CONFIG_MINIX_FS is not set
-CONFIG_EXT2_FS=y
-CONFIG_ISO9660_FS=y
-# CONFIG_JOLIET is not set
-CONFIG_FAT_FS=m
-CONFIG_MSDOS_FS=m
-# CONFIG_UMSDOS_FS is not set
-# CONFIG_VFAT_FS is not set
-CONFIG_PROC_FS=y
-CONFIG_NFS_FS=y
-# CONFIG_NFSD is not set
-CONFIG_SUNRPC=y
-CONFIG_LOCKD=y
-# CONFIG_CODA_FS is not set
-# CONFIG_SMB_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_NTFS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_AFFS_FS is not set
-# CONFIG_HFS_FS is not set
-# CONFIG_ROMFS_FS is not set
-# CONFIG_AUTOFS_FS is not set
-# CONFIG_UFS_FS is not set
-# CONFIG_ADFS_FS is not set
-# CONFIG_DEVPTS_FS is not set
-# CONFIG_MAC_PARTITION is not set
-CONFIG_NLS=y
-
-#
-# Native Language Support
-#
-# CONFIG_NLS_CODEPAGE_437 is not set
-# CONFIG_NLS_CODEPAGE_737 is not set
-# CONFIG_NLS_CODEPAGE_775 is not set
-# CONFIG_NLS_CODEPAGE_850 is not set
-# CONFIG_NLS_CODEPAGE_852 is not set
-# CONFIG_NLS_CODEPAGE_855 is not set
-# CONFIG_NLS_CODEPAGE_857 is not set
-# CONFIG_NLS_CODEPAGE_860 is not set
-# CONFIG_NLS_CODEPAGE_861 is not set
-# CONFIG_NLS_CODEPAGE_862 is not set
-# CONFIG_NLS_CODEPAGE_863 is not set
-# CONFIG_NLS_CODEPAGE_864 is not set
-# CONFIG_NLS_CODEPAGE_865 is not set
-# CONFIG_NLS_CODEPAGE_866 is not set
-# CONFIG_NLS_CODEPAGE_869 is not set
-# CONFIG_NLS_CODEPAGE_874 is not set
-# CONFIG_NLS_ISO8859_1 is not set
-# CONFIG_NLS_ISO8859_2 is not set
-# CONFIG_NLS_ISO8859_3 is not set
-# CONFIG_NLS_ISO8859_4 is not set
-# CONFIG_NLS_ISO8859_5 is not set
-# CONFIG_NLS_ISO8859_6 is not set
-# CONFIG_NLS_ISO8859_7 is not set
-# CONFIG_NLS_ISO8859_8 is not set
-# CONFIG_NLS_ISO8859_9 is not set
-# CONFIG_NLS_KOI8_R is not set
-
-#
-# Sound
-#
-CONFIG_SOUND=y
-# CONFIG_SOUND_ES1370 is not set
-# CONFIG_SOUND_ES1371 is not set
-# CONFIG_SOUND_SONICVIBES is not set
-# CONFIG_SOUND_MSNDCLAS is not set
-# CONFIG_SOUND_MSNDPIN is not set
-CONFIG_SOUND_OSS=y
-# CONFIG_SOUND_PAS is not set
-# CONFIG_SOUND_SB is not set
-# CONFIG_SOUND_ADLIB is not set
-# CONFIG_SOUND_GUS is not set
-# CONFIG_SOUND_MPU401 is not set
-# CONFIG_SOUND_PSS is not set
-# CONFIG_SOUND_MSS is not set
-# CONFIG_SOUND_SSCAPE is not set
-# CONFIG_SOUND_TRIX is not set
-# CONFIG_SOUND_MAD16 is not set
-# CONFIG_SOUND_WAVEFRONT is not set
-CONFIG_SOUND_CS4232=y
-CONFIG_CS4232_BASE=530
-CONFIG_CS4232_IRQ=11
-CONFIG_CS4232_DMA=0
-CONFIG_CS4232_DMA2=3
-CONFIG_CS4232_MPU_BASE=330
-CONFIG_CS4232_MPU_IRQ=9
-# CONFIG_SOUND_MAUI is not set
-# CONFIG_SOUND_SGALAXY is not set
-# CONFIG_SOUND_OPL3SA1 is not set
-# CONFIG_SOUND_SOFTOSS is not set
-# CONFIG_SOUND_YM3812 is not set
-# CONFIG_SOUND_VMIDI is not set
-# CONFIG_SOUND_UART6850 is not set
-
-#
-# Additional low level sound drivers
-#
-# CONFIG_LOWLEVEL_SOUND is not set
diff --git a/arch/ppc/treeboot/Makefile b/arch/ppc/treeboot/Makefile
new file mode 100644 (file)
index 0000000..4056342
--- /dev/null
@@ -0,0 +1,62 @@
+#
+#    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+#
+#    Module name: Makefile
+#
+#    Description:
+#      Makefile for the IBM "tree" evaluation board Linux kernel
+#      boot loaders.
+#
+
+HOSTCFLAGS = -O -I$(TOPDIR)/include
+
+CC     = $(CROSS_COMPILE)gcc
+LD     = $(CROSS_COMPILE)ld
+OBJCOPY = $(CROSS_COMPILE)objcopy
+OBJDUMP        = $(CROSS_COMPILE)objdump
+
+GZIP   = gzip -vf9
+RM     = rm -f
+MKEVIMG        = mkevimg -l
+MKIRIMG        = mkirimg
+
+CFLAGS = -O -fno-builtin -I$(TOPDIR)/include
+LD_ARGS = -e _start -T ld.script -Ttext 80200000 -Bstatic
+
+OBJS   = crt0.o main.o misc.o string.o zlib.o irSect.o
+LIBS   =
+
+treeboot: $(OBJS) ld.script
+       $(LD) -o $@ $(LD_ARGS) $(OBJS) $(LIBS)
+
+zImage:        vmlinux.img
+
+zImage.initrd: vmlinux.initrd.img
+
+treeboot.image: treeboot vmlinux.gz
+       $(OBJCOPY) --add-section=image=vmlinux.gz treeboot $@
+
+treeboot.initrd: treeboot.image ramdisk.image.gz
+       $(OBJCOPY) --add-section=initrd=ramdisk.image.gz treeboot.image $@
+
+vmlinux.img: treeboot.image
+       $(OBJDUMP) --syms treeboot.image | grep irSectStart > irSectStart.txt
+       $(MKIRIMG) treeboot.image treeboot.image.out irSectStart.txt
+       $(MKEVIMG) treeboot.image.out $@
+       $(RM) treeboot.image treeboot.image.out irSectStart.txt
+
+vmlinux.initrd.img: treeboot.initrd
+       $(OBJDUMP) --all-headers treeboot.initrd | grep irSectStart > irSectStart.txt
+       $(MKIRIMG) treeboot.initrd treeboot.initrd.out irSectStart.txt
+       $(MKEVIMG) treeboot.initrd.out $@
+       $(RM) treeboot.initrd treeboot.initrd.out irSectStart.txt
+
+vmlinux.gz: $(TOPDIR)/vmlinux
+       $(OBJCOPY) -S -O binary $(TOPDIR)/vmlinux vmlinux
+       $(GZIP) vmlinux
+
+clean:
+       rm -f treeboot treeboot.image treeboot.initrd irSectStart.txt vmlinux.* *.o
+
+fastdep:
+
diff --git a/arch/ppc/treeboot/crt0.S b/arch/ppc/treeboot/crt0.S
new file mode 100644 (file)
index 0000000..1f2c1c0
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ *    Copyright (c) 1997 Paul Mackerras <paulus@cs.anu.edu.au>
+ *      Initial Power Macintosh COFF version.
+ *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *      Modifications for IBM PowerPC 400-class processor evaluation
+ *      boards.
+ *
+ *    Module name: crt0.S
+ *
+ *    Description:
+ *      Boot loader execution entry point. Clears out .bss section as per
+ *      ANSI C requirements. Invalidates and flushes the caches over the
+ *      range covered by the boot loader's .text section. Sets up a stack
+ *      below the .text section entry point.
+ *
+ *    This program is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU General Public License
+ *    as published by the Free Software Foundation; either version
+ *    2 of the License, or (at your option) any later version.
+ *
+ */
+
+#include "../kernel/ppc_asm.h"
+
+       .text
+
+       .globl  _start
+_start:        
+        ## Clear out the BSS as per ANSI C requirements
+
+        lis     r7,_end@ha             # 
+        addi    r7,r7,_end@l           # r7 = &_end
+        lis     r8,__bss_start@ha      # 
+        addi    r8,r8,__bss_start@l    # r8 = &_bss_start
+
+       ## Determine how large an area, in number of words, to clear
+       
+        subf    r7,r8,r7               # r7 = &_end - &_bss_start + 1 
+        addi    r7,r7,3                        # r7 += 3
+        srwi.   r7,r7,2                        # r7 = size in words.
+        beq     2f                     # If the size is zero, do not bother
+        addi    r8,r8,-4               # r8 -= 4
+        mtctr   r7                     # SPRN_CTR = number of words to clear
+        li      r0,0                   # r0 = 0
+1:      stwu    r0,4(r8)               # Clear out a word
+        bdnz    1b                     # If we are not done yet, keep clearing
+       
+       ## Flush and invalidate the caches for the range in memory covering
+       ## the .text section of the boot loader
+       
+2:     lis     r9,_start@h             # r9 = &_start
+       lis     r8,_etext@ha            # 
+       addi    r8,r8,_etext@l          # r8 = &_etext
+3:     dcbf    r0,r9                   # Flush the data cache
+       icbi    r0,r9                   # Invalidate the instruction cache
+       addi    r9,r9,0x10              # Increment by one cache line
+       cmplwi  cr0,r9,r8               # Are we at the end yet?
+       blt     3b                      # No, keep flushing and invalidating
+
+       ## Set up the stack
+
+       lis     r9,_start@h             # r9 = &_start (text section entry)
+       addi    r9,r9,_start@l
+       subi    r1,r9,64                # Start the stack 64 bytes below _start
+       clrrwi  r1,r1,4                 # Make sure it is aligned on 16 bytes.
+       li      r0,0
+       stwu    r0,-16(r1)
+       mtlr    r9
+       
+       b       start                   # All done, start the real work.
diff --git a/arch/ppc/treeboot/elf.pl b/arch/ppc/treeboot/elf.pl
new file mode 100644 (file)
index 0000000..d3e9d9d
--- /dev/null
@@ -0,0 +1,33 @@
+#
+# ELF header field numbers
+#
+
+$e_ident       =  0;   # Identification bytes / magic number
+$e_type                =  1;   # ELF file type
+$e_machine     =  2;   # Target machine type
+$e_version     =  3;   # File version
+$e_entry       =  4;   # Start address
+$e_phoff       =  5;   # Program header file offset
+$e_shoff       =  6;   # Section header file offset
+$e_flags       =  7;   # File flags
+$e_ehsize      =  8;   # Size of ELF header
+$e_phentsize   =  9;   # Size of program header
+$e_phnum       = 10;   # Number of program header entries
+$e_shentsize   = 11;   # Size of section header
+$e_shnum       = 12;   # Number of section header entries
+$e_shstrndx    = 13;   # Section header table string index
+
+#
+# Section header field numbers
+#
+
+$sh_name       =  0;   # Section name
+$sh_type       =  1;   # Section header type
+$sh_flags      =  2;   # Section header flags
+$sh_addr       =  3;   # Virtual address
+$sh_offset     =  4;   # File offset
+$sh_size       =  5;   # Section size
+$sh_link       =  6;   # Miscellaneous info
+$sh_info       =  7;   # More miscellaneous info
+$sh_addralign  =  8;   # Memory alignment
+$sh_entsize    =  9;   # Entry size if this is a table
diff --git a/arch/ppc/treeboot/irSect.c b/arch/ppc/treeboot/irSect.c
new file mode 100644 (file)
index 0000000..7f4c7f6
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ *
+ *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *
+ *    Module name: irSect.c
+ *
+ *    Description:
+ *      Defines variables to hold the absolute starting address and size
+ *      of the Linux kernel "image" and the initial RAM disk "initrd"
+ *      sections within the boot loader.
+ *
+ */
+
+#include "irSect.h"
+
+
+/*
+ * The order of globals below must not change. If more globals are added,
+ * you must change the script 'mkirimg' accordingly.
+ *
+ */
+
+/* 
+ * irSectStart must be at beginning of file 
+ */
+unsigned int irSectStart = 0xdeadbeaf;
+
+unsigned int imageSect_start   = 0;
+unsigned int imageSect_size    = 0;
+unsigned int initrdSect_start  = 0;
+unsigned int initrdSect_size   = 0;
+
+/* 
+ * irSectEnd must be at end of file 
+ */
+unsigned int irSectEnd   = 0xdeadbeaf;
diff --git a/arch/ppc/treeboot/irSect.h b/arch/ppc/treeboot/irSect.h
new file mode 100644 (file)
index 0000000..801c3b4
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ *
+ *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *
+ *    Module name: irSect.h
+ *    
+ *    Description:
+ *      Defines variables to hold the absolute starting address and size
+ *      of the Linux kernel "image" and the initial RAM disk "initrd"   
+ *      sections within the boot loader.
+ *      
+ */
+
+#ifndef __IRSECT_H__
+#define __IRSECT_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern unsigned int imageSect_start;
+extern unsigned int imageSect_size;
+
+extern unsigned int initrdSect_start;
+extern unsigned int initrdSect_size;
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __IRSECT_H__ */
diff --git a/arch/ppc/treeboot/ld.script b/arch/ppc/treeboot/ld.script
new file mode 100644 (file)
index 0000000..2469ed6
--- /dev/null
@@ -0,0 +1,68 @@
+OUTPUT_ARCH(powerpc)
+SEARCH_DIR(/lib); SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/local/lib); SEARCH_DIR(/usr/local/powerpc-any-elf/lib);
+/* Do we need any of these for elf?
+   __DYNAMIC = 0;    */
+SECTIONS
+{
+  /* Read-only sections, merged into text segment: */
+  . = + SIZEOF_HEADERS;
+  .interp : { *(.interp) }
+  .hash          : { *(.hash)          }
+  .dynsym        : { *(.dynsym)                }
+  .dynstr        : { *(.dynstr)                }
+  .rel.text      : { *(.rel.text)              }
+  .rela.text     : { *(.rela.text)     }
+  .rel.data      : { *(.rel.data)              }
+  .rela.data     : { *(.rela.data)     }
+  .rel.rodata    : { *(.rel.rodata)    }
+  .rela.rodata   : { *(.rela.rodata)   }
+  .rel.got       : { *(.rel.got)               }
+  .rela.got      : { *(.rela.got)              }
+  .rel.ctors     : { *(.rel.ctors)     }
+  .rela.ctors    : { *(.rela.ctors)    }
+  .rel.dtors     : { *(.rel.dtors)     }
+  .rela.dtors    : { *(.rela.dtors)    }
+  .rel.bss       : { *(.rel.bss)               }
+  .rela.bss      : { *(.rela.bss)              }
+  .rel.plt       : { *(.rel.plt)               }
+  .rela.plt      : { *(.rela.plt)              }
+  .init          : { *(.init)  } =0
+  .plt : { *(.plt) }
+  .text      :
+  {
+    *(.text)
+    *(.rodata)
+    *(.rodata1)
+    *(.got1)
+  }
+  .fini      : { *(.fini)    } =0
+  .ctors     : { *(.ctors)   }
+  .dtors     : { *(.dtors)   }
+  _etext = .;
+  PROVIDE (etext = .);
+  /* Read-write section, merged into data segment: */
+  . = (. + 0x0FFF) & 0xFFFFF000;
+  .data    :
+  {
+    *(.data)
+    *(.data1)
+    *(.sdata)
+    *(.sdata2)
+    *(.got.plt) *(.got)
+    *(.dynamic)
+    CONSTRUCTORS
+  }
+  _edata  =  .;
+  PROVIDE (edata = .);
+  __bss_start = .;
+  .bss       :
+  {
+   *(.sbss) *(.scommon)
+   *(.dynbss)
+   *(.bss)
+   *(COMMON)
+  }
+  _end = . ;
+  PROVIDE (end = .);
+}
+
diff --git a/arch/ppc/treeboot/main.c b/arch/ppc/treeboot/main.c
new file mode 100644 (file)
index 0000000..1b5ef38
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+ *    Copyright (c) 1997 Paul Mackerras <paulus@cs.anu.edu.au>
+ *      Initial Power Macintosh COFF version.
+ *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *      Modifications for an ELF-based IBM evaluation board version.
+ *
+ *    Module name: main.c
+ *
+ *    Description:
+ *      This module does most of the real work for the boot loader. It
+ *      checks the variables holding the absolute start address and size
+ *      of the Linux kernel "image" and initial RAM disk "initrd" sections
+ *      and if they are present, moves them to their "proper" locations.
+ *
+ *      For the Linux kernel, "proper" is physical address 0x00000000.
+ *      For the RAM disk, "proper" is the image's size below the top
+ *      of physical memory. The Linux kernel may be in either raw
+ *      binary form or compressed with GNU zip (aka gzip).
+ *
+ *    This program is free software; you can redistribute it and/or
+ *    modify it under the terms of the GNU General Public License 
+ *    as published by the Free Software Foundation; either version
+ *    2 of the License, or (at your option) any later version.
+ *
+ */
+
+#include "nonstdio.h"
+#include "zlib.h"
+#include "irSect.h"
+
+
+/* Preprocessor Defines */
+
+#define        RAM_SIZE        (4 * 1024 * 1024)
+
+#define        RAM_PBASE       0x00000000
+#define        RAM_PEND        (RAM_PBASE + RAM_SIZE)
+
+#define        RAM_VBASE       0xC0000000
+#define        RAM_VEND        (RAM_VBASE + RAM_SIZE)
+
+#define        RAM_START       RAM_PBASE
+#define        RAM_END         RAM_PEND
+#define        RAM_FREE        (imageSect_start + imageSect_size + initrdSect_size)
+
+#define        PROG_START      RAM_START
+
+
+/* Function Macros */
+
+#define        ALIGN_UP(x, align)      (((x) + ((align) - 1)) & ~((align) - 1))
+
+
+/* Global Variables */
+
+/* Needed by zalloc and zfree for allocating memory */
+
+char *avail_ram;       /* Indicates start of RAM available for heap */
+char *end_avail;       /* Indicates end of RAM available for heap */
+
+
+/* Function Prototypes */
+
+void *zalloc(void *x, unsigned items, unsigned size);
+void zfree(void *x, void *addr, unsigned nb);
+
+void gunzip(void *dst, int dstlen, unsigned char *src, int *lenp);
+
+void printf () {}
+void pause () {}
+void exit () {}
+
+
+void start(void)
+{
+    void *options;
+    int ns, oh, i;
+    unsigned sa, len;
+    void *dst;
+    unsigned char *im;
+    unsigned initrd_start, initrd_size;
+
+    /* setup_bats(RAM_START); */
+
+    /* Init RAM disk (initrd) section */
+
+    if (initrdSect_start != 0 && (initrd_size = initrdSect_size) != 0) {
+        initrd_start = (RAM_END - initrd_size) & ~0xFFF;
+
+       printf("Initial RAM disk at 0x%08x (%u bytes)\n",
+              initrd_start, initrd_size);
+
+       memcpy((char *)initrd_start,
+              (char *)(initrdSect_start),
+              initrdSect_size);
+
+       end_avail = (char *)initrd_start;
+    } else {
+       end_avail = (char *)RAM_END;
+    }
+
+    /* Linux kernel image section */
+       
+    im = (unsigned char *)(imageSect_start);
+    len = imageSect_size;
+    dst = (void *)PROG_START;
+
+    /* Check for the gzip archive magic numbers */
+
+    if (im[0] == 0x1f && im[1] == 0x8b) {
+
+        /* The gunzip routine needs everything nice and aligned */
+
+       void *cp = (void *)ALIGN_UP(RAM_FREE, 8);
+       avail_ram = (void *)(cp + ALIGN_UP(len, 8));
+       memcpy(cp, im, len);
+
+       /* I'm not sure what the 0x200000 parameter is for, but it works. */
+
+       gunzip(dst, 0x200000, cp, &len);
+    } else {
+       memmove(dst, im, len);
+    }
+
+    /* flush_cache(dst, len); */
+
+    sa = (unsigned long)dst;
+
+    (*(void (*)())sa)();
+
+    pause();
+}
+
+void *zalloc(void *x, unsigned items, unsigned size)
+{
+    void *p = avail_ram;
+
+    size *= items;
+    size = ALIGN_UP(size, 8);
+    avail_ram += size;
+    if (avail_ram > end_avail) {
+       printf("oops... out of memory\n");
+       pause();
+    }
+    return p;
+}
+
+void zfree(void *x, void *addr, unsigned nb)
+{
+
+}
+
+#define HEAD_CRC       2
+#define EXTRA_FIELD    4
+#define ORIG_NAME      8
+#define COMMENT                0x10
+#define RESERVED       0xe0
+
+#define DEFLATED       8
+
+void gunzip(void *dst, int dstlen, unsigned char *src, int *lenp)
+{
+    z_stream s;
+    int r, i, flags;
+
+    /* skip header */
+    i = 10;
+    flags = src[3];
+    if (src[2] != DEFLATED || (flags & RESERVED) != 0) {
+       printf("bad gzipped data\n");
+       exit();
+    }
+    if ((flags & EXTRA_FIELD) != 0)
+       i = 12 + src[10] + (src[11] << 8);
+    if ((flags & ORIG_NAME) != 0)
+       while (src[i++] != 0)
+           ;
+    if ((flags & COMMENT) != 0)
+       while (src[i++] != 0)
+           ;
+    if ((flags & HEAD_CRC) != 0)
+       i += 2;
+    if (i >= *lenp) {
+       printf("gunzip: ran out of data in header\n");
+       exit();
+    }
+    printf("done 1\n");
+    s.zalloc = zalloc;
+    s.zfree = zfree;
+    r = inflateInit2(&s, -MAX_WBITS);
+    if (r != Z_OK) {
+       printf("inflateInit2 returned %d\n", r);
+       exit();
+    }
+    s.next_in = src + i;
+    s.avail_in = *lenp - i;
+    s.next_out = dst;
+    s.avail_out = dstlen;
+    printf("doing inflate\n");
+    r = inflate(&s, Z_FINISH);
+    printf("done inflate\n");
+    if (r != Z_OK && r != Z_STREAM_END) {
+       printf("inflate returned %d\n", r);
+       exit();
+    }
+    *lenp = s.next_out - (unsigned char *) dst;
+    printf("doing end\n");
+    inflateEnd(&s);
+}
diff --git a/arch/ppc/treeboot/misc.S b/arch/ppc/treeboot/misc.S
new file mode 100644 (file)
index 0000000..2741756
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) Paul Mackerras 1997.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+       .text
+
+/*
+ * Flush the dcache and invalidate the icache for a range of addresses.
+ *
+ * flush_cache(addr, len)
+ */
+       .global flush_cache
+flush_cache:
+       addi    4,4,0x1f        /* len = (len + 0x1f) / 0x20 */
+       rlwinm. 4,4,27,5,31
+       mtctr   4
+       beqlr
+1:     dcbf    0,3
+       icbi    0,3
+       addi    3,3,0x20
+       bdnz    1b
+       sync
+       isync
+       blr
diff --git a/arch/ppc/treeboot/mkevimg b/arch/ppc/treeboot/mkevimg
new file mode 100644 (file)
index 0000000..76f849b
--- /dev/null
@@ -0,0 +1,437 @@
+#!/usr/local/bin/perl
+
+#
+#    Copyright (c) 1998-1999 TiVo, Inc.
+#    All rights reserved.
+#
+#    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+#      Major syntactic and usability rework.
+#
+#    Module name: mkevimg
+#
+#    Description:
+#      Converts an ELF output file from the linker into the format used by
+#      the IBM evaluation board ROM Monitor to load programs from a host
+#      onto the evaluation board. The ELF file must be an otherwise execut-
+#      able file (with the text and data addresses bound at link time) and
+#      have space reserved after the entry point for the load information
+#      block:
+#
+#      typedef struct boot_block {
+#        unsigned long magic;          0x0052504F
+#       unsigned long dest;            Target address of the image
+#       unsigned long num_512blocks;   Size, rounded-up, in 512 byte blocks
+#       unsigned long debug_flag;      Run the debugger or image after load
+#        unsigned long entry_point;    The image address to jump to after load
+#       unsigned long reserved[3];
+#      } boot_block_t;
+#
+#   
+
+use File::Basename;
+use Getopt::Std;
+
+#
+# usage()
+#
+# Description:
+#   This routine prints out the proper command line usage for this program
+#
+# Input(s):
+#   status - Flag determining what usage information will be printed and what
+#            the exit status of the program will be after the information is
+#            printed.
+#
+# Output(s):
+#   N/A
+#
+# Returns:
+#   This subroutine does not return.
+#
+
+sub usage {
+  my($status);
+  $status = $_[0];
+
+  printf("Usage: %s [-hlvV] <ELF input file> <Evaluation board output file>\n",
+       $program);
+
+  if ($status != 0) {
+    printf("Try `%s -h' for more information.\n", $program);
+  }
+
+  if ($status != 1) {
+    print("  -h         Print out this message and exit.\n");
+    print("  -l         Linux mode; if present, copy 'image' and 'initrd' sections.\n");
+    print("  -v         Verbose. Print out lots of ELF information.\n");
+    print("  -V         Print out version information and exit.\n");
+  }
+
+  exit($status);
+}
+
+#
+# version()
+#
+# Description:
+#   This routine prints out program version information
+#
+# Input(s):
+#   N/A
+#
+# Output(s):
+#   N/A
+#
+# Returns:
+#   This subroutine does not return.
+#
+
+sub version {
+  print("mkevimg Version 1.1.0\n");
+  print("Copyright (c) 1998-1999 TiVo, Inc.\n");
+  print("Copyright (c) 1999 Grant Erickson <grant\@lcse.umn.edu>\n");
+
+  exit (0);
+}
+
+#
+# file_check()
+#
+# Description:
+#   This routine checks an input file to ensure that it exists, is a
+#   regular file, and is readable.
+#
+# Input(s):
+#   file - Input file to be checked.
+#
+# Output(s):
+#   N/A
+#
+# Returns:
+#   0 if the file exists, is a regular file, and is readable, otherwise -1.
+#
+
+sub file_check {
+  my($file);
+  $file = $_[0];
+
+  if (!(-e $file)) {
+    printf("The file \"%s\" does not exist.\n", $file);
+    return (-1);
+  } elsif (!(-f $file)) {
+    printf("The file \"%s\" is not a regular file.\n", $file);
+    return (-1);
+  } elsif (!(-r $file)) {
+    printf("The file \"%s\" is not readable.\n", $file);
+    return (-1);
+  }
+
+  return (0);
+}
+
+#
+# decode_options()
+#
+# Description:
+#   This routine steps through the command-line arguments, parsing out
+#   recognzied options.
+#
+# Input(s):
+#   N/A
+#
+# Output(s):
+#   N/A
+#
+# Returns:
+#   N/A
+#
+
+sub decode_options {
+
+  if (!getopts("hlvV")) {
+    usage(1);
+  }
+
+  if ($opt_h) {
+    usage(0);
+  }
+
+  if ($opt_l) {
+    $linux = 1;
+  }
+
+  if ($opt_V) {
+    version();
+    exit (0);
+  }
+
+  if ($opt_v) {
+    $verbose = 1;
+  }
+
+  if (!($ifile = shift(@ARGV))) {
+    usage(1);
+  }
+
+  if (!($ofile = shift(@ARGV))) {
+    usage (1);
+  }
+
+  if (file_check($ifile)) {
+    exit(1);
+  }
+
+}
+
+#
+# ELF file and section header field numbers
+#
+
+require 'elf.pl';
+
+#
+# Main program body
+#
+
+{
+  $program = basename($0);
+
+  decode_options();
+
+  open(ELF, "<$ifile") || die "Cannot open input file";
+
+  $ifilesize = (-s $ifile);
+
+  if ($verbose) {
+    print("Output file: $ofile\n");
+    print("Input file: $ifile, $ifilesize bytes.\n");
+  }
+
+  if (read(ELF, $ibuf, $ifilesize) != $ifilesize) {
+    print("Failed to read input file!\n");
+    exit(1);
+  }
+
+  # 
+  # Parse ELF header
+  #
+
+  @eh = unpack("a16n2N5n6", $ibuf);
+
+  #
+  # Make sure this is actually a PowerPC ELF file.
+  #
+
+  if (substr($eh[$e_ident], 0, 4) ne "\177ELF") {
+    printf("The file \"%s\" is not an ELF file.\n", $ifile);
+    exit (1);
+  } elsif ($eh[$e_machine] != 20) {
+    printf("The file \"%s\" is not a PowerPC ELF file.\n", $ifile);
+    exit (1);
+  }
+
+  if ($verbose) {
+    print("File header:\n");
+    printf("  Identifier:            %s\n",    $eh[$e_ident]);
+    printf("  Type:                  %d\n",    $eh[$e_type]);
+    printf("  Machine:               %d\n",    $eh[$e_machine]);
+    printf("  Version:               %d\n",    $eh[$e_version]);
+    printf("  Entry point:           0x%08x\n", $eh[$e_entry]);
+    printf("  Program header offset: 0x%x\n",  $eh[$e_phoff]);
+    printf("  Section header offset: 0x%x\n",  $eh[$e_shoff]);
+    printf("  Flags:                 0x%08x\n", $eh[$e_flags]);
+    printf("  Header size:           %d\n", $eh[$e_ehsize]);
+    printf("  Program entry size:    %d\n", $eh[$e_phentsize]);
+    printf("  Program table entries: %d\n", $eh[$e_phnum]);
+    printf("  Section header size:   %d\n", $eh[$e_shentsize]);
+    printf("  Section table entries: %d\n", $eh[$e_shnum]);
+    printf("  String table section:  %d\n", $eh[$e_shstrndx]);
+  }
+
+  #
+  # Find the section header for the string table.
+  #
+
+  $strtable_section_offset =  $eh[$e_shoff] +
+    $eh[$e_shstrndx] * $eh[$e_shentsize];
+
+  if ($verbose) {
+    printf("String table section header offset: 0x%x\n",
+          $strtable_section_offset);
+  }
+  
+  #
+  # Find the start of the string table.
+  #
+
+  @strh = unpack("N10", substr($ibuf, $strtable_section_offset, 
+                              $eh[$e_shentsize]));
+
+  if ($verbose) {
+    printf("Section name strings start at: 0x%x, %d bytes.\n",
+          $strh[$sh_offset], $strh[$sh_size]);
+  }
+
+  $names = substr($ibuf, $strh[$sh_offset], $strh[$sh_size]);
+
+  # Grab each section header and find '.text' and '.bss' sections in
+  # particular.
+
+  if ($verbose) {
+  print("Section headers:\n");
+  print("Idx  Name                      Size      Address   File off  Algn\n");
+  print("---  ------------------------  --------  --------  --------  ----\n");
+  }
+
+  $off = $eh[$e_shoff];
+
+  for($i = 0; $i < $eh[$e_shnum]; $i++, $off += $eh[$e_shentsize]) {
+    @sh = unpack("N10", substr($ibuf, $off, $eh[$e_shentsize]));
+
+    # Take the first section name from the array returned by split.
+
+    ($name) = split(/\000/, substr($names, $sh[$sh_name]));
+    
+    if ($verbose) {
+      printf("%3d  %-24s  %8x  %08x  %08x  %4d\n", 
+            $i, $name, $sh[$sh_size], $sh[$sh_addr], 
+            $sh[$sh_offset], $sh[$sh_addralign]);
+    }
+
+    # Attempt to find the .text and .bss sections
+
+    if ($name =~ /^\.bss$/) {
+      ($bss_addr, $bss_offset, $bss_size) =
+       ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);
+
+    } elsif ($name =~ /^\.text$/) {
+      ($text_addr, $text_offset, $text_size) = 
+       ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);
+
+    } elsif ($linux && ($name =~ /^\image$/)) {
+      $image_found = 1;
+
+      ($image_addr, $image_offset, $image_size) = 
+       ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);
+
+    } elsif ($linux && ($name =~ /^\initrd$/)) {
+      $initrd_found = 1;
+
+      ($initrd_addr, $initrd_offset, $initrd_size) = 
+       ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);
+
+    }
+  }
+
+  printf("Text section   - Address: 0x%08x, Size: 0x%08x\n",
+        $text_addr, $text_size);
+  printf("Bss  section   - Address: 0x%08x, Size: 0x%08x\n",
+        $bss_addr, $bss_size);
+
+  if ($linux) {
+    if ($image_found) {
+      printf("Image section  - Address: 0x%08x, Size: 0x%08x\n",
+            $image_addr, $image_size);
+    }
+
+    if ($initrd_found) {
+      printf("Initrd section - Address: 0x%08x, Size: 0x%08x\n",
+            $initrd_addr, $initrd_size);
+    }
+  }
+
+  #
+  # Open output file
+  #
+
+  open(BOOT, ">$ofile") || die "Cannot open output file";
+
+  #
+  # Compute image size
+  #
+
+  $output_size = $bss_offset - $text_offset + $bss_size;
+
+  if ($linux && $image_found) {
+    $output_size += $image_size;
+  }
+
+  if ($linux && $initrd_found) {
+    $output_size += $initrd_size;
+  }
+
+  $num_blocks = $output_size / 512 + 1;
+
+  #
+  # Write IBM PowerPC evaluation board boot_block_t header
+  #
+
+  $header = pack("H8N7", "0052504f", $text_addr, $num_blocks, 0,
+                $text_addr, 0, 0, 0);
+
+  $bytes = length($header);
+  
+  if (($resid = syswrite(BOOT, $header, $bytes)) != $bytes) {
+    die("Could not write boot image header to output file.");
+  }
+
+  printf("Entry point = 0x%08x\n", $text_addr);
+  printf("Image size  = 0x%08x (%d bytes) (%d blocks).\n", 
+        $output_size, $output_size, $num_blocks);
+
+  #
+  # Write image starting after ELF and program headers and 
+  # continuing to beginning of bss
+  #
+
+  $bytes = $bss_offset - $text_offset + $bss_size;
+
+  if (($resid = syswrite(BOOT, $ibuf, $bytes, $text_offset)) != $bytes) {
+    die("Could not write boot image to output file.\n");
+  }
+
+  #
+  # If configured, write out the image and initrd sections as well
+  #
+
+  if ($linux) {
+    if ($image_found) {
+      $bytes = $image_size;
+      if (($resid = syswrite(BOOT, $ibuf, $bytes, $image_offset)) != $bytes) {
+       die("Could not write boot image to output file.\n");
+      }
+    }
+
+    if ($initrd_found) {
+      $bytes = $initrd_size;
+      if (($resid = syswrite(BOOT, $ibuf, $bytes, $initrd_offset)) != $bytes) {
+       die("Could not write boot image to output file.\n");
+      }
+    }
+  }
+
+  #
+  # Pad to a multiple of 512 bytes
+  #
+
+  $pad_size = 512 - (length($header) + $output_size) % 512;
+
+  if ($verbose) {
+    print("Padding boot image by an additional $pad_size bytes.\n");
+  }
+
+  $pad_string = pack(("H8","deadbeef") x 128);
+
+  syswrite(BOOT, $pad_string, $pad_size) or
+    die "Could not pad boot image in output file.\n";
+
+  #
+  # Clean-up and leave
+  #
+
+  close(BOOT);
+
+  print("\nBoot image file \"$ofile\" built successfuly.\n\n");
+
+  exit(0);
+}
diff --git a/arch/ppc/treeboot/mkirimg b/arch/ppc/treeboot/mkirimg
new file mode 100644 (file)
index 0000000..e8aa24e
--- /dev/null
@@ -0,0 +1,367 @@
+#!/usr/local/bin/perl
+#
+#    Copyright (c) 1998-1999 TiVo, Inc.
+#      Original ELF parsing code.
+#
+#    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+#      Original code from 'mkevimg'.
+#
+#    Module name: mkirimg
+#
+#    Description:
+#      Reads an ELF file and assigns global variables 'imageSect_start',
+#      'imageSect_size', 'initrdSect_start', and 'initrdSect_size' from
+#      the "image" and "initrd" section header information. It then
+#      rewrites the input ELF file with assigned globals to an output
+#      file.
+#
+#      An input file, "irSectStart.txt" has the memory address of
+#      'irSectStart'. The irSectStart memory address is used to find
+#      the global variables in the ".data" section of the ELF file.
+#      The 'irSectStart' and the above global variables are defined
+#      in "irSect.c".
+#
+#
+
+use File::Basename;
+use Getopt::Std;
+
+#
+# usage()
+#
+# Description:
+#   This routine prints out the proper command line usage for this program
+#
+# Input(s):
+#   status - Flag determining what usage information will be printed and what
+#            the exit status of the program will be after the information is
+#            printed.
+#
+# Output(s):
+#   N/A
+#
+# Returns:
+#   This subroutine does not return.
+#
+
+sub usage {
+  my($status);
+  $status = $_[0];
+
+  printf("Usage: %s [-hvV] <ELF input file> <Evaluation board output file> <irSectStart.txt file>\n",
+        $program);
+
+  if ($status != 0) {
+    printf("Try `%s -h' for more information.\n", $program);
+  }
+
+  if ($status != 1) {
+    print("  -h             Print out this message and exit.\n");
+    print("  -v             Verbose. Print out lots of ELF information.\n");
+    print("  -V             Print out version information and exit.\n");
+  }
+
+  exit($status);
+}
+
+#
+# version()
+#
+# Description:
+#   This routine prints out program version information
+#
+# Input(s):
+#   N/A
+#
+# Output(s):
+#   N/A
+#
+# Returns:
+#   This subroutine does not return.
+#
+
+sub version {
+  print("mkirimg Version 1.1.0\n");
+  print("Copyright (c) 1998-1999 TiVo, Inc.\n");
+  print("Copyright (c) 1999 Grant Erickson <grant\@lcse.umn.edu>\n");
+
+  exit (0);
+}
+
+#
+# file_check()
+#
+# Description:
+#   This routine checks an input file to ensure that it exists, is a
+#   regular file, and is readable.
+#
+# Input(s):
+#   file - Input file to be checked.
+#
+# Output(s):
+#   N/A
+#
+# Returns:
+#   0 if the file exists, is a regular file, and is readable, otherwise -1.
+#
+
+sub file_check {
+  my($file);
+  $file = $_[0];
+
+  if (!(-e $file)) {
+     printf("The file \"%s\" does not exist.\n", $file);
+     return (-1);
+  } elsif (!(-f $file)) {
+     printf("The file \"%s\" is not a regular file.\n", $file);
+     return (-1);
+  } elsif (!(-r $file)) {
+     printf("The file \"%s\" is not readable.\n", $file);
+     return (-1);
+  }
+
+  return (0);
+}
+
+#
+# decode_options()
+#
+# Description:
+#   This routine steps through the command-line arguments, parsing out
+#   recognzied options.
+#
+# Input(s):
+#   N/A
+#
+# Output(s):
+#   N/A
+#
+# Returns:
+#   N/A
+#
+
+sub decode_options {
+
+  if (!getopts("hvV")) {
+      usage(1);
+  }
+
+  if ($opt_h) {
+      usage(0);
+  }
+
+  if ($opt_V) {
+      version();
+      exit (0);
+  }
+
+  if ($opt_v) {
+      $verbose = 1;
+  }
+
+  if (!($ElfFile = shift(@ARGV))) {
+      usage(1);
+  }
+
+  if (!($OutputFile = shift(@ARGV))) {
+      usage (1);
+  }
+
+  if (!($IrFile = shift(@ARGV))) {
+      usage (1);
+  }
+
+  if (file_check($ElfFile)) {
+      exit(1);
+  }
+
+  if (file_check($IrFile)) {
+      exit(1);
+  }
+}
+
+#
+# ELF file and section header field numbers
+#
+
+require 'elf.pl';
+
+#
+# Main program body
+#
+
+{
+  $program = basename($0);
+  decode_options();
+
+  open(ELF, "<$ElfFile") || die "Cannot open input file";
+  open(OUTPUT, ">$OutputFile") || die "Cannot open output file";
+  open(IR, "$IrFile") || die "Cannot open input file";
+
+  $ElfFilesize = (-s $ElfFile);
+
+  if (read(ELF, $ibuf, $ElfFilesize) != $ElfFilesize) {
+    print("Failed to read ELF input file!\n");
+    exit(1);
+  }
+
+  if (read(IR, $irbuf, 8) != 8) {
+      print("Failed to read Ir input file!\n");
+      exit(1);
+  }
+
+  #
+  # Parse ELF header
+  #
+
+  @eh = unpack("a16n2N5n6", $ibuf);
+
+  #
+  # Make sure this is actually a PowerPC ELF file.
+  #
+
+  if (substr($eh[$e_ident], 0, 4) ne "\177ELF") {
+      printf("The file \"%s\" is not an ELF file.\n", $ElfFile);
+      exit (1);
+  } elsif ($eh[$e_machine] != 20) {
+      printf("The file \"%s\" is not a PowerPC ELF file.\n", $ElfFile);
+      exit (1);
+  }
+
+  #
+  # Find the section header for the string table.
+  #
+
+  $strtable_section_offset =  $eh[$e_shoff] +
+
+  $eh[$e_shstrndx] * $eh[$e_shentsize];
+
+  if ($verbose) {
+     printf("String table section header offset: 0x%x\n",
+     $strtable_section_offset);
+  }
+
+  #
+  # Find the start of the string table.
+  #
+
+  @strh = unpack("N10", substr($ibuf, $strtable_section_offset,
+                              $eh[$e_shentsize]));
+
+  if ($verbose) {
+     printf("Section name strings start at: 0x%x, %d bytes.\n",
+     $strh[$sh_offset], $strh[$sh_size]);
+  }
+
+  $names = substr($ibuf, $strh[$sh_offset], $strh[$sh_size]);
+
+  # Grab each section header and find '.data', 'image', and 
+  # 'initrd' sections in particular.
+
+  $off = $eh[$e_shoff];
+  $imageFound = 0;
+  $initrdFound = 0;
+  
+  for($i = 0; $i < $eh[$e_shnum]; $i++, $off += $eh[$e_shentsize]) {
+    @sh = unpack("N10", substr($ibuf, $off, $eh[$e_shentsize]));
+
+    # Take the first section name from the array returned by split.
+
+    ($name) = split(/\000/, substr($names, $sh[$sh_name]));
+
+    # Attempt to find the .data, image, and initrd sections
+
+    if ($name =~ /^\image$/) {
+      ($image_addr, $image_offset, $image_size) =
+       ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);
+      $imageFound = 1;
+
+    } elsif ($name =~ /^\initrd$/) {
+      ($initrd_addr, $initrd_offset, $initrd_size) =
+       ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);
+      $initrdFound = 1;
+
+    } elsif ($name =~ /^\.data$/) {
+      ($data_addr, $data_offset, $data_size) =
+       ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);
+
+    } elsif ($name =~ /^\.bss$/) {
+      ($bss_addr, $bss_offset, $bss_size) =
+       ($sh[$sh_addr], $sh[$sh_offset], $sh[$sh_size]);
+
+    }
+   }
+
+  if ($verbose) {
+    printf("Data section   - Address: 0x%08x, Size: 0x%08x, File Offset 0x%08x\n",
+          $data_addr, $data_size, $data_offset);
+    printf("Bss  section   - Address: 0x%08x, Size: 0x%08x, File Offset 0x%08x\n",
+        $bss_addr, $bss_size, $bss_offset);
+   }
+
+  if ($verbose) {
+    if ($imageFound) {
+      printf("Image section  - Address: 0x%08x, Size: 0x%08x\n",
+            $image_addr, $image_size);
+    } else {
+      printf("Image section not found in file: $ElfFile\n");
+    }
+
+    if ($initrdFound) {
+      printf("Initrd section - Address: 0x%08x, Size: 0x%08x\n",
+            $initrd_addr, $initrd_size);
+    } else {
+      printf("Initrd section not found in file: $ElfFile\n");
+    }
+  }
+
+  # get file offset of irSectStart
+
+  $irSectStartoffset = hex ($irbuf);
+
+  if ($verbose) {
+    printf("irSectStartOffset Address: 0x%08x\n", $irSectStartoffset);
+  }
+
+  # get the offset of global variables 
+
+  $initialOffset = ($irSectStartoffset - $data_addr) + $data_offset + 4;
+
+  # write modified values to OUTPUT file
+
+  syswrite(OUTPUT, $ibuf, $initialOffset);
+
+  if ($imageFound) {
+    $testN = pack ("I2", $bss_addr + $bss_size, $image_size);
+    syswrite(OUTPUT, $testN, length($testN));
+    printf("Updated symbol \"imageSect_start\" to 0x%08x\n",
+          $bss_addr + $bss_size);
+    printf("Updated symbol \"imageSect_size\" to 0x%08x\n", $image_size);
+  } else {
+    syswrite(OUTPUT, $ibuf, 8, $initialOffset);
+  }
+
+  if ($initrdFound) {
+    $testN = pack ("I2", $bss_addr + $bss_size + $image_size, $initrd_size);
+    syswrite(OUTPUT, $testN, length($testN));
+    printf("Updated symbol \"initrdSect_start\" to 0x%08x\n",
+          $bss_addr + $bss_size + $image_size);
+    printf("Updated symbol \"initrdSect_size\" to 0x%08x\n", $initrd_size);
+  } else {
+    syswrite(OUTPUT, $ibuf,8, $initialOffset + 8);
+  }
+
+  syswrite(OUTPUT, $ibuf, $ElfFilesize - ($initialOffset + 16),
+          $initialOffset + 16);
+
+  #
+  # Clean-up and leave
+  #
+
+  close (ELF);
+  close (OUTPUT);
+  close (IR);
+
+  exit (0);
+}
+
index b3566863d9b7c6c01f0e564e88aa42ef47119081..5e838d924f4ef60249a3784bf80813f646d8bec1 100644 (file)
@@ -533,8 +533,7 @@ extract_bdp (insn, invalid)
 /* Check for legal values of a BO field.  */
 
 static int
-valid_bo (value)
-     long value;
+valid_bo (long value)
 {
   /* Certain encodings have bits that are required to be zero.  These
      are (z must be zero, y may be anything):
index 73899b2fd61e0b928bfe9a0148bfaaaf5e541e2e..b463695415e9dc31168a71ba8dd8d19ca75ff816 100644 (file)
@@ -2,8 +2,8 @@
  *
  * Name:       skge.c
  * Project:    GEnesis, PCI Gigabit Ethernet Adapter
- * Version:    $Revision: 1.25 $
- * Date:               $Date: 1999/10/07 14:47:52 $
+ * Version:    $Revision: 1.27 $
+ * Date:               $Date: 1999/11/25 09:06:28 $
  * Purpose:    The main driver source module
  *
  ******************************************************************************/
  * History:
  *
  *     $Log: skge.c,v $
+ *     Revision 1.27  1999/11/25 09:06:28  cgoos
+ *     Changed base_addr to unsigned long.
+ *     
+ *     Revision 1.26  1999/11/22 13:29:16  cgoos
+ *     Changed license header to GPL.
+ *     Changes for inclusion in linux kernel (2.2.13).
+ *     Removed 2.0.x defines.
+ *     Changed SkGeProbe to skge_probe.
+ *     Added checks in SkGeIoctl.
+ *     
  *     Revision 1.25  1999/10/07 14:47:52  cgoos
  *     Changed 984x to 98xx.
  *     
@@ -337,7 +347,7 @@ int boards_found = 0;
 int            version_disp = 0;
 SK_AC          *pAC;
 struct pci_dev *pdev = NULL;
-unsigned int   base_address;
+unsigned long  base_address;
 
        if (probed)
                return -ENODEV;
index 7ea7e6f91fd34ec7195ad5278ec29b05696e1c24..e5ca5c740fc10403a8fb11d6c60d25e6c6ddc125 100644 (file)
@@ -287,9 +287,9 @@ static mega_scb *pLastScb = NULL;
 static Scsi_Cmnd *qCompleted = NULL;
 
 #if SERDEBUG
-volatile static spinlock_t serial_lock;
+volatile static spinlock_t serial_lock = SPIN_LOCK_UNLOCKED;
 #endif
-volatile static spinlock_t mega_lock;
+volatile static spinlock_t mega_lock = SPIN_LOCK_UNLOCKED;
 
 #if SERDEBUG
 static char strbuf[MAX_SERBUF + 1];
index 9003dcb70e441ed2dc9ceb5723350d2f132001e5..d1100f0830c137812c71c67dd7c1a498d157d724 100644 (file)
@@ -528,7 +528,7 @@ typedef     int             vm_size_t;
 #if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,93)
 
 #if 0  /* not yet needed */
-static spinlock_t driver_lock;
+static spinlock_t driver_lock = SPIN_LOCK_UNLOCKED;
 #define        NCR_LOCK_DRIVER(flags)     spin_lock_irqsave(&driver_lock, flags)
 #define        NCR_UNLOCK_DRIVER(flags)   spin_unlock_irqrestore(&driver_lock, flags)
 #endif
index ac3242ba53838c1b176b5c0e526fbc812008504c..2113f866b0de3ac66e2c061c9ddf98d5c3c8cba1 100644 (file)
@@ -496,7 +496,7 @@ static int ncr_debug = SCSI_NCR_DEBUG_FLAGS;
 
 #if LINUX_VERSION_CODE >= LinuxVersionCode(2,1,93)
 
-spinlock_t sym53c8xx_lock;
+spinlock_t sym53c8xx_lock = SPIN_LOCK_UNLOCKED;
 #define        NCR_LOCK_DRIVER(flags)     spin_lock_irqsave(&sym53c8xx_lock, flags)
 #define        NCR_UNLOCK_DRIVER(flags)   spin_unlock_irqrestore(&sym53c8xx_lock,flags)
 
index d0a08c0b2b03dbcbcd5be456fa82a46bffa9b732..46a1d6acefae7c42cd8f62189627fe61d649c079 100644 (file)
  * for more info.
  */
 
+/* 26th Novemner 1999 - patched to compile without ISA PnP support in the
+   kernel. -Daniel Stone (tamriel@ductape.net) */
+
 #include <linux/config.h>
 #ifdef CONFIG_MCA
 #include <linux/mca.h>
 #endif
 #include <linux/module.h>
 #include <linux/init.h>
+#ifdef CONFIG_ISAPNP           /* Patched so it will compile withOUT ISA PnP */
 #include <linux/isapnp.h>
+#endif
 
 #include "sound_config.h"
 #include "soundmodule.h"
@@ -140,7 +145,11 @@ int pas2 = 0;              /* Set pas2=1 to load this as support for pas2 */
 int support = 0;       /* Set support to load this as a support module */
 int sm_games = 0;      /* Mixer - see sb_mixer.c */
 int acer = 0;          /* Do acer notebook init */
+#ifdef CONFIG_ISAPNP
+int isapnp = 1;
+#else
 int isapnp = 0;
+#endif
 
 MODULE_PARM(io, "i");
 MODULE_PARM(irq, "i");
@@ -154,10 +163,13 @@ MODULE_PARM(trix, "i");
 MODULE_PARM(pas2, "i");
 MODULE_PARM(sm_games, "i");
 MODULE_PARM(esstype, "i");
+#ifdef CONFIG_ISAPNP
 MODULE_PARM(isapnp, "i");
+#endif
 
 void *smw_free = NULL;
 
+#ifdef CONFIG_ISAPNP
 static struct { unsigned short vendor, function; char *name; }
 isapnp_sb_list[] __initdata = {
        {ISAPNP_VENDOR('C','T','L'), ISAPNP_FUNCTION(0x0001), "Sound Blaster 16" },
@@ -212,6 +224,7 @@ static int __init sb_probe_isapnp(struct address_info *hw_config, struct address
        }
        return -ENODEV;
 }
+#endif
 
 int init_module(void)
 {
@@ -219,43 +232,39 @@ int init_module(void)
 
        if (mad16 == 0 && trix == 0 && pas2 == 0 && support == 0)
        {
-               if (isapnp == 1)
-               {
-                       if (sb_probe_isapnp(&config, &config_mpu)<0)
-                       {
-                               printk(KERN_ERR "sb_card: No ISAPnP cards found\n");
-                               return -EINVAL;
-                       }
-               } 
-               else 
+#ifdef CONFIG_ISAPNP                   
+               if (sb_probe_isapnp(&config, &config_mpu)<0)
                {
-                       if (io == -1 || dma == -1 || irq == -1)
-                       {
-                               printk(KERN_ERR "sb_card: I/O, IRQ, and DMA are mandatory\n");
-                               return -EINVAL;
-                       }
-                       config.io_base = io;
-                       config.irq = irq;
-                       config.dma = dma;
-                       config.dma2 = dma16;
+                       printk(KERN_ERR "sb_card: No ISAPnP cards found\n");
+                       return -EINVAL;
                }
-               config.card_subtype = type;
-
-               if (!probe_sb(&config))
-                       return -ENODEV;
-               attach_sb_card(&config);
-               
-               if(config.slots[0]==-1)
-                       return -ENODEV;
-#ifdef CONFIG_MIDI
-               if (isapnp == 0) 
-                 config_mpu.io_base = mpu_io;
-               if (probe_sbmpu(&config_mpu))
-                       sbmpu = 1;
-               if (sbmpu)
-                       attach_sbmpu(&config_mpu);
 #endif
+       } 
+       if (io == -1 || dma == -1 || irq == -1)
+       {
+               printk(KERN_ERR "sb_card: I/O, IRQ, and DMA are mandatory\n");
+               return -EINVAL;
        }
+       config.io_base = io;
+       config.irq = irq;
+       config.dma = dma;
+       config.dma2 = dma16;
+       config.card_subtype = type;
+
+       if (!probe_sb(&config))
+               return -ENODEV;
+       attach_sb_card(&config);
+       
+       if(config.slots[0]==-1)
+               return -ENODEV;
+#ifdef CONFIG_MIDI
+       if (isapnp == 0) 
+         config_mpu.io_base = mpu_io;
+       if (probe_sbmpu(&config_mpu))
+               sbmpu = 1;
+       if (sbmpu)
+               attach_sbmpu(&config_mpu);
+#endif
        SOUND_LOCK;
        return 0;
 }
index 86efde519871eb8a6ff936df3b93c868191d5399..9c124d4b528d8d53981780806bbbfa75fa2a3191 100644 (file)
@@ -219,7 +219,7 @@ usb_kbd_probe(struct usb_device *dev, unsigned int i)
         usb_set_protocol(dev, 0);
         usb_set_idle(dev, 0, 0);
         
-       kbd->irqpipe = usb_rcvctrlpipe(dev, endpoint->bEndpointAddress);
+       kbd->irqpipe = usb_rcvintpipe(dev, endpoint->bEndpointAddress);
        ret = usb_request_irq(dev, kbd->irqpipe,
                                usb_kbd_irq, endpoint->bInterval,
                                kbd, &kbd->irq_handler);
index 3a3104f3fdd7d5b3ee786f1171840ff434994ae6..4abd2de11f6c78c45d4a19cefe02d950a93d27ec 100644 (file)
@@ -90,7 +90,7 @@ static int sohci_blocking_handler(void * ohci_in, struct usb_ohci_td *td, void *
 {  
        struct usb_ohci_ed *ed = td->ed;
        if(lw0 != NULL) {
-               if(0 < 0 && (status == USB_ST_DATAUNDERRUN || status == USB_ST_NOERROR)) 
+               if((status == USB_ST_DATAUNDERRUN || status == USB_ST_NOERROR)) 
                        ((struct ohci_state * )lw0)->status = data_len;
                else
                        ((struct ohci_state * )lw0)->status = status;
@@ -123,7 +123,7 @@ static int sohci_int_handler(void * ohci_in, struct usb_ohci_td *td, void * data
  
        ret = handler(status, data, data_len, dev_id);
        if(ret == 0) return 0; /* 0 .. do not requeue  */
-       if(status > 0) return -1; /* error occured do not requeue ? */
+       if(status < 0) return -1; /* error occured do not requeue ? */
        ohci_trans_req(ohci, ed, 0, NULL, data, (ed->hwINFO >> 16) & 0x3f, (__OHCI_BAG) handler, (__OHCI_BAG) dev_id, INT_IN, sohci_int_handler); /* requeue int request */
  
        return 0;
@@ -342,15 +342,13 @@ static void * sohci_request_bulk(struct usb_device *usb_dev, unsigned int pipe,
  
 static int sohci_terminate_bulk(struct usb_device *usb_dev, void * ed) 
 {
-       DECLARE_WAITQUEUE(wait, current);
        
        OHCI_DEBUG( printk("USB HC TERM_BULK>>>:%4x\n", (unsigned int) ed);)
        
-       current->state = TASK_UNINTERRUPTIBLE;
-    usb_ohci_rm_ep(usb_dev, (struct usb_ohci_ed *) ed, sohci_blocking_handler, NULL, &wait, SEND);
-    schedule();
-    remove_wait_queue(&op_wakeup, &wait); 
-       return 1;
+       ED_setSTATE((struct usb_ohci_ed *)ed, ED_STOP);
+        
+    usb_ohci_rm_ep(usb_dev, (struct usb_ohci_ed *) ed, NULL, NULL, NULL, 0);
+       return 0;
 }
 
 static int sohci_alloc_dev(struct usb_device *usb_dev)
@@ -382,7 +380,7 @@ static int sohci_free_dev(struct usb_device *usb_dev)
        struct ohci_device *dev = usb_to_ohci(usb_dev);
 
        OHCI_DEBUG(printk("USB HC ***** free %x\n", usb_dev->devnum);)
-
+       wait_ms(10);
        if(usb_dev->devnum >= 0) {
                current->state = TASK_UNINTERRUPTIBLE;
        cnt = usb_ohci_rm_function(usb_dev, sohci_blocking_handler, NULL, &wait);
@@ -409,7 +407,7 @@ static int sohci_get_current_frame_number(struct usb_device *usb_dev) {
 
        struct ohci * ohci = usb_dev->bus->hcpriv;
        
-       return readl(&ohci->regs->fmnumber) & 0xffff;
+       return ohci->hc_area->hcca.frame_no & 0xffff;
 }
 
 
@@ -509,7 +507,9 @@ static int sohci_kill_isoc(struct usb_isoc_desc *id) {
        for (i = 0; i < id->frame_count; i++) {
                if(td[i]) {
                        td[i]->type |= DEL;
-                       ed = td[i]->ed; printk(" %d", i);       
+                       ed = td[i]->ed; 
+                       OHCI_DEBUG(printk(" %d", i);)   
+                       td[i] = NULL;
                }
        } 
        if(ed) usb_ohci_rm_ep(id->usb_dev, ed, NULL, NULL, NULL, TD_RM);
@@ -1100,7 +1100,7 @@ static struct usb_ohci_td * usb_ohci_del_list(struct ohci *  ohci) {
        __u32 * td_hw; 
        
        for(ed = ohci->ed_rm_list; ed != NULL; ed = ed->ed_prev) {
-                OHCI_DEBUG(printk("USB HC ed_rm_list: %4x :\n", ed->hwINFO);)
+                OHCI_DEBUG(printk("USB HC ed_rm_list: %4x :next : %p\n", ed->hwINFO, ed->ed_prev);)
                  
                        
                for( td_hw = &(ed->hwHeadP); (*td_hw & 0xfffffff0) != ed->hwTailP; td_hw = &(td->hwNextTD)) {
@@ -1483,6 +1483,8 @@ static int start_ohci(struct pci_dev *dev)
 static int handle_apm_event(apm_event_t event)
 {
        static int down = 0;
+       struct ohci * ohci;
+       struct list_head *ohci_l;
 
        switch (event) {
        case APM_SYS_SUSPEND:
@@ -1491,6 +1493,12 @@ static int handle_apm_event(apm_event_t event)
                        printk(KERN_DEBUG "ohci: received extra suspend event\n");
                        break;
                }
+               for(ohci_l = ohci_hcd_list.next; ohci_l != &ohci_hcd_list; ohci_l = ohci_l->next) {
+                       ohci = list_entry(ohci_l, struct ohci, ohci_hcd_list);
+                       OHCI_DEBUG(printk("USB OHCI suspend: %p\n", ohci);)
+                       writel(0xff, &ohci->regs->control); /* Suspend */
+               }
+               wait_ms(10);
                down = 1;
                break;
        case APM_NORMAL_RESUME:
@@ -1499,8 +1507,14 @@ static int handle_apm_event(apm_event_t event)
                        printk(KERN_DEBUG "ohci: received bogus resume event\n");
                        break;
                }
+               for(ohci_l = ohci_hcd_list.next; ohci_l != &ohci_hcd_list; ohci_l = ohci_l->next) {
+                       ohci = list_entry(ohci_l, struct ohci, ohci_hcd_list);
+                       OHCI_DEBUG(printk("USB OHCI resume: %p\n", ohci);)
+                       writel(0x7f, &ohci->regs->control); /* Resume */
+                       wait_ms(20);
+                       writel(0xBF, &ohci->regs->control); /* Operational */
+               }
                down = 0;
-//             start_hc(ohci);
                break;
        }
        return 0;
index 9f02ea2067484ab0f26f9b7f07d72b4d45d5e2d1..cb2880559f0992f4f16615f040786f900668476b 100644 (file)
@@ -205,7 +205,7 @@ int root_hub_control_msg(struct usb_device *usb_dev, unsigned int pipe, devreque
                                        len = min(leni, min(sizeof(root_hub_config_des), wLength));
                                        memcpy(data, root_hub_config_des, len); OK(len);
                                case (0x03): /* string descriptors */
-                               default:
+                               default: OK(-4);
                        }
                        break;
                
@@ -229,13 +229,15 @@ int root_hub_control_msg(struct usb_device *usb_dev, unsigned int pipe, devreque
                case RH_GET_CONFIGURATION:      *(__u8 *)data = 0x01; OK(1);
 
                case RH_SET_CONFIGURATION:      WR_RH_STAT( 0x10000); OK(0);
+
+               default: OK(-4);
        }
        
        OHCI_DEBUG(printk("USB HC roothubstat1: %x \n", readl( &(ohci->regs->roothub.portstatus[0]) ));)
        OHCI_DEBUG(printk("USB HC roothubstat2: %x \n", readl( &(ohci->regs->roothub.portstatus[1]) ));)
                
        
-       return req_reply;
+       return len;
 }
 
 /* prepare Interrupt pipe transaction data; HUB INTERRUPT ENDPOINT */ 
index cfd80db9e74f68c2869e42a94eca0e61ee464ec7..14a36172df840ec8426494e7bcf9ea2d798cd5f5 100644 (file)
@@ -197,7 +197,7 @@ if [ "$CONFIG_FB" = "y" ]; then
           "$CONFIG_FB_VALKYRIE" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
            "$CONFIG_FB_IGA" = "y" -o "$CONFIG_FB_MATROX" = "y" -o \
           "$CONFIG_FB_CT65550" = "y" -o "$CONFIG_FB_PM2" = "y" -o \
-          "$CONFIG_FB_P9100" = "y" -o \
+          "$CONFIG_FB_P9100" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \
           "$CONFIG_FB_RIVA" = "y" -o \
           "$CONFIG_FB_SGIVW" = "y" -o "$CONFIG_FB_CYBER2000" = "y" -o \
           "$CONFIG_FB_3DFX" = "y" ]; then
@@ -214,7 +214,7 @@ if [ "$CONFIG_FB" = "y" ]; then
              "$CONFIG_FB_VALKYRIE" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \
               "$CONFIG_FB_IGA" = "m" -o "$CONFIG_FB_MATROX" = "m" -o \
              "$CONFIG_FB_CT65550" = "m" -o "$CONFIG_FB_PM2" = "m" -o \
-             "$CONFIG_FB_P9100" = "m" -o \
+             "$CONFIG_FB_P9100" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \
              "$CONFIG_FB_SGIVW" = "m" -o "$CONFIG_FB_CYBER2000" = "m" ]; then
            define_tristate CONFIG_FBCON_CFB8 m
         fi
@@ -228,14 +228,14 @@ if [ "$CONFIG_FB" = "y" ]; then
           "$CONFIG_FB_VALKYRIE" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
           "$CONFIG_FB_CT65550" = "y" -o "$CONFIG_FB_MATROX" = "y" -o \
           "$CONFIG_FB_PM2" = "y" -o "$CONFIG_FB_SGIVW" = "y" -o \
-          "$CONFIG_FB_RIVA" = "y" -o \
+          "$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \
           "$CONFIG_FB_CYBER2000" = "y" -o "$CONFIG_FB_3DFX" = "y" ]; then
         define_tristate CONFIG_FBCON_CFB16 y
       else
         if [ "$CONFIG_FB_ATARI" = "m" -o "$CONFIG_FB_ATY" = "m" -o \
              "$CONFIG_FB_MAC" = "m" -o "$CONFIG_FB_VESA" = "m" -o \
              "$CONFIG_FB_VIRTUAL" = "m" -o "$CONFIG_FB_TBOX" = "m" -o \
-             "$CONFIG_FB_Q40" = "m" -o \
+             "$CONFIG_FB_Q40" = "m" -o "$CONFIG_FB_ATY128" = "m" -o \
              "$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \
              "$CONFIG_FB_VIRGE" = "m" -o "$CONFIG_FB_CYBER" = "m" -o \
              "$CONFIG_FB_VALKYRIE" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \
@@ -248,12 +248,14 @@ if [ "$CONFIG_FB" = "y" ]; then
       if [ "$CONFIG_FB_ATY" = "y" -o "$CONFIG_FB_VIRTUAL" = "y" -o \
           "$CONFIG_FB_CLGEN" = "y" -o "$CONFIG_FB_VESA" = "y" -o \
           "$CONFIG_FB_MATROX" = "y" -o "$CONFIG_FB_PM2" = "y" -o \
+           "$CONFIG_FB_ATY128" = "y" -o \
           "$CONFIG_FB_CYBER2000" = "y" ]; then
         define_tristate CONFIG_FBCON_CFB24 y
       else
         if [ "$CONFIG_FB_ATY" = "m" -o "$CONFIG_FB_VIRTUAL" = "m" -o \
              "$CONFIG_FB_CLGEN" = "m" -o "$CONFIG_FB_VESA" = "m" -o \
              "$CONFIG_FB_MATROX" = "m" -o "$CONFIG_FB_PM2" = "m" -o \
+             "$CONFIG_FB_ATY128" = "m" -o \
              "$CONFIG_FB_CYBER2000" = "m" ]; then
            define_tristate CONFIG_FBCON_CFB24 m
         fi
@@ -263,7 +265,7 @@ if [ "$CONFIG_FB" = "y" ]; then
           "$CONFIG_FB_CONTROL" = "y" -o "$CONFIG_FB_CLGEN" = "y" -o \
           "$CONFIG_FB_TGA" = "y" -o "$CONFIG_FB_PLATINUM" = "y" -o \
           "$CONFIG_FB_MATROX" = "y" -o "$CONFIG_FB_PM2" = "y" -o \
-          "$CONFIG_FB_RIVA" = "y" -o \
+          "$CONFIG_FB_RIVA" = "y" -o "$CONFIG_FB_ATY128" = "y" -o \
           "$CONFIG_FB_FM2" = "y" -o "$CONFIG_FB_SGIVW" = "y" -o \
           "$CONFIG_FB_3DFX" = "y" ]; then
         define_tristate CONFIG_FBCON_CFB32 y
@@ -273,6 +275,7 @@ if [ "$CONFIG_FB" = "y" ]; then
              "$CONFIG_FB_CONTROL" = "m" -o "$CONFIG_FB_CLGEN" = "m" -o \
              "$CONFIG_FB_TGA" = "m" -o "$CONFIG_FB_PLATINUM" = "m" -o \
              "$CONFIG_FB_MATROX" = "m" -o "$CONFIG_FB_PM2" = "m" -o \
+             "$CONFIG_FB_ATY128" = "m" -o \    
               "$CONFIG_FB_SGIVW" = "m" ]; then
            define_tristate CONFIG_FBCON_CFB32 m
         fi
index 0b1fd9c6198fc3314d87a4f31cc85751bf51f9d2..3135ea589d4359a8217c560ce9d96d2a6caa8257 100644 (file)
@@ -1324,9 +1324,8 @@ static void unmap_underlying_metadata(struct buffer_head * bh)
  * block_write_full_page() is SMP-safe - currently it's still
  * being called with the kernel lock held, but the code is ready.
  */
-int block_write_full_page(struct file *file, struct page *page)
+int block_write_full_page(struct dentry *dentry, struct page *page)
 {
-       struct dentry *dentry = file->f_dentry;
        struct inode *inode = dentry->d_inode;
        int err, i;
        unsigned long block;
@@ -1998,9 +1997,8 @@ int brw_page(int rw, struct page *page, kdev_t dev, int b[], int size)
  * mark_buffer_uptodate() functions propagate buffer state into the
  * page struct once IO has completed.
  */
-int block_read_full_page(struct file * file, struct page * page)
+int block_read_full_page(struct dentry * dentry, struct page * page)
 {
-       struct dentry *dentry = file->f_dentry;
        struct inode *inode = dentry->d_inode;
        unsigned long iblock;
        struct buffer_head *bh, *head, *arr[MAX_BUF_PER_PAGE];
index d5cf1afef3a56d72975600b9c45bb56d14822be5..19754f0d6d1cced36df128a2fc04a269bb552c68 100644 (file)
@@ -26,7 +26,7 @@
 #include <linux/coda_proc.h>
 
 /* file operations */
-static int coda_readpage(struct file *file, struct page * page);
+static int coda_readpage(struct dentry *dentry, struct page * page);
 static ssize_t coda_file_read(struct file *f, char *buf, size_t count, loff_t *off);
 static ssize_t coda_file_write(struct file *f, const char *buf, size_t count, loff_t *off);
 static int coda_file_mmap(struct file * file, struct vm_area_struct * vma);
@@ -76,12 +76,10 @@ struct file_operations coda_file_operations = {
 };
 
 /*  File file operations */
-static int coda_readpage(struct file * coda_file, struct page * page)
+static int coda_readpage(struct dentry * dentry, struct page * page)
 {
-       struct dentry *de = coda_file->f_dentry;
-       struct inode *coda_inode = de->d_inode;
+       struct inode *coda_inode = dentry->d_inode;
        struct dentry cont_dentry;
-       struct file cont_file;
         struct coda_inode_info *cii;
 
         ENTRY;
@@ -91,17 +89,16 @@ static int coda_readpage(struct file * coda_file, struct page * page)
 
         if ( ! cii->c_ovp ) {
                printk("coda_readpage: no open inode for ino %ld, %s\n", 
-                      coda_inode->i_ino, de->d_name.name);
+                      coda_inode->i_ino, dentry->d_name.name);
                 return -ENXIO;
         }
        
-        coda_prepare_openfile(coda_inode, coda_file, cii->c_ovp,
-                             &cont_file, &cont_dentry);
+        cont_dentry.d_inode = cii->c_ovp;
 
         CDEBUG(D_INODE, "coda ino: %ld, cached ino %ld, page offset: %lx\n", 
               coda_inode->i_ino, cii->c_ovp->i_ino, page->index);
 
-        block_read_full_page(&cont_file, page);
+        block_read_full_page(&cont_dentry, page);
         EXIT;
         return 0;
 }
index 9c2c159cbb0e1d28cfa46d137a83e694efbab986..0f96aa20404a04fdd6b2682937c8d8947a9b824d 100644 (file)
@@ -113,39 +113,23 @@ static int fat_write_partial_page(struct file *file, struct page *page, unsigned
 {
        struct dentry *dentry = file->f_dentry;
        struct inode *inode = dentry->d_inode;
-       struct page *new_page, **hash;
+       struct page *new_page;
        unsigned long pgpos;
-       struct page *page_cache = NULL;
        long status;
 
-       pgpos = MSDOS_I(inode)->i_realsize >> PAGE_CACHE_SHIFT;
-       while (pgpos < page->index) {
-               hash = page_hash(&inode->i_data, pgpos);
-repeat_find:   new_page = __find_lock_page(&inode->i_data, pgpos, hash);
-               if (!new_page) {
-                       if (!page_cache) {
-                               page_cache = page_cache_alloc();
-                               if (page_cache)
-                                       goto repeat_find;
-                               status = -ENOMEM;
-                               goto out;
-                       }
-                       new_page = page_cache;
-                       if (add_to_page_cache_unique(new_page,&inode->i_data,pgpos,hash))
-                               goto repeat_find;
-                       page_cache = NULL;
-               }
+       while((pgpos=MSDOS_I(inode)->i_realsize>>PAGE_CACHE_SHIFT)<page->index){
+               status = -ENOMEM;
+               new_page = grab_cache_page(&inode->i_data, pgpos);
+               if (!new_page)
+                       goto out;
                status = block_write_cont_page(file, new_page, PAGE_SIZE, 0, NULL);
                UnlockPage(new_page);
                page_cache_release(new_page);
                if (status < 0)
                        goto out;
-               pgpos = MSDOS_I(inode)->i_realsize >> PAGE_CACHE_SHIFT;
        }
        status = block_write_cont_page(file, page, offset, bytes, buf);
 out:
-       if (page_cache)
-               page_cache_free(page_cache);
        return status;
 }
 
index 72f61c20a0398fd72a2ea56edac969504e86f1d2..79bfb106cd99eddeca768d76401e1051f6472f23 100644 (file)
@@ -89,55 +89,25 @@ static int hpfs_write_partial_page(struct file *file, struct page *page, unsigne
 {
        struct dentry *dentry = file->f_dentry;
        struct inode *inode = dentry->d_inode;
-       struct page *new_page, **hash;
+       struct page *new_page;
        unsigned long pgpos;
-       struct page * page_cache = NULL;
        long status;
 
-       printk("- off: %08x\n", (int)page->offset);
-       pgpos = (inode->i_blocks - 1) * 512 & PAGE_CACHE_MASK;
-       while (pgpos < page->offset) {
-long pgp = pgpos;
-               printk("pgpos: %08x, bl: %d\n", (int)pgpos, (int)inode->i_blocks);
-               hash = page_hash(&inode->i_data, pgpos);
-repeat_find:   new_page = __find_lock_page(&inode->i_data, pgpos, hash);
-               if (!new_page) {
-                       if (!page_cache) {
-                               page_cache = page_cache_alloc();
-                               if (page_cache)
-                                       goto repeat_find;
-                               status = -ENOMEM;
-                               goto out;
-                       }
-                       new_page = page_cache;
-                       if (add_to_page_cache_unique(new_page,&inode->i_data,pgpos,hash))
-                               goto repeat_find;
-                       page_cache = NULL;
-               }
-               printk("A\n");
+       pgpos = ((inode->i_blocks - 1) * 512) >> PAGE_CACHE_SHIFT;
+       while (pgpos < page->index) {
+               status = -ENOMEM;
+               new_page = grab_page_cache(&inode->i_data, pgpos);
+               if (!new_page)
+                       goto out;
                status = block_write_cont_page(file, new_page, PAGE_SIZE, 0, NULL);
-               printk("B\n");
                UnlockPage(new_page);
                page_cache_release(new_page);
                if (status < 0)
                        goto out;
-               pgpos = (inode->i_blocks - 1) * 512 & PAGE_CACHE_MASK;
-               printk("pgpos2: %08x, bl: %d\n", (int)pgpos, (int)inode->i_blocks);
-               if (pgpos == pgp) {
-                       status = -1;
-                       printk("ERROR\n");
-                       goto out;
-               }
+               pgpos = ((inode->i_blocks - 1) * 512) >> PAGE_CACHE_SHIFT;
        }
-       //if ((status = block_write_cont_page(file, page, PAGE_SIZE, 0, NULL)) < 0) goto out;
-       printk("C\n");
        status = block_write_cont_page(file, page, offset, bytes, buf);
-       printk("D\n");
 out:
-       printk("O\n");
-       if (page_cache)
-               page_cache_free(page_cache);
-       printk("E\n");
        return status;
 }
 
@@ -147,7 +117,7 @@ ssize_t hpfs_file_write(struct file *file, const char *buf, size_t count, loff_t
        ssize_t retval;
 
        retval = generic_file_write(file, buf, count,
-                                   ppos, /*hpfs_write_partial_page*/block_write_partial_page);
+                                   ppos, hpfs_write_partial_page);
        if (retval > 0) {
                struct inode *inode = file->f_dentry->d_inode;
                inode->i_mtime = CURRENT_TIME;
index 8ddba066de94f5366ab3476bcfda5bbfaa4d4a2a..acc59370bffc6e4ce709132dd2ae9311d6878b1d 100644 (file)
@@ -368,37 +368,6 @@ finished:
        return val;
 }
 
-static struct page *
-ncp_get_cache_page(struct inode *inode, unsigned long offset, int used)
-{
-       struct address_space *i_data = &inode->i_data;
-       struct page *new_page, *page, **hash;
-
-       hash = page_hash(i_data, offset);
-
-       page = __find_lock_page(i_data, offset, hash);
-       if (used || page)
-               return page;
-
-       new_page = page_cache_alloc();
-       if (!new_page)
-               return NULL;
-
-       for (;;) {
-               page = new_page;
-               if (!add_to_page_cache_unique(page, i_data, offset, hash))
-                       break;
-               page_cache_release(page);
-               page = __find_lock_page(i_data, offset, hash);
-               if (page) {
-                       page_cache_free(new_page);
-                       break;
-               }
-       }
-
-       return page;
-}
-
 /* most parts from nfsd_d_validate() */
 static int
 ncp_d_validate(struct dentry *dentry)
@@ -518,7 +487,7 @@ static int ncp_readdir(struct file *filp, void *dirent, filldir_t filldir)
                filp->f_pos = 2;
        }
 
-       page = ncp_get_cache_page(inode, 0, 0);
+       page = find_lock_page(&inode->i_data, 0);
        if (!page)
                goto read_really;
 
@@ -547,7 +516,7 @@ static int ncp_readdir(struct file *filp, void *dirent, filldir_t filldir)
 
        for (;;) {
                if (ctl.ofs != 0) {
-                       ctl.page = ncp_get_cache_page(inode, ctl.ofs, 1);
+                       ctl.page = grab_cache_page(&inode->i_data, ctl.ofs);
                        if (!ctl.page)
                                goto invalid_cache;
                        ctl.cache = (union ncp_dir_cache *)
@@ -692,7 +661,7 @@ ncp_fill_cache(struct file *filp, void *dirent, filldir_t filldir,
                ctl.cache = NULL;
                ctl.idx  -= NCP_DIRCACHE_SIZE;
                ctl.ofs  += 1;
-               ctl.page  = ncp_get_cache_page(inode, ctl.ofs, 0);
+               ctl.page  = find_lock_page(&inode->i_data, ctl.ofs);
                if (ctl.page)
                        ctl.cache = (union ncp_dir_cache *)
                                        kmap(ctl.page);
index f8d7040846aad33df9f3a7a62d04b5a6e0f35e38..37a8715cf257830eae64c4ca38bb2daa72e88fc7 100644 (file)
@@ -227,9 +227,8 @@ out_free:
  *  -  The server is congested.
  */
 int
-nfs_readpage(struct file *file, struct page *page)
+nfs_readpage(struct dentry *dentry, struct page *page)
 {
-       struct dentry *dentry = file->f_dentry;
        struct inode *inode = dentry->d_inode;
        int             error;
 
index 9a21edad7ffa84ed1d37a63adf8cc8bebfdbeada..9f58b4171890b0671186e27e7e82e006fb777767 100644 (file)
@@ -414,9 +414,8 @@ wait_on_write_request(struct nfs_wreq *req)
  * (for now), and we currently do this synchronously only.
  */
 int
-nfs_writepage(struct file * file, struct page *page)
+nfs_writepage(struct dentry * dentry, struct page *page)
 {
-       struct dentry *dentry = file->f_dentry;
        return nfs_writepage_sync(dentry, dentry->d_inode, page, 0, PAGE_SIZE);
 }
 
index 39e068ebead6206e690969c1dd3dcb39f37809f0..9eb9be4e3bdc341eadd201a053a7d8d2e648fedb 100644 (file)
@@ -34,7 +34,7 @@
 #define MAX(a,b) (((a)>(b))?(a):(b))
 
 
-static int qnx4_readpage(struct file *file, struct page *page);
+static int qnx4_readpage(struct dentry *dentry, struct page *page);
 
 #ifdef CONFIG_QNX4FS_RW
 static ssize_t qnx4_file_write(struct file *filp, const char *buf,
@@ -203,9 +203,8 @@ struct inode_operations qnx4_file_inode_operations =
        NULL                    /* revalidate */
 };
 
-static int qnx4_readpage(struct file *file, struct page *page)
+static int qnx4_readpage(struct dentry *dentry, struct page *page)
 {
-       struct dentry *dentry = file->f_dentry;
        struct inode *inode = dentry->d_inode;
        struct qnx4_inode_info *qnx4_ino = &inode->u.qnx4_i;
        unsigned long buf;
index 7cb5617047341e5222d289ed191d40ffd7adabae..4922f6547bd7fdd209ede3513a67dcf7fbbebc3d 100644 (file)
@@ -407,9 +407,8 @@ out:        return ERR_PTR(res);
  */
 
 static int
-romfs_readpage(struct file * file, struct page * page)
+romfs_readpage(struct dentry * dentry, struct page * page)
 {
-       struct dentry *dentry = file->f_dentry;
        struct inode *inode = dentry->d_inode;
        unsigned long buf;
        unsigned long offset, avail, readlen;
index 7ef18302ffda9f4df3a76b4d31882bf9b3a63e88..aa829b56650a97da2afdbba7b7972fa907177c29 100644 (file)
@@ -97,10 +97,9 @@ io_error:
        return result;
 }
 
-int
-smb_readpage(struct file *file, struct page *page)
+static int
+smb_readpage(struct dentry *dentry, struct page *page)
 {
-       struct dentry *dentry = file->f_dentry;
        int             error;
 
        pr_debug("SMB: smb_readpage %08lx\n", page_address(page));
@@ -168,9 +167,8 @@ printk("smb_writepage_sync: short write, wsize=%d, result=%d\n", wsize, result);
  * We are called with the page locked and the caller unlocks.
  */
 static int
-smb_writepage(struct file *file, struct page *page)
+smb_writepage(struct dentry *dentry, struct page *page)
 {
-       struct dentry *dentry = file->f_dentry;
        int     result;
 
 #ifdef SMBFS_PARANOIA
index 6346f91d19de28b790663255966156a1375293d6..0112f9b35416d545a1be20e28b5da227d4549edc 100644 (file)
@@ -46,6 +46,17 @@ static __inline__ void atomic_sub(int i, volatile atomic_t *v)
                :"ir" (i), "m" (__atomic_fool_gcc(v)));
 }
 
+static __inline__ int atomic_sub_and_test(int i, volatile atomic_t *v)
+{
+       unsigned char c;
+
+       __asm__ __volatile__(
+               LOCK "subl %2,%0; sete %1"
+               :"=m" (__atomic_fool_gcc(v)), "=qm" (c)
+               :"ir" (i), "m" (__atomic_fool_gcc(v)));
+       return c;
+}
+
 static __inline__ void atomic_inc(volatile atomic_t *v)
 {
        __asm__ __volatile__(
diff --git a/include/asm-i386/rwlock.h b/include/asm-i386/rwlock.h
new file mode 100644 (file)
index 0000000..ac9e8f3
--- /dev/null
@@ -0,0 +1,86 @@
+/* include/asm-i386/rwlock.h
+ *
+ *     Helpers used by both rw spinlocks and rw semaphores.
+ *
+ *     Based in part on code from semaphore.h and
+ *     spinlock.h Copyright 1996 Linus Torvalds.
+ *
+ *     Copyright 1999 Red Hat, Inc.
+ *
+ *     Written by Benjamin LaHaise.
+ *
+ *     This program is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License
+ *     as published by the Free Software Foundation; either version
+ *     2 of the License, or (at your option) any later version.
+ */
+#ifndef _ASM_I386_RWLOCK_H
+#define _ASM_I386_RWLOCK_H
+
+typedef struct { unsigned long a[100]; } __dummy_lock_t;
+#define __dummy_lock(lock) (*(__dummy_lock_t *)(lock))
+
+#define RW_LOCK_BIAS            0x01000000
+#define RW_LOCK_BIAS_STR       "0x01000000"
+
+#define __build_read_lock_ptr(rw, helper)   \
+       asm volatile(LOCK "subl $1,(%0)\n\t" \
+                    "js 2f\n" \
+                    "1:\n" \
+                    ".section .text.lock,\"ax\"\n" \
+                    "2:\tcall " helper "\n\t" \
+                    "jmp 1b\n" \
+                    ".previous" \
+                    ::"a" (rw) : "memory")
+
+#define __build_read_lock_const(rw, helper)   \
+       asm volatile(LOCK "subl $1,%0\n\t" \
+                    "js 2f\n" \
+                    "1:\n" \
+                    ".section .text.lock,\"ax\"\n" \
+                    "2:\tpushl %%eax\n\t" \
+                    "leal %0,%%eax\n\t" \
+                    "call " helper "\n\t" \
+                    "popl %%eax\n\t" \
+                    "jmp 1b\n" \
+                    ".previous" \
+                    :"=m" (__dummy_lock(rw)))
+
+#define __build_read_lock(rw, helper)  do { \
+                                               if (__builtin_constant_p(rw)) \
+                                                       __build_read_lock_const(rw, helper); \
+                                               else \
+                                                       __build_read_lock_ptr(rw, helper); \
+                                       } while (0)
+
+#define __build_write_lock_ptr(rw, helper) \
+       asm volatile(LOCK "subl $" RW_LOCK_BIAS_STR ",(%0)\n\t" \
+                    "jnz 2f\n" \
+                    "1:\n" \
+                    ".section .text.lock,\"ax\"\n" \
+                    "2:\tcall " helper "\n\t" \
+                    "jmp 1b\n" \
+                    ".previous" \
+                    ::"a" (rw) : "memory")
+
+#define __build_write_lock_const(rw, helper) \
+       asm volatile(LOCK "subl $" RW_LOCK_BIAS_STR ",(%0)\n\t" \
+                    "jnz 2f\n" \
+                    "1:\n" \
+                    ".section .text.lock,\"ax\"\n" \
+                    "2:\tpushl %%eax\n\t" \
+                    "leal %0,%%eax\n\t" \
+                    "call " helper "\n\t" \
+                    "popl %%eax\n\t" \
+                    "jmp 1b\n" \
+                    ".previous" \
+                    :"=m" (__dummy_lock(rw)))
+
+#define __build_write_lock(rw, helper) do { \
+                                               if (__builtin_constant_p(rw)) \
+                                                       __build_write_lock_const(rw, helper); \
+                                               else \
+                                                       __build_write_lock_ptr(rw, helper); \
+                                       } while (0)
+
+#endif
index 7b0cddf9695c3f355590fab39a1e3fb6cba61bcc..3cdb0f6cd5b771ac0e5e7fb967d209368b2ac531 100644 (file)
@@ -30,7 +30,7 @@
 
 #include <asm/system.h>
 #include <asm/atomic.h>
-#include <linux/spinlock.h>
+#include <asm/rwlock.h>
 #include <linux/wait.h>
 
 struct semaphore {
@@ -111,10 +111,7 @@ extern inline void down(struct semaphore * sem)
 
        __asm__ __volatile__(
                "# atomic down operation\n\t"
-#ifdef __SMP__
-               "lock ; "
-#endif
-               "decl (%0)\n\t"     /* --sem->count */
+               LOCK "decl (%0)\n\t"     /* --sem->count */
                "js 2f\n"
                "1:\n"
                ".section .text.lock,\"ax\"\n"
@@ -136,10 +133,7 @@ extern inline int down_interruptible(struct semaphore * sem)
 
        __asm__ __volatile__(
                "# atomic interruptible down operation\n\t"
-#ifdef __SMP__
-               "lock ; "
-#endif
-               "decl (%1)\n\t"     /* --sem->count */
+               LOCK "decl (%1)\n\t"     /* --sem->count */
                "js 2f\n\t"
                "xorl %0,%0\n"
                "1:\n"
@@ -163,10 +157,7 @@ extern inline int down_trylock(struct semaphore * sem)
 
        __asm__ __volatile__(
                "# atomic interruptible down operation\n\t"
-#ifdef __SMP__
-               "lock ; "
-#endif
-               "decl (%1)\n\t"     /* --sem->count */
+               LOCK "decl (%1)\n\t"     /* --sem->count */
                "js 2f\n\t"
                "xorl %0,%0\n"
                "1:\n"
@@ -193,10 +184,7 @@ extern inline void up(struct semaphore * sem)
 #endif
        __asm__ __volatile__(
                "# atomic up operation\n\t"
-#ifdef __SMP__
-               "lock ; "
-#endif
-               "incl (%0)\n\t"     /* ++sem->count */
+               LOCK "incl (%0)\n\t"     /* ++sem->count */
                "jle 2f\n"
                "1:\n"
                ".section .text.lock,\"ax\"\n"
@@ -208,4 +196,173 @@ extern inline void up(struct semaphore * sem)
                :"memory");
 }
 
+/* rw mutexes (should that be mutices? =) -- throw rw
+ * spinlocks and semaphores together, and this is what we
+ * end up with...
+ *
+ * The lock is initialized to BIAS.  This way, a writer
+ * subtracts BIAS ands gets 0 for the case of an uncontended
+ * lock.  Readers decrement by 1 and see a positive value
+ * when uncontended, negative if there are writers waiting
+ * (in which case it goes to sleep).
+ *
+ * The value 0x01000000 supports up to 128 processors and
+ * lots of processes.  BIAS must be chosen such that subl'ing
+ * BIAS once per CPU will result in the long remaining
+ * negative.
+ *
+ * In terms of fairness, this should result in the lock
+ * flopping back and forth between readers and writers
+ * under heavy use.
+ *
+ *             -ben
+ */
+struct rw_semaphore {
+       atomic_t                count;
+       volatile unsigned char  write_bias_granted;
+       volatile unsigned char  read_bias_granted;
+       volatile unsigned char  pad1;
+       volatile unsigned char  pad2;
+       wait_queue_head_t       wait;
+       wait_queue_head_t       write_bias_wait;
+#if WAITQUEUE_DEBUG
+       long                    __magic;
+       atomic_t                readers;
+       atomic_t                writers;
+#endif
+};
+
+#if WAITQUEUE_DEBUG
+#define __RWSEM_DEBUG_INIT     , ATOMIC_INIT(0), ATOMIC_INIT(0)
+#else
+#define __RWSEM_DEBUG_INIT     /* */
+#endif
+
+#define __RWSEM_INITIALIZER(name) \
+{ ATOMIC_INIT(RW_LOCK_BIAS), 0, 0, 0, 0, __WAIT_QUEUE_HEAD_INITIALIZER((name).wait), \
+       __WAIT_QUEUE_HEAD_INITIALIZER((name).write_bias_wait) \
+       __SEM_DEBUG_INIT(name) __RWSEM_DEBUG_INIT }
+
+extern inline void init_rwsem(struct rw_semaphore *sem)
+{
+       atomic_set(&sem->count, RW_LOCK_BIAS);
+       sem->read_bias_granted = 0;
+       sem->write_bias_granted = 0;
+       init_waitqueue_head(&sem->wait);
+       init_waitqueue_head(&sem->write_bias_wait);
+#if WAITQUEUE_DEBUG
+       sem->__magic = (long)&sem->__magic;
+       atomic_set(&sem->readers, 0);
+       atomic_set(&sem->writers, 0);
+#endif
+}
+
+/* we use FASTCALL convention for the helpers */
+extern struct rw_semaphore *FASTCALL(down_read_failed(struct rw_semaphore *sem));
+extern struct rw_semaphore *FASTCALL(down_write_failed(struct rw_semaphore *sem));
+extern struct rw_semaphore *FASTCALL(rwsem_wake(struct rw_semaphore *sem));
+
+extern inline void down_read(struct rw_semaphore *sem)
+{
+#if WAITQUEUE_DEBUG
+       if (sem->__magic != (long)&sem->__magic)
+               BUG();
+#endif
+       __build_read_lock(sem, "__down_read_failed");
+#if WAITQUEUE_DEBUG
+       if (sem->write_bias_granted)
+               BUG();
+       if (atomic_read(&sem->writers))
+               BUG();
+       atomic_inc(&sem->readers);
+#endif
+}
+
+extern inline void down_write(struct rw_semaphore *sem)
+{
+#if WAITQUEUE_DEBUG
+       if (sem->__magic != (long)&sem->__magic)
+               BUG();
+#endif
+       __build_write_lock(sem, "__down_write_failed");
+#if WAITQUEUE_DEBUG
+       if (atomic_read(&sem->writers))
+               BUG();
+       if (atomic_read(&sem->readers))
+               BUG();
+       if (sem->read_bias_granted)
+               BUG();
+       if (sem->write_bias_granted)
+               BUG();
+       atomic_inc(&sem->writers);
+#endif
+}
+
+/* When a reader does a release, the only significant
+ * case is when there was a writer waiting, and we've
+ * bumped the count to 0: we must wake the writer up.
+ */
+extern inline void __up_read(struct rw_semaphore *sem)
+{
+       __asm__ __volatile__(
+               "# up_read\n\t"
+               LOCK "incl (%%eax)\n\t"
+               "jz 2f\n"                       /* only do the wake if result == 0 (ie, a writer) */
+               "1:\n\t"
+               ".section .text.lock,\"ax\"\n"
+               "2:\tcall __rwsem_wake\n\t"
+               "jmp 1b\n"
+               ".previous"
+               ::"a" (sem)
+               :"memory"
+               );
+}
+
+/* releasing the writer is easy -- just release it and
+ * wake up any sleepers.
+ */
+extern inline void __up_write(struct rw_semaphore *sem)
+{
+       __asm__ __volatile__(
+               "# up_write\n\t"
+               LOCK "addl $" RW_LOCK_BIAS_STR ",(%%eax)\n"
+               "jc 2f\n"                       /* only do the wake if the result was -'ve to 0/+'ve */
+               "1:\n\t"
+               ".section .text.lock,\"ax\"\n"
+               "2:\tcall __rwsem_wake\n\t"
+               "jmp 1b\n"
+               ".previous"
+               ::"a" (sem)
+               :"memory"
+               );
+}
+
+extern inline void up_read(struct rw_semaphore *sem)
+{
+#if WAITQUEUE_DEBUG
+       if (sem->write_bias_granted)
+               BUG();
+       if (atomic_read(&sem->writers))
+               BUG();
+       atomic_dec(&sem->readers);
+#endif
+       __up_read(sem);
+}
+
+extern inline void up_write(struct rw_semaphore *sem)
+{
+#if WAITQUEUE_DEBUG
+       if (sem->read_bias_granted)
+               BUG();
+       if (sem->write_bias_granted)
+               BUG();
+       if (atomic_read(&sem->readers))
+               BUG();
+       if (atomic_read(&sem->writers) != 1)
+               BUG();
+       atomic_dec(&sem->writers);
+#endif
+       __up_write(sem);
+}
+
 #endif
index 152c1a9fa62ef640918f6aca904e88d09986429a..ed5c5825406a6f7e142161c798d73640b83f5d9e 100644 (file)
@@ -38,6 +38,10 @@ do { \
  */
 extern __inline__ void lock_kernel(void)
 {
+#if 1
+       if (!++current->lock_depth)
+               spin_lock(&kernel_flag);
+#else
        __asm__ __volatile__(
                "incl %1\n\t"
                "jne 9f"
@@ -45,12 +49,17 @@ extern __inline__ void lock_kernel(void)
                "\n9:"
                :"=m" (__dummy_lock(&kernel_flag)),
                 "=m" (current->lock_depth));
+#endif
 }
 
 extern __inline__ void unlock_kernel(void)
 {
        if (current->lock_depth < 0)
                BUG();
+#if 1
+       if (--current->lock_depth < 0)
+               spin_unlock(&kernel_flag);
+#else
        __asm__ __volatile__(
                "decl %1\n\t"
                "jns 9f\n\t"
@@ -58,4 +67,5 @@ extern __inline__ void unlock_kernel(void)
                "\n9:"
                :"=m" (__dummy_lock(&kernel_flag)),
                 "=m" (current->lock_depth));
+#endif
 }
index cf66557f943a0d8ba9fd36af7b52321d5dfc3096..1cabd8a3d1c4336e13e36effe1b274504e8c17a7 100644 (file)
@@ -1,17 +1,41 @@
 #ifndef __ASM_SPINLOCK_H
 #define __ASM_SPINLOCK_H
 
+#include <asm/atomic.h>
+#include <asm/rwlock.h>
+#include <asm/page.h>
+
+extern int printk(const char * fmt, ...)
+       __attribute__ ((format (printf, 1, 2)));
+
+/* It seems that people are forgetting to
+ * initialize their spinlocks properly, tsk tsk.
+ * Remember to turn this off in 2.4. -ben
+ */
+#define SPINLOCK_DEBUG 1
+
 /*
  * Your basic SMP spinlocks, allowing only a single CPU anywhere
  */
 
 typedef struct {
        volatile unsigned int lock;
+#if SPINLOCK_DEBUG
+       unsigned magic;
+#endif
 } spinlock_t;
 
-#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
+#define SPINLOCK_MAGIC 0xdead4ead
+
+#if SPINLOCK_DEBUG
+#define SPINLOCK_MAGIC_INIT    , SPINLOCK_MAGIC
+#else
+#define SPINLOCK_MAGIC_INIT    /* */
+#endif
+
+#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 SPINLOCK_MAGIC_INIT }
 
-#define spin_lock_init(x)      do { (x)->lock = 0; } while(0)
+#define spin_lock_init(x)      do { *(x) = SPIN_LOCK_UNLOCKED; } while(0)
 /*
  * Simple spin lock operations.  There are two variants, one clears IRQ's
  * on the local processor, one does not.
@@ -21,9 +45,6 @@ typedef struct {
 
 #define spin_unlock_wait(x)    do { barrier(); } while(((volatile spinlock_t *)(x))->lock)
 
-typedef struct { unsigned long a[100]; } __dummy_lock_t;
-#define __dummy_lock(lock) (*(__dummy_lock_t *)(lock))
-
 #define spin_lock_string \
        "\n1:\t" \
        "lock ; btsl $0,%0\n\t" \
@@ -38,15 +59,31 @@ typedef struct { unsigned long a[100]; } __dummy_lock_t;
 #define spin_unlock_string \
        "movb $0,%0"
 
-#define spin_lock(lock) \
-__asm__ __volatile__( \
-       spin_lock_string \
-       :"=m" (__dummy_lock(lock)))
-
-#define spin_unlock(lock) \
-__asm__ __volatile__( \
-       spin_unlock_string \
-       :"=m" (__dummy_lock(lock)))
+extern inline void spin_lock(spinlock_t *lock)
+{
+#if SPINLOCK_DEBUG
+       __label__ here;
+here:
+       if (lock->magic != SPINLOCK_MAGIC) {
+printk("eip: %p\n", &&here);
+               BUG();
+       }
+#endif
+       __asm__ __volatile__(
+               spin_lock_string
+               :"=m" (__dummy_lock(lock)));
+}
+
+extern inline void spin_unlock(spinlock_t *lock)
+{
+#if SPINLOCK_DEBUG
+       if (lock->magic != SPINLOCK_MAGIC)
+               BUG();
+#endif
+       __asm__ __volatile__(
+               spin_unlock_string
+               :"=m" (__dummy_lock(lock)));
+}
 
 #define spin_trylock(lock) (!test_and_set_bit(0,(lock)))
 
@@ -62,47 +99,60 @@ __asm__ __volatile__( \
  */
 typedef struct {
        volatile unsigned int lock;
+#if SPINLOCK_DEBUG
+       unsigned magic;
+#endif
 } rwlock_t;
 
-#define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
+#define RWLOCK_MAGIC   0xdeaf1eed
+
+#if SPINLOCK_DEBUG
+#define RWLOCK_MAGIC_INIT      , RWLOCK_MAGIC
+#else
+#define RWLOCK_MAGIC_INIT      /* */
+#endif
+
+#define RW_LOCK_UNLOCKED (rwlock_t) { RW_LOCK_BIAS RWLOCK_MAGIC_INIT }
 
 /*
  * On x86, we implement read-write locks as a 32-bit counter
- * with the high bit (sign) being the "write" bit.
+ * with the high bit (sign) being the "contended" bit.
  *
  * The inline assembly is non-obvious. Think about it.
+ *
+ * Changed to use the same technique as rw semaphores.  See
+ * semaphore.h for details.  -ben
  */
-#define read_lock(rw)  \
-       asm volatile("\n1:\t" \
-                    "lock ; incl %0\n\t" \
-                    "js 2f\n" \
-                    ".section .text.lock,\"ax\"\n" \
-                    "2:\tlock ; decl %0\n" \
-                    "3:\tcmpl $0,%0\n\t" \
-                    "js 3b\n\t" \
-                    "jmp 1b\n" \
-                    ".previous" \
-                    :"=m" (__dummy_lock(&(rw)->lock)))
-
-#define read_unlock(rw) \
-       asm volatile("lock ; decl %0" \
-               :"=m" (__dummy_lock(&(rw)->lock)))
-
-#define write_lock(rw) \
-       asm volatile("\n1:\t" \
-                    "lock ; btsl $31,%0\n\t" \
-                    "jc 4f\n" \
-                    "2:\ttestl $0x7fffffff,%0\n\t" \
-                    "jne 3f\n" \
-                    ".section .text.lock,\"ax\"\n" \
-                    "3:\tlock ; btrl $31,%0\n" \
-                    "4:\tcmp $0,%0\n\t" \
-                    "jne 4b\n\t" \
-                    "jmp 1b\n" \
-                    ".previous" \
-                    :"=m" (__dummy_lock(&(rw)->lock)))
-
-#define write_unlock(rw) \
-       asm volatile("lock ; btrl $31,%0":"=m" (__dummy_lock(&(rw)->lock)))
+/* the spinlock helpers are in arch/i386/kernel/semaphore.S */
+
+extern inline void read_lock(rwlock_t *rw)
+{
+#if SPINLOCK_DEBUG
+       if (rw->magic != RWLOCK_MAGIC)
+               BUG();
+#endif
+       __build_read_lock(rw, "__read_lock_failed");
+}
+
+extern inline void write_lock(rwlock_t *rw)
+{
+#if SPINLOCK_DEBUG
+       if (rw->magic != RWLOCK_MAGIC)
+               BUG();
+#endif
+       __build_write_lock(rw, "__write_lock_failed");
+}
+
+#define read_unlock(rw)                asm volatile("lock ; incl %0" :"=m" (__dummy_lock(&(rw)->lock)))
+#define write_unlock(rw)       asm volatile("lock ; addl $" RW_LOCK_BIAS_STR ",%0":"=m" (__dummy_lock(&(rw)->lock)))
+
+extern inline int write_trylock(rwlock_t *lock)
+{
+       atomic_t *count = (atomic_t *)lock;
+       if (atomic_sub_and_test(RW_LOCK_BIAS, count))
+               return 1;
+       atomic_add(RW_LOCK_BIAS, count);
+       return 0;
+}
 
 #endif /* __ASM_SPINLOCK_H */
diff --git a/include/asm-ppc/board.h b/include/asm-ppc/board.h
new file mode 100644 (file)
index 0000000..39ab9da
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ *
+ *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *
+ *    Module name: board.h
+ *
+ *    Description:
+ *     A generic include file which pulls in appropriate include files
+ *      for specific board types based on configuration settings.
+ *
+ */
+
+#ifndef __BOARD_H__
+#define        __BOARD_H__
+
+#include <linux/config.h>
+
+#if defined(CONFIG_OAK)
+#include <asm/oak.h>
+#endif
+
+#if defined(CONFIG_WALNUT)
+#include <asm/walnut.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __BOARD_H__ */
index 8d78bb9cb96d63ea0c4c938b62949b190dfa5a91..602d4370965e3d7660cf48a4d2899e882e00d91d 100644 (file)
 /*
-** asm/bootinfo.h -- Definition of the Linux/m68k boot information structure
-**
-** 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 09/29/92 by Greg Harp
-**
-** 5/2/94 Roman Hodek:
-**   Added bi_atari part of the machine dependent union bi_un; for now it
-**   contains just a model field to distinguish between TT and Falcon.
-** 26/7/96 Roman Zippel:
-**   Renamed to setup.h; added some useful macros to allow gcc some
-**   optimizations if possible.
-** 5/10/96 Geert Uytterhoeven:
-**   Redesign of the boot information structure; renamed to bootinfo.h again
-** 27/11/96 Geert Uytterhoeven:
-**   Backwards compatibility with bootinfo interface version 1.0
-*/
+ * Non-machine dependent bootinfo structure.  Basic idea
+ * borrowed from the m68k.
+ *
+ * Copyright (C) 1999 Cort Dougan <cort@ppc.kernel.org>
+ */
 
-#ifndef _BOOTINFO_H
-#define _BOOTINFO_H
 
-
-    /*
-     *  Bootinfo definitions
-     *
-     *  This is an easily parsable and extendable structure containing all
-     *  information to be passed from the bootstrap to the kernel.
-     *
-     *  This way I hope to keep all future changes back/forewards compatible.
-     *  Thus, keep your fingers crossed...
-     *
-     *  This structure is copied right after the kernel bss by the bootstrap
-     *  routine.
-     */
-
-#ifndef __ASSEMBLY__
+#ifndef _PPC_BOOTINFO_H
+#define _PPC_BOOTINFO_H
 
 struct bi_record {
     unsigned short tag;                        /* tag ID */
-    unsigned short size;               /* size of record (in bytes) */
+    unsigned long size;                        /* size of record (in bytes) */
     unsigned long data[0];             /* data */
 };
 
-#else /* __ASSEMBLY__ */
-
-BIR_tag                = 0
-BIR_size       = BIR_tag+2
-BIR_data       = BIR_size+2
-
-#endif /* __ASSEMBLY__ */
-
-
-    /*
-     *  Tag Definitions
-     *
-     *  Machine independent tags start counting from 0x0000
-     *  Machine dependent tags start counting from 0x8000
-     */
-
-#define BI_LAST                        0x0000  /* last record (sentinel) */
-#define BI_MACHTYPE            0x0001  /* machine type (u_long) */
-#define BI_CPUTYPE             0x0002  /* cpu type (u_long) */
-#define BI_FPUTYPE             0x0003  /* fpu type (u_long) */
-#define BI_MMUTYPE             0x0004  /* mmu type (u_long) */
-#define BI_MEMCHUNK            0x0005  /* memory chunk address and size */
-                                       /* (struct mem_info) */
-#define BI_RAMDISK             0x0006  /* ramdisk address and size */
-                                       /* (struct mem_info) */
-#define BI_COMMAND_LINE                0x0007  /* kernel command line parameters */
-                                       /* (string) */
-
-    /*
-     *  Amiga-specific tags
-     */
-
-#define BI_AMIGA_MODEL         0x8000  /* model (u_long) */
-#define BI_AMIGA_AUTOCON       0x8001  /* AutoConfig device */
-                                       /* (struct ConfigDev) */
-#define BI_AMIGA_CHIP_SIZE     0x8002  /* size of Chip RAM (u_long) */
-#define BI_AMIGA_VBLANK                0x8003  /* VBLANK frequency (u_char) */
-#define BI_AMIGA_PSFREQ                0x8004  /* power supply frequency (u_char) */
-#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) */
-
-    /*
-     *  Atari-specific tags
-     */
-
-#define BI_ATARI_MCH_COOKIE    0x8000  /* _MCH cookie from TOS (u_long) */
-#define BI_ATARI_MCH_TYPE      0x8001  /* special machine type (u_long) */
-                                       /* (values are ATARI_MACH_* defines */
-
-/* mch_cookie values (upper word) */
-#define ATARI_MCH_ST           0
-#define ATARI_MCH_STE          1
-#define ATARI_MCH_TT           2
-#define ATARI_MCH_FALCON       3
-
-/* mch_type values */
-#define ATARI_MACH_NORMAL      0       /* no special machine type */
-#define ATARI_MACH_MEDUSA      1       /* Medusa 040 */
-#define ATARI_MACH_HADES       2       /* Hades 040 or 060 */
-#define ATARI_MACH_AB40                3       /* Afterburner040 on Falcon */
-
-    /*
-     *  Macintosh-specific tags (all u_long)
-     */
-
-#define BI_MAC_MODEL           0x8000  /* Mac Gestalt ID (model type) */
-#define BI_MAC_VADDR           0x8001  /* Mac video base address */
-#define BI_MAC_VDEPTH          0x8002  /* Mac video depth */
-#define BI_MAC_VROW            0x8003  /* Mac video rowbytes */
-#define BI_MAC_VDIM            0x8004  /* Mac video dimensions */
-#define BI_MAC_VLOGICAL                0x8005  /* Mac video logical base */
-#define BI_MAC_SCCBASE         0x8006  /* Mac SCC base address */
-#define BI_MAC_BTIME           0x8007  /* Mac boot time */
-#define BI_MAC_GMTBIAS         0x8008  /* Mac GMT timezone offset */
-#define BI_MAC_MEMSIZE         0x8009  /* Mac RAM size (sanity check) */
-#define BI_MAC_CPUID           0x800a  /* Mac CPU type (sanity check) */
-#define BI_MAC_ROMBASE         0x800b  /* Mac system ROM base address */ 
-
-    /*
-     *  Macintosh hardware profile data - unused, see macintosh.h for 
-     *  resonable type values 
-     */
-
-#define BI_MAC_VIA1BASE                0x8010  /* Mac VIA1 base address (always present) */
-#define BI_MAC_VIA2BASE                0x8011  /* Mac VIA2 base address (type varies) */
-#define BI_MAC_VIA2TYPE                0x8012  /* Mac VIA2 type (VIA, RBV, OSS) */
-#define BI_MAC_ADBTYPE         0x8013  /* Mac ADB interface type */
-#define BI_MAC_ASCBASE         0x8014  /* Mac Apple Sound Chip base address */
-#define BI_MAC_SCSI5380                0x8015  /* Mac NCR 5380 SCSI (base address, multi) */
-#define BI_MAC_SCSIDMA         0x8016  /* Mac SCSI DMA (base address) */
-#define BI_MAC_SCSI5396                0x8017  /* Mac NCR 53C96 SCSI (base address, multi) */
-#define BI_MAC_IDETYPE         0x8018  /* Mac IDE interface type */
-#define BI_MAC_IDEBASE         0x8019  /* Mac IDE interface base address */
-#define BI_MAC_NUBUS           0x801a  /* Mac Nubus type (none, regular, pseudo) */
-#define BI_MAC_SLOTMASK                0x801b  /* Mac Nubus slots present */
-#define BI_MAC_SCCTYPE         0x801c  /* Mac SCC serial type (normal, IOP) */
-#define BI_MAC_ETHTYPE         0x801d  /* Mac builtin ethernet type (Sonic, MACE */
-#define BI_MAC_ETHBASE         0x801e  /* Mac builtin ethernet base address */
-#define BI_MAC_PMU             0x801f  /* Mac power managment / poweroff hardware */
-#define BI_MAC_IOP_SWIM                0x8020  /* Mac SWIM floppy IOP */
-#define BI_MAC_IOP_ADB         0x8021  /* Mac ADB IOP */
-
-    /*
-     * Mac: compatibility with old booter data format (temporarily)
-     * Fields unused with the new bootinfo can be deleted now; instead of
-     * adding new fields the struct might be splitted into a hardware address
-     * part and a hardware type part
-     */
-
-#ifndef __ASSEMBLY__
-
-struct mac_booter_data 
-{
-       unsigned long videoaddr;
-       unsigned long videorow;
-       unsigned long videodepth;
-       unsigned long dimensions;
-       unsigned long args;
-       unsigned long boottime;
-       unsigned long gmtbias;
-       unsigned long bootver;
-       unsigned long videological;
-       unsigned long sccbase;
-       unsigned long id;
-       unsigned long memsize;
-       unsigned long serialmf;
-       unsigned long serialhsk;
-       unsigned long serialgpi;
-       unsigned long printmf;
-       unsigned long printhsk;
-       unsigned long printgpi;
-       unsigned long cpuid;
-       unsigned long rombase;
-       unsigned long adbdelay;
-       unsigned long timedbra;
-};
-
-extern struct mac_booter_data 
-       mac_bi_data;
-
-#endif
-
-    /*
-     * Stuff for bootinfo interface versioning
-     *
-     * At the start of kernel code, a 'struct bootversion' is located.
-     * bootstrap checks for a matching version of the interface before booting
-     * a kernel, to avoid user confusion if kernel and bootstrap don't work
-     * together :-)
-     *
-     * If incompatible changes are made to the bootinfo interface, the major
-     * number below should be stepped (and the minor reset to 0) for the
-     * appropriate machine. If a change is backward-compatible, the minor
-     * should be stepped. "Backwards-compatible" means that booting will work,
-     * but certain features may not.
-     */
-
-#define BOOTINFOV_MAGIC                        0x4249561A      /* 'BIV^Z' */
-#define MK_BI_VERSION(major,minor)     (((major)<<16)+(minor))
-#define BI_VERSION_MAJOR(v)            (((v) >> 16) & 0xffff)
-#define BI_VERSION_MINOR(v)            ((v) & 0xffff)
-
-#ifndef __ASSEMBLY__
-
-struct bootversion {
-    unsigned short branch;
-    unsigned long magic;
-    struct {
-       unsigned long machtype;
-       unsigned long version;
-    } machversions[0];
-};
-
-#endif /* __ASSEMBLY__ */
-
-#define AMIGA_BOOTI_VERSION    MK_BI_VERSION( 2, 0 )
-#define ATARI_BOOTI_VERSION    MK_BI_VERSION( 2, 1 )
-#define MAC_BOOTI_VERSION      MK_BI_VERSION( 2, 0 )
-#define MVME16x_BOOTI_VERSION  MK_BI_VERSION( 2, 0 )
-#define BVME6000_BOOTI_VERSION MK_BI_VERSION( 2, 0 )
-
-
-#ifdef BOOTINFO_COMPAT_1_0
-
-    /*
-     *  Backwards compatibility with bootinfo interface version 1.0
-     */
-
-#define COMPAT_AMIGA_BOOTI_VERSION    MK_BI_VERSION( 1, 0 )
-#define COMPAT_ATARI_BOOTI_VERSION    MK_BI_VERSION( 1, 0 )
-#define COMPAT_MAC_BOOTI_VERSION      MK_BI_VERSION( 1, 0 )
-
-#include <linux/zorro.h>
-
-#define COMPAT_NUM_AUTO    16
-
-struct compat_bi_Amiga {
-    int model;
-    int num_autocon;
-    struct ConfigDev autocon[COMPAT_NUM_AUTO];
-    unsigned long chip_size;
-    unsigned char vblank;
-    unsigned char psfreq;
-    unsigned long eclock;
-    unsigned long chipset;
-    unsigned long hw_present;
-};
-
-struct compat_bi_Atari {
-    unsigned long hw_present;
-    unsigned long mch_cookie;
-};
-
-#ifndef __ASSEMBLY__
-
-#define MACHW_DECLARE(name)    unsigned name : 1
-#define MACHW_SET(name)                (boot_info.bi_mac.hw_present.name = 1)
-#define MACHW_PRESENT(name)    (boot_info.bi_mac.hw_present.name)
-
-struct compat_bi_Macintosh
-{
-       unsigned long videoaddr;
-       unsigned long videorow;
-       unsigned long videodepth;
-       unsigned long dimensions;
-       unsigned long args;
-       unsigned long boottime;
-       unsigned long gmtbias;
-       unsigned long bootver;
-       unsigned long videological;
-       unsigned long sccbase;
-       unsigned long id;
-       unsigned long memsize;
-       unsigned long serialmf;
-       unsigned long serialhsk;
-       unsigned long serialgpi;
-       unsigned long printmf;
-       unsigned long printhsk;
-       unsigned long printgpi;
-       unsigned long cpuid;
-       unsigned long rombase;
-       unsigned long adbdelay;
-       unsigned long timedbra;
-       struct {
-               /* video hardware */
-               /* sound hardware */
-               /* disk storage interfaces */
-               MACHW_DECLARE(MAC_SCSI);        /* Directly mapped NCR5380 */
-               MACHW_DECLARE(IDE);             /* IDE Interface */
-               /* other I/O hardware */
-               MACHW_DECLARE(SCC);             /* Serial Communications Contr. */
-               /* DMA */
-               MACHW_DECLARE(SCSI_DMA);        /* DMA for the NCR5380 */
-               /* real time clocks */
-               MACHW_DECLARE(RTC_CLK);         /* clock chip */
-               /* supporting hardware */
-               MACHW_DECLARE(VIA1);            /* Versatile Interface Ad. 1 */
-               MACHW_DECLARE(VIA2);            /* Versatile Interface Ad. 2 */
-               MACHW_DECLARE(RBV);             /* Versatile Interface Ad. 2+ */
-               /* NUBUS */
-               MACHW_DECLARE(NUBUS);           /* NUBUS */
-       } hw_present;
-};
-#else
-
-#define BI_videoaddr   BI_un
-#define BI_videorow    BI_videoaddr+4
-#define BI_videodepth  BI_videorow+4
-#define BI_dimensions  BI_videodepth+4
-#define BI_args                BI_dimensions+4
-#define BI_cpuid       BI_args+56
-
-#endif
-
-struct compat_mem_info {
-    unsigned long addr;
-    unsigned long size;
-};
-
-#define COMPAT_NUM_MEMINFO  4
-
-#define COMPAT_CPUB_68020 0
-#define COMPAT_CPUB_68030 1
-#define COMPAT_CPUB_68040 2
-#define COMPAT_CPUB_68060 3
-#define COMPAT_FPUB_68881 5
-#define COMPAT_FPUB_68882 6
-#define COMPAT_FPUB_68040 7
-#define COMPAT_FPUB_68060 8
-
-#define COMPAT_CPU_68020    (1<<COMPAT_CPUB_68020)
-#define COMPAT_CPU_68030    (1<<COMPAT_CPUB_68030)
-#define COMPAT_CPU_68040    (1<<COMPAT_CPUB_68040)
-#define COMPAT_CPU_68060    (1<<COMPAT_CPUB_68060)
-#define COMPAT_CPU_MASK     (31)
-#define COMPAT_FPU_68881    (1<<COMPAT_FPUB_68881)
-#define COMPAT_FPU_68882    (1<<COMPAT_FPUB_68882)
-#define COMPAT_FPU_68040    (1<<COMPAT_FPUB_68040)
-#define COMPAT_FPU_68060    (1<<COMPAT_FPUB_68060)
-#define COMPAT_FPU_MASK     (0xfe0)
-
-#define COMPAT_CL_SIZE      (256)
-
-struct compat_bootinfo {
-    unsigned long machtype;
-    unsigned long cputype;
-    struct compat_mem_info memory[COMPAT_NUM_MEMINFO];
-    int num_memory;
-    unsigned long ramdisk_size;
-    unsigned long ramdisk_addr;
-    char command_line[COMPAT_CL_SIZE];
-    union {
-       struct compat_bi_Amiga     bi_ami;
-       struct compat_bi_Atari     bi_ata;
-       struct compat_bi_Macintosh bi_mac;
-    } bi_un;
-};
-
-#define bi_amiga       bi_un.bi_ami
-#define bi_atari       bi_un.bi_ata
-#define bi_mac         bi_un.bi_mac
-
-#endif /* BOOTINFO_COMPAT_1_0 */
+#define BI_FIRST               0x1010  /* first record - marker */
+#define BI_LAST                        0x1011  /* last record - marker */
+#define BI_CMD_LINE            0x1012
+#define BI_BOOTLOADER_ID       0x1013
+#define BI_INITRD              0x1014
+#define BI_SYSMAP              0x1015
+#define BI_MACHTYPE            0x1016
 
+#endif /* _PPC_BOOTINFO_H */
 
-#endif /* _BOOTINFO_H */
index 15842514928f4358382fe85ff79c5018fd385dbf..051aed9297b40e294be178210977782fdee40cd4 100644 (file)
@@ -19,7 +19,9 @@
 #define PREP_ISA_MEM_BASE      0xc0000000
 #define PREP_PCI_DRAM_OFFSET   0x80000000
 
-#ifdef CONFIG_8xx
+#if defined(CONFIG_4xx)
+#include <asm/board.h>
+#elif defined(CONFIG_8xx)
 #include <asm/mpc8xx.h>
 #else
 #ifdef CONFIG_APUS
@@ -34,7 +36,7 @@ extern unsigned long pci_dram_offset;
 #define _ISA_MEM_BASE  isa_mem_base
 #define PCI_DRAM_OFFSET        pci_dram_offset
 #endif /* CONFIG_APUS */
-#endif /* CONFIG_8xx */
+#endif
 
 #define readb(addr) in_8((volatile unsigned char *)(addr))
 #define writeb(b,addr) out_8((volatile unsigned char *)(addr), (b))
index 40e5ea046d49ec1e12883cea33ef034aab95ef99..eaf91b288a34ff00e05d7780f49a70c93310297a 100644 (file)
@@ -83,23 +83,6 @@ extern char cmd_line[512];
 
 extern void setup_pci_ptrs(void);
 
-#define BOOT_INFO_VER 0x1
-#define BOOT_INFO_MAGIC 0x05027800
-
-struct boot_info
-{
-       unsigned long magic_start;
-       char cmd_line[256];
-       char boot_loader[128];
-       int _machine_type;
-       unsigned long initrd_start, initrd_size;
-       unsigned long systemmap_start, systemmap_size;
-       unsigned long prom_entry;
-       char reserved[3680];    /* pad to 1 page */
-       unsigned long magic_end;
-};
-struct boot_info *binfo;
-
 /*
  * Power macintoshes have either a CUDA or a PMU controlling
  * system reset, power, NVRAM, RTC.
diff --git a/include/asm-ppc/oak.h b/include/asm-ppc/oak.h
new file mode 100644 (file)
index 0000000..b85cc84
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ *
+ *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *
+ *    Module name: oak.h
+ *
+ *    Description:
+ *     Macros, definitions, and data structures specific to the IBM PowerPC
+ *      403G{A,B,C,CX} "Oak" evaluation board. Anything specific to the pro-
+ *      cessor itself is defined elsewhere.
+ *
+ */
+
+#ifndef        __OAK_H__
+#define        __OAK_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define _IO_BASE       0
+#define _ISA_MEM_BASE  0
+#define PCI_DRAM_OFFSET        0
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __OAK_H__ */
index 593b7db87c536d83fdb2738661deb5d89187ab2b..bcbf7100b92ec6b1c4716524a4abbbad01e8a36c 100644 (file)
@@ -290,7 +290,7 @@ extern pte_t * __bad_pagetable(void);
 extern inline int pgd_none(pgd_t pgd)          { return 0; }
 extern inline int pgd_bad(pgd_t pgd)           { return 0; }
 extern inline int pgd_present(pgd_t pgd)       { return 1; }
-#define pgd_clear(xp)  do { pgd_val(*(xp)) = 0; } while (0)
+#define pgd_clear(xp)                          do { } while(0)
 
 #define pgd_page(pgd) \
        ((unsigned long) __va(pgd_val(pgd) & PAGE_MASK))
index a78c75b4ebc1ee05afc506ef39c7c383e9b90b92..8bfaa5341cdf432a7f22b2109cdd49a2d6549c86 100644 (file)
@@ -217,8 +217,6 @@ n:
 #ifndef CONFIG_MACH_SPECIFIC
 extern int _machine;
 extern int have_of;
-extern int is_chrp;
-extern int is_powerplus;
 #endif /* CONFIG_MACH_SPECIFIC */
 
 /* what kind of prep workstation we are */
index 52a4953accf1bc8badb794b3e83e405d4ae398d5..448f0b274201d62a146c9afda8d5825a2a0e85c6 100644 (file)
@@ -49,7 +49,7 @@ struct pt_regs {
 #define __SIGNAL_FRAMESIZE     64
 
 #define instruction_pointer(regs) ((regs)->nip)
-#define user_mode(regs) ((regs)->msr & 0x4000)
+#define user_mode(regs) ((regs)->msr & MSR_PR)
 
 /*
  * Offsets used by 'ptrace' system call interface.
diff --git a/include/asm-ppc/walnut.h b/include/asm-ppc/walnut.h
new file mode 100644 (file)
index 0000000..84499af
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ *
+ *    Copyright (c) 1999 Grant Erickson <grant@lcse.umn.edu>
+ *
+ *    Module name: walnut.h
+ *
+ *    Description:
+ *     Macros, definitions, and data structures specific to the IBM PowerPC
+ *      405GP "Walnut" evaluation board. Anything specific to the processor
+ *      itself is defined elsewhere.
+ *
+ */
+
+#ifndef        __WALNUT_H__
+#define        __WALNUT_H__
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __WALNUT_H__ */
index 4068a2da60b8be0798cb123f38743dff39ddbd57..0e7b557b36c2855463af6b20885b517573896a62 100644 (file)
@@ -649,8 +649,8 @@ struct inode_operations {
         */
        int (*get_block) (struct inode *, long, struct buffer_head *, int);
 
-       int (*readpage) (struct file *, struct page *);
-       int (*writepage) (struct file *, struct page *);
+       int (*readpage) (struct dentry *, struct page *);
+       int (*writepage) (struct dentry *, struct page *);
        int (*flushpage) (struct inode *, struct page *, unsigned long);
 
        void (*truncate) (struct inode *);
@@ -944,8 +944,8 @@ extern int brw_page(int, struct page *, kdev_t, int [], int);
 typedef int (*writepage_t)(struct file *, struct page *, unsigned long, unsigned long, const char *);
 
 /* Generic buffer handling for block filesystems.. */
-extern int block_read_full_page(struct file *, struct page *);
-extern int block_write_full_page (struct file *, struct page *);
+extern int block_read_full_page(struct dentry *, struct page *);
+extern int block_write_full_page (struct dentry *, struct page *);
 extern int block_write_partial_page (struct file *, struct page *, unsigned long, unsigned long, const char *);
 extern int block_write_cont_page (struct file *, struct page *, unsigned long, unsigned long, const char *);
 extern int block_flushpage(struct inode *, struct page *, unsigned long);
@@ -955,7 +955,6 @@ extern ssize_t generic_file_read(struct file *, char *, size_t, loff_t *);
 extern ssize_t generic_file_write(struct file *, const char *, size_t, loff_t *, writepage_t);
 extern void do_generic_file_read(struct file * filp, loff_t *ppos, read_descriptor_t * desc, read_actor_t actor);
 
-
 extern struct super_block *get_super(kdev_t);
 struct super_block *get_empty_super(void);
 void remove_vfsmnt(kdev_t dev);
index df6b7c8df36fe21f4477dcf2b78eff1786ff0fc1..f2a114a58fc857c961458187264264d89aded55b 100644 (file)
@@ -212,7 +212,7 @@ extern int nfs_lock(struct file *, int, struct file_lock *);
 /*
  * linux/fs/nfs/write.c
  */
-extern int  nfs_writepage(struct file *, struct page *);
+extern int  nfs_writepage(struct dentry *, struct page *);
 extern int  nfs_check_failed_request(struct inode *);
 
 /*
@@ -233,7 +233,7 @@ extern int  nfs_updatepage(struct file *, struct page *, unsigned long, unsigned
 /*
  * linux/fs/nfs/read.c
  */
-extern int  nfs_readpage(struct file *, struct page *);
+extern int  nfs_readpage(struct dentry *, struct page *);
 
 /*
  * linux/fs/mount_clnt.c
index 97a4b6200c8600de8c76b9fcac595da41fa40702..2b852a1dc91bd2482b2aa2a8bf0f77aef8b9e06f 100644 (file)
@@ -118,4 +118,10 @@ extern inline void wait_on_page(struct page * page)
                ___wait_on_page(page);
 }
 
+extern struct page * grab_cache_page (struct address_space *, unsigned long);
+
+typedef int filler_t(void *, struct page*);
+
+extern struct page *read_cache_page(struct address_space *, unsigned long,
+                               filler_t *, void *);
 #endif
index 6b05d7107f480ddf793483eba93c890fdb0099c9..ead5fc0c3624815ef71d0bfe2335a68015a7ceb9 100644 (file)
@@ -386,6 +386,7 @@ typedef struct {
 
 #define sock_lock_init(__sk) \
 do {   spin_lock_init(&((__sk)->lock.slock)); \
+       (__sk)->dst_lock = RW_LOCK_UNLOCKED; \
        (__sk)->lock.users = 0; \
        init_waitqueue_head(&((__sk)->lock.wq)); \
 } while(0);
index 6933c91145078a2923f02133452ce6557d8e1100..928f04a6b7b363de69b3d5efe1e3ed4212be51b4 100644 (file)
@@ -215,7 +215,9 @@ EXPORT_SYMBOL(ROOT_DEV);
 EXPORT_SYMBOL(add_to_page_cache_unique);
 EXPORT_SYMBOL(__find_get_page);
 EXPORT_SYMBOL(__find_lock_page);
-                        
+EXPORT_SYMBOL(grab_cache_page);
+EXPORT_SYMBOL(read_cache_page);
+
 #if !defined(CONFIG_NFSD) && defined(CONFIG_NFSD_MODULE)
 EXPORT_SYMBOL(do_nfsservctl);
 #endif
index e4980ecbcffa7e456c5a179d48d28ce9f731984f..de470727e009dd7a841ac995f1a67ca974a19a81 100644 (file)
@@ -1007,7 +1007,7 @@ static inline void run_old_timers(void)
        }
 }
 
-spinlock_t tqueue_lock;
+spinlock_t tqueue_lock = SPIN_LOCK_UNLOCKED;
 
 void tqueue_bh(void)
 {
index 67a973c44828a3e4bf422b4f4e31691e541a397b..e85c608ee9c84648947fe5f3e84f4e6b92c4f06e 100644 (file)
@@ -538,7 +538,7 @@ static inline int page_cache_read(struct file * file, unsigned long offset)
                return -ENOMEM;
 
        if (!add_to_page_cache_unique(page, &inode->i_data, offset, hash)) {
-               int error = inode->i_op->readpage(file, page);
+               int error = inode->i_op->readpage(file->f_dentry, page);
                page_cache_release(page);
                return error;
        }
@@ -1075,7 +1075,7 @@ page_not_up_to_date:
 
 readpage:
                /* ... and start the actual read. The read will unlock the page. */
-               error = inode->i_op->readpage(filp, page);
+               error = inode->i_op->readpage(filp->f_dentry, page);
 
                if (!error) {
                        if (Page_Uptodate(page))
@@ -1397,7 +1397,7 @@ page_not_uptodate:
                goto success;
        }
 
-       if (!inode->i_op->readpage(file, page)) {
+       if (!inode->i_op->readpage(file->f_dentry, page)) {
                wait_on_page(page);
                if (Page_Uptodate(page))
                        goto success;
@@ -1415,7 +1415,7 @@ page_not_uptodate:
                goto success;
        }
        ClearPageError(page);
-       if (!inode->i_op->readpage(file, page)) {
+       if (!inode->i_op->readpage(file->f_dentry, page)) {
                wait_on_page(page);
                if (Page_Uptodate(page))
                        goto success;
@@ -1438,7 +1438,7 @@ static inline int do_write_page(struct inode * inode, struct file * file,
 {
        int retval;
        unsigned long size;
-       int (*writepage) (struct file *, struct page *);
+       int (*writepage) (struct dentry *, struct page *);
 
        size = (offset << PAGE_CACHE_SHIFT) + PAGE_CACHE_SIZE;
        /* refuse to extend file size.. */
@@ -1453,7 +1453,7 @@ static inline int do_write_page(struct inode * inode, struct file * file,
        writepage = inode->i_op->writepage;
        lock_page(page);
 
-       retval = writepage(file, page);
+       retval = writepage(file->f_dentry, page);
 
        UnlockPage(page);
        return retval;
@@ -1767,6 +1767,70 @@ out:
        return error;
 }
 
+struct page *read_cache_page(struct address_space *mapping,
+                               unsigned long index,
+                               int (*filler)(void *,struct page*),
+                               void *data)
+{
+       struct page **hash = page_hash(mapping, index);
+       struct page *page, *cached_page = NULL;
+       int err;
+repeat:
+       page = __find_get_page(mapping, index, hash);
+       if (!page) {
+               if (!cached_page) {
+                       cached_page = page_cache_alloc();
+                       if (!cached_page)
+                               return ERR_PTR(-ENOMEM);
+               }
+               page = cached_page;
+               if (add_to_page_cache_unique(page, mapping, index, hash))
+                       goto repeat;
+               cached_page = NULL;
+               err = filler(data, page);
+               if (err < 0) {
+                       page_cache_release(page);
+                       page = ERR_PTR(err);
+               }
+       }
+       if (cached_page)
+               page_cache_free(cached_page);
+       return page;
+}
+
+static inline struct page * __grab_cache_page(struct address_space *mapping,
+                               unsigned long index, struct page **cached_page)
+{
+       struct page *page, **hash = page_hash(mapping, index);
+repeat:
+       page = __find_lock_page(mapping, index, hash);
+       if (!page) {
+               if (!*cached_page) {
+                       *cached_page = page_cache_alloc();
+                       if (!*cached_page)
+                               return NULL;
+               }
+               page = *cached_page;
+               if (add_to_page_cache_unique(page, mapping, index, hash))
+                       goto repeat;
+               *cached_page = NULL;
+       }
+       return page;
+}
+
+/*
+ * Returns locked page at given index in given cache, creating it if needed.
+ */
+
+struct page *grab_cache_page(struct address_space *mapping, unsigned long index)
+{
+       struct page *cached_page = NULL;
+       struct page *page = __grab_cache_page(mapping,index,&cached_page);
+       if (cached_page)
+               page_cache_free(cached_page);
+       return page;
+}
+
 /*
  * Write to a file through the page cache. This is mainly for the
  * benefit of NFS and possibly other network-based file systems.
@@ -1792,7 +1856,7 @@ generic_file_write(struct file *file, const char *buf,
        struct inode    *inode = dentry->d_inode; 
        unsigned long   limit = current->rlim[RLIMIT_FSIZE].rlim_cur;
        loff_t          pos;
-       struct page     *page, **hash, *cached_page;
+       struct page     *page, *cached_page;
        unsigned long   written;
        long            status;
        int             err;
@@ -1847,23 +1911,10 @@ generic_file_write(struct file *file, const char *buf,
                if (bytes > count)
                        bytes = count;
 
-               hash = page_hash(&inode->i_data, index);
-repeat_find:
-               page = __find_lock_page(&inode->i_data, index, hash);
-               if (!page) {
-                       if (!cached_page) {
-                               cached_page = page_cache_alloc();
-                               if (cached_page)
-                                       goto repeat_find;
-                               status = -ENOMEM;
-                               break;
-                       }
-                       page = cached_page;
-                       if (add_to_page_cache_unique(page, &inode->i_data, index, hash))
-                               goto repeat_find;
-
-                       cached_page = NULL;
-               }
+               status = -ENOMEM;       /* we'll assign it later anyway */
+               page = __grab_cache_page(&inode->i_data, index, &cached_page);
+               if (!page)
+                       break;
 
                /* We have exclusive IO access to the page.. */
                if (!PageLocked(page)) {
index 0f1db14318c811ae07d7781069ac555515efe61d..51db14c4377d1ca4926634893f00a5d40119a208 100644 (file)
@@ -21,9 +21,9 @@ LIST_HEAD(lru_cache);
 
 static zone_t zones [MAX_NR_ZONES] =
        {
-               { name: "DMA" },
-               { name: "Normal" },
-               { name: "HighMem" }
+               { SPIN_LOCK_UNLOCKED, name: "DMA" },
+               { SPIN_LOCK_UNLOCKED, name: "Normal" },
+               { SPIN_LOCK_UNLOCKED, name: "HighMem" }
        };
 
 zonelist_t zonelists [NR_GFPINDEX];
index 0ce941a3549e1aea8d3b89a710a94aa503cc956d..d0bf8d13dcff2fc78e00516fc2d4464a552b9946 100644 (file)
@@ -55,7 +55,7 @@ static int neigh_glbl_allocs;
 static struct neigh_table *neigh_tables;
 
 #if defined(__i386__) && defined(__SMP__)
-#define ASSERT_WL(n) if ((int)((n)->lock.lock) >= 0) { printk("WL assertion failed at " __FILE__ "(%d):" __FUNCTION__ "\n", __LINE__); }
+#define ASSERT_WL(n) if ((int)((n)->lock.lock) > 0) { printk("WL assertion failed at " __FILE__ "(%d):" __FUNCTION__ "\n", __LINE__); }
 #else
 #define ASSERT_WL(n) do { } while(0)
 #endif
@@ -881,6 +881,7 @@ static void neigh_hh_init(struct neighbour *n, struct dst_entry *dst, u16 protoc
 
        if (!hh && (hh = kmalloc(sizeof(*hh), GFP_ATOMIC)) != NULL) {
                memset(hh, 0, sizeof(struct hh_cache));
+               hh->hh_lock = RW_LOCK_UNLOCKED;
                hh->hh_type = protocol;
                atomic_set(&hh->hh_refcnt, 0);
                hh->hh_next = NULL;