diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-01-21 22:34:01 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-01-21 22:34:01 +0000 |
commit | 9e30c3705aed9fbec4c3304570e4d6e707856bcb (patch) | |
tree | b19e6acb5a67af31a4e7742e05c2166dc3f1444c /arch/ppc | |
parent | 72919904796333a20c6a5d5c380091b42e407aa9 (diff) |
Merge with Linux 2.3.22.
Diffstat (limited to 'arch/ppc')
-rw-r--r-- | arch/ppc/Makefile | 2 | ||||
-rw-r--r-- | arch/ppc/boot/Makefile | 8 | ||||
-rw-r--r-- | arch/ppc/config.in | 2 | ||||
-rw-r--r-- | arch/ppc/kernel/Makefile | 7 | ||||
-rw-r--r-- | arch/ppc/kernel/chrp_setup.c | 8 | ||||
-rw-r--r-- | arch/ppc/kernel/hashtable.S | 46 | ||||
-rw-r--r-- | arch/ppc/kernel/head.S | 180 | ||||
-rw-r--r-- | arch/ppc/kernel/misc.S | 28 | ||||
-rw-r--r-- | arch/ppc/kernel/pci.c | 7 | ||||
-rw-r--r-- | arch/ppc/kernel/pmac_setup.c | 21 | ||||
-rw-r--r-- | arch/ppc/kernel/pmac_support.c | 2 | ||||
-rw-r--r-- | arch/ppc/kernel/ppc_ksyms.c | 12 | ||||
-rw-r--r-- | arch/ppc/kernel/prom.c | 22 | ||||
-rw-r--r-- | arch/ppc/kernel/residual.c | 5 | ||||
-rw-r--r-- | arch/ppc/kernel/setup.c | 26 | ||||
-rw-r--r-- | arch/ppc/kernel/traps.c | 23 | ||||
-rw-r--r-- | arch/ppc/lib/string.S | 26 | ||||
-rw-r--r-- | arch/ppc/mm/init.c | 67 | ||||
-rw-r--r-- | arch/ppc/pmac_defconfig | 254 |
19 files changed, 486 insertions, 260 deletions
diff --git a/arch/ppc/Makefile b/arch/ppc/Makefile index 6282a0a6d..82bdb59ed 100644 --- a/arch/ppc/Makefile +++ b/arch/ppc/Makefile @@ -88,6 +88,7 @@ $(BOOT_TARGETS): $(CHECKS) vmlinux @$(MAKECHRPBOOT) $@ znetboot: $(CHECKS) vmlinux +ifdef CONFIG_ALL_PPC ifdef CONFIG_SMP ifdef CONFIG_PPC64 cp -f vmlinux /tftpboot/vmlinux.smp.64 @@ -101,6 +102,7 @@ else cp -f vmlinux /tftpboot/vmlinux endif endif +endif @$(MAKECOFFBOOT) $@ @$(MAKEBOOT) $@ @$(MAKECHRPBOOT) $@ diff --git a/arch/ppc/boot/Makefile b/arch/ppc/boot/Makefile index 8709e3729..41a8a915f 100644 --- a/arch/ppc/boot/Makefile +++ b/arch/ppc/boot/Makefile @@ -35,6 +35,12 @@ else TFTPIMAGE=/tftpboot/zImage.prep$(MSIZE) endif +ifeq ($(CONFIG_SMP),y) +TFTPSIMAGE=/tftpboot/sImage.smp +else +TFTPSIMAGE=/tftpboot/sImage +endif + ifeq ($(CONFIG_PPC64),y) MSIZE=.64 else @@ -121,7 +127,7 @@ ifdef CONFIG_PREP cp zImage $(TFTPIMAGE) endif ifdef CONFIG_GEMINI - cp sImage /tftpboot/ + cp sImage $(TFTPSIMAGE) endif znetboot.initrd : zImage.initrd diff --git a/arch/ppc/config.in b/arch/ppc/config.in index af3d5876f..46908b644 100644 --- a/arch/ppc/config.in +++ b/arch/ppc/config.in @@ -82,6 +82,8 @@ define_bool CONFIG_BINFMT_ELF y define_bool CONFIG_KERNEL_ELF y tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC +source drivers/pcmcia/Config.in + source drivers/parport/Config.in if [ "$CONFIG_8xx" != "y" ]; then diff --git a/arch/ppc/kernel/Makefile b/arch/ppc/kernel/Makefile index 5e61fd001..2f190db09 100644 --- a/arch/ppc/kernel/Makefile +++ b/arch/ppc/kernel/Makefile @@ -14,7 +14,7 @@ O_TARGET := kernel.o OX_OBJS := ppc_ksyms.o setup.o KHEAD := head.o -ifdef CONFIG_PPC_ALL +ifdef CONFIG_ALL_PPC CONFIG_PMAC=y CONFIG_PREP=y CONFIG_CHRP=y @@ -65,10 +65,13 @@ O_OBJS += apus_setup.o prom.o open_pic.o else ifneq ($(CONFIG_8xx),y) O_OBJS += chrp_setup.o chrp_pci.o chrp_time.o \ - pmac_time.o pmac_support.o pmac_pci.o pmac_setup.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 +endif ifeq ($(CONFIG_PREP), y) O_OBJS += prep_pci.o prep_setup.o prep_nvram.o prep_time.o residual.o diff --git a/arch/ppc/kernel/chrp_setup.c b/arch/ppc/kernel/chrp_setup.c index 2739c541d..4f71def9a 100644 --- a/arch/ppc/kernel/chrp_setup.c +++ b/arch/ppc/kernel/chrp_setup.c @@ -498,7 +498,9 @@ void __init chrp_init_IRQ(void) void __init chrp_init2(void) { +#ifdef CONFIG_NVRAM pmac_nvram_init(); +#endif } #if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE) @@ -599,12 +601,6 @@ chrp_ide_init_hwif_ports(hw_regs_t *hw, ide_ioreg_t data_port, ide_ioreg_t ctrl_ hw->irq = chrp_ide_irq; } -#if defined(CONFIG_BLK_DEV_IDE_MODULE) -EXPORT_SYMBOL(chrp_ide_irq); -EXPORT_SYMBOL(chrp_ide_ports_known); -EXPORT_SYMBOL(chrp_ide_regbase); -EXPORT_SYMBOL(chrp_ide_probe); -#endif #endif void __init diff --git a/arch/ppc/kernel/hashtable.S b/arch/ppc/kernel/hashtable.S index 74f00ce10..c87385c53 100644 --- a/arch/ppc/kernel/hashtable.S +++ b/arch/ppc/kernel/hashtable.S @@ -1,7 +1,7 @@ /* * arch/ppc/kernel/hashtable.S * - * $Id: hashtable.S,v 1.3 1999/09/05 11:56:27 paulus Exp $ + * $Id: hashtable.S,v 1.6 1999/10/08 01:56:15 paulus Exp $ * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) @@ -35,7 +35,7 @@ * _PAGE_RW (2) if a write. r20 contains DSISR or SRR1, * so bit 1 (0x40000000) is set if the exception was due * to no matching PTE being found in the hash table. - * r5 contains the physical address of the current task's thread. + * SPRG3 contains the physical address of the current task's thread. * * Returns to the caller if the access is illegal or there is no * mapping for the address. Otherwise it places an appropriate PTE @@ -53,12 +53,14 @@ Hash_msk = (((1 << Hash_bits) - 1) * 64) .globl hash_page hash_page: #ifdef __SMP__ + SAVE_2GPRS(7,r21) eieio lis r2,hash_table_lock@h ori r2,r2,hash_table_lock@l tophys(r2,r2) - lis r6,100000000@h + lis r6,0x0fff0000@h mtctr r6 + mfspr r5,SPRG3 lwz r0,PROCESSOR-THREAD(r5) or r0,r0,r6 10: lwarx r6,0,r2 @@ -66,10 +68,18 @@ hash_page: bne- 12f stwcx. r0,0,r2 beq+ 11f -12: cmpw r6,r0 + /* spin here a bit */ +12: mfctr r7 + li r8,1000 + mtctr r8 +13: + bdnz 13b + mtctr r7 + cmpw r6,r0 bdnzf 2,10b tw 31,31,31 11: eieio + REST_2GPRS(7, r21) #endif /* Get PTE (linux-style) and check access */ mfspr r2,SPRG3 /* current task's THREAD (phys) */ @@ -182,7 +192,7 @@ hash_page_patch_B: 10: mtctr r2 addi r3,r4,-8 /* search primary PTEG */ 1: lwzu r0,8(r3) /* get next PTE */ - srwi. r0,r0,31 /* only want to check valid bit */ + rlwinm. r0,r0,0,0,0 /* only want to check valid bit */ bdnzf 2,1b /* loop while ctr != 0 && !cr0.eq */ beq+ found_empty @@ -195,7 +205,7 @@ hash_page_patch_C: addi r3,r3,-8 mtctr r2 2: lwzu r0,8(r3) - srwi. r0,r0,31 /* only want to check valid bit */ + rlwinm. r0,r0,0,0,0 /* only want to check valid bit */ bdnzf 2,2b beq+ found_empty @@ -209,19 +219,20 @@ hash_page_patch_C: * put the PTE in the primary PTEG. */ xori r5,r5,0x40 /* clear H bit again */ - lwz r2,next_slot@l(0) + lis r3,next_slot@ha + tophys(r3,r3) + lwz r2,next_slot@l(r3) addi r2,r2,8 andi. r2,r2,0x38 - stw r2,next_slot@l(0) + stw r2,next_slot@l(r3) add r3,r4,r2 11: /* update counter of evicted pages */ - lis r2,htab_evicts@h - ori r2,r2,htab_evicts@l + lis r2,htab_evicts@ha tophys(r2,r2) - lwz r4,0(r2) + lwz r4,htab_evicts@l(r2) addi r4,r4,1 - stw r4,0(r2) + stw r4,htab_evicts@l(r2) #ifndef __SMP__ /* Store PTE in PTEG */ @@ -271,12 +282,11 @@ found_slot: * update the htab misses count * -- Cort */ - lis r2,htab_reloads@h - ori r2,r2,htab_reloads@l + lis r2,htab_reloads@ha tophys(r2,r2) - lwz r3,0(r2) + lwz r3,htab_reloads@l(r2) addi r3,r3,1 - stw r3,0(r2) + stw r3,htab_reloads@l(r2) #ifdef __SMP__ lis r2,hash_table_lock@ha @@ -322,13 +332,13 @@ hash_page_out: .globl hash_table_lock hash_table_lock: .long 0 - .text #endif /* __SMP__ */ -/* next_slot is assumed to be within the first 32kB of physical RAM */ + .data next_slot: .long 0 + .text /* * Flush entries from the hash table with VSIDs in the range * given. diff --git a/arch/ppc/kernel/head.S b/arch/ppc/kernel/head.S index 85de3348f..b3b07a003 100644 --- a/arch/ppc/kernel/head.S +++ b/arch/ppc/kernel/head.S @@ -1,7 +1,7 @@ /* * arch/ppc/kernel/head.S * - * $Id: head.S,v 1.147 1999/09/15 23:58:53 cort Exp $ + * $Id: head.S,v 1.154 1999/10/12 00:33:31 cort Exp $ * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) @@ -51,6 +51,10 @@ /* 601 only have IBAT; cr0.eq is set on 601 when using this macro */ #define LOAD_BAT(n, reg, RA, RB) \ + /* see the comment for clear_bats() -- Cort */ \ + li RA,0; \ + mtspr IBAT##n##U,RA; \ + mtspr DBAT##n##U,RA; \ lwz RA,(n*16)+0(reg); \ lwz RB,(n*16)+4(reg); \ mtspr IBAT##n##U,RA; \ @@ -150,7 +154,7 @@ __start: */ mr r4,r30 bl fix_mem_constants -#endif +#endif /* CONFIG_APUS */ /* * Use the first pair of BAT registers to map the 1st 16MB @@ -158,7 +162,7 @@ __start: * call OF any more. */ lis r11,KERNELBASE@h -#ifndef CONFIG_PPC64xxx +#ifndef CONFIG_PPC64 mfspr r9,PVR rlwinm r9,r9,16,16,31 /* r9 = 1 for 601, 4 for 604 */ cmpi 0,r9,1 @@ -173,10 +177,19 @@ __start: mtspr IBAT1L,r10 b 5f #endif /* CONFIG_PPC64 */ -4: - tophys(r8,r11) + +4: tophys(r8,r11) +#ifdef __SMP__ + ori r8,r8,0x12 /* R/W access, M=1 */ +#else ori r8,r8,2 /* R/W access */ +#endif /* __SMP__ */ +#ifdef CONFIG_APUS + ori r11,r11,BL_8M<<2|0x2 /* set up 8MB BAT registers for 604 */ +#else ori r11,r11,BL_256M<<2|0x2 /* set up BAT registers for 604 */ +#endif /* CONFIG_APUS */ + #ifdef CONFIG_PPC64 /* clear out the high 32 bits in the BAT */ clrldi r11,r11,32 @@ -185,32 +198,14 @@ __start: clrldi r16,r16,63 mtsdr1 r16 #else /* CONFIG_PPC64 */ - /* - * allow secondary cpus to get at all of ram in early bootup - * since their init_task may be up there -- Cort + /* + * If the MMU is off clear the bats. See clear_bat() -- Cort */ -#if 0 - oris r18,r8,0x10000000@h - oris r21,r11,(KERNELBASE+0x10000000)@h -#else - lis r18,0x9000 - ori r18,r18,0x12 - lis r21,0x9000 - ori r21,r21,0x7fe -#endif - mtspr DBAT1L,r18 /* N.B. 6xx (not 601) have valid */ - mtspr DBAT1U,r21 /* bit in upper BAT register */ - mtspr IBAT1L,r18 - mtspr IBAT1U,r21 - -#if 0 /* for now, otherwise we overflow the 0x100 bytes we have here */ - oris r18,r8,0x20000000@h - oris r21,r11,(KERNELBASE+0x20000000)@h - mtspr DBAT2L,r18 /* N.B. 6xx (not 601) have valid */ - mtspr DBAT2U,r21 /* bit in upper BAT register */ - mtspr IBAT2L,r18 - mtspr IBAT2U,r21 -#endif /* 0 */ + mfmsr r20 + andi. r20,r20,MSR_DR + bne 100f + bl clear_bats +100: #endif /* CONFIG_PPC64 */ mtspr DBAT0L,r8 /* N.B. 6xx (not 601) have valid */ mtspr DBAT0U,r11 /* bit in upper BAT register */ @@ -218,27 +213,7 @@ __start: mtspr IBAT0U,r11 5: isync -#ifdef CONFIG_APUS - /* Unfortunately the APUS specific instructions bloat the - * code so it cannot fit in the 0x100 bytes available. We have - * to do it the crude way. */ - - /* Map 0xfff00000 so we can access VTOP/PTOV constant when - MMU is enabled. */ - lis r8,0xfff0 - ori r11,r8,0x2 /* r/w */ - ori r8,r8,0x2 /* 128KB, supervisor */ - mtspr DBAT3U,r8 - mtspr DBAT3L,r11 - - /* Copy exception code to exception vector base. */ - lis r3,KERNELBASE@h - tophys(r4,r3) - lis r3,0xfff0 /* Copy to 0xfff00000 on APUS */ - li r5,0x4000 /* # bytes of memory to copy */ - li r6,0 - bl copy_and_flush /* copy the first 0x4000 bytes */ -#else /* CONFIG_APUS */ +#ifndef CONFIG_APUS /* * We need to run with _start at physical address 0. * On CHRP, we are loaded at 0x10000 since OF on CHRP uses @@ -267,7 +242,6 @@ __start: * this shouldn't bother the pmac since it just gets turned on again * as we jump to our code at KERNELBASE. -- Cort */ - turn_on_mmu: mfmsr r0 ori r0,r0,MSR_DR|MSR_IR @@ -335,7 +309,8 @@ label: \ /* System reset */ #ifdef CONFIG_SMP /* MVME/MTX and gemini start the secondary here */ #ifdef CONFIG_GEMINI - STD_EXCEPTION(0x100, Reset, __secondary_start_gemini) + . = 0x100 + b __secondary_start_gemini #else /* CONFIG_GEMINI */ STD_EXCEPTION(0x100, Reset, __secondary_start_psurge) #endif /* CONFIG_GEMINI */ @@ -356,7 +331,6 @@ DataAccess: mfspr r3,DAR /* into the hash table */ rlwinm r4,r23,32-13,30,30 /* MSR_PR -> _PAGE_USER */ rlwimi r4,r20,32-23,29,29 /* DSISR_STORE -> _PAGE_RW */ - mfspr r5,SPRG3 /* phys addr of THREAD */ bl hash_page 1: stw r20,_DSISR(r21) mr r5,r20 @@ -378,7 +352,6 @@ InstructionAccess: mr r3,r22 /* into the hash table */ rlwinm r4,r23,32-13,30,30 /* MSR_PR -> _PAGE_USER */ mr r20,r23 /* SRR1 has reason bits */ - mfspr r5,SPRG3 /* phys addr of THREAD */ bl hash_page 1: addi r3,r1,STACK_FRAME_OVERHEAD mr r4,r22 @@ -392,35 +365,8 @@ InstructionAccess: /* External interrupt */ . = 0x500; HardwareInterrupt: +#ifndef CONFIG_APUS EXCEPTION_PROLOG; -#ifdef CONFIG_APUS - /* This is horrible, but there's no way around it. Enable the - data cache so the IRQ hardware register can be accessed - without cache intervention. Then disable interrupts and get - the current emulated m68k IPL value. */ - - mfmsr 20 - xori r20,r20,MSR_DR - sync - mtmsr r20 - sync - - lis r3,APUS_IPL_EMU@h - - li r20,(IPLEMU_SETRESET|IPLEMU_DISABLEINT) - stb r20,APUS_IPL_EMU@l(r3) - eieio - - lbz r3,APUS_IPL_EMU@l(r3) - - mfmsr r20 - xori r20,r20,MSR_DR - sync - mtmsr r20 - sync - - stw r3,(_CCR+4)(r21); -#endif addi r3,r1,STACK_FRAME_OVERHEAD li r20,MSR_KERNEL li r4,0 @@ -429,7 +375,12 @@ HardwareInterrupt: do_IRQ_intercept: .long do_IRQ; .long ret_from_except - +#else + EXCEPTION_PROLOG; + addi r3,r1,STACK_FRAME_OVERHEAD + li r20,MSR_KERNEL + bl apus_interrupt_entry +#endif /* CONFIG_APUS */ /* Alignment exception */ . = 0x600 @@ -723,8 +674,6 @@ DataStoreTLBMiss: .globl transfer_to_handler transfer_to_handler: stw r22,_NIP(r21) - lis r22,MSR_POW@h - andc r23,r23,r22 stw r23,_MSR(r21) SAVE_GPR(7, r21) SAVE_4GPRS(8, r21) @@ -974,6 +923,19 @@ fix_mem_constants: cmpw r12,r13 bne 1b +/* + * Map the memory where the exception handlers will + * be copied to when hash constants have been patched. + */ +#ifdef CONFIG_APUS_FAST_EXCEPT + lis r8,0xfff0 +#else + lis r8,0 +#endif + ori r8,r8,0x2 /* 128KB, supervisor */ + mtspr DBAT3U,r8 + mtspr DBAT3L,r8 + lis r12,__ptov_table_begin@h ori r12,r12,__ptov_table_begin@l add r12,r12,r10 /* table begin phys address */ @@ -1026,11 +988,9 @@ __secondary_hold: mtlr r5 mr r24,r3 /* cpu # */ blr - +#ifdef CONFIG_GEMINI .globl __secondary_start_gemini __secondary_start_gemini: -1011: b 1011b - mfspr r4,HID0 ori r4,r4,HID0_ICFI li r3,0 @@ -1040,6 +1000,7 @@ __secondary_start_gemini: sync bl prom_init b __secondary_start +#endif /* CONFIG_GEMINI */ .globl __secondary_start_psurge __secondary_start_psurge: @@ -1281,3 +1242,44 @@ swapper_pg_dir: .globl cmd_line cmd_line: .space 512 + +/* + * An undocumented "feature" of 604e requires that the v bit + * be cleared before changing BAT values. + * + * Also, newer IBM firmware does not clear bat3 and 4 so + * this makes sure it's done. + * -- Cort + */ +clear_bats: + mfmsr r20 + andi. r19,r20,MSR_DR + beqlr + + li r20,0 + + mtspr DBAT0U,r20 + mtspr DBAT0L,r20 + mtspr IBAT0U,r20 + mtspr IBAT0L,r20 + sync + isync + + mtspr DBAT1U,r20 + mtspr DBAT1L,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 + + blr diff --git a/arch/ppc/kernel/misc.S b/arch/ppc/kernel/misc.S index 32be1899a..4d041cc98 100644 --- a/arch/ppc/kernel/misc.S +++ b/arch/ppc/kernel/misc.S @@ -53,13 +53,29 @@ _GLOBAL(__no_use_save_flags) /* void __no_use_restore_flags(unsigned long flags) */ _GLOBAL(__no_use_restore_flags) - andi. r4,r3,MSR_EE - bne 10f - lis r4,ppc_n_lost_interrupts@ha - lwz r4,ppc_n_lost_interrupts@l(r4) - cmpi 0,r4,0 /* lost interrupts to process first? */ +/* + * Just set/clear the MSR_EE bit through restore/flags but do not + * change anything else. This is needed by the RT system and makes + * sense anyway. + * -- Cort + */ + mfmsr r4 + /* Copy all except the MSR_EE bit from r4 (current MSR value) + to r3. This is the sort of thing the rlwimi instruction is + designed for. -- paulus. */ + rlwimi r3,r4,0,17,15 + /* Check if things are setup the way we want _already_. */ + cmpw 0,r3,r4 + beqlr + /* are we enabling interrupts? */ + rlwinm. r0,r3,0,16,16 + beq 1f + /* if so, check if there are any lost interrupts */ + lis r7,ppc_n_lost_interrupts@ha + lwz r7,ppc_n_lost_interrupts@l(r7) + cmpi 0,r7,0 /* lost interrupts to process first? */ bne- do_lost_interrupts -10: sync +1: sync mtmsr r3 isync blr diff --git a/arch/ppc/kernel/pci.c b/arch/ppc/kernel/pci.c index 575a18afe..de0a0a36d 100644 --- a/arch/ppc/kernel/pci.c +++ b/arch/ppc/kernel/pci.c @@ -92,7 +92,7 @@ static void __init pcibios_claim_resources(struct pci_bus *bus) struct resource *pr; if (!r->start) continue; - pr = pci_find_parent_resource(dev, r, 0); + pr = pci_find_parent_resource(dev, r); if (!pr || request_resource(pr, r) < 0) { printk(KERN_ERR "PCI: Address space collision on region %d of device %s\n", idx, dev->name); @@ -141,3 +141,8 @@ void __init fix_intr(struct device_node *node, struct pci_dev *dev) } } #endif + +int pcibios_assign_resource(struct pci_dev *pdev, int resource) +{ + return 0; +} diff --git a/arch/ppc/kernel/pmac_setup.c b/arch/ppc/kernel/pmac_setup.c index 6de8e5036..3418a7e8b 100644 --- a/arch/ppc/kernel/pmac_setup.c +++ b/arch/ppc/kernel/pmac_setup.c @@ -371,11 +371,18 @@ int boot_target; int boot_part; kdev_t boot_dev; +extern void via_pmu_start(void); + void __init pmac_init2(void) { +#ifdef CONFIG_ADB_PMU + via_pmu_start(); +#endif +#ifdef CONFIG_NVRAM pmac_nvram_init(); -#ifdef CONFIG_PMAC_PBOOK +#endif +#ifdef CONFIG_PMAC_PBOOK media_bay_init(); #endif } @@ -411,7 +418,7 @@ note_scsi_host(struct device_node *node, void *host) } #endif -#ifdef CONFIG_BLK_DEV_IDE_PMAC +#if defined(CONFIG_BLK_DEV_IDE) && defined(CONFIG_BLK_DEV_IDE_PMAC) extern int pmac_ide_count; extern struct device_node *pmac_ide_node[]; static int ide_majors[] = { 3, 22, 33, 34, 56, 57, 88, 89 }; @@ -441,7 +448,7 @@ kdev_t __init find_ide_boot(void) return 0; } -#endif /* CONFIG_BLK_DEV_IDE_PMAC */ +#endif /* CONFIG_BLK_DEV_IDE && CONFIG_BLK_DEV_IDE_PMAC */ void __init find_boot_device(void) { @@ -452,7 +459,7 @@ void __init find_boot_device(void) return; } #endif -#ifdef CONFIG_BLK_DEV_IDE_PMAC +#if defined(CONFIG_BLK_DEV_IDE) && defined(CONFIG_BLK_DEV_IDE_PMAC) boot_dev = find_ide_boot(); #endif } @@ -564,7 +571,7 @@ pmac_ide_default_irq(ide_ioreg_t base) ide_ioreg_t pmac_ide_default_io_base(int index) { -#if defined(CONFIG_BLK_DEV_IDE_PMAC) +#if defined(CONFIG_BLK_DEV_IDE) && defined(CONFIG_BLK_DEV_IDE_PMAC) return pmac_ide_regbase[index]; #else return 0; @@ -602,7 +609,7 @@ pmac_ide_fix_driveid(struct hd_driveid *id) ppc_generic_ide_fix_driveid(id); } -#if defined(CONFIG_BLK_DEV_IDE_PMAC) +#if defined(CONFIG_BLK_DEV_IDE) && defined(CONFIG_BLK_DEV_IDE_PMAC) /* This is declared in drivers/block/ide-pmac.c */ void pmac_ide_init_hwif_ports (hw_regs_t *hw, ide_ioreg_t data_port, ide_ioreg_t ctrl_port, int *irq); #else @@ -659,7 +666,7 @@ pmac_init(unsigned long r3, unsigned long r4, unsigned long r5, #endif #endif -#if defined(CONFIG_BLK_DEV_IDE_PMAC) +#if defined(CONFIG_BLK_DEV_IDE) && defined(CONFIG_BLK_DEV_IDE_PMAC) ppc_ide_md.insw = pmac_ide_insw; ppc_ide_md.outsw = pmac_ide_outsw; ppc_ide_md.default_irq = pmac_ide_default_irq; diff --git a/arch/ppc/kernel/pmac_support.c b/arch/ppc/kernel/pmac_support.c index 9d043ee85..abbec2ee0 100644 --- a/arch/ppc/kernel/pmac_support.c +++ b/arch/ppc/kernel/pmac_support.c @@ -55,7 +55,6 @@ void pmac_nvram_init(void) } } -#ifdef CONFIG_NVRAM unsigned char nvram_read_byte(int addr) { struct adb_request req; @@ -101,4 +100,3 @@ void nvram_write_byte(unsigned char val, int addr) } eieio(); } -#endif /* CONFIG_NVRAM */ diff --git a/arch/ppc/kernel/ppc_ksyms.c b/arch/ppc/kernel/ppc_ksyms.c index 547b1142c..cabce054c 100644 --- a/arch/ppc/kernel/ppc_ksyms.c +++ b/arch/ppc/kernel/ppc_ksyms.c @@ -34,6 +34,7 @@ #ifdef __SMP__ #include <asm/smplock.h> #endif /* __SMP__ */ +#include "time.h" /* Tell string.h we don't want memcpy etc. as cpp defines */ #define EXPORT_SYMTAB_STROPS @@ -134,7 +135,7 @@ EXPORT_SYMBOL(csum_tcpudp_magic); EXPORT_SYMBOL(__copy_tofrom_user); EXPORT_SYMBOL(__clear_user); EXPORT_SYMBOL(__strncpy_from_user); -EXPORT_SYMBOL(strlen_user); +EXPORT_SYMBOL(__strnlen_user); /* EXPORT_SYMBOL(inb); @@ -162,6 +163,12 @@ EXPORT_SYMBOL(iounmap); EXPORT_SYMBOL(ide_insw); EXPORT_SYMBOL(ide_outsw); EXPORT_SYMBOL(ppc_ide_md); +#ifdef CONFIG_BLK_DEV_IDE_MODULE +EXPORT_SYMBOL(chrp_ide_irq); +EXPORT_SYMBOL(chrp_ide_ports_known); +EXPORT_SYMBOL(chrp_ide_regbase); +EXPORT_SYMBOL(chrp_ide_probe); +#endif EXPORT_SYMBOL(start_thread); EXPORT_SYMBOL(kernel_thread); @@ -257,3 +264,6 @@ EXPORT_SYMBOL(timer_interrupt); extern unsigned long do_IRQ_intercept; EXPORT_SYMBOL(do_IRQ_intercept); EXPORT_SYMBOL(irq_desc); +void ppc_irq_dispatch_handler(struct pt_regs *, int); +EXPORT_SYMBOL(ppc_irq_dispatch_handler); +EXPORT_SYMBOL(decrementer_count); diff --git a/arch/ppc/kernel/prom.c b/arch/ppc/kernel/prom.c index 79e86ed35..22dcf8cbe 100644 --- a/arch/ppc/kernel/prom.c +++ b/arch/ppc/kernel/prom.c @@ -1,5 +1,5 @@ /* - * $Id: prom.c,v 1.77 1999/09/14 01:13:19 cort Exp $ + * $Id: prom.c,v 1.79 1999/10/08 01:56:32 paulus Exp $ * * Procedures for interfacing to the Open Firmware PROM on * Power Macintosh computers. @@ -147,6 +147,7 @@ extern unsigned long reloc_offset(void); extern char cmd_line[512]; /* XXX */ boot_infos_t *boot_infos = 0; /* init it so it's in data segment not bss */ +unsigned long dev_tree_size; /* * prom_init() is called very early on, before the kernel text @@ -557,7 +558,7 @@ prom_init(int r3, int r4, prom_entry pp) else prom_print(RELOC("...failed\n")); } -#endif +#endif } /* @@ -754,8 +755,7 @@ finish_device_tree(void) unsigned long mem = (unsigned long) klimit; mem = finish_node(allnodes, mem, NULL); - printk(KERN_INFO "device tree used %lu bytes\n", - mem - (unsigned long) allnodes); + dev_tree_size = mem - (unsigned long) allnodes; klimit = (char *) mem; } @@ -1494,6 +1494,7 @@ void drawchar(char c) { unsigned long offset = reloc_offset(); + int cline = 0, x; switch (c) { case '\b': @@ -1509,6 +1510,7 @@ drawchar(char c) case '\n': RELOC(g_loc_X) = 0; RELOC(g_loc_Y)++; + cline = 1; break; default: draw_byte(c, RELOC(g_loc_X)++, RELOC(g_loc_Y)); @@ -1516,11 +1518,23 @@ drawchar(char c) if (RELOC(g_loc_X) >= RELOC(g_max_loc_X)) { RELOC(g_loc_X) = 0; RELOC(g_loc_Y)++; + cline = 1; } +#if 0 while (RELOC(g_loc_Y) >= RELOC(g_max_loc_Y)) { scrollscreen(); RELOC(g_loc_Y)--; } +#else + /* wrap around from bottom to top of screen so we don't + waste time scrolling each line. -- paulus. */ + if (RELOC(g_loc_Y) >= RELOC(g_max_loc_Y)) + RELOC(g_loc_Y) = 0; + if (cline) { + for (x = 0; x < RELOC(g_max_loc_X); ++x) + draw_byte(' ', x, RELOC(g_loc_Y)); + } +#endif } __pmac diff --git a/arch/ppc/kernel/residual.c b/arch/ppc/kernel/residual.c index 09eafd5f7..1c4bdfbd8 100644 --- a/arch/ppc/kernel/residual.c +++ b/arch/ppc/kernel/residual.c @@ -1,5 +1,5 @@ /* - * $Id: residual.c,v 1.16 1999/09/17 17:23:09 cort Exp $ + * $Id: residual.c,v 1.17 1999/09/27 18:40:23 cort Exp $ * * Code to deal with the PReP residual data. * @@ -41,12 +41,13 @@ #include <linux/blk.h> #include <linux/ioport.h> #include <linux/pci.h> +#include <linux/ide.h> +#include <asm/init.h> #include <asm/mmu.h> #include <asm/processor.h> #include <asm/io.h> #include <asm/pgtable.h> -#include <linux/ide.h> #include <asm/ide.h> diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c index 7ae97c81d..57955efca 100644 --- a/arch/ppc/kernel/setup.c +++ b/arch/ppc/kernel/setup.c @@ -1,5 +1,5 @@ /* - * $Id: setup.c,v 1.159 1999/09/18 18:40:38 dmalek Exp $ + * $Id: setup.c,v 1.160 1999/10/08 01:56:38 paulus Exp $ * Common prep/pmac/chrp boot and setup code. */ @@ -489,6 +489,28 @@ identify_machine(unsigned long r3, unsigned long r4, unsigned long r5, m8xx_init(r3, r4, r5, r6, r7); #endif + /* Look for mem= option on command line */ + if (strstr(cmd_line, "mem=")) { + char *p, *q; + unsigned long maxmem = 0; + extern unsigned long __max_memory; + + for (q = cmd_line; (p = strstr(q, "mem=")) != 0; ) { + q = p + 4; + if (p > cmd_line && p[-1] != ' ') + continue; + maxmem = simple_strtoul(q, &q, 0); + if (*q == 'k' || *q == 'K') { + maxmem <<= 10; + ++q; + } else if (*q == 'm' || *q == 'M') { + maxmem <<= 20; + ++q; + } + } + __max_memory = maxmem; + } + /* this is for modules since _machine can be a define -- Cort */ ppc_md.ppc_machine = _machine; @@ -533,7 +555,7 @@ void __init setup_arch(char **cmdline_p, if (strstr(cmd_line, "xmon")) xmon(0); #endif /* CONFIG_XMON */ - + /* reboot on panic */ panic_timeout = 180; diff --git a/arch/ppc/kernel/traps.c b/arch/ppc/kernel/traps.c index 76a223157..99a9c2bce 100644 --- a/arch/ppc/kernel/traps.c +++ b/arch/ppc/kernel/traps.c @@ -101,30 +101,27 @@ MachineCheckException(struct pt_regs *regs) } #endif printk("Machine check in kernel mode.\n"); - printk("Caused by (from msr): "); - printk("regs %p ",regs); - switch( regs->msr & 0x0000F000) - { - case (1<<12) : - printk("Machine check signal - probably due to mm fault\n" - "with mmu off\n"); + printk("Caused by (from SRR1=%lx): ", regs->msr); + switch (regs->msr & 0xF0000) { + case 0x80000: + printk("Machine check signal\n"); break; - case (1<<13) : + case 0x40000: printk("Transfer error ack signal\n"); break; - case (1<<14) : - printk("Data parity signal\n"); + case 0x20000: + printk("Data parity error signal\n"); break; - case (1<<15) : - printk("Address parity signal\n"); + case 0x10000: + printk("Address parity error signal\n"); break; default: printk("Unknown values in msr\n"); } - show_regs(regs); #if defined(CONFIG_XMON) || defined(CONFIG_KGDB) debugger(regs); #endif + show_regs(regs); print_backtrace((unsigned long *)regs->gpr[1]); panic("machine check"); } diff --git a/arch/ppc/lib/string.S b/arch/ppc/lib/string.S index be5504940..4ab90f8b7 100644 --- a/arch/ppc/lib/string.S +++ b/arch/ppc/lib/string.S @@ -380,16 +380,26 @@ __strncpy_from_user: .long 1b,99b .text - .globl strlen_user -strlen_user: - addi r4,r3,-1 -1: lbzu r0,1(r4) +/* r3 = str, r4 = len (> 0), r5 = top (highest addr) */ + .globl __strnlen_user +__strnlen_user: + addi r7,r3,-1 + subf r6,r7,r5 /* top+1 - str */ + cmplw 0,r4,r6 + bge 0f + mr r6,r4 +0: mtctr r6 /* ctr = min(len, top - str) */ +1: lbzu r0,1(r7) /* get next byte */ cmpwi 0,r0,0 - bne 1b - subf r3,r3,r4 - addi r3,r3,1 + bdnzf 2,1b /* loop if --ctr != 0 && byte != 0 */ + addi r7,r7,1 + subf r3,r3,r7 /* number of bytes we have looked at */ + beqlr /* return if we found a 0 byte */ + cmpw 0,r3,r4 /* did we look at all len bytes? */ + blt 99f /* if not, must have hit top */ + addi r3,r4,1 /* return len + 1 to indicate no null found */ blr -99: li r3,0 +99: li r3,0 /* bad address, return 0 */ blr .section __ex_table,"a" .align 2 diff --git a/arch/ppc/mm/init.c b/arch/ppc/mm/init.c index e407ab4c3..eb158fb1e 100644 --- a/arch/ppc/mm/init.c +++ b/arch/ppc/mm/init.c @@ -1,5 +1,5 @@ /* - * $Id: init.c,v 1.188 1999/09/18 18:40:44 dmalek Exp $ + * $Id: init.c,v 1.193 1999/10/11 18:50:35 geert Exp $ * * PowerPC version * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org) @@ -113,7 +113,9 @@ struct mem_pieces prom_mem; static void remove_mem_piece(struct mem_pieces *, unsigned, unsigned, int); 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]; @@ -182,6 +184,8 @@ static inline unsigned long p_mapped_by_bats(unsigned long pa) */ int __map_without_bats = 0; +/* max amount of RAM to use */ +unsigned long __max_memory; void __bad_pte(pmd_t *pmd) { @@ -677,6 +681,7 @@ static void __init print_mem_pieces(struct mem_pieces *mp) printk("\n"); } +#if defined(CONFIG_PREP) || defined(CONFIG_APUS) || defined(CONFIG_PPC_ALL) /* * Add some memory to an array of pieces */ @@ -691,6 +696,7 @@ append_mem_piece(struct mem_pieces *mp, unsigned start, unsigned size) rp->address = start; rp->size = size; } +#endif #ifndef CONFIG_8xx static void hash_init(void); @@ -738,6 +744,7 @@ static void __init coalesce_mem_pieces(struct mem_pieces *mp) mp->n_regions = d; } +#if defined(CONFIG_PMAC) || defined(CONFIG_CHRP) || defined(CONFIG_ALL_PPC) /* * Read in a property describing some pieces of memory. */ @@ -760,6 +767,7 @@ static void __init get_mem_prop(char *name, struct mem_pieces *mp) sort_mem_pieces(mp); coalesce_mem_pieces(mp); } +#endif /* CONFIG_PMAC || CONFIG_CHRP || CONFIG_ALL_PPC */ /* * Set up one of the I/D BAT (block address translation) register pairs. @@ -933,7 +941,7 @@ void __init free_initmem(void) a = (unsigned long)(&START); \ for (; a < (unsigned long)(&END); a += PAGE_SIZE) { \ clear_bit(PG_reserved, &mem_map[MAP_NR(a)].flags); \ - atomic_set(&mem_map[MAP_NR(a)].count, 1); \ + set_page_count(mem_map+MAP_NR(a), 1); \ free_page(a); \ CNT++; \ } \ @@ -1005,8 +1013,10 @@ void __init MMU_init(void) else if (_machine == _MACH_apus ) end_of_DRAM = apus_find_end_of_memory(); #endif +#ifdef CONFIG_GEMINI else if ( _machine == _MACH_gemini ) end_of_DRAM = gemini_find_end_of_memory(); +#endif /* CONFIG_GEMINI */ else /* prep */ end_of_DRAM = prep_find_end_of_memory(); @@ -1037,14 +1047,16 @@ void __init MMU_init(void) setbat(3, 0x90000000, 0x90000000, 0x10000000, IO_PAGE); break; case _MACH_Pmac: +#if 0 { unsigned long base = 0xf3000000; struct device_node *macio = find_devices("mac-io"); if (macio && macio->n_addrs) base = macio->addrs[0].address; setbat(0, base, base, 0x100000, IO_PAGE); - ioremap_base = 0xf0000000; } +#endif + ioremap_base = 0xf0000000; break; case _MACH_apus: /* Map PPC exception vectors. */ @@ -1172,17 +1184,13 @@ void __init mem_init(unsigned long start_mem, unsigned long end_mem) remove_mem_piece(&phys_avail, __pa(avail_start), start_mem - avail_start, 1); - for (addr = PAGE_OFFSET; addr < end_mem; addr += PAGE_SIZE) - set_bit(PG_reserved, &mem_map[MAP_NR(addr)].flags); - for (i = 0; i < phys_avail.n_regions; ++i) { a = (unsigned long) __va(phys_avail.regions[i].address); - lim = a + phys_avail.regions[i].size; + lim = (a + phys_avail.regions[i].size) & PAGE_MASK; a = PAGE_ALIGN(a); for (; a < lim; a += PAGE_SIZE) clear_bit(PG_reserved, &mem_map[MAP_NR(a)].flags); } - phys_avail.n_regions = 0; #ifdef CONFIG_BLK_DEV_INITRD /* if we are booted from BootX with an initial ramdisk, @@ -1196,7 +1204,7 @@ void __init mem_init(unsigned long start_mem, unsigned long end_mem) /* free the prom's memory - no-op on prep */ for (i = 0; i < prom_mem.n_regions; ++i) { a = (unsigned long) __va(prom_mem.regions[i].address); - lim = a + prom_mem.regions[i].size; + lim = (a + prom_mem.regions[i].size) & PAGE_MASK; a = PAGE_ALIGN(a); for (; a < lim; a += PAGE_SIZE) clear_bit(PG_reserved, &mem_map[MAP_NR(a)].flags); @@ -1215,12 +1223,12 @@ void __init mem_init(unsigned long start_mem, unsigned long end_mem) datapages++; continue; } - atomic_set(&mem_map[MAP_NR(addr)].count, 1); + set_page_count(mem_map + MAP_NR(addr), 1); #ifdef CONFIG_BLK_DEV_INITRD if (!initrd_start || addr < (initrd_start & PAGE_MASK) || addr >= initrd_end) #endif /* CONFIG_BLK_DEV_INITRD */ -#ifndef CONFIG_8xx +#ifndef CONFIG_8xx if ( !rtas_data || addr < (rtas_data & PAGE_MASK) || addr >= (rtas_data+rtas_size)) @@ -1238,7 +1246,7 @@ void __init mem_init(unsigned long start_mem, unsigned long end_mem) } #ifndef CONFIG_8xx -#if defined(CONFIG_PMAC) || defined(CONFIG_PPC_ALL) +#if defined(CONFIG_PMAC) || defined(CONFIG_CHRP) || defined(CONFIG_ALL_PPC) /* * On systems with Open Firmware, collect information about * physical RAM and which pieces are already in use. @@ -1286,8 +1294,12 @@ unsigned long __init *pmac_find_end_of_memory(void) * to our nearest IO area. * -- Cort */ - if ( phys_mem.regions[0].size >= RAM_LIMIT ) - phys_mem.regions[0].size = RAM_LIMIT; + if (__max_memory == 0 || __max_memory > RAM_LIMIT) + __max_memory = RAM_LIMIT; + if (phys_mem.regions[0].size >= __max_memory) { + phys_mem.regions[0].size = __max_memory; + phys_mem.n_regions = 1; + } total = phys_mem.regions[0].size; if (phys_mem.n_regions > 1) { @@ -1300,20 +1312,15 @@ unsigned long __init *pmac_find_end_of_memory(void) if (boot_infos == 0) { /* record which bits the prom is using */ get_mem_prop("available", &phys_avail); + prom_mem = phys_mem; + for (i = 0; i < phys_avail.n_regions; ++i) + remove_mem_piece(&prom_mem, + phys_avail.regions[i].address, + phys_avail.regions[i].size, 0); } else { /* booted from BootX - it's all available (after klimit) */ phys_avail = phys_mem; - } - prom_mem = phys_mem; - for (i = 0; i < phys_avail.n_regions; ++i) - { - if ( phys_avail.regions[i].address >= RAM_LIMIT ) - continue; - if ( (phys_avail.regions[i].address+phys_avail.regions[i].size) - >= RAM_LIMIT ) - phys_avail.regions[i].size = RAM_LIMIT - phys_avail.regions[i].address; - remove_mem_piece(&prom_mem, phys_avail.regions[i].address, - phys_avail.regions[i].size, 1); + prom_mem.n_regions = 0; } /* @@ -1331,9 +1338,9 @@ unsigned long __init *pmac_find_end_of_memory(void) #undef RAM_LIMIT return __va(total); } -#endif /* defined(CONFIG_PMAC) || defined(CONFIG_PPC_ALL) */ +#endif /* CONFIG_PMAC || CONFIG_CHRP || CONFIG_ALL_PPC */ -#if defined(CONFIG_PREP) || defined(CONFIG_PPC_ALL) +#if defined(CONFIG_PREP) || defined(CONFIG_ALL_PPC) /* * This finds the amount of physical ram and does necessary * setup for prep. This is pretty architecture specific so @@ -1365,10 +1372,10 @@ unsigned long __init *prep_find_end_of_memory(void) return (__va(total)); } -#endif /* defined(CONFIG_PREP) || defined(CONFIG_PPC_ALL) */ +#endif /* defined(CONFIG_PREP) || defined(CONFIG_ALL_PPC) */ -#if defined(CONFIG_GEMINI) || defined(CONFIG_PPC_ALL) +#if defined(CONFIG_GEMINI) unsigned long __init *gemini_find_end_of_memory(void) { unsigned long total, kstart, ksize, *ret; @@ -1389,7 +1396,7 @@ unsigned long __init *gemini_find_end_of_memory(void) remove_mem_piece( &phys_avail, kstart, ksize, 0 ); return ret; } -#endif /* defined(CONFIG_GEMINI) || defined(CONFIG_PPC_ALL) */ +#endif /* defined(CONFIG_GEMINI) || defined(CONFIG_ALL_PPC) */ #ifdef CONFIG_APUS #define HARDWARE_MAPPED_SIZE (512*1024) diff --git a/arch/ppc/pmac_defconfig b/arch/ppc/pmac_defconfig index 1962b2ae6..514843d00 100644 --- a/arch/ppc/pmac_defconfig +++ b/arch/ppc/pmac_defconfig @@ -7,15 +7,18 @@ # 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_MBX is not set -CONFIG_MACH_SPECIFIC=y # CONFIG_SMP is not set +CONFIG_MACH_SPECIFIC=y +CONFIG_6xx=y # # General setup @@ -25,8 +28,6 @@ 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 @@ -34,27 +35,35 @@ CONFIG_SYSVIPC=y CONFIG_BINFMT_ELF=y CONFIG_KERNEL_ELF=y CONFIG_BINFMT_MISC=m -# CONFIG_BINFMT_JAVA is not set + +# +# 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_KEYBOARD=y CONFIG_MAC_FLOPPY=y CONFIG_MAC_SERIAL=y -CONFIG_ADBMOUSE=y -CONFIG_BLK_DEV_IDE_PMAC=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_KGDB is not set -# CONFIG_XMON is not set # CONFIG_TOTALMP is not set CONFIG_BOOTX_TEXT=y +# CONFIG_MOTOROLA_HOTSWAP is not set # -# Plug and Play support +# Plug and Play configuration # # CONFIG_PNP is not set +# CONFIG_ISAPNP is not set # # Block devices @@ -67,24 +76,45 @@ CONFIG_BLK_DEV_IDE=y # # 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_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_BLK_DEV_IDEDMA=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 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 @@ -92,16 +122,19 @@ 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_FIREWALL is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set # CONFIG_FILTER is not set CONFIG_UNIX=y CONFIG_INET=y @@ -118,16 +151,17 @@ CONFIG_IP_ALIAS=y # # (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_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 @@ -136,7 +170,6 @@ CONFIG_ATALK=m # 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 # # QoS and/or fair queueing @@ -173,9 +206,11 @@ CONFIG_SCSI_CONSTANTS=y # CONFIG_SCSI_AHA1542 is not set # CONFIG_SCSI_AHA1740 is not set CONFIG_SCSI_AIC7XXX=y -# CONFIG_OVERRIDE_CMDS is not set +# 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 @@ -189,15 +224,19 @@ CONFIG_AIC7XXX_RESET_DELAY=15 # 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 @@ -212,10 +251,19 @@ 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 @@ -223,12 +271,16 @@ CONFIG_BMAC=y # 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_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 @@ -247,22 +299,43 @@ CONFIG_DE4X5=y # CONFIG_NET_POCKET is not set # CONFIG_FDDI is not set # CONFIG_HIPPI is not set -# CONFIG_DLCI 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 # -# CCP compressors for PPP are only built as modules. +# Wireless LAN (non-hamradio) # -# CONFIG_SLIP is not set # CONFIG_NET_RADIO is not set + +# +# Token Ring driver support +# # CONFIG_TR is not set -# CONFIG_SHAPER is not set -# CONFIG_HOSTESS_SV11 is not set -# CONFIG_COSA 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 @@ -275,24 +348,32 @@ CONFIG_PPP=y # CONFIG_ISDN is not set # -# CD-ROM drivers (not for SCSI or IDE/ATAPI drives) +# 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_ATY=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 @@ -314,11 +395,20 @@ CONFIG_FONT_SUN12x22=y # CONFIG_VT=y CONFIG_VT_CONSOLE=y -# CONFIG_SERIAL is not set +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 @@ -334,11 +424,51 @@ CONFIG_NVRAM=y # 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 @@ -347,13 +477,15 @@ 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=m -CONFIG_MSDOS_FS=m +# 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=m +# 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 @@ -380,52 +512,38 @@ CONFIG_LOCKD=y # # Partition Types # -# CONFIG_BSD_DISKLABEL is not set +CONFIG_PARTITION_ADVANCED=y +# CONFIG_OSF_PARTITION is not set CONFIG_MAC_PARTITION=y -# CONFIG_SMD_DISKLABEL is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set # CONFIG_SOLARIS_X86_PARTITION is not set # CONFIG_UNIXWARE_DISKLABEL is not set -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_ISO8859_15 is not set -# CONFIG_NLS_KOI8_R 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 |