aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/alpha/kernel/pci_iommu.c3
-rw-r--r--arch/arm/common/dmabounce.c3
-rw-r--r--arch/avr32/boards/atstk1000/atstk1002.c58
-rw-r--r--arch/avr32/mach-at32ap/at32ap7000.c344
-rw-r--r--arch/avr32/mach-at32ap/extint.c2
-rw-r--r--arch/avr32/mach-at32ap/pm.h4
-rw-r--r--arch/avr32/mach-at32ap/time-tc.c2
-rw-r--r--arch/blackfin/Kconfig61
-rw-r--r--arch/blackfin/Makefile23
-rw-r--r--arch/blackfin/boot/Makefile3
-rw-r--r--arch/blackfin/boot/install.sh57
-rw-r--r--arch/blackfin/configs/BF527-EZKIT_defconfig1241
-rw-r--r--arch/blackfin/configs/BF548-EZKIT_defconfig9
-rw-r--r--arch/blackfin/kernel/Makefile1
-rw-r--r--arch/blackfin/kernel/bfin_dma_5xx.c26
-rw-r--r--arch/blackfin/kernel/bfin_gpio.c35
-rw-r--r--arch/blackfin/kernel/dma-mapping.c3
-rw-r--r--arch/blackfin/kernel/gptimers.c250
-rw-r--r--arch/blackfin/kernel/reboot.c2
-rw-r--r--arch/blackfin/kernel/setup.c116
-rw-r--r--arch/blackfin/kernel/traps.c2
-rw-r--r--arch/blackfin/lib/Makefile2
-rw-r--r--arch/blackfin/lib/udivdi3.S375
-rw-r--r--arch/blackfin/mach-bf527/Kconfig251
-rw-r--r--arch/blackfin/mach-bf527/Makefile9
-rw-r--r--arch/blackfin/mach-bf527/boards/Makefile7
-rw-r--r--arch/blackfin/mach-bf527/boards/eth_mac.c50
-rw-r--r--arch/blackfin/mach-bf527/boards/ezkit.c737
-rw-r--r--arch/blackfin/mach-bf527/cpu.c161
-rw-r--r--arch/blackfin/mach-bf527/dma.c115
-rw-r--r--arch/blackfin/mach-bf527/head.S456
-rw-r--r--arch/blackfin/mach-bf527/ints-priority.c100
-rw-r--r--arch/blackfin/mach-bf533/boards/cm_bf533.c2
-rw-r--r--arch/blackfin/mach-bf533/boards/ezkit.c2
-rw-r--r--arch/blackfin/mach-bf533/boards/generic_board.c2
-rw-r--r--arch/blackfin/mach-bf533/boards/stamp.c2
-rw-r--r--arch/blackfin/mach-bf537/boards/cm_bf537.c2
-rw-r--r--arch/blackfin/mach-bf537/boards/generic_board.c2
-rw-r--r--arch/blackfin/mach-bf537/boards/pnav10.c2
-rw-r--r--arch/blackfin/mach-bf537/boards/stamp.c2
-rw-r--r--arch/blackfin/mach-bf548/boards/ezkit.c4
-rw-r--r--arch/blackfin/mach-bf548/dma.c1
-rw-r--r--arch/blackfin/mach-bf561/boards/cm_bf561.c2
-rw-r--r--arch/blackfin/mach-bf561/boards/ezkit.c2
-rw-r--r--arch/blackfin/mach-bf561/boards/generic_board.c2
-rw-r--r--arch/blackfin/mach-bf561/boards/tepla.c2
-rw-r--r--arch/blackfin/mach-common/ints-priority-dc.c8
-rw-r--r--arch/blackfin/mach-common/ints-priority-sc.c55
-rw-r--r--arch/i386/Kconfig32
-rw-r--r--arch/i386/Makefile3
-rw-r--r--arch/ia64/hp/common/sba_iommu.c2
-rw-r--r--arch/ia64/hp/sim/simscsi.c4
-rw-r--r--arch/ia64/kernel/efi.c4
-rw-r--r--arch/ia64/kernel/setup.c14
-rw-r--r--arch/ia64/sn/pci/pci_dma.c2
-rw-r--r--arch/m68k/kernel/dma.c2
-rw-r--r--arch/m68knommu/Kconfig13
-rw-r--r--arch/m68knommu/Makefile3
-rw-r--r--arch/m68knommu/defconfig325
-rw-r--r--arch/m68knommu/kernel/setup.c27
-rw-r--r--arch/m68knommu/kernel/signal.c10
-rw-r--r--arch/m68knommu/kernel/time.c22
-rw-r--r--arch/m68knommu/platform/5206/config.c9
-rw-r--r--arch/m68knommu/platform/5206e/config.c10
-rw-r--r--arch/m68knommu/platform/520x/config.c8
-rw-r--r--arch/m68knommu/platform/523x/config.c8
-rw-r--r--arch/m68knommu/platform/5249/config.c10
-rw-r--r--arch/m68knommu/platform/5272/config.c10
-rw-r--r--arch/m68knommu/platform/527x/config.c8
-rw-r--r--arch/m68knommu/platform/528x/config.c8
-rw-r--r--arch/m68knommu/platform/5307/config.c10
-rw-r--r--arch/m68knommu/platform/5307/entry.S5
-rw-r--r--arch/m68knommu/platform/5307/pit.c15
-rw-r--r--arch/m68knommu/platform/5307/timers.c19
-rw-r--r--arch/m68knommu/platform/532x/config.c10
-rw-r--r--arch/m68knommu/platform/5407/config.c10
-rw-r--r--arch/mips/Kconfig4
-rw-r--r--arch/mips/Kconfig.debug12
-rw-r--r--arch/mips/Makefile18
-rw-r--r--arch/mips/cobalt/Makefile2
-rw-r--r--arch/mips/cobalt/setup.c24
-rw-r--r--arch/mips/cobalt/time.c35
-rw-r--r--arch/mips/kernel/Makefile1
-rw-r--r--arch/mips/kernel/cevt-gt641xx.c144
-rw-r--r--arch/mips/kernel/cevt-r4k.c4
-rw-r--r--arch/mips/kernel/time.c4
-rw-r--r--arch/mips/mips-boards/generic/time.c13
-rw-r--r--arch/mips/mm/dma-default.c17
-rw-r--r--arch/mips/sgi-ip27/ip27-init.c2
-rw-r--r--arch/mips/sgi-ip27/ip27-timer.c134
-rw-r--r--arch/mips/sibyte/bcm1480/irq.c75
-rw-r--r--arch/mips/sibyte/bcm1480/smp.c4
-rw-r--r--arch/mips/sibyte/bcm1480/time.c117
-rw-r--r--arch/mips/sibyte/sb1250/irq.c35
-rw-r--r--arch/mips/sibyte/sb1250/smp.c4
-rw-r--r--arch/mips/sibyte/sb1250/time.c88
-rw-r--r--arch/parisc/Makefile58
-rw-r--r--arch/parisc/configs/712_defconfig446
-rw-r--r--arch/parisc/configs/a500_defconfig646
-rw-r--r--arch/parisc/configs/b180_defconfig474
-rw-r--r--arch/parisc/configs/c3000_defconfig582
-rw-r--r--arch/parisc/defconfig615
-rw-r--r--arch/parisc/hpux/gate.S4
-rw-r--r--arch/parisc/kernel/asm-offsets.c3
-rw-r--r--arch/parisc/kernel/entry.S41
-rw-r--r--arch/parisc/kernel/head.S6
-rw-r--r--arch/parisc/kernel/hpmc.S4
-rw-r--r--arch/parisc/kernel/init_task.c1
-rw-r--r--arch/parisc/kernel/pacache.S8
-rw-r--r--arch/parisc/kernel/parisc_ksyms.c22
-rw-r--r--arch/parisc/kernel/pci-dma.c10
-rw-r--r--arch/parisc/kernel/pci.c42
-rw-r--r--arch/parisc/kernel/processor.c7
-rw-r--r--arch/parisc/kernel/smp.c12
-rw-r--r--arch/parisc/kernel/sys_parisc32.c7
-rw-r--r--arch/parisc/kernel/syscall.S13
-rw-r--r--arch/parisc/kernel/syscall_table.S1
-rw-r--r--arch/parisc/kernel/time.c6
-rw-r--r--arch/parisc/kernel/unwind.c4
-rw-r--r--arch/parisc/kernel/vmlinux.lds.S313
-rw-r--r--arch/parisc/lib/Makefile2
-rw-r--r--arch/parisc/lib/libgcc/Makefile4
-rw-r--r--arch/parisc/lib/libgcc/__ashldi3.c19
-rw-r--r--arch/parisc/lib/libgcc/__ashrdi3.c19
-rw-r--r--arch/parisc/lib/libgcc/__clzsi2.c30
-rw-r--r--arch/parisc/lib/libgcc/__divdi3.c23
-rw-r--r--arch/parisc/lib/libgcc/__divsi3.c23
-rw-r--r--arch/parisc/lib/libgcc/__lshrdi3.c19
-rw-r--r--arch/parisc/lib/libgcc/__moddi3.c23
-rw-r--r--arch/parisc/lib/libgcc/__modsi3.c23
-rw-r--r--arch/parisc/lib/libgcc/__muldi3.c22
-rw-r--r--arch/parisc/lib/libgcc/__udivdi3.c7
-rw-r--r--arch/parisc/lib/libgcc/__udivmoddi4.c31
-rw-r--r--arch/parisc/lib/libgcc/__udivmodsi4.c31
-rw-r--r--arch/parisc/lib/libgcc/__udivsi3.c7
-rw-r--r--arch/parisc/lib/libgcc/__umoddi3.c10
-rw-r--r--arch/parisc/lib/libgcc/__umodsi3.c10
-rw-r--r--arch/parisc/lib/libgcc/__umulsidi3.c46
-rw-r--r--arch/parisc/lib/libgcc/libgcc.h32
-rw-r--r--arch/parisc/lib/memcpy.c4
-rw-r--r--arch/parisc/lib/milli/Makefile1
-rw-r--r--arch/parisc/lib/milli/divI.S254
-rw-r--r--arch/parisc/lib/milli/divU.S235
-rw-r--r--arch/parisc/lib/milli/div_const.S682
-rw-r--r--arch/parisc/lib/milli/dyncall.S32
-rw-r--r--arch/parisc/lib/milli/milli.S2071
-rw-r--r--arch/parisc/lib/milli/milli.h165
-rw-r--r--arch/parisc/lib/milli/mulI.S474
-rw-r--r--arch/parisc/lib/milli/remI.S185
-rw-r--r--arch/parisc/lib/milli/remU.S148
-rw-r--r--arch/parisc/mm/init.c2
-rw-r--r--arch/powerpc/Kconfig.debug1
-rw-r--r--arch/powerpc/boot/dts/bamboo.dts10
-rw-r--r--arch/powerpc/boot/dts/lite5200.dts26
-rw-r--r--arch/powerpc/boot/dts/lite5200b.dts26
-rw-r--r--arch/powerpc/boot/dts/sequoia.dts14
-rw-r--r--arch/powerpc/boot/dts/walnut.dts12
-rw-r--r--arch/powerpc/boot/treeboot-walnut.c6
-rw-r--r--arch/powerpc/configs/bamboo_defconfig114
-rw-r--r--arch/powerpc/configs/ebony_defconfig115
-rw-r--r--arch/powerpc/configs/walnut_defconfig94
-rw-r--r--arch/powerpc/kernel/dma_64.c3
-rw-r--r--arch/powerpc/kernel/ibmebus.c3
-rw-r--r--arch/powerpc/kernel/iommu.c2
-rw-r--r--arch/powerpc/platforms/40x/Kconfig1
-rw-r--r--arch/powerpc/platforms/44x/Kconfig8
-rw-r--r--arch/powerpc/platforms/52xx/lite5200.c4
-rw-r--r--arch/powerpc/platforms/52xx/mpc52xx_common.c71
-rw-r--r--arch/powerpc/platforms/Kconfig.cputype1
-rw-r--r--arch/powerpc/platforms/ps3/system-bus.c5
-rw-r--r--arch/powerpc/sysdev/bestcomm/bestcomm.c9
-rw-r--r--arch/ppc/boot/Makefile2
-rw-r--r--arch/s390/defconfig131
-rw-r--r--arch/s390/kernel/ipl.c2
-rw-r--r--arch/s390/kernel/process.c18
-rw-r--r--arch/s390/kernel/smp.c65
-rw-r--r--arch/s390/lib/uaccess_pt.c90
-rw-r--r--arch/s390/mm/Makefile2
-rw-r--r--arch/s390/mm/init.c32
-rw-r--r--arch/s390/mm/pgtable.c94
-rw-r--r--arch/s390/mm/vmem.c53
-rw-r--r--arch/sparc/kernel/ioport.c17
-rw-r--r--arch/sparc/mm/io-unit.c2
-rw-r--r--arch/sparc/mm/iommu.c8
-rw-r--r--arch/sparc/mm/sun4c.c2
-rw-r--r--arch/sparc64/Kconfig4
-rw-r--r--arch/sparc64/Makefile4
-rw-r--r--arch/sparc64/defconfig91
-rw-r--r--arch/sparc64/kernel/Makefile9
-rw-r--r--arch/sparc64/kernel/iommu.c7
-rw-r--r--arch/sparc64/kernel/iommu_common.c18
-rw-r--r--arch/sparc64/kernel/irq.c85
-rw-r--r--arch/sparc64/kernel/ldc.c2
-rw-r--r--arch/sparc64/kernel/pci.c3
-rw-r--r--arch/sparc64/kernel/pci_msi.c14
-rw-r--r--arch/sparc64/kernel/pci_sun4v.c7
-rw-r--r--arch/sparc64/math-emu/Makefile2
-rw-r--r--arch/um/drivers/ubd_kern.c2
-rw-r--r--arch/x86/boot/compressed/head_32.S15
-rw-r--r--arch/x86/boot/compressed/misc_32.c3
-rw-r--r--arch/x86/boot/header.S7
-rw-r--r--arch/x86/kernel/asm-offsets_32.c8
-rw-r--r--arch/x86/kernel/e820_32.c18
-rw-r--r--arch/x86/kernel/e820_64.c22
-rw-r--r--arch/x86/kernel/efi_32.c4
-rw-r--r--arch/x86/kernel/head_32.S44
-rw-r--r--arch/x86/kernel/io_apic_64.c59
-rw-r--r--arch/x86/kernel/pci-calgary_64.c10
-rw-r--r--arch/x86/kernel/pci-dma_64.c5
-rw-r--r--arch/x86/kernel/pci-gart_64.c4
-rw-r--r--arch/x86/kernel/pci-nommu_64.c4
-rw-r--r--arch/x86/kernel/setup_32.c4
-rw-r--r--arch/x86/kernel/setup_64.c9
-rw-r--r--arch/x86/lguest/Kconfig14
-rw-r--r--arch/x86/lguest/Makefile1
-rw-r--r--arch/x86/lguest/boot.c1070
-rw-r--r--arch/x86/lguest/i386_head.S115
-rw-r--r--arch/x86/mm/pageattr_64.c6
-rw-r--r--arch/x86/xen/Kconfig5
-rw-r--r--arch/x86_64/Kconfig32
-rw-r--r--arch/xtensa/boot/Makefile3
221 files changed, 13709 insertions, 2943 deletions
diff --git a/arch/alpha/kernel/pci_iommu.c b/arch/alpha/kernel/pci_iommu.c
index e1c470752ebc..2d00a08d3f08 100644
--- a/arch/alpha/kernel/pci_iommu.c
+++ b/arch/alpha/kernel/pci_iommu.c
@@ -7,6 +7,7 @@
7#include <linux/pci.h> 7#include <linux/pci.h>
8#include <linux/slab.h> 8#include <linux/slab.h>
9#include <linux/bootmem.h> 9#include <linux/bootmem.h>
10#include <linux/scatterlist.h>
10#include <linux/log2.h> 11#include <linux/log2.h>
11 12
12#include <asm/io.h> 13#include <asm/io.h>
@@ -465,7 +466,7 @@ EXPORT_SYMBOL(pci_free_consistent);
465 Write dma_length of each leader with the combined lengths of 466 Write dma_length of each leader with the combined lengths of
466 the mergable followers. */ 467 the mergable followers. */
467 468
468#define SG_ENT_VIRT_ADDRESS(SG) (page_address((SG)->page) + (SG)->offset) 469#define SG_ENT_VIRT_ADDRESS(SG) (sg_virt((SG)))
469#define SG_ENT_PHYS_ADDRESS(SG) __pa(SG_ENT_VIRT_ADDRESS(SG)) 470#define SG_ENT_PHYS_ADDRESS(SG) __pa(SG_ENT_VIRT_ADDRESS(SG))
470 471
471static void 472static void
diff --git a/arch/arm/common/dmabounce.c b/arch/arm/common/dmabounce.c
index 44ab0dad4035..52fc6a883281 100644
--- a/arch/arm/common/dmabounce.c
+++ b/arch/arm/common/dmabounce.c
@@ -29,6 +29,7 @@
29#include <linux/dma-mapping.h> 29#include <linux/dma-mapping.h>
30#include <linux/dmapool.h> 30#include <linux/dmapool.h>
31#include <linux/list.h> 31#include <linux/list.h>
32#include <linux/scatterlist.h>
32 33
33#include <asm/cacheflush.h> 34#include <asm/cacheflush.h>
34 35
@@ -442,7 +443,7 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
442 BUG_ON(dir == DMA_NONE); 443 BUG_ON(dir == DMA_NONE);
443 444
444 for (i = 0; i < nents; i++, sg++) { 445 for (i = 0; i < nents; i++, sg++) {
445 struct page *page = sg->page; 446 struct page *page = sg_page(sg);
446 unsigned int offset = sg->offset; 447 unsigned int offset = sg->offset;
447 unsigned int length = sg->length; 448 unsigned int length = sg->length;
448 void *ptr = page_address(page) + offset; 449 void *ptr = page_address(page) + offset;
diff --git a/arch/avr32/boards/atstk1000/atstk1002.c b/arch/avr32/boards/atstk1000/atstk1002.c
index 6b9e466104ad..5be0d13f4b03 100644
--- a/arch/avr32/boards/atstk1000/atstk1002.c
+++ b/arch/avr32/boards/atstk1000/atstk1002.c
@@ -16,6 +16,7 @@
16#include <linux/string.h> 16#include <linux/string.h>
17#include <linux/types.h> 17#include <linux/types.h>
18#include <linux/spi/spi.h> 18#include <linux/spi/spi.h>
19#include <linux/spi/at73c213.h>
19 20
20#include <video/atmel_lcdc.h> 21#include <video/atmel_lcdc.h>
21 22
@@ -49,7 +50,26 @@ static struct eth_platform_data __initdata eth_data[2] = {
49}; 50};
50 51
51#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM 52#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM
53#ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM
54static struct at73c213_board_info at73c213_data = {
55 .ssc_id = 0,
56 .shortname = "AVR32 STK1000 external DAC",
57};
58#endif
59#endif
60
61#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM
52static struct spi_board_info spi0_board_info[] __initdata = { 62static struct spi_board_info spi0_board_info[] __initdata = {
63#ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM
64 {
65 /* AT73C213 */
66 .modalias = "at73c213",
67 .max_speed_hz = 200000,
68 .chip_select = 0,
69 .mode = SPI_MODE_1,
70 .platform_data = &at73c213_data,
71 },
72#endif
53 { 73 {
54 /* QVGA display */ 74 /* QVGA display */
55 .modalias = "ltv350qv", 75 .modalias = "ltv350qv",
@@ -180,6 +200,38 @@ static void setup_j2_leds(void)
180} 200}
181#endif 201#endif
182 202
203#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM
204#ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM
205static void __init at73c213_set_clk(struct at73c213_board_info *info)
206{
207 struct clk *gclk;
208 struct clk *pll;
209
210 gclk = clk_get(NULL, "gclk0");
211 if (IS_ERR(gclk))
212 goto err_gclk;
213 pll = clk_get(NULL, "pll0");
214 if (IS_ERR(pll))
215 goto err_pll;
216
217 if (clk_set_parent(gclk, pll)) {
218 pr_debug("STK1000: failed to set pll0 as parent for DAC clock\n");
219 goto err_set_clk;
220 }
221
222 at32_select_periph(GPIO_PIN_PA(30), GPIO_PERIPH_A, 0);
223 info->dac_clk = gclk;
224
225err_set_clk:
226 clk_put(pll);
227err_pll:
228 clk_put(gclk);
229err_gclk:
230 return;
231}
232#endif
233#endif
234
183void __init setup_board(void) 235void __init setup_board(void)
184{ 236{
185#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM 237#ifdef CONFIG_BOARD_ATSTK1002_SW2_CUSTOM
@@ -248,6 +300,12 @@ static int __init atstk1002_init(void)
248 300
249 setup_j2_leds(); 301 setup_j2_leds();
250 302
303#ifndef CONFIG_BOARD_ATSTK1002_SW3_CUSTOM
304#ifndef CONFIG_BOARD_ATSTK1002_SW1_CUSTOM
305 at73c213_set_clk(&at73c213_data);
306#endif
307#endif
308
251 return 0; 309 return 0;
252} 310}
253postcore_initcall(atstk1002_init); 311postcore_initcall(atstk1002_init);
diff --git a/arch/avr32/mach-at32ap/at32ap7000.c b/arch/avr32/mach-at32ap/at32ap7000.c
index f6d154ca4d24..a9d9ec081e3d 100644
--- a/arch/avr32/mach-at32ap/at32ap7000.c
+++ b/arch/avr32/mach-at32ap/at32ap7000.c
@@ -556,6 +556,17 @@ static struct clk pico_clk = {
556 .users = 1, 556 .users = 1,
557}; 557};
558 558
559static struct resource dmaca0_resource[] = {
560 {
561 .start = 0xff200000,
562 .end = 0xff20ffff,
563 .flags = IORESOURCE_MEM,
564 },
565 IRQ(2),
566};
567DEFINE_DEV(dmaca, 0);
568DEV_CLK(hclk, dmaca0, hsb, 10);
569
559/* -------------------------------------------------------------------- 570/* --------------------------------------------------------------------
560 * HMATRIX 571 * HMATRIX
561 * -------------------------------------------------------------------- */ 572 * -------------------------------------------------------------------- */
@@ -655,6 +666,7 @@ void __init at32_add_system_devices(void)
655 platform_device_register(&at32_eic0_device); 666 platform_device_register(&at32_eic0_device);
656 platform_device_register(&smc0_device); 667 platform_device_register(&smc0_device);
657 platform_device_register(&pdc_device); 668 platform_device_register(&pdc_device);
669 platform_device_register(&dmaca0_device);
658 670
659 platform_device_register(&at32_systc0_device); 671 platform_device_register(&at32_systc0_device);
660 672
@@ -960,6 +972,96 @@ at32_add_device_spi(unsigned int id, struct spi_board_info *b, unsigned int n)
960} 972}
961 973
962/* -------------------------------------------------------------------- 974/* --------------------------------------------------------------------
975 * TWI
976 * -------------------------------------------------------------------- */
977static struct resource atmel_twi0_resource[] __initdata = {
978 PBMEM(0xffe00800),
979 IRQ(5),
980};
981static struct clk atmel_twi0_pclk = {
982 .name = "twi_pclk",
983 .parent = &pba_clk,
984 .mode = pba_clk_mode,
985 .get_rate = pba_clk_get_rate,
986 .index = 2,
987};
988
989struct platform_device *__init at32_add_device_twi(unsigned int id)
990{
991 struct platform_device *pdev;
992
993 if (id != 0)
994 return NULL;
995
996 pdev = platform_device_alloc("atmel_twi", id);
997 if (!pdev)
998 return NULL;
999
1000 if (platform_device_add_resources(pdev, atmel_twi0_resource,
1001 ARRAY_SIZE(atmel_twi0_resource)))
1002 goto err_add_resources;
1003
1004 select_peripheral(PA(6), PERIPH_A, 0); /* SDA */
1005 select_peripheral(PA(7), PERIPH_A, 0); /* SDL */
1006
1007 atmel_twi0_pclk.dev = &pdev->dev;
1008
1009 platform_device_add(pdev);
1010 return pdev;
1011
1012err_add_resources:
1013 platform_device_put(pdev);
1014 return NULL;
1015}
1016
1017/* --------------------------------------------------------------------
1018 * MMC
1019 * -------------------------------------------------------------------- */
1020static struct resource atmel_mci0_resource[] __initdata = {
1021 PBMEM(0xfff02400),
1022 IRQ(28),
1023};
1024static struct clk atmel_mci0_pclk = {
1025 .name = "mci_clk",
1026 .parent = &pbb_clk,
1027 .mode = pbb_clk_mode,
1028 .get_rate = pbb_clk_get_rate,
1029 .index = 9,
1030};
1031
1032struct platform_device *__init at32_add_device_mci(unsigned int id)
1033{
1034 struct platform_device *pdev;
1035
1036 if (id != 0)
1037 return NULL;
1038
1039 pdev = platform_device_alloc("atmel_mci", id);
1040 if (!pdev)
1041 return NULL;
1042
1043 if (platform_device_add_resources(pdev, atmel_mci0_resource,
1044 ARRAY_SIZE(atmel_mci0_resource)))
1045 goto err_add_resources;
1046
1047 select_peripheral(PA(10), PERIPH_A, 0); /* CLK */
1048 select_peripheral(PA(11), PERIPH_A, 0); /* CMD */
1049 select_peripheral(PA(12), PERIPH_A, 0); /* DATA0 */
1050 select_peripheral(PA(13), PERIPH_A, 0); /* DATA1 */
1051 select_peripheral(PA(14), PERIPH_A, 0); /* DATA2 */
1052 select_peripheral(PA(15), PERIPH_A, 0); /* DATA3 */
1053
1054 atmel_mci0_pclk.dev = &pdev->dev;
1055
1056 platform_device_add(pdev);
1057 return pdev;
1058
1059err_add_resources:
1060 platform_device_put(pdev);
1061 return NULL;
1062}
1063
1064/* --------------------------------------------------------------------
963 * LCDC 1065 * LCDC
964 * -------------------------------------------------------------------- */ 1066 * -------------------------------------------------------------------- */
965static struct atmel_lcdfb_info atmel_lcdfb0_data; 1067static struct atmel_lcdfb_info atmel_lcdfb0_data;
@@ -1228,6 +1330,241 @@ out_free_pdev:
1228} 1330}
1229 1331
1230/* -------------------------------------------------------------------- 1332/* --------------------------------------------------------------------
1333 * IDE / CompactFlash
1334 * -------------------------------------------------------------------- */
1335static struct resource at32_smc_cs4_resource[] __initdata = {
1336 {
1337 .start = 0x04000000,
1338 .end = 0x07ffffff,
1339 .flags = IORESOURCE_MEM,
1340 },
1341 IRQ(~0UL), /* Magic IRQ will be overridden */
1342};
1343static struct resource at32_smc_cs5_resource[] __initdata = {
1344 {
1345 .start = 0x20000000,
1346 .end = 0x23ffffff,
1347 .flags = IORESOURCE_MEM,
1348 },
1349 IRQ(~0UL), /* Magic IRQ will be overridden */
1350};
1351
1352static int __init at32_init_ide_or_cf(struct platform_device *pdev,
1353 unsigned int cs, unsigned int extint)
1354{
1355 static unsigned int extint_pin_map[4] __initdata = {
1356 GPIO_PIN_PB(25),
1357 GPIO_PIN_PB(26),
1358 GPIO_PIN_PB(27),
1359 GPIO_PIN_PB(28),
1360 };
1361 static bool common_pins_initialized __initdata = false;
1362 unsigned int extint_pin;
1363 int ret;
1364
1365 if (extint >= ARRAY_SIZE(extint_pin_map))
1366 return -EINVAL;
1367 extint_pin = extint_pin_map[extint];
1368
1369 switch (cs) {
1370 case 4:
1371 ret = platform_device_add_resources(pdev,
1372 at32_smc_cs4_resource,
1373 ARRAY_SIZE(at32_smc_cs4_resource));
1374 if (ret)
1375 return ret;
1376
1377 select_peripheral(PE(21), PERIPH_A, 0); /* NCS4 -> OE_N */
1378 set_ebi_sfr_bits(HMATRIX_BIT(CS4A));
1379 break;
1380 case 5:
1381 ret = platform_device_add_resources(pdev,
1382 at32_smc_cs5_resource,
1383 ARRAY_SIZE(at32_smc_cs5_resource));
1384 if (ret)
1385 return ret;
1386
1387 select_peripheral(PE(22), PERIPH_A, 0); /* NCS5 -> OE_N */
1388 set_ebi_sfr_bits(HMATRIX_BIT(CS5A));
1389 break;
1390 default:
1391 return -EINVAL;
1392 }
1393
1394 if (!common_pins_initialized) {
1395 select_peripheral(PE(19), PERIPH_A, 0); /* CFCE1 -> CS0_N */
1396 select_peripheral(PE(20), PERIPH_A, 0); /* CFCE2 -> CS1_N */
1397 select_peripheral(PE(23), PERIPH_A, 0); /* CFRNW -> DIR */
1398 select_peripheral(PE(24), PERIPH_A, 0); /* NWAIT <- IORDY */
1399 common_pins_initialized = true;
1400 }
1401
1402 at32_select_periph(extint_pin, GPIO_PERIPH_A, AT32_GPIOF_DEGLITCH);
1403
1404 pdev->resource[1].start = EIM_IRQ_BASE + extint;
1405 pdev->resource[1].end = pdev->resource[1].start;
1406
1407 return 0;
1408}
1409
1410struct platform_device *__init
1411at32_add_device_ide(unsigned int id, unsigned int extint,
1412 struct ide_platform_data *data)
1413{
1414 struct platform_device *pdev;
1415
1416 pdev = platform_device_alloc("at32_ide", id);
1417 if (!pdev)
1418 goto fail;
1419
1420 if (platform_device_add_data(pdev, data,
1421 sizeof(struct ide_platform_data)))
1422 goto fail;
1423
1424 if (at32_init_ide_or_cf(pdev, data->cs, extint))
1425 goto fail;
1426
1427 platform_device_add(pdev);
1428 return pdev;
1429
1430fail:
1431 platform_device_put(pdev);
1432 return NULL;
1433}
1434
1435struct platform_device *__init
1436at32_add_device_cf(unsigned int id, unsigned int extint,
1437 struct cf_platform_data *data)
1438{
1439 struct platform_device *pdev;
1440
1441 pdev = platform_device_alloc("at32_cf", id);
1442 if (!pdev)
1443 goto fail;
1444
1445 if (platform_device_add_data(pdev, data,
1446 sizeof(struct cf_platform_data)))
1447 goto fail;
1448
1449 if (at32_init_ide_or_cf(pdev, data->cs, extint))
1450 goto fail;
1451
1452 if (data->detect_pin != GPIO_PIN_NONE)
1453 at32_select_gpio(data->detect_pin, AT32_GPIOF_DEGLITCH);
1454 if (data->reset_pin != GPIO_PIN_NONE)
1455 at32_select_gpio(data->reset_pin, 0);
1456 if (data->vcc_pin != GPIO_PIN_NONE)
1457 at32_select_gpio(data->vcc_pin, 0);
1458 /* READY is used as extint, so we can't select it as gpio */
1459
1460 platform_device_add(pdev);
1461 return pdev;
1462
1463fail:
1464 platform_device_put(pdev);
1465 return NULL;
1466}
1467
1468/* --------------------------------------------------------------------
1469 * AC97C
1470 * -------------------------------------------------------------------- */
1471static struct resource atmel_ac97c0_resource[] __initdata = {
1472 PBMEM(0xfff02800),
1473 IRQ(29),
1474};
1475static struct clk atmel_ac97c0_pclk = {
1476 .name = "pclk",
1477 .parent = &pbb_clk,
1478 .mode = pbb_clk_mode,
1479 .get_rate = pbb_clk_get_rate,
1480 .index = 10,
1481};
1482
1483struct platform_device *__init at32_add_device_ac97c(unsigned int id)
1484{
1485 struct platform_device *pdev;
1486
1487 if (id != 0)
1488 return NULL;
1489
1490 pdev = platform_device_alloc("atmel_ac97c", id);
1491 if (!pdev)
1492 return NULL;
1493
1494 if (platform_device_add_resources(pdev, atmel_ac97c0_resource,
1495 ARRAY_SIZE(atmel_ac97c0_resource)))
1496 goto err_add_resources;
1497
1498 select_peripheral(PB(20), PERIPH_B, 0); /* SYNC */
1499 select_peripheral(PB(21), PERIPH_B, 0); /* SDO */
1500 select_peripheral(PB(22), PERIPH_B, 0); /* SDI */
1501 select_peripheral(PB(23), PERIPH_B, 0); /* SCLK */
1502
1503 atmel_ac97c0_pclk.dev = &pdev->dev;
1504
1505 platform_device_add(pdev);
1506 return pdev;
1507
1508err_add_resources:
1509 platform_device_put(pdev);
1510 return NULL;
1511}
1512
1513/* --------------------------------------------------------------------
1514 * ABDAC
1515 * -------------------------------------------------------------------- */
1516static struct resource abdac0_resource[] __initdata = {
1517 PBMEM(0xfff02000),
1518 IRQ(27),
1519};
1520static struct clk abdac0_pclk = {
1521 .name = "pclk",
1522 .parent = &pbb_clk,
1523 .mode = pbb_clk_mode,
1524 .get_rate = pbb_clk_get_rate,
1525 .index = 8,
1526};
1527static struct clk abdac0_sample_clk = {
1528 .name = "sample_clk",
1529 .mode = genclk_mode,
1530 .get_rate = genclk_get_rate,
1531 .set_rate = genclk_set_rate,
1532 .set_parent = genclk_set_parent,
1533 .index = 6,
1534};
1535
1536struct platform_device *__init at32_add_device_abdac(unsigned int id)
1537{
1538 struct platform_device *pdev;
1539
1540 if (id != 0)
1541 return NULL;
1542
1543 pdev = platform_device_alloc("abdac", id);
1544 if (!pdev)
1545 return NULL;
1546
1547 if (platform_device_add_resources(pdev, abdac0_resource,
1548 ARRAY_SIZE(abdac0_resource)))
1549 goto err_add_resources;
1550
1551 select_peripheral(PB(20), PERIPH_A, 0); /* DATA1 */
1552 select_peripheral(PB(21), PERIPH_A, 0); /* DATA0 */
1553 select_peripheral(PB(22), PERIPH_A, 0); /* DATAN1 */
1554 select_peripheral(PB(23), PERIPH_A, 0); /* DATAN0 */
1555
1556 abdac0_pclk.dev = &pdev->dev;
1557 abdac0_sample_clk.dev = &pdev->dev;
1558
1559 platform_device_add(pdev);
1560 return pdev;
1561
1562err_add_resources:
1563 platform_device_put(pdev);
1564 return NULL;
1565}
1566
1567/* --------------------------------------------------------------------
1231 * GCLK 1568 * GCLK
1232 * -------------------------------------------------------------------- */ 1569 * -------------------------------------------------------------------- */
1233static struct clk gclk0 = { 1570static struct clk gclk0 = {
@@ -1290,6 +1627,7 @@ struct clk *at32_clock_list[] = {
1290 &smc0_mck, 1627 &smc0_mck,
1291 &pdc_hclk, 1628 &pdc_hclk,
1292 &pdc_pclk, 1629 &pdc_pclk,
1630 &dmaca0_hclk,
1293 &pico_clk, 1631 &pico_clk,
1294 &pio0_mck, 1632 &pio0_mck,
1295 &pio1_mck, 1633 &pio1_mck,
@@ -1307,6 +1645,8 @@ struct clk *at32_clock_list[] = {
1307 &macb1_pclk, 1645 &macb1_pclk,
1308 &atmel_spi0_spi_clk, 1646 &atmel_spi0_spi_clk,
1309 &atmel_spi1_spi_clk, 1647 &atmel_spi1_spi_clk,
1648 &atmel_twi0_pclk,
1649 &atmel_mci0_pclk,
1310 &atmel_lcdfb0_hck1, 1650 &atmel_lcdfb0_hck1,
1311 &atmel_lcdfb0_pixclk, 1651 &atmel_lcdfb0_pixclk,
1312 &ssc0_pclk, 1652 &ssc0_pclk,
@@ -1314,6 +1654,9 @@ struct clk *at32_clock_list[] = {
1314 &ssc2_pclk, 1654 &ssc2_pclk,
1315 &usba0_hclk, 1655 &usba0_hclk,
1316 &usba0_pclk, 1656 &usba0_pclk,
1657 &atmel_ac97c0_pclk,
1658 &abdac0_pclk,
1659 &abdac0_sample_clk,
1317 &gclk0, 1660 &gclk0,
1318 &gclk1, 1661 &gclk1,
1319 &gclk2, 1662 &gclk2,
@@ -1355,6 +1698,7 @@ void __init at32_clock_init(void)
1355 genclk_init_parent(&gclk3); 1698 genclk_init_parent(&gclk3);
1356 genclk_init_parent(&gclk4); 1699 genclk_init_parent(&gclk4);
1357 genclk_init_parent(&atmel_lcdfb0_pixclk); 1700 genclk_init_parent(&atmel_lcdfb0_pixclk);
1701 genclk_init_parent(&abdac0_sample_clk);
1358 1702
1359 /* 1703 /*
1360 * Turn on all clocks that have at least one user already, and 1704 * Turn on all clocks that have at least one user already, and
diff --git a/arch/avr32/mach-at32ap/extint.c b/arch/avr32/mach-at32ap/extint.c
index 8acd01090031..f5bfd4c81fe7 100644
--- a/arch/avr32/mach-at32ap/extint.c
+++ b/arch/avr32/mach-at32ap/extint.c
@@ -142,7 +142,7 @@ static int eic_set_irq_type(unsigned int irq, unsigned int flow_type)
142 return ret; 142 return ret;
143} 143}
144 144
145struct irq_chip eic_chip = { 145static struct irq_chip eic_chip = {
146 .name = "eic", 146 .name = "eic",
147 .ack = eic_ack_irq, 147 .ack = eic_ack_irq,
148 .mask = eic_mask_irq, 148 .mask = eic_mask_irq,
diff --git a/arch/avr32/mach-at32ap/pm.h b/arch/avr32/mach-at32ap/pm.h
index 47efd0d1951f..694d521edc2f 100644
--- a/arch/avr32/mach-at32ap/pm.h
+++ b/arch/avr32/mach-at32ap/pm.h
@@ -113,8 +113,8 @@
113 113
114/* Register access macros */ 114/* Register access macros */
115#define pm_readl(reg) \ 115#define pm_readl(reg) \
116 __raw_readl((void __iomem *)AT32_PM_BASE + PM_##reg) 116 __raw_readl((void __iomem __force *)AT32_PM_BASE + PM_##reg)
117#define pm_writel(reg,value) \ 117#define pm_writel(reg,value) \
118 __raw_writel((value), (void __iomem *)AT32_PM_BASE + PM_##reg) 118 __raw_writel((value), (void __iomem __force *)AT32_PM_BASE + PM_##reg)
119 119
120#endif /* __ARCH_AVR32_MACH_AT32AP_PM_H__ */ 120#endif /* __ARCH_AVR32_MACH_AT32AP_PM_H__ */
diff --git a/arch/avr32/mach-at32ap/time-tc.c b/arch/avr32/mach-at32ap/time-tc.c
index e3070bdd4bb9..10265863c982 100644
--- a/arch/avr32/mach-at32ap/time-tc.c
+++ b/arch/avr32/mach-at32ap/time-tc.c
@@ -79,7 +79,7 @@ static int avr32_timer_calc_div_and_set_jiffies(struct clk *pclk)
79{ 79{
80 unsigned int cycles_max = (clocksource_avr32.mask + 1) / 2; 80 unsigned int cycles_max = (clocksource_avr32.mask + 1) / 2;
81 unsigned int divs[] = { 4, 8, 16, 32 }; 81 unsigned int divs[] = { 4, 8, 16, 32 };
82 int divs_size = sizeof(divs) / sizeof(*divs); 82 int divs_size = ARRAY_SIZE(divs);
83 int i = 0; 83 int i = 0;
84 unsigned long count_hz; 84 unsigned long count_hz;
85 unsigned long shift; 85 unsigned long shift;
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
index ad28dc76fc97..7888551ed939 100644
--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -71,7 +71,7 @@ config GENERIC_CALIBRATE_DELAY
71 71
72config IRQCHIP_DEMUX_GPIO 72config IRQCHIP_DEMUX_GPIO
73 bool 73 bool
74 depends on (BF53x || BF561 || BF54x) 74 depends on (BF52x || BF53x || BF561 || BF54x)
75 default y 75 default y
76 76
77source "init/Kconfig" 77source "init/Kconfig"
@@ -85,6 +85,21 @@ choice
85 prompt "CPU" 85 prompt "CPU"
86 default BF533 86 default BF533
87 87
88config BF522
89 bool "BF522"
90 help
91 BF522 Processor Support.
92
93config BF525
94 bool "BF525"
95 help
96 BF525 Processor Support.
97
98config BF527
99 bool "BF527"
100 help
101 BF527 Processor Support.
102
88config BF531 103config BF531
89 bool "BF531" 104 bool "BF531"
90 help 105 help
@@ -144,13 +159,18 @@ endchoice
144 159
145choice 160choice
146 prompt "Silicon Rev" 161 prompt "Silicon Rev"
162 default BF_REV_0_1 if BF527
147 default BF_REV_0_2 if BF537 163 default BF_REV_0_2 if BF537
148 default BF_REV_0_3 if BF533 164 default BF_REV_0_3 if BF533
149 default BF_REV_0_0 if BF549 165 default BF_REV_0_0 if BF549
150 166
151config BF_REV_0_0 167config BF_REV_0_0
152 bool "0.0" 168 bool "0.0"
153 depends on (BF549) 169 depends on (BF549 || BF527)
170
171config BF_REV_0_1
172 bool "0.2"
173 depends on (BF549 || BF527)
154 174
155config BF_REV_0_2 175config BF_REV_0_2
156 bool "0.2" 176 bool "0.2"
@@ -176,6 +196,11 @@ config BF_REV_NONE
176 196
177endchoice 197endchoice
178 198
199config BF52x
200 bool
201 depends on (BF522 || BF525 || BF527)
202 default y
203
179config BF53x 204config BF53x
180 bool 205 bool
181 depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537) 206 depends on (BF531 || BF532 || BF533 || BF534 || BF536 || BF537)
@@ -204,6 +229,12 @@ choice
204 configuration to ensure that all the other settings are 229 configuration to ensure that all the other settings are
205 correct. 230 correct.
206 231
232config BFIN527_EZKIT
233 bool "BF527-EZKIT"
234 depends on (BF522 || BF525 || BF527)
235 help
236 BF533-EZKIT-LITE board Support.
237
207config BFIN533_EZKIT 238config BFIN533_EZKIT
208 bool "BF533-EZKIT" 239 bool "BF533-EZKIT"
209 depends on (BF533 || BF532 || BF531) 240 depends on (BF533 || BF532 || BF531)
@@ -299,11 +330,17 @@ config MEM_MT48LC8M32B2B5_7
299 depends on (BFIN561_BLUETECHNIX_CM) 330 depends on (BFIN561_BLUETECHNIX_CM)
300 default y 331 default y
301 332
333config MEM_MT48LC32M16A2TG_75
334 bool
335 depends on (BFIN527_EZKIT)
336 default y
337
302config BFIN_SHARED_FLASH_ENET 338config BFIN_SHARED_FLASH_ENET
303 bool 339 bool
304 depends on (BFIN533_STAMP) 340 depends on (BFIN533_STAMP)
305 default y 341 default y
306 342
343source "arch/blackfin/mach-bf527/Kconfig"
307source "arch/blackfin/mach-bf533/Kconfig" 344source "arch/blackfin/mach-bf533/Kconfig"
308source "arch/blackfin/mach-bf561/Kconfig" 345source "arch/blackfin/mach-bf561/Kconfig"
309source "arch/blackfin/mach-bf537/Kconfig" 346source "arch/blackfin/mach-bf537/Kconfig"
@@ -329,7 +366,7 @@ config CLKIN_HZ
329 int "Crystal Frequency in Hz" 366 int "Crystal Frequency in Hz"
330 default "11059200" if BFIN533_STAMP 367 default "11059200" if BFIN533_STAMP
331 default "27000000" if BFIN533_EZKIT 368 default "27000000" if BFIN533_EZKIT
332 default "25000000" if BFIN537_STAMP 369 default "25000000" if (BFIN537_STAMP || BFIN527_EZKIT)
333 default "30000000" if BFIN561_EZKIT 370 default "30000000" if BFIN561_EZKIT
334 default "24576000" if PNAV10 371 default "24576000" if PNAV10
335 help 372 help
@@ -362,7 +399,7 @@ config VCO_MULT
362 range 1 64 399 range 1 64
363 default "22" if BFIN533_EZKIT 400 default "22" if BFIN533_EZKIT
364 default "45" if BFIN533_STAMP 401 default "45" if BFIN533_STAMP
365 default "20" if BFIN537_STAMP 402 default "20" if (BFIN537_STAMP || BFIN527_EZKIT)
366 default "22" if BFIN533_BLUETECHNIX_CM 403 default "22" if BFIN533_BLUETECHNIX_CM
367 default "20" if BFIN537_BLUETECHNIX_CM 404 default "20" if BFIN537_BLUETECHNIX_CM
368 default "20" if BFIN561_BLUETECHNIX_CM 405 default "20" if BFIN561_BLUETECHNIX_CM
@@ -398,7 +435,7 @@ config SCLK_DIV
398 range 1 15 435 range 1 15
399 default 5 if BFIN533_EZKIT 436 default 5 if BFIN533_EZKIT
400 default 5 if BFIN533_STAMP 437 default 5 if BFIN533_STAMP
401 default 4 if BFIN537_STAMP 438 default 4 if (BFIN537_STAMP || BFIN527_EZKIT)
402 default 5 if BFIN533_BLUETECHNIX_CM 439 default 5 if BFIN533_BLUETECHNIX_CM
403 default 4 if BFIN537_BLUETECHNIX_CM 440 default 4 if BFIN537_BLUETECHNIX_CM
404 default 4 if BFIN561_BLUETECHNIX_CM 441 default 4 if BFIN561_BLUETECHNIX_CM
@@ -450,6 +487,7 @@ comment "Memory Setup"
450config MEM_SIZE 487config MEM_SIZE
451 int "SDRAM Memory Size in MBytes" 488 int "SDRAM Memory Size in MBytes"
452 default 32 if BFIN533_EZKIT 489 default 32 if BFIN533_EZKIT
490 default 64 if BFIN527_EZKIT
453 default 64 if BFIN537_STAMP 491 default 64 if BFIN537_STAMP
454 default 64 if BFIN561_EZKIT 492 default 64 if BFIN561_EZKIT
455 default 128 if BFIN533_STAMP 493 default 128 if BFIN533_STAMP
@@ -459,6 +497,7 @@ config MEM_ADD_WIDTH
459 int "SDRAM Memory Address Width" 497 int "SDRAM Memory Address Width"
460 default 9 if BFIN533_EZKIT 498 default 9 if BFIN533_EZKIT
461 default 9 if BFIN561_EZKIT 499 default 9 if BFIN561_EZKIT
500 default 10 if BFIN527_EZKIT
462 default 10 if BFIN537_STAMP 501 default 10 if BFIN537_STAMP
463 default 11 if BFIN533_STAMP 502 default 11 if BFIN533_STAMP
464 default 10 if PNAV10 503 default 10 if PNAV10
@@ -749,9 +788,19 @@ config LARGE_ALLOCS
749 a lot of RAM, and you need to able to allocate very large 788 a lot of RAM, and you need to able to allocate very large
750 contiguous chunks. If unsure, say N. 789 contiguous chunks. If unsure, say N.
751 790
791config BFIN_GPTIMERS
792 tristate "Enable Blackfin General Purpose Timers API"
793 default n
794 help
795 Enable support for the General Purpose Timers API. If you
796 are unsure, say N.
797
798 To compile this driver as a module, choose M here: the module
799 will be called gptimers.ko.
800
752config BFIN_DMA_5XX 801config BFIN_DMA_5XX
753 bool "Enable DMA Support" 802 bool "Enable DMA Support"
754 depends on (BF533 || BF532 || BF531 || BF537 || BF536 || BF534 || BF561 || BF54x) 803 depends on (BF52x || BF53x || BF561 || BF54x)
755 default y 804 default y
756 help 805 help
757 DMA driver for BF5xx. 806 DMA driver for BF5xx.
diff --git a/arch/blackfin/Makefile b/arch/blackfin/Makefile
index 368933760d28..f7cac7c51e7e 100644
--- a/arch/blackfin/Makefile
+++ b/arch/blackfin/Makefile
@@ -12,12 +12,17 @@ LDFLAGS_vmlinux := -X
12OBJCOPYFLAGS := -O binary -R .note -R .comment -S 12OBJCOPYFLAGS := -O binary -R .note -R .comment -S
13GZFLAGS := -9 13GZFLAGS := -9
14 14
15KBUILD_CFLAGS += $(call cc-option,-mno-fdpic)
16KBUILD_AFLAGS += $(call cc-option,-mno-fdpic)
15CFLAGS_MODULE += -mlong-calls 17CFLAGS_MODULE += -mlong-calls
16KALLSYMS += --symbol-prefix=_ 18KALLSYMS += --symbol-prefix=_
17 19
18KBUILD_DEFCONFIG := BF537-STAMP_defconfig 20KBUILD_DEFCONFIG := BF537-STAMP_defconfig
19 21
20# setup the machine name and the machine dependent settings 22# setup the machine name and the machine dependent settings
23machine-$(CONFIG_BF522) := bf527
24machine-$(CONFIG_BF525) := bf527
25machine-$(CONFIG_BF527) := bf527
21machine-$(CONFIG_BF531) := bf533 26machine-$(CONFIG_BF531) := bf533
22machine-$(CONFIG_BF532) := bf533 27machine-$(CONFIG_BF532) := bf533
23machine-$(CONFIG_BF533) := bf533 28machine-$(CONFIG_BF533) := bf533
@@ -32,6 +37,9 @@ machine-$(CONFIG_BF561) := bf561
32MACHINE := $(machine-y) 37MACHINE := $(machine-y)
33export MACHINE 38export MACHINE
34 39
40cpu-$(CONFIG_BF522) := bf522
41cpu-$(CONFIG_BF525) := bf525
42cpu-$(CONFIG_BF527) := bf527
35cpu-$(CONFIG_BF531) := bf531 43cpu-$(CONFIG_BF531) := bf531
36cpu-$(CONFIG_BF532) := bf532 44cpu-$(CONFIG_BF532) := bf532
37cpu-$(CONFIG_BF533) := bf533 45cpu-$(CONFIG_BF533) := bf533
@@ -97,12 +105,23 @@ archclean:
97 $(Q)$(MAKE) $(clean)=$(boot) 105 $(Q)$(MAKE) $(clean)=$(boot)
98 106
99 107
100all: vmImage
101boot := arch/$(ARCH)/boot 108boot := arch/$(ARCH)/boot
102BOOT_TARGETS = vmImage 109BOOT_TARGETS = vmImage
103.PHONY: $(BOOT_TARGETS) 110PHONY += $(BOOT_TARGETS) install
111KBUILD_IMAGE := $(boot)/vmImage
112
113all: vmImage
114
104$(BOOT_TARGETS): vmlinux 115$(BOOT_TARGETS): vmlinux
105 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ 116 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
117
118install:
119 $(Q)$(MAKE) $(build)=$(boot) BOOTIMAGE=$(KBUILD_IMAGE) install
120
106define archhelp 121define archhelp
107 echo '* vmImage - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage)' 122 echo '* vmImage - Kernel-only image for U-Boot (arch/$(ARCH)/boot/vmImage)'
123 echo ' install - Install kernel using'
124 echo ' (your) ~/bin/$(CROSS_COMPILE)installkernel or'
125 echo ' (distribution) PATH: $(CROSS_COMPILE)installkernel or'
126 echo ' install to $$(INSTALL_PATH)'
108endef 127endef
diff --git a/arch/blackfin/boot/Makefile b/arch/blackfin/boot/Makefile
index 8cd33560e817..522f3c124060 100644
--- a/arch/blackfin/boot/Makefile
+++ b/arch/blackfin/boot/Makefile
@@ -26,3 +26,6 @@ $(obj)/vmlinux.gz: $(obj)/vmlinux.bin FORCE
26$(obj)/vmImage: $(obj)/vmlinux.gz 26$(obj)/vmImage: $(obj)/vmlinux.gz
27 $(call if_changed,uimage) 27 $(call if_changed,uimage)
28 @echo 'Kernel: $@ is ready' 28 @echo 'Kernel: $@ is ready'
29
30install:
31 sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(BOOTIMAGE) System.map "$(INSTALL_PATH)"
diff --git a/arch/blackfin/boot/install.sh b/arch/blackfin/boot/install.sh
new file mode 100644
index 000000000000..9560a6b29100
--- /dev/null
+++ b/arch/blackfin/boot/install.sh
@@ -0,0 +1,57 @@
1#!/bin/sh
2#
3# arch/blackfin/boot/install.sh
4#
5# This file is subject to the terms and conditions of the GNU General Public
6# License. See the file "COPYING" in the main directory of this archive
7# for more details.
8#
9# Copyright (C) 1995 by Linus Torvalds
10#
11# Adapted from code in arch/i386/boot/Makefile by H. Peter Anvin
12# Adapted from code in arch/i386/boot/install.sh by Mike Frysinger
13#
14# "make install" script for Blackfin architecture
15#
16# Arguments:
17# $1 - kernel version
18# $2 - kernel image file
19# $3 - kernel map file
20# $4 - default install path (blank if root directory)
21#
22
23verify () {
24 if [ ! -f "$1" ]; then
25 echo "" 1>&2
26 echo " *** Missing file: $1" 1>&2
27 echo ' *** You need to run "make" before "make install".' 1>&2
28 echo "" 1>&2
29 exit 1
30 fi
31}
32
33# Make sure the files actually exist
34verify "$2"
35verify "$3"
36
37# User may have a custom install script
38
39if [ -x ~/bin/${CROSS_COMPILE}installkernel ]; then exec ~/bin/${CROSS_COMPILE}installkernel "$@"; fi
40if which ${CROSS_COMPILE}installkernel >/dev/null 2>&1; then
41 exec ${CROSS_COMPILE}installkernel "$@"
42fi
43
44# Default install - same as make zlilo
45
46back_it_up() {
47 local file=$1
48 [ -f ${file} ] || return 0
49 local stamp=$(stat -c %Y ${file} 2>/dev/null)
50 mv ${file} ${file}.${stamp:-old}
51}
52
53back_it_up $4/uImage
54back_it_up $4/System.map
55
56cat $2 > $4/uImage
57cp $3 $4/System.map
diff --git a/arch/blackfin/configs/BF527-EZKIT_defconfig b/arch/blackfin/configs/BF527-EZKIT_defconfig
new file mode 100644
index 000000000000..df974e785ee2
--- /dev/null
+++ b/arch/blackfin/configs/BF527-EZKIT_defconfig
@@ -0,0 +1,1241 @@
1#
2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22.9
4#
5# CONFIG_MMU is not set
6# CONFIG_FPU is not set
7CONFIG_RWSEM_GENERIC_SPINLOCK=y
8# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
9CONFIG_BLACKFIN=y
10CONFIG_ZONE_DMA=y
11CONFIG_BFIN=y
12CONFIG_SEMAPHORE_SLEEPERS=y
13CONFIG_GENERIC_FIND_NEXT_BIT=y
14CONFIG_GENERIC_HWEIGHT=y
15CONFIG_GENERIC_HARDIRQS=y
16CONFIG_GENERIC_IRQ_PROBE=y
17# CONFIG_GENERIC_TIME is not set
18CONFIG_GENERIC_GPIO=y
19CONFIG_FORCE_MAX_ZONEORDER=14
20CONFIG_GENERIC_CALIBRATE_DELAY=y
21CONFIG_IRQCHIP_DEMUX_GPIO=y
22CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
23
24#
25# Code maturity level options
26#
27CONFIG_EXPERIMENTAL=y
28CONFIG_BROKEN_ON_SMP=y
29CONFIG_INIT_ENV_ARG_LIMIT=32
30
31#
32# General setup
33#
34CONFIG_LOCALVERSION=""
35CONFIG_LOCALVERSION_AUTO=y
36CONFIG_SYSVIPC=y
37# CONFIG_IPC_NS is not set
38CONFIG_SYSVIPC_SYSCTL=y
39# CONFIG_POSIX_MQUEUE is not set
40# CONFIG_BSD_PROCESS_ACCT is not set
41# CONFIG_TASKSTATS is not set
42# CONFIG_UTS_NS is not set
43# CONFIG_AUDIT is not set
44CONFIG_IKCONFIG=y
45CONFIG_IKCONFIG_PROC=y
46CONFIG_LOG_BUF_SHIFT=14
47CONFIG_SYSFS_DEPRECATED=y
48# CONFIG_RELAY is not set
49CONFIG_BLK_DEV_INITRD=y
50CONFIG_INITRAMFS_SOURCE=""
51# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
52CONFIG_SYSCTL=y
53CONFIG_EMBEDDED=y
54CONFIG_UID16=y
55CONFIG_SYSCTL_SYSCALL=y
56CONFIG_KALLSYMS=y
57# CONFIG_KALLSYMS_EXTRA_PASS is not set
58CONFIG_HOTPLUG=y
59CONFIG_PRINTK=y
60CONFIG_BUG=y
61CONFIG_ELF_CORE=y
62CONFIG_BASE_FULL=y
63CONFIG_FUTEX=y
64CONFIG_ANON_INODES=y
65CONFIG_EPOLL=y
66CONFIG_SIGNALFD=y
67CONFIG_EVENTFD=y
68CONFIG_VM_EVENT_COUNTERS=y
69CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
70# CONFIG_NP2 is not set
71CONFIG_SLAB=y
72# CONFIG_SLUB is not set
73# CONFIG_SLOB is not set
74CONFIG_RT_MUTEXES=y
75CONFIG_TINY_SHMEM=y
76CONFIG_BASE_SMALL=0
77
78#
79# Loadable module support
80#
81CONFIG_MODULES=y
82CONFIG_MODULE_UNLOAD=y
83# CONFIG_MODULE_FORCE_UNLOAD is not set
84# CONFIG_MODVERSIONS is not set
85# CONFIG_MODULE_SRCVERSION_ALL is not set
86CONFIG_KMOD=y
87
88#
89# Block layer
90#
91CONFIG_BLOCK=y
92# CONFIG_LBD is not set
93# CONFIG_BLK_DEV_IO_TRACE is not set
94# CONFIG_LSF is not set
95
96#
97# IO Schedulers
98#
99CONFIG_IOSCHED_NOOP=y
100CONFIG_IOSCHED_AS=y
101# CONFIG_IOSCHED_DEADLINE is not set
102CONFIG_IOSCHED_CFQ=y
103CONFIG_DEFAULT_AS=y
104# CONFIG_DEFAULT_DEADLINE is not set
105# CONFIG_DEFAULT_CFQ is not set
106# CONFIG_DEFAULT_NOOP is not set
107CONFIG_DEFAULT_IOSCHED="anticipatory"
108# CONFIG_PREEMPT_NONE is not set
109CONFIG_PREEMPT_VOLUNTARY=y
110# CONFIG_PREEMPT is not set
111
112#
113# Blackfin Processor Options
114#
115
116#
117# Processor and Board Settings
118#
119# CONFIG_BF522 is not set
120# CONFIG_BF525 is not set
121CONFIG_BF527=y
122# CONFIG_BF531 is not set
123# CONFIG_BF532 is not set
124# CONFIG_BF533 is not set
125# CONFIG_BF534 is not set
126# CONFIG_BF536 is not set
127# CONFIG_BF537 is not set
128# CONFIG_BF542 is not set
129# CONFIG_BF544 is not set
130# CONFIG_BF548 is not set
131# CONFIG_BF549 is not set
132# CONFIG_BF561 is not set
133CONFIG_BF_REV_0_0=y
134# CONFIG_BF_REV_0_1 is not set
135# CONFIG_BF_REV_0_2 is not set
136# CONFIG_BF_REV_0_3 is not set
137# CONFIG_BF_REV_0_4 is not set
138# CONFIG_BF_REV_0_5 is not set
139# CONFIG_BF_REV_ANY is not set
140# CONFIG_BF_REV_NONE is not set
141CONFIG_BF52x=y
142CONFIG_BFIN_SINGLE_CORE=y
143CONFIG_BFIN527_EZKIT=y
144# CONFIG_BFIN533_EZKIT is not set
145# CONFIG_BFIN533_STAMP is not set
146# CONFIG_BFIN537_STAMP is not set
147# CONFIG_BFIN533_BLUETECHNIX_CM is not set
148# CONFIG_BFIN537_BLUETECHNIX_CM is not set
149# CONFIG_BFIN548_EZKIT is not set
150# CONFIG_BFIN561_BLUETECHNIX_CM is not set
151# CONFIG_BFIN561_EZKIT is not set
152# CONFIG_BFIN561_TEPLA is not set
153# CONFIG_PNAV10 is not set
154# CONFIG_GENERIC_BOARD is not set
155CONFIG_MEM_MT48LC32M16A2TG_75=y
156
157#
158# BF527 Specific Configuration
159#
160
161#
162# Alternative Multiplexing Scheme
163#
164# CONFIG_BF527_SPORT0_PORTF is not set
165CONFIG_BF527_SPORT0_PORTG=y
166CONFIG_BF527_SPORT0_TSCLK_PG10=y
167# CONFIG_BF527_SPORT0_TSCLK_PG14 is not set
168# CONFIG_BF527_UART1_PORTF is not set
169CONFIG_BF527_UART1_PORTG=y
170# CONFIG_BF527_NAND_D_PORTF is not set
171CONFIG_BF527_NAND_D_PORTH=y
172
173#
174# Interrupt Priority Assignment
175#
176
177#
178# Priority
179#
180CONFIG_IRQ_PLL_WAKEUP=7
181CONFIG_IRQ_DMA0_ERROR=7
182CONFIG_IRQ_DMAR0_BLK=7
183CONFIG_IRQ_DMAR1_BLK=7
184CONFIG_IRQ_DMAR0_OVR=7
185CONFIG_IRQ_DMAR1_OVR=7
186CONFIG_IRQ_PPI_ERROR=7
187CONFIG_IRQ_MAC_ERROR=7
188CONFIG_IRQ_SPORT0_ERROR=7
189CONFIG_IRQ_SPORT1_ERROR=7
190CONFIG_IRQ_UART0_ERROR=7
191CONFIG_IRQ_UART1_ERROR=7
192CONFIG_IRQ_RTC=8
193CONFIG_IRQ_PPI=8
194CONFIG_IRQ_SPORT0_RX=9
195CONFIG_IRQ_SPORT0_TX=9
196CONFIG_IRQ_SPORT1_RX=9
197CONFIG_IRQ_SPORT1_TX=9
198CONFIG_IRQ_TWI=10
199CONFIG_IRQ_SPI=10
200CONFIG_IRQ_UART0_RX=10
201CONFIG_IRQ_UART0_TX=10
202CONFIG_IRQ_UART1_RX=10
203CONFIG_IRQ_UART1_TX=10
204CONFIG_IRQ_OPTSEC=11
205CONFIG_IRQ_CNT=11
206CONFIG_IRQ_MAC_RX=11
207CONFIG_IRQ_PORTH_INTA=11
208CONFIG_IRQ_MAC_TX=11
209CONFIG_IRQ_PORTH_INTB=11
210CONFIG_IRQ_TMR0=12
211CONFIG_IRQ_TMR1=12
212CONFIG_IRQ_TMR2=12
213CONFIG_IRQ_TMR3=12
214CONFIG_IRQ_TMR4=12
215CONFIG_IRQ_TMR5=12
216CONFIG_IRQ_TMR6=12
217CONFIG_IRQ_TMR7=12
218CONFIG_IRQ_PORTG_INTA=12
219CONFIG_IRQ_PORTG_INTB=12
220CONFIG_IRQ_MEM_DMA0=13
221CONFIG_IRQ_MEM_DMA1=13
222CONFIG_IRQ_WATCH=13
223CONFIG_IRQ_PORTF_INTA=13
224CONFIG_IRQ_PORTF_INTB=13
225CONFIG_IRQ_SPI_ERROR=7
226CONFIG_IRQ_NFC_ERROR=7
227CONFIG_IRQ_HDMA_ERROR=7
228CONFIG_IRQ_HDMA=7
229CONFIG_IRQ_USB_EINT=10
230CONFIG_IRQ_USB_INT0=11
231CONFIG_IRQ_USB_INT1=11
232CONFIG_IRQ_USB_INT2=11
233CONFIG_IRQ_USB_DMA=11
234
235#
236# Board customizations
237#
238# CONFIG_CMDLINE_BOOL is not set
239
240#
241# Clock/PLL Setup
242#
243CONFIG_CLKIN_HZ=25000000
244# CONFIG_BFIN_KERNEL_CLOCK is not set
245CONFIG_MAX_VCO_HZ=600000000
246CONFIG_MIN_VCO_HZ=50000000
247CONFIG_MAX_SCLK_HZ=133000000
248CONFIG_MIN_SCLK_HZ=27000000
249
250#
251# Kernel Timer/Scheduler
252#
253# CONFIG_HZ_100 is not set
254CONFIG_HZ_250=y
255# CONFIG_HZ_300 is not set
256# CONFIG_HZ_1000 is not set
257CONFIG_HZ=250
258
259#
260# Memory Setup
261#
262CONFIG_MEM_SIZE=64
263CONFIG_MEM_ADD_WIDTH=10
264CONFIG_BOOT_LOAD=0x1000
265CONFIG_BFIN_SCRATCH_REG_RETN=y
266# CONFIG_BFIN_SCRATCH_REG_RETE is not set
267# CONFIG_BFIN_SCRATCH_REG_CYCLES is not set
268
269#
270# Blackfin Kernel Optimizations
271#
272
273#
274# Memory Optimizations
275#
276CONFIG_I_ENTRY_L1=y
277CONFIG_EXCPT_IRQ_SYSC_L1=y
278CONFIG_DO_IRQ_L1=y
279CONFIG_CORE_TIMER_IRQ_L1=y
280CONFIG_IDLE_L1=y
281# CONFIG_SCHEDULE_L1 is not set
282CONFIG_ARITHMETIC_OPS_L1=y
283CONFIG_ACCESS_OK_L1=y
284# CONFIG_MEMSET_L1 is not set
285# CONFIG_MEMCPY_L1 is not set
286# CONFIG_SYS_BFIN_SPINLOCK_L1 is not set
287# CONFIG_IP_CHECKSUM_L1 is not set
288CONFIG_CACHELINE_ALIGNED_L1=y
289# CONFIG_SYSCALL_TAB_L1 is not set
290# CONFIG_CPLB_SWITCH_TAB_L1 is not set
291CONFIG_RAMKERNEL=y
292# CONFIG_ROMKERNEL is not set
293CONFIG_SELECT_MEMORY_MODEL=y
294CONFIG_FLATMEM_MANUAL=y
295# CONFIG_DISCONTIGMEM_MANUAL is not set
296# CONFIG_SPARSEMEM_MANUAL is not set
297CONFIG_FLATMEM=y
298CONFIG_FLAT_NODE_MEM_MAP=y
299# CONFIG_SPARSEMEM_STATIC is not set
300CONFIG_SPLIT_PTLOCK_CPUS=4
301# CONFIG_RESOURCES_64BIT is not set
302CONFIG_ZONE_DMA_FLAG=1
303CONFIG_LARGE_ALLOCS=y
304CONFIG_BFIN_DMA_5XX=y
305# CONFIG_DMA_UNCACHED_2M is not set
306CONFIG_DMA_UNCACHED_1M=y
307# CONFIG_DMA_UNCACHED_NONE is not set
308
309#
310# Cache Support
311#
312CONFIG_BFIN_ICACHE=y
313CONFIG_BFIN_DCACHE=y
314# CONFIG_BFIN_DCACHE_BANKA is not set
315# CONFIG_BFIN_ICACHE_LOCK is not set
316# CONFIG_BFIN_WB is not set
317CONFIG_BFIN_WT=y
318CONFIG_L1_MAX_PIECE=16
319
320#
321# Asynchonous Memory Configuration
322#
323
324#
325# EBIU_AMBCTL Global Control
326#
327CONFIG_C_AMCKEN=y
328CONFIG_C_CDPRIO=y
329# CONFIG_C_AMBEN is not set
330# CONFIG_C_AMBEN_B0 is not set
331# CONFIG_C_AMBEN_B0_B1 is not set
332# CONFIG_C_AMBEN_B0_B1_B2 is not set
333CONFIG_C_AMBEN_ALL=y
334
335#
336# EBIU_AMBCTL Control
337#
338CONFIG_BANK_0=0x7BB0
339CONFIG_BANK_1=0x5554
340CONFIG_BANK_2=0x7BB0
341CONFIG_BANK_3=0xFFC0
342
343#
344# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
345#
346# CONFIG_PCI is not set
347# CONFIG_ARCH_SUPPORTS_MSI is not set
348
349#
350# PCCARD (PCMCIA/CardBus) support
351#
352# CONFIG_PCCARD is not set
353
354#
355# Executable file formats
356#
357CONFIG_BINFMT_ELF_FDPIC=y
358CONFIG_BINFMT_FLAT=y
359CONFIG_BINFMT_ZFLAT=y
360# CONFIG_BINFMT_SHARED_FLAT is not set
361# CONFIG_BINFMT_MISC is not set
362
363#
364# Power management options
365#
366# CONFIG_PM is not set
367
368#
369# Networking
370#
371CONFIG_NET=y
372
373#
374# Networking options
375#
376CONFIG_PACKET=y
377# CONFIG_PACKET_MMAP is not set
378CONFIG_UNIX=y
379CONFIG_XFRM=y
380# CONFIG_XFRM_USER is not set
381# CONFIG_XFRM_SUB_POLICY is not set
382# CONFIG_XFRM_MIGRATE is not set
383# CONFIG_NET_KEY is not set
384CONFIG_INET=y
385# CONFIG_IP_MULTICAST is not set
386# CONFIG_IP_ADVANCED_ROUTER is not set
387CONFIG_IP_FIB_HASH=y
388CONFIG_IP_PNP=y
389# CONFIG_IP_PNP_DHCP is not set
390# CONFIG_IP_PNP_BOOTP is not set
391# CONFIG_IP_PNP_RARP is not set
392# CONFIG_NET_IPIP is not set
393# CONFIG_NET_IPGRE is not set
394# CONFIG_ARPD is not set
395CONFIG_SYN_COOKIES=y
396# CONFIG_INET_AH is not set
397# CONFIG_INET_ESP is not set
398# CONFIG_INET_IPCOMP is not set
399# CONFIG_INET_XFRM_TUNNEL is not set
400# CONFIG_INET_TUNNEL is not set
401CONFIG_INET_XFRM_MODE_TRANSPORT=y
402CONFIG_INET_XFRM_MODE_TUNNEL=y
403CONFIG_INET_XFRM_MODE_BEET=y
404CONFIG_INET_DIAG=y
405CONFIG_INET_TCP_DIAG=y
406# CONFIG_TCP_CONG_ADVANCED is not set
407CONFIG_TCP_CONG_CUBIC=y
408CONFIG_DEFAULT_TCP_CONG="cubic"
409# CONFIG_TCP_MD5SIG is not set
410# CONFIG_IPV6 is not set
411# CONFIG_INET6_XFRM_TUNNEL is not set
412# CONFIG_INET6_TUNNEL is not set
413# CONFIG_NETLABEL is not set
414# CONFIG_NETWORK_SECMARK is not set
415# CONFIG_NETFILTER is not set
416# CONFIG_IP_DCCP is not set
417# CONFIG_IP_SCTP is not set
418# CONFIG_TIPC is not set
419# CONFIG_ATM is not set
420# CONFIG_BRIDGE is not set
421# CONFIG_VLAN_8021Q is not set
422# CONFIG_DECNET is not set
423# CONFIG_LLC2 is not set
424# CONFIG_IPX is not set
425# CONFIG_ATALK is not set
426# CONFIG_X25 is not set
427# CONFIG_LAPB is not set
428# CONFIG_ECONET is not set
429# CONFIG_WAN_ROUTER is not set
430
431#
432# QoS and/or fair queueing
433#
434# CONFIG_NET_SCHED is not set
435
436#
437# Network testing
438#
439# CONFIG_NET_PKTGEN is not set
440# CONFIG_HAMRADIO is not set
441# CONFIG_IRDA is not set
442# CONFIG_BT is not set
443# CONFIG_AF_RXRPC is not set
444
445#
446# Wireless
447#
448# CONFIG_CFG80211 is not set
449# CONFIG_WIRELESS_EXT is not set
450# CONFIG_MAC80211 is not set
451# CONFIG_IEEE80211 is not set
452# CONFIG_RFKILL is not set
453
454#
455# Device Drivers
456#
457
458#
459# Generic Driver Options
460#
461CONFIG_STANDALONE=y
462CONFIG_PREVENT_FIRMWARE_BUILD=y
463# CONFIG_FW_LOADER is not set
464# CONFIG_SYS_HYPERVISOR is not set
465
466#
467# Connector - unified userspace <-> kernelspace linker
468#
469# CONFIG_CONNECTOR is not set
470CONFIG_MTD=y
471# CONFIG_MTD_DEBUG is not set
472# CONFIG_MTD_CONCAT is not set
473CONFIG_MTD_PARTITIONS=y
474# CONFIG_MTD_REDBOOT_PARTS is not set
475# CONFIG_MTD_CMDLINE_PARTS is not set
476
477#
478# User Modules And Translation Layers
479#
480CONFIG_MTD_CHAR=m
481CONFIG_MTD_BLKDEVS=y
482CONFIG_MTD_BLOCK=y
483# CONFIG_FTL is not set
484# CONFIG_NFTL is not set
485# CONFIG_INFTL is not set
486# CONFIG_RFD_FTL is not set
487# CONFIG_SSFDC is not set
488
489#
490# RAM/ROM/Flash chip drivers
491#
492# CONFIG_MTD_CFI is not set
493CONFIG_MTD_JEDECPROBE=m
494CONFIG_MTD_GEN_PROBE=m
495# CONFIG_MTD_CFI_ADV_OPTIONS is not set
496CONFIG_MTD_MAP_BANK_WIDTH_1=y
497CONFIG_MTD_MAP_BANK_WIDTH_2=y
498CONFIG_MTD_MAP_BANK_WIDTH_4=y
499# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
500# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
501# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
502CONFIG_MTD_CFI_I1=y
503CONFIG_MTD_CFI_I2=y
504# CONFIG_MTD_CFI_I4 is not set
505# CONFIG_MTD_CFI_I8 is not set
506# CONFIG_MTD_CFI_INTELEXT is not set
507# CONFIG_MTD_CFI_AMDSTD is not set
508# CONFIG_MTD_CFI_STAA is not set
509CONFIG_MTD_MW320D=m
510CONFIG_MTD_RAM=y
511CONFIG_MTD_ROM=m
512# CONFIG_MTD_ABSENT is not set
513
514#
515# Mapping drivers for chip access
516#
517CONFIG_MTD_COMPLEX_MAPPINGS=y
518# CONFIG_MTD_PHYSMAP is not set
519CONFIG_MTD_BF5xx=m
520CONFIG_BFIN_FLASH_SIZE=0x400000
521CONFIG_EBIU_FLASH_BASE=0x20000000
522# CONFIG_MTD_UCLINUX is not set
523# CONFIG_MTD_PLATRAM is not set
524
525#
526# Self-contained MTD device drivers
527#
528# CONFIG_MTD_DATAFLASH is not set
529# CONFIG_MTD_M25P80 is not set
530# CONFIG_MTD_SLRAM is not set
531# CONFIG_MTD_PHRAM is not set
532# CONFIG_MTD_MTDRAM is not set
533# CONFIG_MTD_BLOCK2MTD is not set
534
535#
536# Disk-On-Chip Device Drivers
537#
538# CONFIG_MTD_DOC2000 is not set
539# CONFIG_MTD_DOC2001 is not set
540# CONFIG_MTD_DOC2001PLUS is not set
541CONFIG_MTD_NAND=m
542# CONFIG_MTD_NAND_VERIFY_WRITE is not set
543# CONFIG_MTD_NAND_ECC_SMC is not set
544# CONFIG_MTD_NAND_MUSEUM_IDS is not set
545CONFIG_MTD_NAND_BFIN=m
546CONFIG_BFIN_NAND_BASE=0x20212000
547CONFIG_BFIN_NAND_CLE=2
548CONFIG_BFIN_NAND_ALE=1
549CONFIG_BFIN_NAND_READY=3
550CONFIG_MTD_NAND_IDS=m
551# CONFIG_MTD_NAND_DISKONCHIP is not set
552# CONFIG_MTD_NAND_NANDSIM is not set
553# CONFIG_MTD_NAND_PLATFORM is not set
554# CONFIG_MTD_ONENAND is not set
555
556#
557# UBI - Unsorted block images
558#
559# CONFIG_MTD_UBI is not set
560
561#
562# Parallel port support
563#
564# CONFIG_PARPORT is not set
565
566#
567# Plug and Play support
568#
569# CONFIG_PNPACPI is not set
570
571#
572# Block devices
573#
574# CONFIG_BLK_DEV_COW_COMMON is not set
575# CONFIG_BLK_DEV_LOOP is not set
576# CONFIG_BLK_DEV_NBD is not set
577CONFIG_BLK_DEV_RAM=y
578CONFIG_BLK_DEV_RAM_COUNT=16
579CONFIG_BLK_DEV_RAM_SIZE=4096
580CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
581# CONFIG_CDROM_PKTCDVD is not set
582# CONFIG_ATA_OVER_ETH is not set
583
584#
585# Misc devices
586#
587# CONFIG_IDE is not set
588
589#
590# SCSI device support
591#
592# CONFIG_RAID_ATTRS is not set
593# CONFIG_SCSI is not set
594# CONFIG_SCSI_NETLINK is not set
595# CONFIG_ATA is not set
596
597#
598# Multi-device support (RAID and LVM)
599#
600# CONFIG_MD is not set
601
602#
603# Network device support
604#
605CONFIG_NETDEVICES=y
606# CONFIG_DUMMY is not set
607# CONFIG_BONDING is not set
608# CONFIG_EQUALIZER is not set
609# CONFIG_TUN is not set
610CONFIG_PHYLIB=y
611
612#
613# MII PHY device drivers
614#
615# CONFIG_MARVELL_PHY is not set
616# CONFIG_DAVICOM_PHY is not set
617# CONFIG_QSEMI_PHY is not set
618# CONFIG_LXT_PHY is not set
619# CONFIG_CICADA_PHY is not set
620# CONFIG_VITESSE_PHY is not set
621# CONFIG_SMSC_PHY is not set
622# CONFIG_BROADCOM_PHY is not set
623# CONFIG_FIXED_PHY is not set
624
625#
626# Ethernet (10 or 100Mbit)
627#
628CONFIG_NET_ETHERNET=y
629CONFIG_MII=y
630# CONFIG_SMC91X is not set
631CONFIG_BFIN_MAC=y
632CONFIG_BFIN_MAC_USE_L1=y
633CONFIG_BFIN_TX_DESC_NUM=10
634CONFIG_BFIN_RX_DESC_NUM=20
635CONFIG_BFIN_MAC_RMII=y
636# CONFIG_SMSC911X is not set
637# CONFIG_DM9000 is not set
638CONFIG_NETDEV_1000=y
639CONFIG_NETDEV_10000=y
640
641#
642# Wireless LAN
643#
644# CONFIG_WLAN_PRE80211 is not set
645# CONFIG_WLAN_80211 is not set
646# CONFIG_WAN is not set
647# CONFIG_PPP is not set
648# CONFIG_SLIP is not set
649# CONFIG_SHAPER is not set
650# CONFIG_NETCONSOLE is not set
651# CONFIG_NETPOLL is not set
652# CONFIG_NET_POLL_CONTROLLER is not set
653
654#
655# ISDN subsystem
656#
657# CONFIG_ISDN is not set
658
659#
660# Telephony Support
661#
662# CONFIG_PHONE is not set
663
664#
665# Input device support
666#
667CONFIG_INPUT=y
668# CONFIG_INPUT_FF_MEMLESS is not set
669# CONFIG_INPUT_POLLDEV is not set
670
671#
672# Userland interfaces
673#
674# CONFIG_INPUT_MOUSEDEV is not set
675# CONFIG_INPUT_JOYDEV is not set
676# CONFIG_INPUT_TSDEV is not set
677# CONFIG_INPUT_EVDEV is not set
678# CONFIG_INPUT_EVBUG is not set
679
680#
681# Input Device Drivers
682#
683# CONFIG_INPUT_KEYBOARD is not set
684# CONFIG_INPUT_MOUSE is not set
685# CONFIG_INPUT_JOYSTICK is not set
686# CONFIG_INPUT_TABLET is not set
687# CONFIG_INPUT_TOUCHSCREEN is not set
688CONFIG_INPUT_MISC=y
689# CONFIG_INPUT_ATI_REMOTE is not set
690# CONFIG_INPUT_ATI_REMOTE2 is not set
691# CONFIG_INPUT_KEYSPAN_REMOTE is not set
692# CONFIG_INPUT_POWERMATE is not set
693# CONFIG_INPUT_YEALINK is not set
694# CONFIG_INPUT_UINPUT is not set
695# CONFIG_BF53X_PFBUTTONS is not set
696# CONFIG_TWI_KEYPAD is not set
697
698#
699# Hardware I/O ports
700#
701# CONFIG_SERIO is not set
702# CONFIG_GAMEPORT is not set
703
704#
705# Character devices
706#
707# CONFIG_AD9960 is not set
708# CONFIG_SPI_ADC_BF533 is not set
709# CONFIG_BF5xx_PFLAGS is not set
710# CONFIG_BF5xx_PPIFCD is not set
711# CONFIG_BF5xx_TIMERS is not set
712# CONFIG_BF5xx_PPI is not set
713# CONFIG_BFIN_SPORT is not set
714# CONFIG_BFIN_TIMER_LATENCY is not set
715# CONFIG_TWI_LCD is not set
716# CONFIG_AD5304 is not set
717# CONFIG_BF5xx_TEA5764 is not set
718# CONFIG_BF5xx_FBDMA is not set
719# CONFIG_VT is not set
720# CONFIG_SERIAL_NONSTANDARD is not set
721
722#
723# Serial drivers
724#
725# CONFIG_SERIAL_8250 is not set
726
727#
728# Non-8250 serial port support
729#
730CONFIG_SERIAL_BFIN=y
731CONFIG_SERIAL_BFIN_CONSOLE=y
732# CONFIG_SERIAL_BFIN_DMA is not set
733CONFIG_SERIAL_BFIN_PIO=y
734# CONFIG_SERIAL_BFIN_UART0 is not set
735CONFIG_SERIAL_BFIN_UART1=y
736# CONFIG_BFIN_UART1_CTSRTS is not set
737CONFIG_SERIAL_CORE=y
738CONFIG_SERIAL_CORE_CONSOLE=y
739# CONFIG_SERIAL_BFIN_SPORT is not set
740CONFIG_UNIX98_PTYS=y
741# CONFIG_LEGACY_PTYS is not set
742
743#
744# CAN, the car bus and industrial fieldbus
745#
746# CONFIG_CAN4LINUX is not set
747
748#
749# IPMI
750#
751# CONFIG_IPMI_HANDLER is not set
752CONFIG_WATCHDOG=y
753# CONFIG_WATCHDOG_NOWAYOUT is not set
754
755#
756# Watchdog Device Drivers
757#
758# CONFIG_SOFT_WATCHDOG is not set
759CONFIG_BFIN_WDT=y
760CONFIG_HW_RANDOM=y
761# CONFIG_GEN_RTC is not set
762# CONFIG_R3964 is not set
763# CONFIG_RAW_DRIVER is not set
764
765#
766# TPM devices
767#
768# CONFIG_TCG_TPM is not set
769CONFIG_I2C=y
770CONFIG_I2C_BOARDINFO=y
771CONFIG_I2C_CHARDEV=m
772
773#
774# I2C Algorithms
775#
776# CONFIG_I2C_ALGOBIT is not set
777# CONFIG_I2C_ALGOPCF is not set
778# CONFIG_I2C_ALGOPCA is not set
779
780#
781# I2C Hardware Bus support
782#
783# CONFIG_I2C_BLACKFIN_GPIO is not set
784CONFIG_I2C_BLACKFIN_TWI=m
785CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=50
786# CONFIG_I2C_GPIO is not set
787# CONFIG_I2C_OCORES is not set
788# CONFIG_I2C_PARPORT_LIGHT is not set
789# CONFIG_I2C_SIMTEC is not set
790# CONFIG_I2C_STUB is not set
791
792#
793# Miscellaneous I2C Chip support
794#
795# CONFIG_SENSORS_DS1337 is not set
796# CONFIG_SENSORS_DS1374 is not set
797# CONFIG_SENSORS_AD5252 is not set
798# CONFIG_SENSORS_EEPROM is not set
799# CONFIG_SENSORS_PCF8574 is not set
800# CONFIG_SENSORS_PCF8575 is not set
801# CONFIG_SENSORS_PCA9543 is not set
802# CONFIG_SENSORS_PCA9539 is not set
803# CONFIG_SENSORS_PCF8591 is not set
804# CONFIG_SENSORS_MAX6875 is not set
805# CONFIG_I2C_DEBUG_CORE is not set
806# CONFIG_I2C_DEBUG_ALGO is not set
807# CONFIG_I2C_DEBUG_BUS is not set
808# CONFIG_I2C_DEBUG_CHIP is not set
809
810#
811# SPI support
812#
813CONFIG_SPI=y
814CONFIG_SPI_MASTER=y
815
816#
817# SPI Master Controller Drivers
818#
819CONFIG_SPI_BFIN=y
820# CONFIG_SPI_BITBANG is not set
821
822#
823# SPI Protocol Masters
824#
825# CONFIG_SPI_AT25 is not set
826# CONFIG_SPI_SPIDEV is not set
827
828#
829# Dallas's 1-wire bus
830#
831# CONFIG_W1 is not set
832CONFIG_HWMON=y
833# CONFIG_HWMON_VID is not set
834# CONFIG_SENSORS_ABITUGURU is not set
835# CONFIG_SENSORS_AD7418 is not set
836# CONFIG_SENSORS_ADM1021 is not set
837# CONFIG_SENSORS_ADM1025 is not set
838# CONFIG_SENSORS_ADM1026 is not set
839# CONFIG_SENSORS_ADM1029 is not set
840# CONFIG_SENSORS_ADM1031 is not set
841# CONFIG_SENSORS_ADM9240 is not set
842# CONFIG_SENSORS_ASB100 is not set
843# CONFIG_SENSORS_ATXP1 is not set
844# CONFIG_SENSORS_DS1621 is not set
845# CONFIG_SENSORS_F71805F is not set
846# CONFIG_SENSORS_FSCHER is not set
847# CONFIG_SENSORS_FSCPOS is not set
848# CONFIG_SENSORS_GL518SM is not set
849# CONFIG_SENSORS_GL520SM is not set
850# CONFIG_SENSORS_IT87 is not set
851# CONFIG_SENSORS_LM63 is not set
852# CONFIG_SENSORS_LM70 is not set
853# CONFIG_SENSORS_LM75 is not set
854# CONFIG_SENSORS_LM77 is not set
855# CONFIG_SENSORS_LM78 is not set
856# CONFIG_SENSORS_LM80 is not set
857# CONFIG_SENSORS_LM83 is not set
858# CONFIG_SENSORS_LM85 is not set
859# CONFIG_SENSORS_LM87 is not set
860# CONFIG_SENSORS_LM90 is not set
861# CONFIG_SENSORS_LM92 is not set
862# CONFIG_SENSORS_MAX1619 is not set
863# CONFIG_SENSORS_MAX6650 is not set
864# CONFIG_SENSORS_PC87360 is not set
865# CONFIG_SENSORS_PC87427 is not set
866# CONFIG_SENSORS_SMSC47M1 is not set
867# CONFIG_SENSORS_SMSC47M192 is not set
868# CONFIG_SENSORS_SMSC47B397 is not set
869# CONFIG_SENSORS_VT1211 is not set
870# CONFIG_SENSORS_W83781D is not set
871# CONFIG_SENSORS_W83791D is not set
872# CONFIG_SENSORS_W83792D is not set
873# CONFIG_SENSORS_W83793 is not set
874# CONFIG_SENSORS_W83L785TS is not set
875# CONFIG_SENSORS_W83627HF is not set
876# CONFIG_SENSORS_W83627EHF is not set
877# CONFIG_HWMON_DEBUG_CHIP is not set
878
879#
880# Multifunction device drivers
881#
882# CONFIG_MFD_SM501 is not set
883
884#
885# Multimedia devices
886#
887# CONFIG_VIDEO_DEV is not set
888# CONFIG_DVB_CORE is not set
889# CONFIG_DAB is not set
890
891#
892# Graphics support
893#
894# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
895
896#
897# Display device support
898#
899# CONFIG_DISPLAY_SUPPORT is not set
900# CONFIG_VGASTATE is not set
901# CONFIG_FB is not set
902
903#
904# Sound
905#
906# CONFIG_SOUND is not set
907
908#
909# HID Devices
910#
911CONFIG_HID=y
912# CONFIG_HID_DEBUG is not set
913
914#
915# USB support
916#
917CONFIG_USB_ARCH_HAS_HCD=y
918# CONFIG_USB_ARCH_HAS_OHCI is not set
919# CONFIG_USB_ARCH_HAS_EHCI is not set
920# CONFIG_USB is not set
921
922#
923# Enable Host or Gadget support to see Inventra options
924#
925
926#
927# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
928#
929
930#
931# USB Gadget Support
932#
933# CONFIG_USB_GADGET is not set
934# CONFIG_MMC is not set
935
936#
937# LED devices
938#
939# CONFIG_NEW_LEDS is not set
940
941#
942# LED drivers
943#
944
945#
946# LED Triggers
947#
948
949#
950# InfiniBand support
951#
952
953#
954# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
955#
956
957#
958# Real Time Clock
959#
960CONFIG_RTC_LIB=y
961CONFIG_RTC_CLASS=y
962CONFIG_RTC_HCTOSYS=y
963CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
964# CONFIG_RTC_DEBUG is not set
965
966#
967# RTC interfaces
968#
969CONFIG_RTC_INTF_SYSFS=y
970CONFIG_RTC_INTF_PROC=y
971CONFIG_RTC_INTF_DEV=y
972# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
973# CONFIG_RTC_DRV_TEST is not set
974
975#
976# I2C RTC drivers
977#
978# CONFIG_RTC_DRV_DS1307 is not set
979# CONFIG_RTC_DRV_DS1672 is not set
980# CONFIG_RTC_DRV_MAX6900 is not set
981# CONFIG_RTC_DRV_RS5C372 is not set
982# CONFIG_RTC_DRV_ISL1208 is not set
983# CONFIG_RTC_DRV_X1205 is not set
984# CONFIG_RTC_DRV_PCF8563 is not set
985# CONFIG_RTC_DRV_PCF8583 is not set
986
987#
988# SPI RTC drivers
989#
990# CONFIG_RTC_DRV_RS5C348 is not set
991# CONFIG_RTC_DRV_MAX6902 is not set
992
993#
994# Platform RTC drivers
995#
996# CONFIG_RTC_DRV_DS1553 is not set
997# CONFIG_RTC_DRV_DS1742 is not set
998# CONFIG_RTC_DRV_M48T86 is not set
999# CONFIG_RTC_DRV_V3020 is not set
1000
1001#
1002# on-CPU RTC drivers
1003#
1004CONFIG_RTC_DRV_BFIN=y
1005
1006#
1007# DMA Engine support
1008#
1009# CONFIG_DMA_ENGINE is not set
1010
1011#
1012# DMA Clients
1013#
1014
1015#
1016# DMA Devices
1017#
1018
1019#
1020# PBX support
1021#
1022# CONFIG_PBX is not set
1023
1024#
1025# File systems
1026#
1027# CONFIG_EXT2_FS is not set
1028# CONFIG_EXT3_FS is not set
1029# CONFIG_EXT4DEV_FS is not set
1030# CONFIG_REISERFS_FS is not set
1031# CONFIG_JFS_FS is not set
1032# CONFIG_FS_POSIX_ACL is not set
1033# CONFIG_XFS_FS is not set
1034# CONFIG_GFS2_FS is not set
1035# CONFIG_OCFS2_FS is not set
1036# CONFIG_MINIX_FS is not set
1037# CONFIG_ROMFS_FS is not set
1038CONFIG_INOTIFY=y
1039CONFIG_INOTIFY_USER=y
1040# CONFIG_QUOTA is not set
1041# CONFIG_DNOTIFY is not set
1042# CONFIG_AUTOFS_FS is not set
1043# CONFIG_AUTOFS4_FS is not set
1044# CONFIG_FUSE_FS is not set
1045
1046#
1047# CD-ROM/DVD Filesystems
1048#
1049# CONFIG_ISO9660_FS is not set
1050# CONFIG_UDF_FS is not set
1051
1052#
1053# DOS/FAT/NT Filesystems
1054#
1055# CONFIG_MSDOS_FS is not set
1056# CONFIG_VFAT_FS is not set
1057# CONFIG_NTFS_FS is not set
1058
1059#
1060# Pseudo filesystems
1061#
1062CONFIG_PROC_FS=y
1063CONFIG_PROC_SYSCTL=y
1064CONFIG_SYSFS=y
1065# CONFIG_TMPFS is not set
1066# CONFIG_HUGETLB_PAGE is not set
1067CONFIG_RAMFS=y
1068# CONFIG_CONFIGFS_FS is not set
1069
1070#
1071# Miscellaneous filesystems
1072#
1073# CONFIG_ADFS_FS is not set
1074# CONFIG_AFFS_FS is not set
1075# CONFIG_HFS_FS is not set
1076# CONFIG_HFSPLUS_FS is not set
1077# CONFIG_BEFS_FS is not set
1078# CONFIG_BFS_FS is not set
1079# CONFIG_EFS_FS is not set
1080CONFIG_YAFFS_FS=m
1081CONFIG_YAFFS_YAFFS1=y
1082# CONFIG_YAFFS_DOES_ECC is not set
1083CONFIG_YAFFS_YAFFS2=y
1084CONFIG_YAFFS_AUTO_YAFFS2=y
1085# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
1086CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
1087# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
1088# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
1089CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
1090CONFIG_JFFS2_FS=m
1091CONFIG_JFFS2_FS_DEBUG=0
1092CONFIG_JFFS2_FS_WRITEBUFFER=y
1093# CONFIG_JFFS2_SUMMARY is not set
1094# CONFIG_JFFS2_FS_XATTR is not set
1095# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
1096CONFIG_JFFS2_ZLIB=y
1097CONFIG_JFFS2_RTIME=y
1098# CONFIG_JFFS2_RUBIN is not set
1099# CONFIG_CRAMFS is not set
1100# CONFIG_VXFS_FS is not set
1101# CONFIG_HPFS_FS is not set
1102# CONFIG_QNX4FS_FS is not set
1103# CONFIG_SYSV_FS is not set
1104# CONFIG_UFS_FS is not set
1105
1106#
1107# Network File Systems
1108#
1109CONFIG_NFS_FS=m
1110CONFIG_NFS_V3=y
1111# CONFIG_NFS_V3_ACL is not set
1112# CONFIG_NFS_V4 is not set
1113# CONFIG_NFS_DIRECTIO is not set
1114# CONFIG_NFSD is not set
1115CONFIG_LOCKD=m
1116CONFIG_LOCKD_V4=y
1117CONFIG_NFS_COMMON=y
1118CONFIG_SUNRPC=m
1119# CONFIG_SUNRPC_BIND34 is not set
1120# CONFIG_RPCSEC_GSS_KRB5 is not set
1121# CONFIG_RPCSEC_GSS_SPKM3 is not set
1122CONFIG_SMB_FS=m
1123# CONFIG_SMB_NLS_DEFAULT is not set
1124# CONFIG_CIFS is not set
1125# CONFIG_NCP_FS is not set
1126# CONFIG_CODA_FS is not set
1127# CONFIG_AFS_FS is not set
1128# CONFIG_9P_FS is not set
1129
1130#
1131# Partition Types
1132#
1133# CONFIG_PARTITION_ADVANCED is not set
1134CONFIG_MSDOS_PARTITION=y
1135
1136#
1137# Native Language Support
1138#
1139CONFIG_NLS=m
1140CONFIG_NLS_DEFAULT="iso8859-1"
1141# CONFIG_NLS_CODEPAGE_437 is not set
1142# CONFIG_NLS_CODEPAGE_737 is not set
1143# CONFIG_NLS_CODEPAGE_775 is not set
1144# CONFIG_NLS_CODEPAGE_850 is not set
1145# CONFIG_NLS_CODEPAGE_852 is not set
1146# CONFIG_NLS_CODEPAGE_855 is not set
1147# CONFIG_NLS_CODEPAGE_857 is not set
1148# CONFIG_NLS_CODEPAGE_860 is not set
1149# CONFIG_NLS_CODEPAGE_861 is not set
1150# CONFIG_NLS_CODEPAGE_862 is not set
1151# CONFIG_NLS_CODEPAGE_863 is not set
1152# CONFIG_NLS_CODEPAGE_864 is not set
1153# CONFIG_NLS_CODEPAGE_865 is not set
1154# CONFIG_NLS_CODEPAGE_866 is not set
1155# CONFIG_NLS_CODEPAGE_869 is not set
1156# CONFIG_NLS_CODEPAGE_936 is not set
1157# CONFIG_NLS_CODEPAGE_950 is not set
1158# CONFIG_NLS_CODEPAGE_932 is not set
1159# CONFIG_NLS_CODEPAGE_949 is not set
1160# CONFIG_NLS_CODEPAGE_874 is not set
1161# CONFIG_NLS_ISO8859_8 is not set
1162# CONFIG_NLS_CODEPAGE_1250 is not set
1163# CONFIG_NLS_CODEPAGE_1251 is not set
1164# CONFIG_NLS_ASCII is not set
1165# CONFIG_NLS_ISO8859_1 is not set
1166# CONFIG_NLS_ISO8859_2 is not set
1167# CONFIG_NLS_ISO8859_3 is not set
1168# CONFIG_NLS_ISO8859_4 is not set
1169# CONFIG_NLS_ISO8859_5 is not set
1170# CONFIG_NLS_ISO8859_6 is not set
1171# CONFIG_NLS_ISO8859_7 is not set
1172# CONFIG_NLS_ISO8859_9 is not set
1173# CONFIG_NLS_ISO8859_13 is not set
1174# CONFIG_NLS_ISO8859_14 is not set
1175# CONFIG_NLS_ISO8859_15 is not set
1176# CONFIG_NLS_KOI8_R is not set
1177# CONFIG_NLS_KOI8_U is not set
1178# CONFIG_NLS_UTF8 is not set
1179
1180#
1181# Distributed Lock Manager
1182#
1183# CONFIG_DLM is not set
1184
1185#
1186# Profiling support
1187#
1188# CONFIG_PROFILING is not set
1189
1190#
1191# Kernel hacking
1192#
1193# CONFIG_PRINTK_TIME is not set
1194CONFIG_ENABLE_MUST_CHECK=y
1195CONFIG_MAGIC_SYSRQ=y
1196# CONFIG_UNUSED_SYMBOLS is not set
1197CONFIG_DEBUG_FS=y
1198# CONFIG_HEADERS_CHECK is not set
1199# CONFIG_DEBUG_KERNEL is not set
1200# CONFIG_DEBUG_BUGVERBOSE is not set
1201CONFIG_DEBUG_MMRS=y
1202CONFIG_DEBUG_HUNT_FOR_ZERO=y
1203CONFIG_DEBUG_BFIN_HWTRACE_ON=y
1204CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_OFF=y
1205# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_ONE is not set
1206# CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION_TWO is not set
1207CONFIG_DEBUG_BFIN_HWTRACE_COMPRESSION=0
1208# CONFIG_DEBUG_BFIN_HWTRACE_EXPAND is not set
1209# CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE is not set
1210CONFIG_EARLY_PRINTK=y
1211CONFIG_CPLB_INFO=y
1212CONFIG_ACCESS_CHECK=y
1213
1214#
1215# Security options
1216#
1217# CONFIG_KEYS is not set
1218CONFIG_SECURITY=y
1219# CONFIG_SECURITY_NETWORK is not set
1220CONFIG_SECURITY_CAPABILITIES=y
1221
1222#
1223# Cryptographic options
1224#
1225# CONFIG_CRYPTO is not set
1226
1227#
1228# Library routines
1229#
1230CONFIG_BITREVERSE=y
1231# CONFIG_CRC_CCITT is not set
1232# CONFIG_CRC16 is not set
1233# CONFIG_CRC_ITU_T is not set
1234CONFIG_CRC32=y
1235# CONFIG_LIBCRC32C is not set
1236CONFIG_ZLIB_INFLATE=y
1237CONFIG_ZLIB_DEFLATE=m
1238CONFIG_PLIST=y
1239CONFIG_HAS_IOMEM=y
1240CONFIG_HAS_IOPORT=y
1241CONFIG_HAS_DMA=y
diff --git a/arch/blackfin/configs/BF548-EZKIT_defconfig b/arch/blackfin/configs/BF548-EZKIT_defconfig
index e80f3d59c283..d8569888a1c8 100644
--- a/arch/blackfin/configs/BF548-EZKIT_defconfig
+++ b/arch/blackfin/configs/BF548-EZKIT_defconfig
@@ -809,7 +809,14 @@ CONFIG_UNIX98_PTYS=y
809# IPMI 809# IPMI
810# 810#
811# CONFIG_IPMI_HANDLER is not set 811# CONFIG_IPMI_HANDLER is not set
812# CONFIG_WATCHDOG is not set 812CONFIG_WATCHDOG=y
813# CONFIG_WATCHDOG_NOWAYOUT is not set
814
815#
816# Watchdog Device Drivers
817#
818# CONFIG_SOFT_WATCHDOG is not set
819CONFIG_BFIN_WDT=y
813CONFIG_HW_RANDOM=y 820CONFIG_HW_RANDOM=y
814# CONFIG_GEN_RTC is not set 821# CONFIG_GEN_RTC is not set
815# CONFIG_R3964 is not set 822# CONFIG_R3964 is not set
diff --git a/arch/blackfin/kernel/Makefile b/arch/blackfin/kernel/Makefile
index 8aeb6066b19b..8a4cfb293b27 100644
--- a/arch/blackfin/kernel/Makefile
+++ b/arch/blackfin/kernel/Makefile
@@ -9,6 +9,7 @@ obj-y := \
9 sys_bfin.o time.o traps.o irqchip.o dma-mapping.o flat.o \ 9 sys_bfin.o time.o traps.o irqchip.o dma-mapping.o flat.o \
10 fixed_code.o cplbinit.o cacheinit.o reboot.o bfin_gpio.o 10 fixed_code.o cplbinit.o cacheinit.o reboot.o bfin_gpio.o
11 11
12obj-$(CONFIG_BFIN_GPTIMERS) += gptimers.o
12obj-$(CONFIG_MODULES) += module.o 13obj-$(CONFIG_MODULES) += module.o
13obj-$(CONFIG_BFIN_DMA_5XX) += bfin_dma_5xx.o 14obj-$(CONFIG_BFIN_DMA_5XX) += bfin_dma_5xx.o
14obj-$(CONFIG_DUAL_CORE_TEST_MODULE) += dualcore_test.o 15obj-$(CONFIG_DUAL_CORE_TEST_MODULE) += dualcore_test.o
diff --git a/arch/blackfin/kernel/bfin_dma_5xx.c b/arch/blackfin/kernel/bfin_dma_5xx.c
index e19164fb4cd1..503eef4c7fec 100644
--- a/arch/blackfin/kernel/bfin_dma_5xx.c
+++ b/arch/blackfin/kernel/bfin_dma_5xx.c
@@ -420,6 +420,32 @@ unsigned short get_dma_curr_ycount(unsigned int channel)
420} 420}
421EXPORT_SYMBOL(get_dma_curr_ycount); 421EXPORT_SYMBOL(get_dma_curr_ycount);
422 422
423unsigned long get_dma_next_desc_ptr(unsigned int channel)
424{
425 BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
426 && channel < MAX_BLACKFIN_DMA_CHANNEL));
427
428 return dma_ch[channel].regs->next_desc_ptr;
429}
430EXPORT_SYMBOL(get_dma_next_desc_ptr);
431
432unsigned long get_dma_curr_desc_ptr(unsigned int channel)
433{
434 BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
435 && channel < MAX_BLACKFIN_DMA_CHANNEL));
436
437 return dma_ch[channel].regs->curr_desc_ptr;
438}
439
440unsigned long get_dma_curr_addr(unsigned int channel)
441{
442 BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
443 && channel < MAX_BLACKFIN_DMA_CHANNEL));
444
445 return dma_ch[channel].regs->curr_addr_ptr;
446}
447EXPORT_SYMBOL(get_dma_curr_addr);
448
423static void *__dma_memcpy(void *dest, const void *src, size_t size) 449static void *__dma_memcpy(void *dest, const void *src, size_t size)
424{ 450{
425 int direction; /* 1 - address decrease, 0 - address increase */ 451 int direction; /* 1 - address decrease, 0 - address increase */
diff --git a/arch/blackfin/kernel/bfin_gpio.c b/arch/blackfin/kernel/bfin_gpio.c
index 3fe0cd49e8db..ce85d4bf34ca 100644
--- a/arch/blackfin/kernel/bfin_gpio.c
+++ b/arch/blackfin/kernel/bfin_gpio.c
@@ -124,7 +124,7 @@ static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = {
124}; 124};
125#endif 125#endif
126 126
127#ifdef BF537_FAMILY 127#if defined(BF527_FAMILY) || defined(BF537_FAMILY)
128static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { 128static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = {
129 (struct gpio_port_t *) PORTFIO, 129 (struct gpio_port_t *) PORTFIO,
130 (struct gpio_port_t *) PORTGIO, 130 (struct gpio_port_t *) PORTGIO,
@@ -139,6 +139,21 @@ static unsigned short *port_fer[gpio_bank(MAX_BLACKFIN_GPIOS)] = {
139 139
140#endif 140#endif
141 141
142#ifdef BF527_FAMILY
143static unsigned short *port_mux[gpio_bank(MAX_BLACKFIN_GPIOS)] = {
144 (unsigned short *) PORTF_MUX,
145 (unsigned short *) PORTG_MUX,
146 (unsigned short *) PORTH_MUX,
147};
148
149static const
150u8 pmux_offset[][16] =
151 {{ 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 4, 6, 8, 8, 10, 10 }, /* PORTF */
152 { 0, 0, 0, 0, 0, 2, 2, 4, 4, 6, 8, 10, 10, 10, 12, 12 }, /* PORTG */
153 { 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 4, 4, 4, 4, 4 }, /* PORTH */
154 };
155#endif
156
142#ifdef BF561_FAMILY 157#ifdef BF561_FAMILY
143static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = { 158static struct gpio_port_t *gpio_bankb[gpio_bank(MAX_BLACKFIN_GPIOS)] = {
144 (struct gpio_port_t *) FIO0_FLAG_D, 159 (struct gpio_port_t *) FIO0_FLAG_D,
@@ -186,6 +201,10 @@ static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG_INTB
186static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX}; 201static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG_INTB, IRQ_PORTG_INTB, IRQ_MAC_TX};
187#endif 202#endif
188 203
204#ifdef BF527_FAMILY
205static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PORTF_INTB, IRQ_PORTG_INTB, IRQ_PORTH_INTB};
206#endif
207
189#ifdef BF561_FAMILY 208#ifdef BF561_FAMILY
190static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB}; 209static unsigned int sic_iwr_irqs[gpio_bank(MAX_BLACKFIN_GPIOS)] = {IRQ_PROG0_INTB, IRQ_PROG1_INTB, IRQ_PROG2_INTB};
191#endif 210#endif
@@ -238,7 +257,7 @@ static int cmp_label(unsigned short ident, const char *label)
238 return -EINVAL; 257 return -EINVAL;
239} 258}
240 259
241#ifdef BF537_FAMILY 260#if defined(BF527_FAMILY) || defined(BF537_FAMILY)
242static void port_setup(unsigned short gpio, unsigned short usage) 261static void port_setup(unsigned short gpio, unsigned short usage)
243{ 262{
244 if (!check_gpio(gpio)) { 263 if (!check_gpio(gpio)) {
@@ -354,6 +373,18 @@ inline u16 get_portmux(unsigned short portno)
354 373
355 return (pmux >> (2 * gpio_sub_n(portno)) & 0x3); 374 return (pmux >> (2 * gpio_sub_n(portno)) & 0x3);
356} 375}
376#elif defined(BF527_FAMILY)
377inline void portmux_setup(unsigned short portno, unsigned short function)
378{
379 u16 pmux, ident = P_IDENT(portno);
380 u8 offset = pmux_offset[gpio_bank(ident)][gpio_sub_n(ident)];
381
382 pmux = *port_mux[gpio_bank(ident)];
383 pmux &= ~(3 << offset);
384 pmux |= (function & 3) << offset;
385 *port_mux[gpio_bank(ident)] = pmux;
386 SSYNC();
387}
357#else 388#else
358# define portmux_setup(...) do { } while (0) 389# define portmux_setup(...) do { } while (0)
359#endif 390#endif
diff --git a/arch/blackfin/kernel/dma-mapping.c b/arch/blackfin/kernel/dma-mapping.c
index 94d7b119b71e..a16cb03c5291 100644
--- a/arch/blackfin/kernel/dma-mapping.c
+++ b/arch/blackfin/kernel/dma-mapping.c
@@ -160,8 +160,7 @@ dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
160 BUG_ON(direction == DMA_NONE); 160 BUG_ON(direction == DMA_NONE);
161 161
162 for (i = 0; i < nents; i++, sg++) { 162 for (i = 0; i < nents; i++, sg++) {
163 sg->dma_address = (dma_addr_t)(page_address(sg->page) + 163 sg->dma_address = (dma_addr_t) sg_virt(sg);
164 sg->offset);
165 164
166 invalidate_dcache_range(sg_dma_address(sg), 165 invalidate_dcache_range(sg_dma_address(sg),
167 sg_dma_address(sg) + 166 sg_dma_address(sg) +
diff --git a/arch/blackfin/kernel/gptimers.c b/arch/blackfin/kernel/gptimers.c
new file mode 100644
index 000000000000..cb7ba9bfc79c
--- /dev/null
+++ b/arch/blackfin/kernel/gptimers.c
@@ -0,0 +1,250 @@
1/*
2 * bfin_gptimers.c - derived from bf53x_timers.c
3 * Driver for General Purpose Timer functions on the Blackfin processor
4 *
5 * Copyright (C) 2005 John DeHority
6 * Copyright (C) 2006 Hella Aglaia GmbH (awe@aglaia-gmbh.de)
7 *
8 * Licensed under the GPLv2.
9 */
10
11#include <linux/kernel.h>
12#include <linux/module.h>
13
14#include <asm/io.h>
15#include <asm/blackfin.h>
16#include <asm/gptimers.h>
17
18#ifdef DEBUG
19# define tassert(expr)
20#else
21# define tassert(expr) \
22 if (!(expr)) \
23 printk(KERN_DEBUG "%s:%s:%i: Assertion failed: " #expr "\n", \
24 __FILE__, __func__, __LINE__);
25#endif
26
27#define BFIN_TIMER_NUM_GROUP (BFIN_TIMER_OCTET(MAX_BLACKFIN_GPTIMERS - 1) + 1)
28
29typedef struct {
30 uint16_t config;
31 uint16_t __pad;
32 uint32_t counter;
33 uint32_t period;
34 uint32_t width;
35} GPTIMER_timer_regs;
36
37typedef struct {
38 uint16_t enable;
39 uint16_t __pad0;
40 uint16_t disable;
41 uint16_t __pad1;
42 uint32_t status;
43} GPTIMER_group_regs;
44
45static volatile GPTIMER_timer_regs *const timer_regs[MAX_BLACKFIN_GPTIMERS] =
46{
47 (GPTIMER_timer_regs *)TIMER0_CONFIG,
48 (GPTIMER_timer_regs *)TIMER1_CONFIG,
49 (GPTIMER_timer_regs *)TIMER2_CONFIG,
50#if (MAX_BLACKFIN_GPTIMERS > 3)
51 (GPTIMER_timer_regs *)TIMER3_CONFIG,
52 (GPTIMER_timer_regs *)TIMER4_CONFIG,
53 (GPTIMER_timer_regs *)TIMER5_CONFIG,
54 (GPTIMER_timer_regs *)TIMER6_CONFIG,
55 (GPTIMER_timer_regs *)TIMER7_CONFIG,
56#endif
57#if (MAX_BLACKFIN_GPTIMERS > 8)
58 (GPTIMER_timer_regs *)TIMER8_CONFIG,
59 (GPTIMER_timer_regs *)TIMER9_CONFIG,
60 (GPTIMER_timer_regs *)TIMER10_CONFIG,
61 (GPTIMER_timer_regs *)TIMER11_CONFIG,
62#endif
63};
64
65static volatile GPTIMER_group_regs *const group_regs[BFIN_TIMER_NUM_GROUP] =
66{
67 (GPTIMER_group_regs *)TIMER0_GROUP_REG,
68#if (MAX_BLACKFIN_GPTIMERS > 8)
69 (GPTIMER_group_regs *)TIMER8_GROUP_REG,
70#endif
71};
72
73static uint32_t const dis_mask[MAX_BLACKFIN_GPTIMERS] =
74{
75 TIMER_STATUS_TRUN0,
76 TIMER_STATUS_TRUN1,
77 TIMER_STATUS_TRUN2,
78#if (MAX_BLACKFIN_GPTIMERS > 3)
79 TIMER_STATUS_TRUN3,
80 TIMER_STATUS_TRUN4,
81 TIMER_STATUS_TRUN5,
82 TIMER_STATUS_TRUN6,
83 TIMER_STATUS_TRUN7,
84#endif
85#if (MAX_BLACKFIN_GPTIMERS > 8)
86 TIMER_STATUS_TRUN8,
87 TIMER_STATUS_TRUN9,
88 TIMER_STATUS_TRUN10,
89 TIMER_STATUS_TRUN11,
90#endif
91};
92
93static uint32_t const irq_mask[MAX_BLACKFIN_GPTIMERS] =
94{
95 TIMER_STATUS_TIMIL0,
96 TIMER_STATUS_TIMIL1,
97 TIMER_STATUS_TIMIL2,
98#if (MAX_BLACKFIN_GPTIMERS > 3)
99 TIMER_STATUS_TIMIL3,
100 TIMER_STATUS_TIMIL4,
101 TIMER_STATUS_TIMIL5,
102 TIMER_STATUS_TIMIL6,
103 TIMER_STATUS_TIMIL7,
104#endif
105#if (MAX_BLACKFIN_GPTIMERS > 8)
106 TIMER_STATUS_TIMIL8,
107 TIMER_STATUS_TIMIL9,
108 TIMER_STATUS_TIMIL10,
109 TIMER_STATUS_TIMIL11,
110#endif
111};
112
113void set_gptimer_pwidth(int timer_id, uint32_t value)
114{
115 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
116 timer_regs[timer_id]->width = value;
117 SSYNC();
118}
119EXPORT_SYMBOL(set_gptimer_pwidth);
120
121uint32_t get_gptimer_pwidth(int timer_id)
122{
123 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
124 return timer_regs[timer_id]->width;
125}
126EXPORT_SYMBOL(get_gptimer_pwidth);
127
128void set_gptimer_period(int timer_id, uint32_t period)
129{
130 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
131 timer_regs[timer_id]->period = period;
132 SSYNC();
133}
134EXPORT_SYMBOL(set_gptimer_period);
135
136uint32_t get_gptimer_period(int timer_id)
137{
138 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
139 return timer_regs[timer_id]->period;
140}
141EXPORT_SYMBOL(get_gptimer_period);
142
143uint32_t get_gptimer_count(int timer_id)
144{
145 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
146 return timer_regs[timer_id]->counter;
147}
148EXPORT_SYMBOL(get_gptimer_count);
149
150uint32_t get_gptimer_status(int group)
151{
152 tassert(group < BFIN_TIMER_NUM_GROUP);
153 return group_regs[group]->status;
154}
155EXPORT_SYMBOL(get_gptimer_status);
156
157void set_gptimer_status(int group, uint32_t value)
158{
159 tassert(group < BFIN_TIMER_NUM_GROUP);
160 group_regs[group]->status = value;
161 SSYNC();
162}
163EXPORT_SYMBOL(set_gptimer_status);
164
165uint16_t get_gptimer_intr(int timer_id)
166{
167 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
168 return (group_regs[BFIN_TIMER_OCTET(timer_id)]->status & irq_mask[timer_id]) ? 1 : 0;
169}
170EXPORT_SYMBOL(get_gptimer_intr);
171
172void clear_gptimer_intr(int timer_id)
173{
174 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
175 group_regs[BFIN_TIMER_OCTET(timer_id)]->status = irq_mask[timer_id];
176}
177EXPORT_SYMBOL(clear_gptimer_intr);
178
179void set_gptimer_config(int timer_id, uint16_t config)
180{
181 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
182 timer_regs[timer_id]->config = config;
183 SSYNC();
184}
185EXPORT_SYMBOL(set_gptimer_config);
186
187uint16_t get_gptimer_config(int timer_id)
188{
189 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
190 return timer_regs[timer_id]->config;
191}
192EXPORT_SYMBOL(get_gptimer_config);
193
194void enable_gptimers(uint16_t mask)
195{
196 int i;
197 tassert((mask & ~BLACKFIN_GPTIMER_IDMASK) == 0);
198 for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) {
199 group_regs[i]->enable = mask & 0xFF;
200 mask >>= 8;
201 }
202 SSYNC();
203}
204EXPORT_SYMBOL(enable_gptimers);
205
206void disable_gptimers(uint16_t mask)
207{
208 int i;
209 uint16_t m = mask;
210 tassert((mask & ~BLACKFIN_GPTIMER_IDMASK) == 0);
211 for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i) {
212 group_regs[i]->disable = m & 0xFF;
213 m >>= 8;
214 }
215 for (i = 0; i < MAX_BLACKFIN_GPTIMERS; ++i)
216 if (mask & (1 << i))
217 group_regs[BFIN_TIMER_OCTET(i)]->status |= dis_mask[i];
218 SSYNC();
219}
220EXPORT_SYMBOL(disable_gptimers);
221
222void set_gptimer_pulse_hi(int timer_id)
223{
224 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
225 timer_regs[timer_id]->config |= TIMER_PULSE_HI;
226 SSYNC();
227}
228EXPORT_SYMBOL(set_gptimer_pulse_hi);
229
230void clear_gptimer_pulse_hi(int timer_id)
231{
232 tassert(timer_id < MAX_BLACKFIN_GPTIMERS);
233 timer_regs[timer_id]->config &= ~TIMER_PULSE_HI;
234 SSYNC();
235}
236EXPORT_SYMBOL(clear_gptimer_pulse_hi);
237
238uint16_t get_enabled_gptimers(void)
239{
240 int i;
241 uint16_t result = 0;
242 for (i = 0; i < BFIN_TIMER_NUM_GROUP; ++i)
243 result |= (group_regs[i]->enable << (i << 3));
244 return result;
245}
246EXPORT_SYMBOL(get_enabled_gptimers);
247
248MODULE_AUTHOR("Axel Weiss (awe@aglaia-gmbh.de)");
249MODULE_DESCRIPTION("Blackfin General Purpose Timers API");
250MODULE_LICENSE("GPL");
diff --git a/arch/blackfin/kernel/reboot.c b/arch/blackfin/kernel/reboot.c
index 356078ec462b..ae28aac6fec1 100644
--- a/arch/blackfin/kernel/reboot.c
+++ b/arch/blackfin/kernel/reboot.c
@@ -11,7 +11,7 @@
11#include <asm/reboot.h> 11#include <asm/reboot.h>
12#include <asm/system.h> 12#include <asm/system.h>
13 13
14#if defined(BF537_FAMILY) || defined(BF533_FAMILY) 14#if defined(BF537_FAMILY) || defined(BF533_FAMILY) || defined(BF527_FAMILY)
15#define SYSCR_VAL 0x0 15#define SYSCR_VAL 0x0
16#elif defined(BF561_FAMILY) 16#elif defined(BF561_FAMILY)
17#define SYSCR_VAL 0x20 17#define SYSCR_VAL 0x20
diff --git a/arch/blackfin/kernel/setup.c b/arch/blackfin/kernel/setup.c
index 8dcd76e87ed5..f1b059e5a06c 100644
--- a/arch/blackfin/kernel/setup.c
+++ b/arch/blackfin/kernel/setup.c
@@ -459,7 +459,7 @@ static u_long get_vco(void)
459 return vco; 459 return vco;
460} 460}
461 461
462/*Get the Core clock*/ 462/* Get the Core clock */
463u_long get_cclk(void) 463u_long get_cclk(void)
464{ 464{
465 u_long csel, ssel; 465 u_long csel, ssel;
@@ -493,12 +493,24 @@ u_long get_sclk(void)
493} 493}
494EXPORT_SYMBOL(get_sclk); 494EXPORT_SYMBOL(get_sclk);
495 495
496unsigned long sclk_to_usecs(unsigned long sclk)
497{
498 return (USEC_PER_SEC * (u64)sclk) / get_sclk();
499}
500EXPORT_SYMBOL(sclk_to_usecs);
501
502unsigned long usecs_to_sclk(unsigned long usecs)
503{
504 return (get_sclk() * (u64)usecs) / USEC_PER_SEC;
505}
506EXPORT_SYMBOL(usecs_to_sclk);
507
496/* 508/*
497 * Get CPU information for use by the procfs. 509 * Get CPU information for use by the procfs.
498 */ 510 */
499static int show_cpuinfo(struct seq_file *m, void *v) 511static int show_cpuinfo(struct seq_file *m, void *v)
500{ 512{
501 char *cpu, *mmu, *fpu, *name; 513 char *cpu, *mmu, *fpu, *vendor, *cache;
502 uint32_t revid; 514 uint32_t revid;
503 515
504 u_long cclk = 0, sclk = 0; 516 u_long cclk = 0, sclk = 0;
@@ -508,70 +520,83 @@ static int show_cpuinfo(struct seq_file *m, void *v)
508 mmu = "none"; 520 mmu = "none";
509 fpu = "none"; 521 fpu = "none";
510 revid = bfin_revid(); 522 revid = bfin_revid();
511 name = bfin_board_name;
512 523
513 cclk = get_cclk(); 524 cclk = get_cclk();
514 sclk = get_sclk(); 525 sclk = get_sclk();
515 526
516 seq_printf(m, "CPU:\t\tADSP-%s Rev. 0.%d\n" 527 switch (bfin_read_CHIPID() & CHIPID_MANUFACTURE) {
517 "MMU:\t\t%s\n" 528 case 0xca:
518 "FPU:\t\t%s\n" 529 vendor = "Analog Devices";
519 "Core Clock:\t%9lu Hz\n" 530 break;
520 "System Clock:\t%9lu Hz\n" 531 default:
521 "BogoMips:\t%lu.%02lu\n" 532 vendor = "unknown";
522 "Calibration:\t%lu loops\n", 533 break;
523 cpu, revid, mmu, fpu, 534 }
524 cclk,
525 sclk,
526 (loops_per_jiffy * HZ) / 500000,
527 ((loops_per_jiffy * HZ) / 5000) % 100,
528 (loops_per_jiffy * HZ));
529 seq_printf(m, "Board Name:\t%s\n", name);
530 seq_printf(m, "Board Memory:\t%ld MB\n", physical_mem_end >> 20);
531 seq_printf(m, "Kernel Memory:\t%ld MB\n", (unsigned long)_ramend >> 20);
532 if (bfin_read_IMEM_CONTROL() & (ENICPLB | IMC))
533 seq_printf(m, "I-CACHE:\tON\n");
534 else
535 seq_printf(m, "I-CACHE:\tOFF\n");
536 if ((bfin_read_DMEM_CONTROL()) & (ENDCPLB | DMC_ENABLE))
537 seq_printf(m, "D-CACHE:\tON"
538#if defined CONFIG_BFIN_WB
539 " (write-back)"
540#elif defined CONFIG_BFIN_WT
541 " (write-through)"
542#endif
543 "\n");
544 else
545 seq_printf(m, "D-CACHE:\tOFF\n");
546
547 535
536 seq_printf(m, "processor\t: %d\n"
537 "vendor_id\t: %s\n"
538 "cpu family\t: 0x%x\n"
539 "model name\t: ADSP-%s %lu(MHz CCLK) %lu(MHz SCLK)\n"
540 "stepping\t: %d\n",
541 0,
542 vendor,
543 (bfin_read_CHIPID() & CHIPID_FAMILY),
544 cpu, cclk/1000000, sclk/1000000,
545 revid);
546
547 seq_printf(m, "cpu MHz\t\t: %lu.%03lu/%lu.%03lu\n",
548 cclk/1000000, cclk%1000000,
549 sclk/1000000, sclk%1000000);
550 seq_printf(m, "bogomips\t: %lu.%02lu\n"
551 "Calibration\t: %lu loops\n",
552 (loops_per_jiffy * HZ) / 500000,
553 ((loops_per_jiffy * HZ) / 5000) % 100,
554 (loops_per_jiffy * HZ));
555
556 /* Check Cache configutation */
548 switch (bfin_read_DMEM_CONTROL() & (1 << DMC0_P | 1 << DMC1_P)) { 557 switch (bfin_read_DMEM_CONTROL() & (1 << DMC0_P | 1 << DMC1_P)) {
549 case ACACHE_BSRAM: 558 case ACACHE_BSRAM:
550 seq_printf(m, "DBANK-A:\tCACHE\n" "DBANK-B:\tSRAM\n"); 559 cache = "dbank-A/B\t: cache/sram";
551 dcache_size = 16; 560 dcache_size = 16;
552 dsup_banks = 1; 561 dsup_banks = 1;
553 break; 562 break;
554 case ACACHE_BCACHE: 563 case ACACHE_BCACHE:
555 seq_printf(m, "DBANK-A:\tCACHE\n" "DBANK-B:\tCACHE\n"); 564 cache = "dbank-A/B\t: cache/cache";
556 dcache_size = 32; 565 dcache_size = 32;
557 dsup_banks = 2; 566 dsup_banks = 2;
558 break; 567 break;
559 case ASRAM_BSRAM: 568 case ASRAM_BSRAM:
560 seq_printf(m, "DBANK-A:\tSRAM\n" "DBANK-B:\tSRAM\n"); 569 cache = "dbank-A/B\t: sram/sram";
561 dcache_size = 0; 570 dcache_size = 0;
562 dsup_banks = 0; 571 dsup_banks = 0;
563 break; 572 break;
564 default: 573 default:
574 cache = "unknown";
575 dcache_size = 0;
576 dsup_banks = 0;
565 break; 577 break;
566 } 578 }
567 579
580 /* Is it turned on? */
581 if (!((bfin_read_DMEM_CONTROL()) & (ENDCPLB | DMC_ENABLE)))
582 dcache_size = 0;
568 583
569 seq_printf(m, "I-CACHE Size:\t%dKB\n", BFIN_ICACHESIZE / 1024); 584 seq_printf(m, "cache size\t: %d KB(L1 icache) "
570 seq_printf(m, "D-CACHE Size:\t%dKB\n", dcache_size); 585 "%d KB(L1 dcache-%s) %d KB(L2 cache)\n",
571 seq_printf(m, "I-CACHE Setup:\t%d Sub-banks/%d Ways, %d Lines/Way\n", 586 BFIN_ICACHESIZE / 1024, dcache_size,
587#if defined CONFIG_BFIN_WB
588 "wb"
589#elif defined CONFIG_BFIN_WT
590 "wt"
591#endif
592 "", 0);
593
594 seq_printf(m, "%s\n", cache);
595
596 seq_printf(m, "icache setup\t: %d Sub-banks/%d Ways, %d Lines/Way\n",
572 BFIN_ISUBBANKS, BFIN_IWAYS, BFIN_ILINES); 597 BFIN_ISUBBANKS, BFIN_IWAYS, BFIN_ILINES);
573 seq_printf(m, 598 seq_printf(m,
574 "D-CACHE Setup:\t%d Super-banks/%d Sub-banks/%d Ways, %d Lines/Way\n", 599 "dcache setup\t: %d Super-banks/%d Sub-banks/%d Ways, %d Lines/Way\n",
575 dsup_banks, BFIN_DSUBBANKS, BFIN_DWAYS, 600 dsup_banks, BFIN_DSUBBANKS, BFIN_DWAYS,
576 BFIN_DLINES); 601 BFIN_DLINES);
577#ifdef CONFIG_BFIN_ICACHE_LOCK 602#ifdef CONFIG_BFIN_ICACHE_LOCK
@@ -625,6 +650,15 @@ static int show_cpuinfo(struct seq_file *m, void *v)
625 seq_printf(m, "No Ways are locked\n"); 650 seq_printf(m, "No Ways are locked\n");
626 } 651 }
627#endif 652#endif
653
654 seq_printf(m, "board name\t: %s\n", bfin_board_name);
655 seq_printf(m, "board memory\t: %ld kB (0x%p -> 0x%p)\n",
656 physical_mem_end >> 10, (void *)0, (void *)physical_mem_end);
657 seq_printf(m, "kernel memory\t: %d kB (0x%p -> 0x%p)\n",
658 ((int)memory_end - (int)_stext) >> 10,
659 _stext,
660 (void *)memory_end);
661
628 return 0; 662 return 0;
629} 663}
630 664
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c
index 8823e9ade584..afd044e78af6 100644
--- a/arch/blackfin/kernel/traps.c
+++ b/arch/blackfin/kernel/traps.c
@@ -118,12 +118,14 @@ static int printk_address(unsigned long address)
118 offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT); 118 offset = (address - vma->vm_start) + (vma->vm_pgoff << PAGE_SHIFT);
119 119
120 write_unlock_irq(&tasklist_lock); 120 write_unlock_irq(&tasklist_lock);
121 mmput(mm);
121 return printk("<0x%p> [ %s + 0x%lx ]", 122 return printk("<0x%p> [ %s + 0x%lx ]",
122 (void *)address, name, offset); 123 (void *)address, name, offset);
123 } 124 }
124 125
125 vml = vml->next; 126 vml = vml->next;
126 } 127 }
128 mmput(mm);
127 } 129 }
128 write_unlock_irq(&tasklist_lock); 130 write_unlock_irq(&tasklist_lock);
129 131
diff --git a/arch/blackfin/lib/Makefile b/arch/blackfin/lib/Makefile
index 635288fc5f54..bfdad52c570b 100644
--- a/arch/blackfin/lib/Makefile
+++ b/arch/blackfin/lib/Makefile
@@ -4,7 +4,7 @@
4 4
5lib-y := \ 5lib-y := \
6 ashldi3.o ashrdi3.o lshrdi3.o \ 6 ashldi3.o ashrdi3.o lshrdi3.o \
7 muldi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \ 7 muldi3.o divsi3.o udivsi3.o udivdi3.o modsi3.o umodsi3.o \
8 checksum.o memcpy.o memset.o memcmp.o memchr.o memmove.o \ 8 checksum.o memcpy.o memset.o memcmp.o memchr.o memmove.o \
9 strcmp.o strcpy.o strncmp.o strncpy.o \ 9 strcmp.o strcpy.o strncmp.o strncpy.o \
10 umulsi3_highpart.o smulsi3_highpart.o \ 10 umulsi3_highpart.o smulsi3_highpart.o \
diff --git a/arch/blackfin/lib/udivdi3.S b/arch/blackfin/lib/udivdi3.S
new file mode 100644
index 000000000000..ad1ebee675e1
--- /dev/null
+++ b/arch/blackfin/lib/udivdi3.S
@@ -0,0 +1,375 @@
1/*
2 * udivdi3.S - unsigned long long division
3 *
4 * Copyright 2003-2007 Analog Devices Inc.
5 * Enter bugs at http://blackfin.uclinux.org/
6 *
7 * Licensed under the GPLv2 or later.
8 */
9
10#include <linux/linkage.h>
11
12#define CARRY AC0
13
14#ifdef CONFIG_ARITHMETIC_OPS_L1
15.section .l1.text
16#else
17.text
18#endif
19
20
21ENTRY(___udivdi3)
22 R3 = [SP + 12];
23 [--SP] = (R7:4, P5:3);
24
25 /* Attempt to use divide primitive first; these will handle
26 ** most cases, and they're quick - avoids stalls incurred by
27 ** testing for identities.
28 */
29
30 R4 = R2 | R3;
31 CC = R4 == 0;
32 IF CC JUMP .LDIV_BY_ZERO;
33
34 R4.H = 0x8000;
35 R4 >>>= 16; // R4 now 0xFFFF8000
36 R5 = R0 | R2; // If either dividend or
37 R4 = R5 & R4; // divisor have bits in
38 CC = R4; // top half or low half's sign
39 IF CC JUMP .LIDENTS; // bit, skip builtins.
40 R4 = R1 | R3; // Also check top halves
41 CC = R4;
42 IF CC JUMP .LIDENTS;
43
44 /* Can use the builtins. */
45
46 AQ = CC; // Clear AQ (CC==0)
47 DIVQ(R0, R2);
48 DIVQ(R0, R2);
49 DIVQ(R0, R2);
50 DIVQ(R0, R2);
51 DIVQ(R0, R2);
52 DIVQ(R0, R2);
53 DIVQ(R0, R2);
54 DIVQ(R0, R2);
55 DIVQ(R0, R2);
56 DIVQ(R0, R2);
57 DIVQ(R0, R2);
58 DIVQ(R0, R2);
59 DIVQ(R0, R2);
60 DIVQ(R0, R2);
61 DIVQ(R0, R2);
62 DIVQ(R0, R2);
63 DIVQ(R0, R2);
64 R0 = R0.L (Z);
65 R1 = 0;
66 (R7:4, P5:3) = [SP++];
67 RTS;
68
69.LIDENTS:
70 /* Test for common identities. Value to be returned is
71 ** placed in R6,R7.
72 */
73 // Check for 0/y, return 0
74 R4 = R0 | R1;
75 CC = R4 == 0;
76 IF CC JUMP .LRETURN_R0;
77
78 // Check for x/x, return 1
79 R6 = R0 - R2; // If x == y, then both R6 and R7 will be zero
80 R7 = R1 - R3;
81 R4 = R6 | R7; // making R4 zero.
82 R6 += 1; // which would now make R6:R7==1.
83 CC = R4 == 0;
84 IF CC JUMP .LRETURN_IDENT;
85
86 // Check for x/1, return x
87 R6 = R0;
88 R7 = R1;
89 CC = R3 == 0;
90 IF !CC JUMP .Lnexttest;
91 CC = R2 == 1;
92 IF CC JUMP .LRETURN_IDENT;
93
94.Lnexttest:
95 R4.L = ONES R2; // check for div by power of two which
96 R5.L = ONES R3; // can be done using a shift
97 R6 = PACK (R5.L, R4.L);
98 CC = R6 == 1;
99 IF CC JUMP .Lpower_of_two_upper_zero;
100 R6 = PACK (R4.L, R5.L);
101 CC = R6 == 1;
102 IF CC JUMP .Lpower_of_two_lower_zero;
103
104 // Check for x < y, return 0
105 R6 = 0;
106 R7 = R6;
107 CC = R1 < R3 (IU);
108 IF CC JUMP .LRETURN_IDENT;
109 CC = R1 == R3;
110 IF !CC JUMP .Lno_idents;
111 CC = R0 < R2 (IU);
112 IF CC JUMP .LRETURN_IDENT;
113
114.Lno_idents: // Idents don't match. Go for the full operation
115
116
117 // If X, or X and Y have high bit set, it'll affect the
118 // results, so shift right one to stop this. Note: we've already
119 // checked that X >= Y, so Y's msb won't be set unless X's
120 // is.
121
122 R4 = 0;
123 CC = R1 < 0;
124 IF !CC JUMP .Lx_msb_clear;
125 CC = !CC; // 1 -> 0;
126 R1 = ROT R1 BY -1; // Shift X >> 1
127 R0 = ROT R0 BY -1; // lsb -> CC
128 BITSET(R4,31); // to record only x msb was set
129 CC = R3 < 0;
130 IF !CC JUMP .Ly_msb_clear;
131 CC = !CC;
132 R3 = ROT R3 BY -1; // Shift Y >> 1
133 R2 = ROT R2 BY -1;
134 BITCLR(R4,31); // clear bit to record only x msb was set
135
136.Ly_msb_clear:
137.Lx_msb_clear:
138 // Bit 31 in R4 indicates X msb set, but Y msb wasn't, and no bits
139 // were lost, so we should shift result left by one.
140
141 [--SP] = R4; // save for later
142
143 // In the loop that follows, each iteration we add
144 // either Y' or -Y' to the Remainder. We compute the
145 // negated Y', and store, for convenience. Y' goes
146 // into P0:P1, while -Y' goes into P2:P3.
147
148 P0 = R2;
149 P1 = R3;
150 R2 = -R2;
151 CC = CARRY;
152 CC = !CC;
153 R4 = CC;
154 R3 = -R3;
155 R3 = R3 - R4;
156
157 R6 = 0; // remainder = 0
158 R7 = R6;
159
160 [--SP] = R2; P2 = SP;
161 [--SP] = R3; P3 = SP;
162 [--SP] = R6; P5 = SP; // AQ = 0
163 [--SP] = P1;
164
165 /* In the loop that follows, we use the following
166 ** register assignments:
167 ** R0,R1 X, workspace
168 ** R2,R3 Y, workspace
169 ** R4,R5 partial Div
170 ** R6,R7 partial remainder
171 ** P5 AQ
172 ** The remainder and div form a 128-bit number, with
173 ** the remainder in the high 64-bits.
174 */
175 R4 = R0; // Div = X'
176 R5 = R1;
177 R3 = 0;
178
179 P4 = 64; // Iterate once per bit
180 LSETUP(.LULST,.LULEND) LC0 = P4;
181.LULST:
182 /* Shift Div and remainder up by one. The bit shifted
183 ** out of the top of the quotient is shifted into the bottom
184 ** of the remainder.
185 */
186 CC = R3;
187 R4 = ROT R4 BY 1;
188 R5 = ROT R5 BY 1 || // low q to high q
189 R2 = [P5]; // load saved AQ
190 R6 = ROT R6 BY 1 || // high q to low r
191 R0 = [P2]; // load -Y'
192 R7 = ROT R7 BY 1 || // low r to high r
193 R1 = [P3];
194
195 // Assume add -Y'
196 CC = R2 < 0; // But if AQ is set...
197 IF CC R0 = P0; // then add Y' instead
198 IF CC R1 = P1;
199
200 R6 = R6 + R0; // Rem += (Y' or -Y')
201 CC = CARRY;
202 R0 = CC;
203 R7 = R7 + R1;
204 R7 = R7 + R0 (NS) ||
205 R1 = [SP];
206 // Set the next AQ bit
207 R1 = R7 ^ R1; // from Remainder and Y'
208 R1 = R1 >> 31 || // Negate AQ's value, and
209 [P5] = R1; // save next AQ
210 BITTGL(R1, 0); // add neg AQ to the Div
211.LULEND: R4 = R4 + R1;
212
213 R6 = [SP + 16];
214
215 R0 = R4;
216 R1 = R5;
217 CC = BITTST(R6,30); // Just set CC=0
218 R4 = ROT R0 BY 1; // but if we had to shift X,
219 R5 = ROT R1 BY 1; // and didn't shift any bits out,
220 CC = BITTST(R6,31); // then the result will be half as
221 IF CC R0 = R4; // much as required, so shift left
222 IF CC R1 = R5; // one space.
223
224 SP += 20;
225 (R7:4, P5:3) = [SP++];
226 RTS;
227
228.Lpower_of_two:
229 /* Y has a single bit set, which means it's a power of two.
230 ** That means we can perform the division just by shifting
231 ** X to the right the appropriate number of bits
232 */
233
234 /* signbits returns the number of sign bits, minus one.
235 ** 1=>30, 2=>29, ..., 0x40000000=>0. Which means we need
236 ** to shift right n-signbits spaces. It also means 0x80000000
237 ** is a special case, because that *also* gives a signbits of 0
238 */
239.Lpower_of_two_lower_zero:
240 R7 = 0;
241 R6 = R1 >> 31;
242 CC = R3 < 0;
243 IF CC JUMP .LRETURN_IDENT;
244
245 R2.L = SIGNBITS R3;
246 R2 = R2.L (Z);
247 R2 += -62;
248 (R7:4, P5:3) = [SP++];
249 JUMP ___lshftli;
250
251.Lpower_of_two_upper_zero:
252 CC = R2 < 0;
253 IF CC JUMP .Lmaxint_shift;
254
255 R2.L = SIGNBITS R2;
256 R2 = R2.L (Z);
257 R2 += -30;
258 (R7:4, P5:3) = [SP++];
259 JUMP ___lshftli;
260
261.Lmaxint_shift:
262 R2 = -31;
263 (R7:4, P5:3) = [SP++];
264 JUMP ___lshftli;
265
266.LRETURN_IDENT:
267 R0 = R6;
268 R1 = R7;
269.LRETURN_R0:
270 (R7:4, P5:3) = [SP++];
271 RTS;
272.LDIV_BY_ZERO:
273 R0 = ~R2;
274 R1 = R0;
275 (R7:4, P5:3) = [SP++];
276 RTS;
277
278ENDPROC(___udivdi3)
279
280
281ENTRY(___lshftli)
282 CC = R2 == 0;
283 IF CC JUMP .Lfinished; // nothing to do
284 CC = R2 < 0;
285 IF CC JUMP .Lrshift;
286 R3 = 64;
287 CC = R2 < R3;
288 IF !CC JUMP .Lretzero;
289
290 // We're shifting left, and it's less than 64 bits, so
291 // a valid result will be returned.
292
293 R3 >>= 1; // R3 now 32
294 CC = R2 < R3;
295
296 IF !CC JUMP .Lzerohalf;
297
298 // We're shifting left, between 1 and 31 bits, which means
299 // some of the low half will be shifted into the high half.
300 // Work out how much.
301
302 R3 = R3 - R2;
303
304 // Save that much data from the bottom half.
305
306 P1 = R7;
307 R7 = R0;
308 R7 >>= R3;
309
310 // Adjust both parts of the parameter.
311
312 R0 <<= R2;
313 R1 <<= R2;
314
315 // And include the bits moved across.
316
317 R1 = R1 | R7;
318 R7 = P1;
319 RTS;
320
321.Lzerohalf:
322 // We're shifting left, between 32 and 63 bits, so the
323 // bottom half will become zero, and the top half will
324 // lose some bits. How many?
325
326 R2 = R2 - R3; // N - 32
327 R1 = LSHIFT R0 BY R2.L;
328 R0 = R0 - R0;
329 RTS;
330
331.Lretzero:
332 R0 = R0 - R0;
333 R1 = R0;
334.Lfinished:
335 RTS;
336
337.Lrshift:
338 // We're shifting right, but by how much?
339 R2 = -R2;
340 R3 = 64;
341 CC = R2 < R3;
342 IF !CC JUMP .Lretzero;
343
344 // Shifting right less than 64 bits, so some result bits will
345 // be retained.
346
347 R3 >>= 1; // R3 now 32
348 CC = R2 < R3;
349 IF !CC JUMP .Lsignhalf;
350
351 // Shifting right between 1 and 31 bits, so need to copy
352 // data across words.
353
354 P1 = R7;
355 R3 = R3 - R2;
356 R7 = R1;
357 R7 <<= R3;
358 R1 >>= R2;
359 R0 >>= R2;
360 R0 = R7 | R0;
361 R7 = P1;
362 RTS;
363
364.Lsignhalf:
365 // Shifting right between 32 and 63 bits, so the top half
366 // will become all zero-bits, and the bottom half is some
367 // of the top half. But how much?
368
369 R2 = R2 - R3;
370 R0 = R1;
371 R0 >>= R2;
372 R1 = 0;
373 RTS;
374
375ENDPROC(___lshftli)
diff --git a/arch/blackfin/mach-bf527/Kconfig b/arch/blackfin/mach-bf527/Kconfig
new file mode 100644
index 000000000000..50321f723dee
--- /dev/null
+++ b/arch/blackfin/mach-bf527/Kconfig
@@ -0,0 +1,251 @@
1if (BF52x)
2
3menu "BF527 Specific Configuration"
4
5comment "Alternative Multiplexing Scheme"
6
7choice
8 prompt "SPORT0"
9 default BF527_SPORT0_PORTG
10 help
11 Select PORT used for SPORT0. See Hardware Reference Manual
12
13config BF527_SPORT0_PORTF
14 bool "PORT F"
15 help
16 PORT F
17
18config BF527_SPORT0_PORTG
19 bool "PORT G"
20 help
21 PORT G
22endchoice
23
24choice
25 prompt "SPORT0 TSCLK Location"
26 depends on BF527_SPORT0_PORTG
27 default BF527_SPORT0_TSCLK_PG10
28 help
29 Select PIN used for SPORT0_TSCLK. See Hardware Reference Manual
30
31config BF527_SPORT0_TSCLK_PG10
32 bool "PORT PG10"
33 help
34 PORT PG10
35
36config BF527_SPORT0_TSCLK_PG14
37 bool "PORT PG14"
38 help
39 PORT PG14
40endchoice
41
42choice
43 prompt "UART1"
44 default BF527_UART1_PORTG
45 help
46 Select PORT used for UART1. See Hardware Reference Manual
47
48config BF527_UART1_PORTF
49 bool "PORT F"
50 help
51 PORT F
52
53config BF527_UART1_PORTG
54 bool "PORT G"
55 help
56 PORT G
57endchoice
58
59choice
60 prompt "NAND (NFC) Data"
61 default BF527_NAND_D_PORTH
62 help
63 Select PORT used for NAND Data Bus. See Hardware Reference Manual
64
65config BF527_NAND_D_PORTF
66 bool "PORT F"
67 help
68 PORT F
69
70config BF527_NAND_D_PORTH
71 bool "PORT H"
72 help
73 PORT H
74endchoice
75
76comment "Interrupt Priority Assignment"
77menu "Priority"
78
79config IRQ_PLL_WAKEUP
80 int "IRQ_PLL_WAKEUP"
81 default 7
82config IRQ_DMA0_ERROR
83 int "IRQ_DMA0_ERROR"
84 default 7
85config IRQ_DMAR0_BLK
86 int "IRQ_DMAR0_BLK"
87 default 7
88config IRQ_DMAR1_BLK
89 int "IRQ_DMAR1_BLK"
90 default 7
91config IRQ_DMAR0_OVR
92 int "IRQ_DMAR0_OVR"
93 default 7
94config IRQ_DMAR1_OVR
95 int "IRQ_DMAR1_OVR"
96 default 7
97config IRQ_PPI_ERROR
98 int "IRQ_PPI_ERROR"
99 default 7
100config IRQ_MAC_ERROR
101 int "IRQ_MAC_ERROR"
102 default 7
103config IRQ_SPORT0_ERROR
104 int "IRQ_SPORT0_ERROR"
105 default 7
106config IRQ_SPORT1_ERROR
107 int "IRQ_SPORT1_ERROR"
108 default 7
109config IRQ_UART0_ERROR
110 int "IRQ_UART0_ERROR"
111 default 7
112config IRQ_UART1_ERROR
113 int "IRQ_UART1_ERROR"
114 default 7
115config IRQ_RTC
116 int "IRQ_RTC"
117 default 8
118config IRQ_PPI
119 int "IRQ_PPI"
120 default 8
121config IRQ_SPORT0_RX
122 int "IRQ_SPORT0_RX"
123 default 9
124config IRQ_SPORT0_TX
125 int "IRQ_SPORT0_TX"
126 default 9
127config IRQ_SPORT1_RX
128 int "IRQ_SPORT1_RX"
129 default 9
130config IRQ_SPORT1_TX
131 int "IRQ_SPORT1_TX"
132 default 9
133config IRQ_TWI
134 int "IRQ_TWI"
135 default 10
136config IRQ_SPI
137 int "IRQ_SPI"
138 default 10
139config IRQ_UART0_RX
140 int "IRQ_UART0_RX"
141 default 10
142config IRQ_UART0_TX
143 int "IRQ_UART0_TX"
144 default 10
145config IRQ_UART1_RX
146 int "IRQ_UART1_RX"
147 default 10
148config IRQ_UART1_TX
149 int "IRQ_UART1_TX"
150 default 10
151config IRQ_OPTSEC
152 int "IRQ_OPTSEC"
153 default 11
154config IRQ_CNT
155 int "IRQ_CNT"
156 default 11
157config IRQ_MAC_RX
158 int "IRQ_MAC_RX"
159 default 11
160config IRQ_PORTH_INTA
161 int "IRQ_PORTH_INTA"
162 default 11
163config IRQ_MAC_TX
164 int "IRQ_MAC_TX/NFC"
165 default 11
166config IRQ_PORTH_INTB
167 int "IRQ_PORTH_INTB"
168 default 11
169config IRQ_TMR0
170 int "IRQ_TMR0"
171 default 12
172config IRQ_TMR1
173 int "IRQ_TMR1"
174 default 12
175config IRQ_TMR2
176 int "IRQ_TMR2"
177 default 12
178config IRQ_TMR3
179 int "IRQ_TMR3"
180 default 12
181config IRQ_TMR4
182 int "IRQ_TMR4"
183 default 12
184config IRQ_TMR5
185 int "IRQ_TMR5"
186 default 12
187config IRQ_TMR6
188 int "IRQ_TMR6"
189 default 12
190config IRQ_TMR7
191 int "IRQ_TMR7"
192 default 12
193config IRQ_PORTG_INTA
194 int "IRQ_PORTG_INTA"
195 default 12
196config IRQ_PORTG_INTB
197 int "IRQ_PORTG_INTB"
198 default 12
199config IRQ_MEM_DMA0
200 int "IRQ_MEM_DMA0"
201 default 13
202config IRQ_MEM_DMA1
203 int "IRQ_MEM_DMA1"
204 default 13
205config IRQ_WATCH
206 int "IRQ_WATCH"
207 default 13
208config IRQ_PORTF_INTA
209 int "IRQ_PORTF_INTA"
210 default 13
211config IRQ_PORTF_INTB
212 int "IRQ_PORTF_INTB"
213 default 13
214config IRQ_SPI_ERROR
215 int "IRQ_SPI_ERROR"
216 default 7
217config IRQ_NFC_ERROR
218 int "IRQ_NFC_ERROR"
219 default 7
220config IRQ_HDMA_ERROR
221 int "IRQ_HDMA_ERROR"
222 default 7
223config IRQ_HDMA
224 int "IRQ_HDMA"
225 default 7
226config IRQ_USB_EINT
227 int "IRQ_USB_EINT"
228 default 10
229config IRQ_USB_INT0
230 int "IRQ_USB_INT0"
231 default 10
232config IRQ_USB_INT1
233 int "IRQ_USB_INT1"
234 default 10
235config IRQ_USB_INT2
236 int "IRQ_USB_INT2"
237 default 10
238config IRQ_USB_DMA
239 int "IRQ_USB_DMA"
240 default 10
241
242 help
243 Enter the priority numbers between 7-13 ONLY. Others are Reserved.
244 This applies to all the above. It is not recommended to assign the
245 highest priority number 7 to UART or any other device.
246
247endmenu
248
249endmenu
250
251endif
diff --git a/arch/blackfin/mach-bf527/Makefile b/arch/blackfin/mach-bf527/Makefile
new file mode 100644
index 000000000000..9f99f5d0bcd1
--- /dev/null
+++ b/arch/blackfin/mach-bf527/Makefile
@@ -0,0 +1,9 @@
1#
2# arch/blackfin/mach-bf527/Makefile
3#
4
5extra-y := head.o
6
7obj-y := ints-priority.o dma.o
8
9obj-$(CONFIG_CPU_FREQ) += cpu.o
diff --git a/arch/blackfin/mach-bf527/boards/Makefile b/arch/blackfin/mach-bf527/boards/Makefile
new file mode 100644
index 000000000000..912ac8ebc889
--- /dev/null
+++ b/arch/blackfin/mach-bf527/boards/Makefile
@@ -0,0 +1,7 @@
1#
2# arch/blackfin/mach-bf532/boards/Makefile
3#
4
5obj-y += eth_mac.o
6obj-$(CONFIG_BFIN527_EZKIT) += ezkit.o
7
diff --git a/arch/blackfin/mach-bf527/boards/eth_mac.c b/arch/blackfin/mach-bf527/boards/eth_mac.c
new file mode 100644
index 000000000000..a725cc8a9290
--- /dev/null
+++ b/arch/blackfin/mach-bf527/boards/eth_mac.c
@@ -0,0 +1,50 @@
1/*
2 * arch/blackfin/mach-bf537/board/eth_mac.c
3 *
4 * Copyright (C) 2007 Analog Devices, Inc.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20#include <linux/module.h>
21#include <asm/blackfin.h>
22
23#if defined(CONFIG_GENERIC_BOARD) || defined(CONFIG_BFIN537_STAMP)
24
25/*
26 * Currently the MAC address is saved in Flash by U-Boot
27 */
28#define FLASH_MAC 0x203f0000
29
30void get_bf537_ether_addr(char *addr)
31{
32 unsigned int flash_mac = (unsigned int) FLASH_MAC;
33 *(u32 *)(&(addr[0])) = bfin_read32(flash_mac);
34 flash_mac += 4;
35 *(u16 *)(&(addr[4])) = bfin_read16(flash_mac);
36}
37
38#else
39
40/*
41 * Provide MAC address function for other specific board setting
42 */
43void get_bf537_ether_addr(char *addr)
44{
45 printk(KERN_WARNING "%s: No valid Ethernet MAC address found\n", __FILE__);
46}
47
48#endif
49
50EXPORT_SYMBOL(get_bf537_ether_addr);
diff --git a/arch/blackfin/mach-bf527/boards/ezkit.c b/arch/blackfin/mach-bf527/boards/ezkit.c
new file mode 100644
index 000000000000..3e884f3a8182
--- /dev/null
+++ b/arch/blackfin/mach-bf527/boards/ezkit.c
@@ -0,0 +1,737 @@
1/*
2 * File: arch/blackfin/mach-bf527/boards/ezkit.c
3 * Based on: arch/blackfin/mach-bf537/boards/stamp.c
4 * Author: Aidan Williams <aidan@nicta.com.au>
5 *
6 * Created:
7 * Description:
8 *
9 * Modified:
10 * Copyright 2005 National ICT Australia (NICTA)
11 * Copyright 2004-2007 Analog Devices Inc.
12 *
13 * Bugs: Enter bugs at http://blackfin.uclinux.org/
14 *
15 * This program is free software; you can redistribute it and/or modify
16 * it under the terms of the GNU General Public License as published by
17 * the Free Software Foundation; either version 2 of the License, or
18 * (at your option) any later version.
19 *
20 * This program is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
24 *
25 * You should have received a copy of the GNU General Public License
26 * along with this program; if not, see the file COPYING, or write
27 * to the Free Software Foundation, Inc.,
28 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
29 */
30
31#include <linux/device.h>
32#include <linux/platform_device.h>
33#include <linux/mtd/mtd.h>
34#include <linux/mtd/partitions.h>
35#include <linux/spi/spi.h>
36#include <linux/spi/flash.h>
37#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
38#include <linux/usb_isp1362.h>
39#endif
40#include <linux/pata_platform.h>
41#include <linux/irq.h>
42#include <linux/interrupt.h>
43#include <linux/usb_sl811.h>
44#include <asm/dma.h>
45#include <asm/bfin5xx_spi.h>
46#include <asm/reboot.h>
47#include <linux/spi/ad7877.h>
48
49/*
50 * Name the Board for the /proc/cpuinfo
51 */
52const char bfin_board_name[] = "ADDS-BF527-EZKIT";
53
54/*
55 * Driver needs to know address, irq and flag pin.
56 */
57
58#define ISP1761_BASE 0x203C0000
59#define ISP1761_IRQ IRQ_PF7
60
61#if defined(CONFIG_USB_ISP1760_HCD) || defined(CONFIG_USB_ISP1760_HCD_MODULE)
62static struct resource bfin_isp1761_resources[] = {
63 [0] = {
64 .name = "isp1761-regs",
65 .start = ISP1761_BASE + 0x00000000,
66 .end = ISP1761_BASE + 0x000fffff,
67 .flags = IORESOURCE_MEM,
68 },
69 [1] = {
70 .start = ISP1761_IRQ,
71 .end = ISP1761_IRQ,
72 .flags = IORESOURCE_IRQ,
73 },
74};
75
76static struct platform_device bfin_isp1761_device = {
77 .name = "isp1761",
78 .id = 0,
79 .num_resources = ARRAY_SIZE(bfin_isp1761_resources),
80 .resource = bfin_isp1761_resources,
81};
82
83static struct platform_device *bfin_isp1761_devices[] = {
84 &bfin_isp1761_device,
85};
86
87int __init bfin_isp1761_init(void)
88{
89 unsigned int num_devices = ARRAY_SIZE(bfin_isp1761_devices);
90
91 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__);
92 set_irq_type(ISP1761_IRQ, IRQF_TRIGGER_FALLING);
93
94 return platform_add_devices(bfin_isp1761_devices, num_devices);
95}
96
97void __exit bfin_isp1761_exit(void)
98{
99 platform_device_unregister(&bfin_isp1761_device);
100}
101
102arch_initcall(bfin_isp1761_init);
103#endif
104
105#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
106static struct resource bfin_pcmcia_cf_resources[] = {
107 {
108 .start = 0x20310000, /* IO PORT */
109 .end = 0x20312000,
110 .flags = IORESOURCE_MEM,
111 }, {
112 .start = 0x20311000, /* Attribute Memory */
113 .end = 0x20311FFF,
114 .flags = IORESOURCE_MEM,
115 }, {
116 .start = IRQ_PF4,
117 .end = IRQ_PF4,
118 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
119 }, {
120 .start = 6, /* Card Detect PF6 */
121 .end = 6,
122 .flags = IORESOURCE_IRQ,
123 },
124};
125
126static struct platform_device bfin_pcmcia_cf_device = {
127 .name = "bfin_cf_pcmcia",
128 .id = -1,
129 .num_resources = ARRAY_SIZE(bfin_pcmcia_cf_resources),
130 .resource = bfin_pcmcia_cf_resources,
131};
132#endif
133
134#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
135static struct platform_device rtc_device = {
136 .name = "rtc-bfin",
137 .id = -1,
138};
139#endif
140
141#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
142static struct resource smc91x_resources[] = {
143 {
144 .name = "smc91x-regs",
145 .start = 0x20300300,
146 .end = 0x20300300 + 16,
147 .flags = IORESOURCE_MEM,
148 }, {
149
150 .start = IRQ_PF7,
151 .end = IRQ_PF7,
152 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
153 },
154};
155static struct platform_device smc91x_device = {
156 .name = "smc91x",
157 .id = 0,
158 .num_resources = ARRAY_SIZE(smc91x_resources),
159 .resource = smc91x_resources,
160};
161#endif
162
163#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
164static struct resource dm9000_resources[] = {
165 [0] = {
166 .start = 0x203FB800,
167 .end = 0x203FB800 + 8,
168 .flags = IORESOURCE_MEM,
169 },
170 [1] = {
171 .start = IRQ_PF9,
172 .end = IRQ_PF9,
173 .flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE),
174 },
175};
176
177static struct platform_device dm9000_device = {
178 .name = "dm9000",
179 .id = -1,
180 .num_resources = ARRAY_SIZE(dm9000_resources),
181 .resource = dm9000_resources,
182};
183#endif
184
185#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
186static struct resource sl811_hcd_resources[] = {
187 {
188 .start = 0x20340000,
189 .end = 0x20340000,
190 .flags = IORESOURCE_MEM,
191 }, {
192 .start = 0x20340004,
193 .end = 0x20340004,
194 .flags = IORESOURCE_MEM,
195 }, {
196 .start = CONFIG_USB_SL811_BFIN_IRQ,
197 .end = CONFIG_USB_SL811_BFIN_IRQ,
198 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
199 },
200};
201
202#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
203void sl811_port_power(struct device *dev, int is_on)
204{
205 gpio_request(CONFIG_USB_SL811_BFIN_GPIO_VBUS, "usb:SL811_VBUS");
206 gpio_direction_output(CONFIG_USB_SL811_BFIN_GPIO_VBUS);
207
208 if (is_on)
209 gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 1);
210 else
211 gpio_set_value(CONFIG_USB_SL811_BFIN_GPIO_VBUS, 0);
212}
213#endif
214
215static struct sl811_platform_data sl811_priv = {
216 .potpg = 10,
217 .power = 250, /* == 500mA */
218#if defined(CONFIG_USB_SL811_BFIN_USE_VBUS)
219 .port_power = &sl811_port_power,
220#endif
221};
222
223static struct platform_device sl811_hcd_device = {
224 .name = "sl811-hcd",
225 .id = 0,
226 .dev = {
227 .platform_data = &sl811_priv,
228 },
229 .num_resources = ARRAY_SIZE(sl811_hcd_resources),
230 .resource = sl811_hcd_resources,
231};
232#endif
233
234#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
235static struct resource isp1362_hcd_resources[] = {
236 {
237 .start = 0x20360000,
238 .end = 0x20360000,
239 .flags = IORESOURCE_MEM,
240 }, {
241 .start = 0x20360004,
242 .end = 0x20360004,
243 .flags = IORESOURCE_MEM,
244 }, {
245 .start = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ,
246 .end = CONFIG_USB_ISP1362_BFIN_GPIO_IRQ,
247 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
248 },
249};
250
251static struct isp1362_platform_data isp1362_priv = {
252 .sel15Kres = 1,
253 .clknotstop = 0,
254 .oc_enable = 0,
255 .int_act_high = 0,
256 .int_edge_triggered = 0,
257 .remote_wakeup_connected = 0,
258 .no_power_switching = 1,
259 .power_switching_mode = 0,
260};
261
262static struct platform_device isp1362_hcd_device = {
263 .name = "isp1362-hcd",
264 .id = 0,
265 .dev = {
266 .platform_data = &isp1362_priv,
267 },
268 .num_resources = ARRAY_SIZE(isp1362_hcd_resources),
269 .resource = isp1362_hcd_resources,
270};
271#endif
272
273#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
274static struct platform_device bfin_mac_device = {
275 .name = "bfin_mac",
276};
277#endif
278
279#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
280static struct resource net2272_bfin_resources[] = {
281 {
282 .start = 0x20300000,
283 .end = 0x20300000 + 0x100,
284 .flags = IORESOURCE_MEM,
285 }, {
286 .start = IRQ_PF7,
287 .end = IRQ_PF7,
288 .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
289 },
290};
291
292static struct platform_device net2272_bfin_device = {
293 .name = "net2272",
294 .id = -1,
295 .num_resources = ARRAY_SIZE(net2272_bfin_resources),
296 .resource = net2272_bfin_resources,
297};
298#endif
299
300#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
301/* all SPI peripherals info goes here */
302
303#if defined(CONFIG_MTD_M25P80) \
304 || defined(CONFIG_MTD_M25P80_MODULE)
305static struct mtd_partition bfin_spi_flash_partitions[] = {
306 {
307 .name = "bootloader",
308 .size = 0x00020000,
309 .offset = 0,
310 .mask_flags = MTD_CAP_ROM
311 }, {
312 .name = "kernel",
313 .size = 0xe0000,
314 .offset = 0x20000
315 }, {
316 .name = "file system",
317 .size = 0x700000,
318 .offset = 0x00100000,
319 }
320};
321
322static struct flash_platform_data bfin_spi_flash_data = {
323 .name = "m25p80",
324 .parts = bfin_spi_flash_partitions,
325 .nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
326 .type = "m25p64",
327};
328
329/* SPI flash chip (m25p64) */
330static struct bfin5xx_spi_chip spi_flash_chip_info = {
331 .enable_dma = 0, /* use dma transfer with this chip*/
332 .bits_per_word = 8,
333};
334#endif
335
336#if defined(CONFIG_SPI_ADC_BF533) \
337 || defined(CONFIG_SPI_ADC_BF533_MODULE)
338/* SPI ADC chip */
339static struct bfin5xx_spi_chip spi_adc_chip_info = {
340 .enable_dma = 1, /* use dma transfer with this chip*/
341 .bits_per_word = 16,
342};
343#endif
344
345#if defined(CONFIG_SND_BLACKFIN_AD1836) \
346 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
347static struct bfin5xx_spi_chip ad1836_spi_chip_info = {
348 .enable_dma = 0,
349 .bits_per_word = 16,
350};
351#endif
352
353#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
354static struct bfin5xx_spi_chip ad9960_spi_chip_info = {
355 .enable_dma = 0,
356 .bits_per_word = 16,
357};
358#endif
359
360#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
361static struct bfin5xx_spi_chip spi_mmc_chip_info = {
362 .enable_dma = 1,
363 .bits_per_word = 8,
364};
365#endif
366
367#if defined(CONFIG_PBX)
368static struct bfin5xx_spi_chip spi_si3xxx_chip_info = {
369 .ctl_reg = 0x4, /* send zero */
370 .enable_dma = 0,
371 .bits_per_word = 8,
372 .cs_change_per_word = 1,
373};
374#endif
375
376#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
377static struct bfin5xx_spi_chip ad5304_chip_info = {
378 .enable_dma = 0,
379 .bits_per_word = 16,
380};
381#endif
382
383#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
384static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
385 .enable_dma = 0,
386 .bits_per_word = 16,
387};
388
389static const struct ad7877_platform_data bfin_ad7877_ts_info = {
390 .model = 7877,
391 .vref_delay_usecs = 50, /* internal, no capacitor */
392 .x_plate_ohms = 419,
393 .y_plate_ohms = 486,
394 .pressure_max = 1000,
395 .pressure_min = 0,
396 .stopacq_polarity = 1,
397 .first_conversion_delay = 3,
398 .acquisition_time = 1,
399 .averaging = 1,
400 .pen_down_acc_interval = 1,
401};
402#endif
403
404static struct spi_board_info bfin_spi_board_info[] __initdata = {
405#if defined(CONFIG_MTD_M25P80) \
406 || defined(CONFIG_MTD_M25P80_MODULE)
407 {
408 /* the modalias must be the same as spi device driver name */
409 .modalias = "m25p80", /* Name of spi_driver for this device */
410 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
411 .bus_num = 0, /* Framework bus number */
412 .chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
413 .platform_data = &bfin_spi_flash_data,
414 .controller_data = &spi_flash_chip_info,
415 .mode = SPI_MODE_3,
416 },
417#endif
418
419#if defined(CONFIG_SPI_ADC_BF533) \
420 || defined(CONFIG_SPI_ADC_BF533_MODULE)
421 {
422 .modalias = "bfin_spi_adc", /* Name of spi_driver for this device */
423 .max_speed_hz = 6250000, /* max spi clock (SCK) speed in HZ */
424 .bus_num = 0, /* Framework bus number */
425 .chip_select = 1, /* Framework chip select. */
426 .platform_data = NULL, /* No spi_driver specific config */
427 .controller_data = &spi_adc_chip_info,
428 },
429#endif
430
431#if defined(CONFIG_SND_BLACKFIN_AD1836) \
432 || defined(CONFIG_SND_BLACKFIN_AD1836_MODULE)
433 {
434 .modalias = "ad1836-spi",
435 .max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
436 .bus_num = 0,
437 .chip_select = CONFIG_SND_BLACKFIN_SPI_PFBIT,
438 .controller_data = &ad1836_spi_chip_info,
439 },
440#endif
441#if defined(CONFIG_AD9960) || defined(CONFIG_AD9960_MODULE)
442 {
443 .modalias = "ad9960-spi",
444 .max_speed_hz = 10000000, /* max spi clock (SCK) speed in HZ */
445 .bus_num = 0,
446 .chip_select = 1,
447 .controller_data = &ad9960_spi_chip_info,
448 },
449#endif
450#if defined(CONFIG_SPI_MMC) || defined(CONFIG_SPI_MMC_MODULE)
451 {
452 .modalias = "spi_mmc_dummy",
453 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
454 .bus_num = 0,
455 .chip_select = 0,
456 .platform_data = NULL,
457 .controller_data = &spi_mmc_chip_info,
458 .mode = SPI_MODE_3,
459 },
460 {
461 .modalias = "spi_mmc",
462 .max_speed_hz = 25000000, /* max spi clock (SCK) speed in HZ */
463 .bus_num = 0,
464 .chip_select = CONFIG_SPI_MMC_CS_CHAN,
465 .platform_data = NULL,
466 .controller_data = &spi_mmc_chip_info,
467 .mode = SPI_MODE_3,
468 },
469#endif
470#if defined(CONFIG_PBX)
471 {
472 .modalias = "fxs-spi",
473 .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
474 .bus_num = 0,
475 .chip_select = 8 - CONFIG_J11_JUMPER,
476 .controller_data = &spi_si3xxx_chip_info,
477 .mode = SPI_MODE_3,
478 },
479 {
480 .modalias = "fxo-spi",
481 .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
482 .bus_num = 0,
483 .chip_select = 8 - CONFIG_J19_JUMPER,
484 .controller_data = &spi_si3xxx_chip_info,
485 .mode = SPI_MODE_3,
486 },
487#endif
488#if defined(CONFIG_AD5304) || defined(CONFIG_AD5304_MODULE)
489 {
490 .modalias = "ad5304_spi",
491 .max_speed_hz = 1250000, /* max spi clock (SCK) speed in HZ */
492 .bus_num = 0,
493 .chip_select = 2,
494 .platform_data = NULL,
495 .controller_data = &ad5304_chip_info,
496 .mode = SPI_MODE_2,
497 },
498#endif
499#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
500 {
501 .modalias = "ad7877",
502 .platform_data = &bfin_ad7877_ts_info,
503 .irq = IRQ_PF6,
504 .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
505 .bus_num = 1,
506 .chip_select = 1,
507 .controller_data = &spi_ad7877_chip_info,
508 },
509#endif
510};
511
512/* SPI controller data */
513static struct bfin5xx_spi_master bfin_spi0_info = {
514 .num_chipselect = 8,
515 .enable_dma = 1, /* master has the ability to do dma transfer */
516};
517
518/* SPI (0) */
519static struct resource bfin_spi0_resource[] = {
520 [0] = {
521 .start = SPI0_REGBASE,
522 .end = SPI0_REGBASE + 0xFF,
523 .flags = IORESOURCE_MEM,
524 },
525 [1] = {
526 .start = CH_SPI,
527 .end = CH_SPI,
528 .flags = IORESOURCE_IRQ,
529 },
530};
531
532static struct platform_device bfin_spi0_device = {
533 .name = "bfin-spi",
534 .id = 0, /* Bus number */
535 .num_resources = ARRAY_SIZE(bfin_spi0_resource),
536 .resource = bfin_spi0_resource,
537 .dev = {
538 .platform_data = &bfin_spi0_info, /* Passed to driver */
539 },
540};
541#endif /* spi master and devices */
542
543#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
544static struct platform_device bfin_fb_device = {
545 .name = "bf537-lq035",
546};
547#endif
548
549#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
550static struct platform_device bfin_fb_adv7393_device = {
551 .name = "bfin-adv7393",
552};
553#endif
554
555#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
556static struct resource bfin_uart_resources[] = {
557#ifdef CONFIG_SERIAL_BFIN_UART0
558 {
559 .start = 0xFFC00400,
560 .end = 0xFFC004FF,
561 .flags = IORESOURCE_MEM,
562 },
563#endif
564#ifdef CONFIG_SERIAL_BFIN_UART1
565 {
566 .start = 0xFFC02000,
567 .end = 0xFFC020FF,
568 .flags = IORESOURCE_MEM,
569 },
570#endif
571};
572
573static struct platform_device bfin_uart_device = {
574 .name = "bfin-uart",
575 .id = 1,
576 .num_resources = ARRAY_SIZE(bfin_uart_resources),
577 .resource = bfin_uart_resources,
578};
579#endif
580
581#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
582static struct resource bfin_twi0_resource[] = {
583 [0] = {
584 .start = TWI0_REGBASE,
585 .end = TWI0_REGBASE,
586 .flags = IORESOURCE_MEM,
587 },
588 [1] = {
589 .start = IRQ_TWI,
590 .end = IRQ_TWI,
591 .flags = IORESOURCE_IRQ,
592 },
593};
594
595static struct platform_device i2c_bfin_twi_device = {
596 .name = "i2c-bfin-twi",
597 .id = 0,
598 .num_resources = ARRAY_SIZE(bfin_twi0_resource),
599 .resource = bfin_twi0_resource,
600};
601#endif
602
603#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
604static struct platform_device bfin_sport0_uart_device = {
605 .name = "bfin-sport-uart",
606 .id = 0,
607};
608
609static struct platform_device bfin_sport1_uart_device = {
610 .name = "bfin-sport-uart",
611 .id = 1,
612};
613#endif
614
615#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
616#define PATA_INT 55
617
618static struct pata_platform_info bfin_pata_platform_data = {
619 .ioport_shift = 1,
620 .irq_type = IRQF_TRIGGER_HIGH | IRQF_DISABLED,
621};
622
623static struct resource bfin_pata_resources[] = {
624 {
625 .start = 0x20314020,
626 .end = 0x2031403F,
627 .flags = IORESOURCE_MEM,
628 },
629 {
630 .start = 0x2031401C,
631 .end = 0x2031401F,
632 .flags = IORESOURCE_MEM,
633 },
634 {
635 .start = PATA_INT,
636 .end = PATA_INT,
637 .flags = IORESOURCE_IRQ,
638 },
639};
640
641static struct platform_device bfin_pata_device = {
642 .name = "pata_platform",
643 .id = -1,
644 .num_resources = ARRAY_SIZE(bfin_pata_resources),
645 .resource = bfin_pata_resources,
646 .dev = {
647 .platform_data = &bfin_pata_platform_data,
648 }
649};
650#endif
651
652static struct platform_device *stamp_devices[] __initdata = {
653#if defined(CONFIG_BFIN_CFPCMCIA) || defined(CONFIG_BFIN_CFPCMCIA_MODULE)
654 &bfin_pcmcia_cf_device,
655#endif
656
657#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
658 &rtc_device,
659#endif
660
661#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
662 &sl811_hcd_device,
663#endif
664
665#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
666 &isp1362_hcd_device,
667#endif
668
669#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
670 &smc91x_device,
671#endif
672
673#if defined(CONFIG_DM9000) || defined(CONFIG_DM9000_MODULE)
674 &dm9000_device,
675#endif
676
677#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
678 &bfin_mac_device,
679#endif
680
681#if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
682 &net2272_bfin_device,
683#endif
684
685#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
686 &bfin_spi0_device,
687#endif
688
689#if defined(CONFIG_FB_BF537_LQ035) || defined(CONFIG_FB_BF537_LQ035_MODULE)
690 &bfin_fb_device,
691#endif
692
693#if defined(CONFIG_FB_BFIN_7393) || defined(CONFIG_FB_BFIN_7393_MODULE)
694 &bfin_fb_adv7393_device,
695#endif
696
697#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
698 &bfin_uart_device,
699#endif
700
701#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
702 &i2c_bfin_twi_device,
703#endif
704
705#if defined(CONFIG_SERIAL_BFIN_SPORT) || defined(CONFIG_SERIAL_BFIN_SPORT_MODULE)
706 &bfin_sport0_uart_device,
707 &bfin_sport1_uart_device,
708#endif
709
710#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
711 &bfin_pata_device,
712#endif
713};
714
715static int __init stamp_init(void)
716{
717 printk(KERN_INFO "%s(): registering device resources\n", __FUNCTION__);
718 platform_add_devices(stamp_devices, ARRAY_SIZE(stamp_devices));
719#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
720 spi_register_board_info(bfin_spi_board_info,
721 ARRAY_SIZE(bfin_spi_board_info));
722#endif
723
724#if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
725 irq_desc[PATA_INT].status |= IRQ_NOAUTOEN;
726#endif
727 return 0;
728}
729
730arch_initcall(stamp_init);
731
732void native_machine_restart(char *cmd)
733{
734 /* workaround reboot hang when booting from SPI */
735 if ((bfin_read_SYSCR() & 0x7) == 0x3)
736 bfin_gpio_reset_spi0_ssel1();
737}
diff --git a/arch/blackfin/mach-bf527/cpu.c b/arch/blackfin/mach-bf527/cpu.c
new file mode 100644
index 000000000000..1975402b1dbc
--- /dev/null
+++ b/arch/blackfin/mach-bf527/cpu.c
@@ -0,0 +1,161 @@
1/*
2 * File: arch/blackfin/mach-bf527/cpu.c
3 * Based on: arch/blackfin/mach-bf537/cpu.c
4 * Author: michael.kang@analog.com
5 *
6 * Created:
7 * Description: clock scaling for the bf527
8 *
9 * Modified:
10 * Copyright 2004-2007 Analog Devices Inc.
11 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, see the file COPYING, or write
26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29
30#include <linux/kernel.h>
31#include <linux/types.h>
32#include <linux/init.h>
33#include <linux/cpufreq.h>
34#include <asm/dpmc.h>
35#include <linux/fs.h>
36#include <asm/bfin-global.h>
37
38/* CONFIG_CLKIN_HZ=11059200 */
39#define VCO5 (CONFIG_CLKIN_HZ*45) /*497664000 */
40#define VCO4 (CONFIG_CLKIN_HZ*36) /*398131200 */
41#define VCO3 (CONFIG_CLKIN_HZ*27) /*298598400 */
42#define VCO2 (CONFIG_CLKIN_HZ*18) /*199065600 */
43#define VCO1 (CONFIG_CLKIN_HZ*9) /*99532800 */
44#define VCO(x) VCO##x
45
46#define MFREQ(x) {VCO(x), VCO(x)/4}, {VCO(x), VCO(x)/2}, {VCO(x), VCO(x)}
47/* frequency */
48static struct cpufreq_frequency_table bf527_freq_table[] = {
49 MFREQ(1),
50 MFREQ(3),
51 {VCO4, VCO4 / 2}, {VCO4, VCO4},
52 MFREQ(5),
53 {0, CPUFREQ_TABLE_END},
54};
55
56/*
57 * dpmc_fops->ioctl()
58 * static int dpmc_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg)
59 */
60static int bf527_getfreq(unsigned int cpu)
61{
62 unsigned long cclk_mhz;
63
64 /* The driver only support single cpu */
65 if (cpu == 0)
66 dpmc_fops.ioctl(NULL, NULL, IOCTL_GET_CORECLOCK, &cclk_mhz);
67 else
68 cclk_mhz = -1;
69
70 return cclk_mhz;
71}
72
73static int bf527_target(struct cpufreq_policy *policy,
74 unsigned int target_freq, unsigned int relation)
75{
76 unsigned long cclk_mhz;
77 unsigned long vco_mhz;
78 unsigned long flags;
79 unsigned int index;
80 struct cpufreq_freqs freqs;
81
82 if (cpufreq_frequency_table_target
83 (policy, bf527_freq_table, target_freq, relation, &index))
84 return -EINVAL;
85
86 cclk_mhz = bf527_freq_table[index].frequency;
87 vco_mhz = bf527_freq_table[index].index;
88
89 dpmc_fops.ioctl(NULL, NULL, IOCTL_CHANGE_FREQUENCY, &vco_mhz);
90 freqs.old = bf527_getfreq(0);
91 freqs.new = cclk_mhz;
92 freqs.cpu = 0;
93
94 pr_debug
95 ("cclk begin change to cclk %d,vco=%d,index=%d,target=%d,oldfreq=%d\n",
96 cclk_mhz, vco_mhz, index, target_freq, freqs.old);
97
98 cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
99 local_irq_save(flags);
100 dpmc_fops.ioctl(NULL, NULL, IOCTL_SET_CCLK, &cclk_mhz);
101 local_irq_restore(flags);
102 cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
103
104 vco_mhz = get_vco();
105 cclk_mhz = get_cclk();
106 return 0;
107}
108
109/* make sure that only the "userspace" governor is run -- anything else wouldn't make sense on
110 * this platform, anyway.
111 */
112static int bf527_verify_speed(struct cpufreq_policy *policy)
113{
114 return cpufreq_frequency_table_verify(policy, &bf527_freq_table);
115}
116
117static int __init __bf527_cpu_init(struct cpufreq_policy *policy)
118{
119 if (policy->cpu != 0)
120 return -EINVAL;
121
122 policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
123
124 policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL;
125 /*Now ,only support one cpu */
126 policy->cur = bf527_getfreq(0);
127 cpufreq_frequency_table_get_attr(bf527_freq_table, policy->cpu);
128 return cpufreq_frequency_table_cpuinfo(policy, bf527_freq_table);
129}
130
131static struct freq_attr *bf527_freq_attr[] = {
132 &cpufreq_freq_attr_scaling_available_freqs,
133 NULL,
134};
135
136static struct cpufreq_driver bf527_driver = {
137 .verify = bf527_verify_speed,
138 .target = bf527_target,
139 .get = bf527_getfreq,
140 .init = __bf527_cpu_init,
141 .name = "bf527",
142 .owner = THIS_MODULE,
143 .attr = bf527_freq_attr,
144};
145
146static int __init bf527_cpu_init(void)
147{
148 return cpufreq_register_driver(&bf527_driver);
149}
150
151static void __exit bf527_cpu_exit(void)
152{
153 cpufreq_unregister_driver(&bf527_driver);
154}
155
156MODULE_AUTHOR("Mickael Kang");
157MODULE_DESCRIPTION("cpufreq driver for bf527 CPU");
158MODULE_LICENSE("GPL");
159
160module_init(bf527_cpu_init);
161module_exit(bf527_cpu_exit);
diff --git a/arch/blackfin/mach-bf527/dma.c b/arch/blackfin/mach-bf527/dma.c
new file mode 100644
index 000000000000..522de24cc394
--- /dev/null
+++ b/arch/blackfin/mach-bf527/dma.c
@@ -0,0 +1,115 @@
1/*
2 * File: arch/blackfin/mach-bf527/dma.c
3 * Based on:
4 * Author:
5 *
6 * Created:
7 * Description: This file contains the simple DMA Implementation for Blackfin
8 *
9 * Modified:
10 * Copyright 2004-2007 Analog Devices Inc.
11 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, see the file COPYING, or write
26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29#include <asm/blackfin.h>
30#include <asm/dma.h>
31
32struct dma_register *base_addr[MAX_BLACKFIN_DMA_CHANNEL] = {
33 (struct dma_register *) DMA0_NEXT_DESC_PTR,
34 (struct dma_register *) DMA1_NEXT_DESC_PTR,
35 (struct dma_register *) DMA2_NEXT_DESC_PTR,
36 (struct dma_register *) DMA3_NEXT_DESC_PTR,
37 (struct dma_register *) DMA4_NEXT_DESC_PTR,
38 (struct dma_register *) DMA5_NEXT_DESC_PTR,
39 (struct dma_register *) DMA6_NEXT_DESC_PTR,
40 (struct dma_register *) DMA7_NEXT_DESC_PTR,
41 (struct dma_register *) DMA8_NEXT_DESC_PTR,
42 (struct dma_register *) DMA9_NEXT_DESC_PTR,
43 (struct dma_register *) DMA10_NEXT_DESC_PTR,
44 (struct dma_register *) DMA11_NEXT_DESC_PTR,
45 (struct dma_register *) MDMA_D0_NEXT_DESC_PTR,
46 (struct dma_register *) MDMA_S0_NEXT_DESC_PTR,
47 (struct dma_register *) MDMA_D1_NEXT_DESC_PTR,
48 (struct dma_register *) MDMA_S1_NEXT_DESC_PTR,
49};
50
51int channel2irq(unsigned int channel)
52{
53 int ret_irq = -1;
54
55 switch (channel) {
56 case CH_PPI:
57 ret_irq = IRQ_PPI;
58 break;
59
60 case CH_EMAC_RX:
61 ret_irq = IRQ_MAC_RX;
62 break;
63
64 case CH_EMAC_TX:
65 ret_irq = IRQ_MAC_TX;
66 break;
67
68 case CH_UART1_RX:
69 ret_irq = IRQ_UART1_RX;
70 break;
71
72 case CH_UART1_TX:
73 ret_irq = IRQ_UART1_TX;
74 break;
75
76 case CH_SPORT0_RX:
77 ret_irq = IRQ_SPORT0_RX;
78 break;
79
80 case CH_SPORT0_TX:
81 ret_irq = IRQ_SPORT0_TX;
82 break;
83
84 case CH_SPORT1_RX:
85 ret_irq = IRQ_SPORT1_RX;
86 break;
87
88 case CH_SPORT1_TX:
89 ret_irq = IRQ_SPORT1_TX;
90 break;
91
92 case CH_SPI:
93 ret_irq = IRQ_SPI;
94 break;
95
96 case CH_UART0_RX:
97 ret_irq = IRQ_UART0_RX;
98 break;
99
100 case CH_UART0_TX:
101 ret_irq = IRQ_UART0_TX;
102 break;
103
104 case CH_MEM_STREAM0_SRC:
105 case CH_MEM_STREAM0_DEST:
106 ret_irq = IRQ_MEM_DMA0;
107 break;
108
109 case CH_MEM_STREAM1_SRC:
110 case CH_MEM_STREAM1_DEST:
111 ret_irq = IRQ_MEM_DMA1;
112 break;
113 }
114 return ret_irq;
115}
diff --git a/arch/blackfin/mach-bf527/head.S b/arch/blackfin/mach-bf527/head.S
new file mode 100644
index 000000000000..cdb00a084965
--- /dev/null
+++ b/arch/blackfin/mach-bf527/head.S
@@ -0,0 +1,456 @@
1/*
2 * File: arch/blackfin/mach-bf527/head.S
3 * Based on: arch/blackfin/mach-bf533/head.S
4 * Author: Jeff Dionne <jeff@uclinux.org> COPYRIGHT 1998 D. Jeff Dionne
5 *
6 * Created: 1998
7 * Description: Startup code for Blackfin BF537
8 *
9 * Modified:
10 * Copyright 2004-2007 Analog Devices Inc.
11 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, see the file COPYING, or write
26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29
30#include <linux/linkage.h>
31#include <linux/init.h>
32#include <asm/blackfin.h>
33#include <asm/trace.h>
34
35#if CONFIG_BFIN_KERNEL_CLOCK
36#include <asm/mach-common/clocks.h>
37#include <asm/mach/mem_init.h>
38#endif
39
40.global __rambase
41.global __ramstart
42.global __ramend
43.extern ___bss_stop
44.extern ___bss_start
45.extern _bf53x_relocate_l1_mem
46
47#define INITIAL_STACK 0xFFB01000
48
49__INIT
50
51ENTRY(__start)
52 /* R0: argument of command line string, passed from uboot, save it */
53 R7 = R0;
54 /* Enable Cycle Counter and Nesting Of Interrupts */
55#ifdef CONFIG_BFIN_SCRATCH_REG_CYCLES
56 R0 = SYSCFG_SNEN;
57#else
58 R0 = SYSCFG_SNEN | SYSCFG_CCEN;
59#endif
60 SYSCFG = R0;
61 R0 = 0;
62
63 /* Clear Out All the data and pointer Registers */
64 R1 = R0;
65 R2 = R0;
66 R3 = R0;
67 R4 = R0;
68 R5 = R0;
69 R6 = R0;
70
71 P0 = R0;
72 P1 = R0;
73 P2 = R0;
74 P3 = R0;
75 P4 = R0;
76 P5 = R0;
77
78 LC0 = r0;
79 LC1 = r0;
80 L0 = r0;
81 L1 = r0;
82 L2 = r0;
83 L3 = r0;
84
85 /* Clear Out All the DAG Registers */
86 B0 = r0;
87 B1 = r0;
88 B2 = r0;
89 B3 = r0;
90
91 I0 = r0;
92 I1 = r0;
93 I2 = r0;
94 I3 = r0;
95
96 M0 = r0;
97 M1 = r0;
98 M2 = r0;
99 M3 = r0;
100
101 trace_buffer_init(p0,r0);
102 P0 = R1;
103 R0 = R1;
104
105 /* Turn off the icache */
106 p0.l = LO(IMEM_CONTROL);
107 p0.h = HI(IMEM_CONTROL);
108 R1 = [p0];
109 R0 = ~ENICPLB;
110 R0 = R0 & R1;
111
112 /* Anomaly 05000125 */
113#if ANOMALY_05000125
114 CLI R2;
115 SSYNC;
116#endif
117 [p0] = R0;
118 SSYNC;
119#if ANOMALY_05000125
120 STI R2;
121#endif
122
123 /* Turn off the dcache */
124 p0.l = LO(DMEM_CONTROL);
125 p0.h = HI(DMEM_CONTROL);
126 R1 = [p0];
127 R0 = ~ENDCPLB;
128 R0 = R0 & R1;
129
130 /* Anomaly 05000125 */
131#if ANOMALY_05000125
132 CLI R2;
133 SSYNC;
134#endif
135 [p0] = R0;
136 SSYNC;
137#if ANOMALY_05000125
138 STI R2;
139#endif
140
141
142#if defined(CONFIG_BF527)
143 p0.h = hi(EMAC_SYSTAT);
144 p0.l = lo(EMAC_SYSTAT);
145 R0.h = 0xFFFF; /* Clear EMAC Interrupt Status bits */
146 R0.l = 0xFFFF;
147 [P0] = R0;
148 SSYNC;
149#endif
150
151 /* Initialise UART - when booting from u-boot, the UART is not disabled
152 * so if we dont initalize here, our serial console gets hosed */
153 p0.h = hi(UART1_LCR);
154 p0.l = lo(UART1_LCR);
155 r0 = 0x0(Z);
156 w[p0] = r0.L; /* To enable DLL writes */
157 ssync;
158
159 p0.h = hi(UART1_DLL);
160 p0.l = lo(UART1_DLL);
161 r0 = 0x0(Z);
162 w[p0] = r0.L;
163 ssync;
164
165 p0.h = hi(UART1_DLH);
166 p0.l = lo(UART1_DLH);
167 r0 = 0x00(Z);
168 w[p0] = r0.L;
169 ssync;
170
171 p0.h = hi(UART1_GCTL);
172 p0.l = lo(UART1_GCTL);
173 r0 = 0x0(Z);
174 w[p0] = r0.L; /* To enable UART clock */
175 ssync;
176
177 /* Initialize stack pointer */
178 sp.l = lo(INITIAL_STACK);
179 sp.h = hi(INITIAL_STACK);
180 fp = sp;
181 usp = sp;
182
183#ifdef CONFIG_EARLY_PRINTK
184 SP += -12;
185 call _init_early_exception_vectors;
186 SP += 12;
187#endif
188
189 /* Put The Code for PLL Programming and SDRAM Programming in L1 ISRAM */
190 call _bf53x_relocate_l1_mem;
191#if CONFIG_BFIN_KERNEL_CLOCK
192 call _start_dma_code;
193#endif
194
195 /* Code for initializing Async memory banks */
196
197 p2.h = hi(EBIU_AMBCTL1);
198 p2.l = lo(EBIU_AMBCTL1);
199 r0.h = hi(AMBCTL1VAL);
200 r0.l = lo(AMBCTL1VAL);
201 [p2] = r0;
202 ssync;
203
204 p2.h = hi(EBIU_AMBCTL0);
205 p2.l = lo(EBIU_AMBCTL0);
206 r0.h = hi(AMBCTL0VAL);
207 r0.l = lo(AMBCTL0VAL);
208 [p2] = r0;
209 ssync;
210
211 p2.h = hi(EBIU_AMGCTL);
212 p2.l = lo(EBIU_AMGCTL);
213 r0 = AMGCTLVAL;
214 w[p2] = r0;
215 ssync;
216
217 /* This section keeps the processor in supervisor mode
218 * during kernel boot. Switches to user mode at end of boot.
219 * See page 3-9 of Hardware Reference manual for documentation.
220 */
221
222 /* EVT15 = _real_start */
223
224 p0.l = lo(EVT15);
225 p0.h = hi(EVT15);
226 p1.l = _real_start;
227 p1.h = _real_start;
228 [p0] = p1;
229 csync;
230
231 p0.l = lo(IMASK);
232 p0.h = hi(IMASK);
233 p1.l = IMASK_IVG15;
234 p1.h = 0x0;
235 [p0] = p1;
236 csync;
237
238 raise 15;
239 p0.l = .LWAIT_HERE;
240 p0.h = .LWAIT_HERE;
241 reti = p0;
242#if ANOMALY_05000281
243 nop; nop; nop;
244#endif
245 rti;
246
247.LWAIT_HERE:
248 jump .LWAIT_HERE;
249ENDPROC(__start)
250
251ENTRY(_real_start)
252 [ -- sp ] = reti;
253 p0.l = lo(WDOG_CTL);
254 p0.h = hi(WDOG_CTL);
255 r0 = 0xAD6(z);
256 w[p0] = r0; /* watchdog off for now */
257 ssync;
258
259 /* Code update for BSS size == 0
260 * Zero out the bss region.
261 */
262
263 p1.l = ___bss_start;
264 p1.h = ___bss_start;
265 p2.l = ___bss_stop;
266 p2.h = ___bss_stop;
267 r0 = 0;
268 p2 -= p1;
269 lsetup (.L_clear_bss, .L_clear_bss) lc0 = p2;
270.L_clear_bss:
271 B[p1++] = r0;
272
273 /* In case there is a NULL pointer reference
274 * Zero out region before stext
275 */
276
277 p1.l = 0x0;
278 p1.h = 0x0;
279 r0.l = __stext;
280 r0.h = __stext;
281 r0 = r0 >> 1;
282 p2 = r0;
283 r0 = 0;
284 lsetup (.L_clear_zero, .L_clear_zero) lc0 = p2;
285.L_clear_zero:
286 W[p1++] = r0;
287
288 /* pass the uboot arguments to the global value command line */
289 R0 = R7;
290 call _cmdline_init;
291
292 p1.l = __rambase;
293 p1.h = __rambase;
294 r0.l = __sdata;
295 r0.h = __sdata;
296 [p1] = r0;
297
298 p1.l = __ramstart;
299 p1.h = __ramstart;
300 p3.l = ___bss_stop;
301 p3.h = ___bss_stop;
302
303 r1 = p3;
304 [p1] = r1;
305
306 /*
307 * load the current thread pointer and stack
308 */
309 r1.l = _init_thread_union;
310 r1.h = _init_thread_union;
311
312 r2.l = 0x2000;
313 r2.h = 0x0000;
314 r1 = r1 + r2;
315 sp = r1;
316 usp = sp;
317 fp = sp;
318 jump.l _start_kernel;
319ENDPROC(_real_start)
320
321__FINIT
322
323.section .l1.text
324#if CONFIG_BFIN_KERNEL_CLOCK
325ENTRY(_start_dma_code)
326
327 /* Enable PHY CLK buffer output */
328 p0.h = hi(VR_CTL);
329 p0.l = lo(VR_CTL);
330 r0.l = w[p0];
331 bitset(r0, 14);
332 w[p0] = r0.l;
333 ssync;
334
335 p0.h = hi(SIC_IWR0);
336 p0.l = lo(SIC_IWR0);
337 r0.l = 0x1;
338 r0.h = 0x0;
339 [p0] = r0;
340 SSYNC;
341
342 /*
343 * Set PLL_CTL
344 * - [14:09] = MSEL[5:0] : CLKIN / VCO multiplication factors
345 * - [8] = BYPASS : BYPASS the PLL, run CLKIN into CCLK/SCLK
346 * - [7] = output delay (add 200ps of delay to mem signals)
347 * - [6] = input delay (add 200ps of input delay to mem signals)
348 * - [5] = PDWN : 1=All Clocks off
349 * - [3] = STOPCK : 1=Core Clock off
350 * - [1] = PLL_OFF : 1=Disable Power to PLL
351 * - [0] = DF : 1=Pass CLKIN/2 to PLL / 0=Pass CLKIN to PLL
352 * all other bits set to zero
353 */
354
355 p0.h = hi(PLL_LOCKCNT);
356 p0.l = lo(PLL_LOCKCNT);
357 r0 = 0x300(Z);
358 w[p0] = r0.l;
359 ssync;
360
361 P2.H = hi(EBIU_SDGCTL);
362 P2.L = lo(EBIU_SDGCTL);
363 R0 = [P2];
364 BITSET (R0, 24);
365 [P2] = R0;
366 SSYNC;
367
368 r0 = CONFIG_VCO_MULT & 63; /* Load the VCO multiplier */
369 r0 = r0 << 9; /* Shift it over, */
370 r1 = CLKIN_HALF; /* Do we need to divide CLKIN by 2?*/
371 r0 = r1 | r0;
372 r1 = PLL_BYPASS; /* Bypass the PLL? */
373 r1 = r1 << 8; /* Shift it over */
374 r0 = r1 | r0; /* add them all together */
375
376 p0.h = hi(PLL_CTL);
377 p0.l = lo(PLL_CTL); /* Load the address */
378 cli r2; /* Disable interrupts */
379 ssync;
380 w[p0] = r0.l; /* Set the value */
381 idle; /* Wait for the PLL to stablize */
382 sti r2; /* Enable interrupts */
383
384.Lcheck_again:
385 p0.h = hi(PLL_STAT);
386 p0.l = lo(PLL_STAT);
387 R0 = W[P0](Z);
388 CC = BITTST(R0,5);
389 if ! CC jump .Lcheck_again;
390
391 /* Configure SCLK & CCLK Dividers */
392 r0 = (CONFIG_CCLK_ACT_DIV | CONFIG_SCLK_DIV);
393 p0.h = hi(PLL_DIV);
394 p0.l = lo(PLL_DIV);
395 w[p0] = r0.l;
396 ssync;
397
398 p0.l = lo(EBIU_SDRRC);
399 p0.h = hi(EBIU_SDRRC);
400 r0 = mem_SDRRC;
401 w[p0] = r0.l;
402 ssync;
403
404 p0.l = LO(EBIU_SDBCTL);
405 p0.h = HI(EBIU_SDBCTL); /* SDRAM Memory Bank Control Register */
406 r0 = mem_SDBCTL;
407 w[p0] = r0.l;
408 ssync;
409
410 P2.H = hi(EBIU_SDGCTL);
411 P2.L = lo(EBIU_SDGCTL);
412 R0 = [P2];
413 BITCLR (R0, 24);
414 p0.h = hi(EBIU_SDSTAT);
415 p0.l = lo(EBIU_SDSTAT);
416 r2.l = w[p0];
417 cc = bittst(r2,3);
418 if !cc jump .Lskip;
419 NOP;
420 BITSET (R0, 23);
421.Lskip:
422 [P2] = R0;
423 SSYNC;
424
425 R0.L = lo(mem_SDGCTL);
426 R0.H = hi(mem_SDGCTL);
427 R1 = [p2];
428 R1 = R1 | R0;
429 [P2] = R1;
430 SSYNC;
431
432 p0.h = hi(SIC_IWR0);
433 p0.l = lo(SIC_IWR0);
434 r0.l = lo(IWR_ENABLE_ALL);
435 r0.h = hi(IWR_ENABLE_ALL);
436 [p0] = r0;
437 SSYNC;
438
439 RTS;
440ENDPROC(_start_dma_code)
441#endif /* CONFIG_BFIN_KERNEL_CLOCK */
442
443.data
444
445/*
446 * Set up the usable of RAM stuff. Size of RAM is determined then
447 * an initial stack set up at the end.
448 */
449
450.align 4
451__rambase:
452.long 0
453__ramstart:
454.long 0
455__ramend:
456.long 0
diff --git a/arch/blackfin/mach-bf527/ints-priority.c b/arch/blackfin/mach-bf527/ints-priority.c
new file mode 100644
index 000000000000..1fa389793968
--- /dev/null
+++ b/arch/blackfin/mach-bf527/ints-priority.c
@@ -0,0 +1,100 @@
1/*
2 * File: arch/blackfin/mach-bf537/ints-priority.c
3 * Based on: arch/blackfin/mach-bf533/ints-priority.c
4 * Author: Michael Hennerich (michael.hennerich@analog.com)
5 *
6 * Created:
7 * Description: Set up the interrupt priorities
8 *
9 * Modified:
10 * Copyright 2004-2007 Analog Devices Inc.
11 *
12 * Bugs: Enter bugs at http://blackfin.uclinux.org/
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
18 *
19 * This program is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with this program; if not, see the file COPYING, or write
26 * to the Free Software Foundation, Inc.,
27 * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
28 */
29
30#include <linux/module.h>
31#include <linux/irq.h>
32#include <asm/blackfin.h>
33
34void program_IAR(void)
35{
36 /* Program the IAR0 Register with the configured priority */
37 bfin_write_SIC_IAR0(((CONFIG_IRQ_PLL_WAKEUP - 7) << IRQ_PLL_WAKEUP_POS) |
38 ((CONFIG_IRQ_DMA0_ERROR - 7) << IRQ_DMA0_ERROR_POS) |
39 ((CONFIG_IRQ_DMAR0_BLK - 7) << IRQ_DMAR0_BLK_POS) |
40 ((CONFIG_IRQ_DMAR1_BLK - 7) << IRQ_DMAR1_BLK_POS) |
41 ((CONFIG_IRQ_DMAR0_OVR - 7) << IRQ_DMAR0_OVR_POS) |
42 ((CONFIG_IRQ_DMAR1_OVR - 7) << IRQ_DMAR1_OVR_POS) |
43 ((CONFIG_IRQ_PPI_ERROR - 7) << IRQ_PPI_ERROR_POS) |
44 ((CONFIG_IRQ_MAC_ERROR - 7) << IRQ_MAC_ERROR_POS));
45
46
47 bfin_write_SIC_IAR1(((CONFIG_IRQ_SPORT0_ERROR - 7) << IRQ_SPORT0_ERROR_POS) |
48 ((CONFIG_IRQ_SPORT1_ERROR - 7) << IRQ_SPORT1_ERROR_POS) |
49 ((CONFIG_IRQ_UART0_ERROR - 7) << IRQ_UART0_ERROR_POS) |
50 ((CONFIG_IRQ_UART1_ERROR - 7) << IRQ_UART1_ERROR_POS) |
51 ((CONFIG_IRQ_RTC - 7) << IRQ_RTC_POS) |
52 ((CONFIG_IRQ_PPI - 7) << IRQ_PPI_POS));
53
54 bfin_write_SIC_IAR2(((CONFIG_IRQ_SPORT0_RX - 7) << IRQ_SPORT0_RX_POS) |
55 ((CONFIG_IRQ_SPORT0_TX - 7) << IRQ_SPORT0_TX_POS) |
56 ((CONFIG_IRQ_SPORT1_RX - 7) << IRQ_SPORT1_RX_POS) |
57 ((CONFIG_IRQ_SPORT1_TX - 7) << IRQ_SPORT1_TX_POS) |
58 ((CONFIG_IRQ_TWI - 7) << IRQ_TWI_POS) |
59 ((CONFIG_IRQ_SPI - 7) << IRQ_SPI_POS) |
60 ((CONFIG_IRQ_UART0_RX - 7) << IRQ_UART0_RX_POS) |
61 ((CONFIG_IRQ_UART0_TX - 7) << IRQ_UART0_TX_POS));
62
63 bfin_write_SIC_IAR3(((CONFIG_IRQ_UART1_RX - 7) << IRQ_UART1_RX_POS) |
64 ((CONFIG_IRQ_UART1_TX - 7) << IRQ_UART1_TX_POS) |
65 ((CONFIG_IRQ_OPTSEC - 7) << IRQ_OPTSEC_POS) |
66 ((CONFIG_IRQ_CNT - 7) << IRQ_CNT_POS) |
67 ((CONFIG_IRQ_MAC_RX - 7) << IRQ_MAC_RX_POS) |
68 ((CONFIG_IRQ_PORTH_INTA - 7) << IRQ_PORTH_INTA_POS) |
69 ((CONFIG_IRQ_MAC_TX - 7) << IRQ_MAC_TX_POS) |
70 ((CONFIG_IRQ_PORTH_INTB - 7) << IRQ_PORTH_INTB_POS));
71
72 bfin_write_SIC_IAR4(((CONFIG_IRQ_TMR0 - 7) << IRQ_TMR0_POS) |
73 ((CONFIG_IRQ_TMR1 - 7) << IRQ_TMR1_POS) |
74 ((CONFIG_IRQ_TMR2 - 7) << IRQ_TMR2_POS) |
75 ((CONFIG_IRQ_TMR3 - 7) << IRQ_TMR3_POS) |
76 ((CONFIG_IRQ_TMR4 - 7) << IRQ_TMR4_POS) |
77 ((CONFIG_IRQ_TMR5 - 7) << IRQ_TMR5_POS) |
78 ((CONFIG_IRQ_TMR6 - 7) << IRQ_TMR6_POS) |
79 ((CONFIG_IRQ_TMR7 - 7) << IRQ_TMR7_POS));
80
81 bfin_write_SIC_IAR5(((CONFIG_IRQ_PORTG_INTA - 7) << IRQ_PORTG_INTA_POS) |
82 ((CONFIG_IRQ_PORTG_INTB - 7) << IRQ_PORTG_INTB_POS) |
83 ((CONFIG_IRQ_MEM_DMA0 - 7) << IRQ_MEM_DMA0_POS) |
84 ((CONFIG_IRQ_MEM_DMA1 - 7) << IRQ_MEM_DMA1_POS) |
85 ((CONFIG_IRQ_WATCH - 7) << IRQ_WATCH_POS) |
86 ((CONFIG_IRQ_PORTF_INTA - 7) << IRQ_PORTF_INTA_POS) |
87 ((CONFIG_IRQ_PORTF_INTB - 7) << IRQ_PORTF_INTB_POS) |
88 ((CONFIG_IRQ_SPI_ERROR - 7) << IRQ_SPI_ERROR_POS));
89
90 bfin_write_SIC_IAR6(((CONFIG_IRQ_NFC_ERROR - 7) << IRQ_NFC_ERROR_POS) |
91 ((CONFIG_IRQ_HDMA_ERROR - 7) << IRQ_HDMA_ERROR_POS) |
92 ((CONFIG_IRQ_HDMA - 7) << IRQ_HDMA_POS) |
93 ((CONFIG_IRQ_USB_EINT - 7) << IRQ_USB_EINT_POS) |
94 ((CONFIG_IRQ_USB_INT0 - 7) << IRQ_USB_INT0_POS) |
95 ((CONFIG_IRQ_USB_INT1 - 7) << IRQ_USB_INT1_POS) |
96 ((CONFIG_IRQ_USB_INT2 - 7) << IRQ_USB_INT2_POS) |
97 ((CONFIG_IRQ_USB_DMA - 7) << IRQ_USB_DMA_POS));
98
99 SSYNC();
100}
diff --git a/arch/blackfin/mach-bf533/boards/cm_bf533.c b/arch/blackfin/mach-bf533/boards/cm_bf533.c
index a57b52d207cd..1c5a86adfab7 100644
--- a/arch/blackfin/mach-bf533/boards/cm_bf533.c
+++ b/arch/blackfin/mach-bf533/boards/cm_bf533.c
@@ -42,7 +42,7 @@
42/* 42/*
43 * Name the Board for the /proc/cpuinfo 43 * Name the Board for the /proc/cpuinfo
44 */ 44 */
45char *bfin_board_name = "Bluetechnix CM BF533"; 45const char bfin_board_name[] = "Bluetechnix CM BF533";
46 46
47#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 47#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
48/* all SPI peripherals info goes here */ 48/* all SPI peripherals info goes here */
diff --git a/arch/blackfin/mach-bf533/boards/ezkit.c b/arch/blackfin/mach-bf533/boards/ezkit.c
index 5c1e35d3c012..34b63920e272 100644
--- a/arch/blackfin/mach-bf533/boards/ezkit.c
+++ b/arch/blackfin/mach-bf533/boards/ezkit.c
@@ -43,7 +43,7 @@
43/* 43/*
44 * Name the Board for the /proc/cpuinfo 44 * Name the Board for the /proc/cpuinfo
45 */ 45 */
46char *bfin_board_name = "ADDS-BF533-EZKIT"; 46const char bfin_board_name[] = "ADDS-BF533-EZKIT";
47 47
48#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) 48#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
49static struct platform_device rtc_device = { 49static struct platform_device rtc_device = {
diff --git a/arch/blackfin/mach-bf533/boards/generic_board.c b/arch/blackfin/mach-bf533/boards/generic_board.c
index 9bc1f0d0ab50..310b7772c458 100644
--- a/arch/blackfin/mach-bf533/boards/generic_board.c
+++ b/arch/blackfin/mach-bf533/boards/generic_board.c
@@ -35,7 +35,7 @@
35/* 35/*
36 * Name the Board for the /proc/cpuinfo 36 * Name the Board for the /proc/cpuinfo
37 */ 37 */
38char *bfin_board_name = "UNKNOWN BOARD"; 38const char bfin_board_name[] = "UNKNOWN BOARD";
39 39
40#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) 40#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
41static struct platform_device rtc_device = { 41static struct platform_device rtc_device = {
diff --git a/arch/blackfin/mach-bf533/boards/stamp.c b/arch/blackfin/mach-bf533/boards/stamp.c
index 8975e06ea158..f84be4eabfd1 100644
--- a/arch/blackfin/mach-bf533/boards/stamp.c
+++ b/arch/blackfin/mach-bf533/boards/stamp.c
@@ -46,7 +46,7 @@
46/* 46/*
47 * Name the Board for the /proc/cpuinfo 47 * Name the Board for the /proc/cpuinfo
48 */ 48 */
49char *bfin_board_name = "ADDS-BF533-STAMP"; 49const char bfin_board_name[] = "ADDS-BF533-STAMP";
50 50
51#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) 51#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
52static struct platform_device rtc_device = { 52static struct platform_device rtc_device = {
diff --git a/arch/blackfin/mach-bf537/boards/cm_bf537.c b/arch/blackfin/mach-bf537/boards/cm_bf537.c
index 44dea05e1d03..52e2320307de 100644
--- a/arch/blackfin/mach-bf537/boards/cm_bf537.c
+++ b/arch/blackfin/mach-bf537/boards/cm_bf537.c
@@ -43,7 +43,7 @@
43/* 43/*
44 * Name the Board for the /proc/cpuinfo 44 * Name the Board for the /proc/cpuinfo
45 */ 45 */
46char *bfin_board_name = "Bluetechnix CM BF537"; 46const char bfin_board_name[] = "Bluetechnix CM BF537";
47 47
48#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 48#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
49/* all SPI peripherals info goes here */ 49/* all SPI peripherals info goes here */
diff --git a/arch/blackfin/mach-bf537/boards/generic_board.c b/arch/blackfin/mach-bf537/boards/generic_board.c
index 6668c8e4a3fc..255da7a98481 100644
--- a/arch/blackfin/mach-bf537/boards/generic_board.c
+++ b/arch/blackfin/mach-bf537/boards/generic_board.c
@@ -49,7 +49,7 @@
49/* 49/*
50 * Name the Board for the /proc/cpuinfo 50 * Name the Board for the /proc/cpuinfo
51 */ 51 */
52char *bfin_board_name = "GENERIC Board"; 52const char bfin_board_name[] = "GENERIC Board";
53 53
54/* 54/*
55 * Driver needs to know address, irq and flag pin. 55 * Driver needs to know address, irq and flag pin.
diff --git a/arch/blackfin/mach-bf537/boards/pnav10.c b/arch/blackfin/mach-bf537/boards/pnav10.c
index f83a2544004d..87b808926789 100644
--- a/arch/blackfin/mach-bf537/boards/pnav10.c
+++ b/arch/blackfin/mach-bf537/boards/pnav10.c
@@ -47,7 +47,7 @@
47/* 47/*
48 * Name the Board for the /proc/cpuinfo 48 * Name the Board for the /proc/cpuinfo
49 */ 49 */
50char *bfin_board_name = "PNAV-1.0"; 50const char bfin_board_name[] = "PNAV-1.0";
51 51
52/* 52/*
53 * Driver needs to know address, irq and flag pin. 53 * Driver needs to know address, irq and flag pin.
diff --git a/arch/blackfin/mach-bf537/boards/stamp.c b/arch/blackfin/mach-bf537/boards/stamp.c
index f42ba3aa86d7..cc41f6c2ef4f 100644
--- a/arch/blackfin/mach-bf537/boards/stamp.c
+++ b/arch/blackfin/mach-bf537/boards/stamp.c
@@ -49,7 +49,7 @@
49/* 49/*
50 * Name the Board for the /proc/cpuinfo 50 * Name the Board for the /proc/cpuinfo
51 */ 51 */
52char *bfin_board_name = "ADDS-BF537-STAMP"; 52const char bfin_board_name[] = "ADDS-BF537-STAMP";
53 53
54/* 54/*
55 * Driver needs to know address, irq and flag pin. 55 * Driver needs to know address, irq and flag pin.
diff --git a/arch/blackfin/mach-bf548/boards/ezkit.c b/arch/blackfin/mach-bf548/boards/ezkit.c
index 046e6d84bbfc..6b6490e66b30 100644
--- a/arch/blackfin/mach-bf548/boards/ezkit.c
+++ b/arch/blackfin/mach-bf548/boards/ezkit.c
@@ -49,7 +49,7 @@
49/* 49/*
50 * Name the Board for the /proc/cpuinfo 50 * Name the Board for the /proc/cpuinfo
51 */ 51 */
52char *bfin_board_name = "ADSP-BF548-EZKIT"; 52const char bfin_board_name[] = "ADSP-BF548-EZKIT";
53 53
54/* 54/*
55 * Driver needs to know address, irq and flag pin. 55 * Driver needs to know address, irq and flag pin.
@@ -560,7 +560,7 @@ static struct platform_device *ezkit_devices[] __initdata = {
560 560
561#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 561#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
562 &bf54x_spi_master0, 562 &bf54x_spi_master0,
563/* &bf54x_spi_master1,*/ 563 &bf54x_spi_master1,
564#endif 564#endif
565 565
566#if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE) 566#if defined(CONFIG_KEYBOARD_BFIN) || defined(CONFIG_KEYBOARD_BFIN_MODULE)
diff --git a/arch/blackfin/mach-bf548/dma.c b/arch/blackfin/mach-bf548/dma.c
index a8184113be48..957bf1366eff 100644
--- a/arch/blackfin/mach-bf548/dma.c
+++ b/arch/blackfin/mach-bf548/dma.c
@@ -64,6 +64,7 @@
64 (struct dma_register *) MDMA_D3_NEXT_DESC_PTR, 64 (struct dma_register *) MDMA_D3_NEXT_DESC_PTR,
65 (struct dma_register *) MDMA_S3_NEXT_DESC_PTR, 65 (struct dma_register *) MDMA_S3_NEXT_DESC_PTR,
66}; 66};
67EXPORT_SYMBOL(base_addr);
67 68
68int channel2irq(unsigned int channel) 69int channel2irq(unsigned int channel)
69{ 70{
diff --git a/arch/blackfin/mach-bf561/boards/cm_bf561.c b/arch/blackfin/mach-bf561/boards/cm_bf561.c
index cd827a1b6ba1..97aeb43fd8b4 100644
--- a/arch/blackfin/mach-bf561/boards/cm_bf561.c
+++ b/arch/blackfin/mach-bf561/boards/cm_bf561.c
@@ -42,7 +42,7 @@
42/* 42/*
43 * Name the Board for the /proc/cpuinfo 43 * Name the Board for the /proc/cpuinfo
44 */ 44 */
45char *bfin_board_name = "Bluetechnix CM BF561"; 45const char bfin_board_name[] = "Bluetechnix CM BF561";
46 46
47#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) 47#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
48/* all SPI peripherals info goes here */ 48/* all SPI peripherals info goes here */
diff --git a/arch/blackfin/mach-bf561/boards/ezkit.c b/arch/blackfin/mach-bf561/boards/ezkit.c
index 57e14edca8b1..059d516cec23 100644
--- a/arch/blackfin/mach-bf561/boards/ezkit.c
+++ b/arch/blackfin/mach-bf561/boards/ezkit.c
@@ -39,7 +39,7 @@
39/* 39/*
40 * Name the Board for the /proc/cpuinfo 40 * Name the Board for the /proc/cpuinfo
41 */ 41 */
42char *bfin_board_name = "ADDS-BF561-EZKIT"; 42const char bfin_board_name[] = "ADDS-BF561-EZKIT";
43 43
44#define ISP1761_BASE 0x2C0F0000 44#define ISP1761_BASE 0x2C0F0000
45#define ISP1761_IRQ IRQ_PF10 45#define ISP1761_IRQ IRQ_PF10
diff --git a/arch/blackfin/mach-bf561/boards/generic_board.c b/arch/blackfin/mach-bf561/boards/generic_board.c
index 4dfea5da674c..46816be4b2ba 100644
--- a/arch/blackfin/mach-bf561/boards/generic_board.c
+++ b/arch/blackfin/mach-bf561/boards/generic_board.c
@@ -32,7 +32,7 @@
32#include <linux/platform_device.h> 32#include <linux/platform_device.h>
33#include <linux/irq.h> 33#include <linux/irq.h>
34 34
35char *bfin_board_name = "UNKNOWN BOARD"; 35const char bfin_board_name[] = "UNKNOWN BOARD";
36 36
37/* 37/*
38 * Driver needs to know address, irq and flag pin. 38 * Driver needs to know address, irq and flag pin.
diff --git a/arch/blackfin/mach-bf561/boards/tepla.c b/arch/blackfin/mach-bf561/boards/tepla.c
index c442eb23db5e..4a17c6da2a59 100644
--- a/arch/blackfin/mach-bf561/boards/tepla.c
+++ b/arch/blackfin/mach-bf561/boards/tepla.c
@@ -16,7 +16,7 @@
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/irq.h> 17#include <linux/irq.h>
18 18
19char *bfin_board_name = "Tepla-BF561"; 19const char bfin_board_name[] = "Tepla-BF561";
20 20
21/* 21/*
22 * Driver needs to know address, irq and flag pin. 22 * Driver needs to know address, irq and flag pin.
diff --git a/arch/blackfin/mach-common/ints-priority-dc.c b/arch/blackfin/mach-common/ints-priority-dc.c
index 2db3546fc874..c2f05fabedc1 100644
--- a/arch/blackfin/mach-common/ints-priority-dc.c
+++ b/arch/blackfin/mach-common/ints-priority-dc.c
@@ -52,7 +52,13 @@
52 * - 52 * -
53 */ 53 */
54 54
55unsigned long irq_flags = 0; 55/* Initialize this to an actual value to force it into the .data
56 * section so that we know it is properly initialized at entry into
57 * the kernel but before bss is initialized to zero (which is where
58 * it would live otherwise). The 0x1f magic represents the IRQs we
59 * cannot actually mask out in hardware.
60 */
61unsigned long irq_flags = 0x1f;
56 62
57/* The number of spurious interrupts */ 63/* The number of spurious interrupts */
58atomic_t num_spurious; 64atomic_t num_spurious;
diff --git a/arch/blackfin/mach-common/ints-priority-sc.c b/arch/blackfin/mach-common/ints-priority-sc.c
index d3b7672b2b94..2d2b63567b30 100644
--- a/arch/blackfin/mach-common/ints-priority-sc.c
+++ b/arch/blackfin/mach-common/ints-priority-sc.c
@@ -58,7 +58,13 @@
58 * - 58 * -
59 */ 59 */
60 60
61unsigned long irq_flags = 0; 61/* Initialize this to an actual value to force it into the .data
62 * section so that we know it is properly initialized at entry into
63 * the kernel but before bss is initialized to zero (which is where
64 * it would live otherwise). The 0x1f magic represents the IRQs we
65 * cannot actually mask out in hardware.
66 */
67unsigned long irq_flags = 0x1f;
62 68
63/* The number of spurious interrupts */ 69/* The number of spurious interrupts */
64atomic_t num_spurious; 70atomic_t num_spurious;
@@ -92,10 +98,15 @@ static void __init search_IAR(void)
92 98
93 for (irqn = 0; irqn < NR_PERI_INTS; irqn++) { 99 for (irqn = 0; irqn < NR_PERI_INTS; irqn++) {
94 int iar_shift = (irqn & 7) * 4; 100 int iar_shift = (irqn & 7) * 4;
95 if (ivg == 101 if (ivg ==
96 (0xf & 102 (0xf &
103#ifndef CONFIG_BF52x
97 bfin_read32((unsigned long *)SIC_IAR0 + 104 bfin_read32((unsigned long *)SIC_IAR0 +
98 (irqn >> 3)) >> iar_shift)) { 105 (irqn >> 3)) >> iar_shift)) {
106#else
107 bfin_read32((unsigned long *)SIC_IAR0 +
108 ((irqn%32) >> 3) + ((irqn / 32) * 16)) >> iar_shift)) {
109#endif
99 ivg_table[irq_pos].irqno = IVG7 + irqn; 110 ivg_table[irq_pos].irqno = IVG7 + irqn;
100 ivg_table[irq_pos].isrflag = 1 << (irqn % 32); 111 ivg_table[irq_pos].isrflag = 1 << (irqn % 32);
101 ivg7_13[ivg].istop++; 112 ivg7_13[ivg].istop++;
@@ -140,7 +151,7 @@ static void bfin_core_unmask_irq(unsigned int irq)
140 151
141static void bfin_internal_mask_irq(unsigned int irq) 152static void bfin_internal_mask_irq(unsigned int irq)
142{ 153{
143#ifndef CONFIG_BF54x 154#ifdef CONFIG_BF53x
144 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() & 155 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() &
145 ~(1 << (irq - (IRQ_CORETMR + 1)))); 156 ~(1 << (irq - (IRQ_CORETMR + 1))));
146#else 157#else
@@ -155,7 +166,7 @@ static void bfin_internal_mask_irq(unsigned int irq)
155 166
156static void bfin_internal_unmask_irq(unsigned int irq) 167static void bfin_internal_unmask_irq(unsigned int irq)
157{ 168{
158#ifndef CONFIG_BF54x 169#ifdef CONFIG_BF53x
159 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() | 170 bfin_write_SIC_IMASK(bfin_read_SIC_IMASK() |
160 (1 << (irq - (IRQ_CORETMR + 1)))); 171 (1 << (irq - (IRQ_CORETMR + 1))));
161#else 172#else
@@ -750,13 +761,15 @@ int __init init_arch_irq(void)
750 int irq; 761 int irq;
751 unsigned long ilat = 0; 762 unsigned long ilat = 0;
752 /* Disable all the peripheral intrs - page 4-29 HW Ref manual */ 763 /* Disable all the peripheral intrs - page 4-29 HW Ref manual */
753#ifdef CONFIG_BF54x 764#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x)
754 bfin_write_SIC_IMASK0(SIC_UNMASK_ALL); 765 bfin_write_SIC_IMASK0(SIC_UNMASK_ALL);
755 bfin_write_SIC_IMASK1(SIC_UNMASK_ALL); 766 bfin_write_SIC_IMASK1(SIC_UNMASK_ALL);
756 bfin_write_SIC_IMASK2(SIC_UNMASK_ALL);
757 bfin_write_SIC_IWR0(IWR_ENABLE_ALL); 767 bfin_write_SIC_IWR0(IWR_ENABLE_ALL);
758 bfin_write_SIC_IWR1(IWR_ENABLE_ALL); 768 bfin_write_SIC_IWR1(IWR_ENABLE_ALL);
769#ifdef CONFIG_BF54x
770 bfin_write_SIC_IMASK2(SIC_UNMASK_ALL);
759 bfin_write_SIC_IWR2(IWR_ENABLE_ALL); 771 bfin_write_SIC_IWR2(IWR_ENABLE_ALL);
772#endif
760#else 773#else
761 bfin_write_SIC_IMASK(SIC_UNMASK_ALL); 774 bfin_write_SIC_IMASK(SIC_UNMASK_ALL);
762 bfin_write_SIC_IWR(IWR_ENABLE_ALL); 775 bfin_write_SIC_IWR(IWR_ENABLE_ALL);
@@ -787,7 +800,7 @@ int __init init_arch_irq(void)
787 800
788 switch (irq) { 801 switch (irq) {
789#ifdef CONFIG_IRQCHIP_DEMUX_GPIO 802#ifdef CONFIG_IRQCHIP_DEMUX_GPIO
790#ifndef CONFIG_BF54x 803#if defined(CONFIG_BF53x)
791 case IRQ_PROG_INTA: 804 case IRQ_PROG_INTA:
792 set_irq_chained_handler(irq, 805 set_irq_chained_handler(irq,
793 bfin_demux_gpio_irq); 806 bfin_demux_gpio_irq);
@@ -798,7 +811,7 @@ int __init init_arch_irq(void)
798 bfin_demux_gpio_irq); 811 bfin_demux_gpio_irq);
799 break; 812 break;
800#endif 813#endif
801#else 814#elif defined(CONFIG_BF54x)
802 case IRQ_PINT0: 815 case IRQ_PINT0:
803 set_irq_chained_handler(irq, 816 set_irq_chained_handler(irq,
804 bfin_demux_gpio_irq); 817 bfin_demux_gpio_irq);
@@ -815,7 +828,20 @@ int __init init_arch_irq(void)
815 set_irq_chained_handler(irq, 828 set_irq_chained_handler(irq,
816 bfin_demux_gpio_irq); 829 bfin_demux_gpio_irq);
817 break; 830 break;
818#endif /*CONFIG_BF54x */ 831#elif defined(CONFIG_BF52x)
832 case IRQ_PORTF_INTA:
833 set_irq_chained_handler(irq,
834 bfin_demux_gpio_irq);
835 break;
836 case IRQ_PORTG_INTA:
837 set_irq_chained_handler(irq,
838 bfin_demux_gpio_irq);
839 break;
840 case IRQ_PORTH_INTA:
841 set_irq_chained_handler(irq,
842 bfin_demux_gpio_irq);
843 break;
844#endif
819#endif 845#endif
820 default: 846 default:
821 set_irq_handler(irq, handle_simple_irq); 847 set_irq_handler(irq, handle_simple_irq);
@@ -880,14 +906,15 @@ void do_irq(int vec, struct pt_regs *fp)
880 } else { 906 } else {
881 struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst; 907 struct ivgx *ivg = ivg7_13[vec - IVG7].ifirst;
882 struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop; 908 struct ivgx *ivg_stop = ivg7_13[vec - IVG7].istop;
883#ifdef CONFIG_BF54x 909#if defined(CONFIG_BF54x) || defined(CONFIG_BF52x)
884 unsigned long sic_status[3]; 910 unsigned long sic_status[3];
885 911
886 SSYNC(); 912 SSYNC();
887 sic_status[0] = bfin_read_SIC_ISR(0) & bfin_read_SIC_IMASK(0); 913 sic_status[0] = bfin_read_SIC_ISR0() & bfin_read_SIC_IMASK0();
888 sic_status[1] = bfin_read_SIC_ISR(1) & bfin_read_SIC_IMASK(1); 914 sic_status[1] = bfin_read_SIC_ISR1() & bfin_read_SIC_IMASK1();
889 sic_status[2] = bfin_read_SIC_ISR(2) & bfin_read_SIC_IMASK(2); 915#ifdef CONFIG_BF54x
890 916 sic_status[2] = bfin_read_SIC_ISR2() & bfin_read_SIC_IMASK2();
917#endif
891 for (;; ivg++) { 918 for (;; ivg++) {
892 if (ivg >= ivg_stop) { 919 if (ivg >= ivg_stop) {
893 atomic_inc(&num_spurious); 920 atomic_inc(&num_spurious);
diff --git a/arch/i386/Kconfig b/arch/i386/Kconfig
index f6e44fc5283c..5bed8be34ba5 100644
--- a/arch/i386/Kconfig
+++ b/arch/i386/Kconfig
@@ -227,28 +227,40 @@ config SCHED_NO_NO_OMIT_FRAME_POINTER
227 If in doubt, say "Y". 227 If in doubt, say "Y".
228 228
229config PARAVIRT 229config PARAVIRT
230 bool "Paravirtualization support (EXPERIMENTAL)" 230 bool
231 depends on EXPERIMENTAL
232 depends on !(X86_VISWS || X86_VOYAGER) 231 depends on !(X86_VISWS || X86_VOYAGER)
233 help 232 help
234 Paravirtualization is a way of running multiple instances of 233 This changes the kernel so it can modify itself when it is run
235 Linux on the same machine, under a hypervisor. This option 234 under a hypervisor, potentially improving performance significantly
236 changes the kernel so it can modify itself when it is run 235 over full virtualization. However, when run without a hypervisor
237 under a hypervisor, improving performance significantly. 236 the kernel is theoretically slower and slightly larger.
238 However, when run without a hypervisor the kernel is 237
239 theoretically slower. If in doubt, say N. 238menuconfig PARAVIRT_GUEST
239 bool "Paravirtualized guest support"
240 help
241 Say Y here to get to see options related to running Linux under
242 various hypervisors. This option alone does not add any kernel code.
243
244 If you say N, all options in this submenu will be skipped and disabled.
245
246if PARAVIRT_GUEST
240 247
241source "arch/x86/xen/Kconfig" 248source "arch/x86/xen/Kconfig"
242 249
243config VMI 250config VMI
244 bool "VMI Paravirt-ops support" 251 bool "VMI Guest support"
245 depends on PARAVIRT 252 select PARAVIRT
253 depends on !(X86_VISWS || X86_VOYAGER)
246 help 254 help
247 VMI provides a paravirtualized interface to the VMware ESX server 255 VMI provides a paravirtualized interface to the VMware ESX server
248 (it could be used by other hypervisors in theory too, but is not 256 (it could be used by other hypervisors in theory too, but is not
249 at the moment), by linking the kernel to a GPL-ed ROM module 257 at the moment), by linking the kernel to a GPL-ed ROM module
250 provided by the hypervisor. 258 provided by the hypervisor.
251 259
260source "arch/x86/lguest/Kconfig"
261
262endif
263
252config ACPI_SRAT 264config ACPI_SRAT
253 bool 265 bool
254 default y 266 default y
diff --git a/arch/i386/Makefile b/arch/i386/Makefile
index b88e47ca3032..b81cb64d48e5 100644
--- a/arch/i386/Makefile
+++ b/arch/i386/Makefile
@@ -99,6 +99,9 @@ core-$(CONFIG_X86_ES7000) := arch/x86/mach-es7000/
99# Xen paravirtualization support 99# Xen paravirtualization support
100core-$(CONFIG_XEN) += arch/x86/xen/ 100core-$(CONFIG_XEN) += arch/x86/xen/
101 101
102# lguest paravirtualization support
103core-$(CONFIG_LGUEST_GUEST) += arch/x86/lguest/
104
102# default subarch .h files 105# default subarch .h files
103mflags-y += -Iinclude/asm-x86/mach-default 106mflags-y += -Iinclude/asm-x86/mach-default
104 107
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c
index 3c95f4184b99..bc859a311eaf 100644
--- a/arch/ia64/hp/common/sba_iommu.c
+++ b/arch/ia64/hp/common/sba_iommu.c
@@ -246,7 +246,7 @@ static int reserve_sba_gart = 1;
246static SBA_INLINE void sba_mark_invalid(struct ioc *, dma_addr_t, size_t); 246static SBA_INLINE void sba_mark_invalid(struct ioc *, dma_addr_t, size_t);
247static SBA_INLINE void sba_free_range(struct ioc *, dma_addr_t, size_t); 247static SBA_INLINE void sba_free_range(struct ioc *, dma_addr_t, size_t);
248 248
249#define sba_sg_address(sg) (page_address((sg)->page) + (sg)->offset) 249#define sba_sg_address(sg) sg_virt((sg))
250 250
251#ifdef FULL_VALID_PDIR 251#ifdef FULL_VALID_PDIR
252static u64 prefetch_spill_page; 252static u64 prefetch_spill_page;
diff --git a/arch/ia64/hp/sim/simscsi.c b/arch/ia64/hp/sim/simscsi.c
index a3a558a06757..6ef9b5219930 100644
--- a/arch/ia64/hp/sim/simscsi.c
+++ b/arch/ia64/hp/sim/simscsi.c
@@ -131,7 +131,7 @@ simscsi_sg_readwrite (struct scsi_cmnd *sc, int mode, unsigned long offset)
131 stat.fd = desc[sc->device->id]; 131 stat.fd = desc[sc->device->id];
132 132
133 scsi_for_each_sg(sc, sl, scsi_sg_count(sc), i) { 133 scsi_for_each_sg(sc, sl, scsi_sg_count(sc), i) {
134 req.addr = __pa(page_address(sl->page) + sl->offset); 134 req.addr = __pa(sg_virt(sl));
135 req.len = sl->length; 135 req.len = sl->length;
136 if (DBG) 136 if (DBG)
137 printk("simscsi_sg_%s @ %lx (off %lx) use_sg=%d len=%d\n", 137 printk("simscsi_sg_%s @ %lx (off %lx) use_sg=%d len=%d\n",
@@ -212,7 +212,7 @@ static void simscsi_fillresult(struct scsi_cmnd *sc, char *buf, unsigned len)
212 if (!len) 212 if (!len)
213 break; 213 break;
214 thislen = min(len, slp->length); 214 thislen = min(len, slp->length);
215 memcpy(page_address(slp->page) + slp->offset, buf, thislen); 215 memcpy(sg_virt(slp), buf, thislen);
216 len -= thislen; 216 len -= thislen;
217 } 217 }
218} 218}
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 8e4894b205e2..3f7ea13358e9 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -1090,7 +1090,8 @@ efi_memmap_init(unsigned long *s, unsigned long *e)
1090 1090
1091void 1091void
1092efi_initialize_iomem_resources(struct resource *code_resource, 1092efi_initialize_iomem_resources(struct resource *code_resource,
1093 struct resource *data_resource) 1093 struct resource *data_resource,
1094 struct resource *bss_resource)
1094{ 1095{
1095 struct resource *res; 1096 struct resource *res;
1096 void *efi_map_start, *efi_map_end, *p; 1097 void *efi_map_start, *efi_map_end, *p;
@@ -1171,6 +1172,7 @@ efi_initialize_iomem_resources(struct resource *code_resource,
1171 */ 1172 */
1172 insert_resource(res, code_resource); 1173 insert_resource(res, code_resource);
1173 insert_resource(res, data_resource); 1174 insert_resource(res, data_resource);
1175 insert_resource(res, bss_resource);
1174#ifdef CONFIG_KEXEC 1176#ifdef CONFIG_KEXEC
1175 insert_resource(res, &efi_memmap_res); 1177 insert_resource(res, &efi_memmap_res);
1176 insert_resource(res, &boot_param_res); 1178 insert_resource(res, &boot_param_res);
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c
index cbf67f1aa291..ae6c3c02e117 100644
--- a/arch/ia64/kernel/setup.c
+++ b/arch/ia64/kernel/setup.c
@@ -90,7 +90,12 @@ static struct resource code_resource = {
90 .name = "Kernel code", 90 .name = "Kernel code",
91 .flags = IORESOURCE_BUSY | IORESOURCE_MEM 91 .flags = IORESOURCE_BUSY | IORESOURCE_MEM
92}; 92};
93extern char _text[], _end[], _etext[]; 93
94static struct resource bss_resource = {
95 .name = "Kernel bss",
96 .flags = IORESOURCE_BUSY | IORESOURCE_MEM
97};
98extern char _text[], _end[], _etext[], _edata[], _bss[];
94 99
95unsigned long ia64_max_cacheline_size; 100unsigned long ia64_max_cacheline_size;
96 101
@@ -200,8 +205,11 @@ static int __init register_memory(void)
200 code_resource.start = ia64_tpa(_text); 205 code_resource.start = ia64_tpa(_text);
201 code_resource.end = ia64_tpa(_etext) - 1; 206 code_resource.end = ia64_tpa(_etext) - 1;
202 data_resource.start = ia64_tpa(_etext); 207 data_resource.start = ia64_tpa(_etext);
203 data_resource.end = ia64_tpa(_end) - 1; 208 data_resource.end = ia64_tpa(_edata) - 1;
204 efi_initialize_iomem_resources(&code_resource, &data_resource); 209 bss_resource.start = ia64_tpa(_bss);
210 bss_resource.end = ia64_tpa(_end) - 1;
211 efi_initialize_iomem_resources(&code_resource, &data_resource,
212 &bss_resource);
205 213
206 return 0; 214 return 0;
207} 215}
diff --git a/arch/ia64/sn/pci/pci_dma.c b/arch/ia64/sn/pci/pci_dma.c
index ecd8a52b9b9e..511db2fd7bff 100644
--- a/arch/ia64/sn/pci/pci_dma.c
+++ b/arch/ia64/sn/pci/pci_dma.c
@@ -16,7 +16,7 @@
16#include <asm/sn/pcidev.h> 16#include <asm/sn/pcidev.h>
17#include <asm/sn/sn_sal.h> 17#include <asm/sn/sn_sal.h>
18 18
19#define SG_ENT_VIRT_ADDRESS(sg) (page_address((sg)->page) + (sg)->offset) 19#define SG_ENT_VIRT_ADDRESS(sg) (sg_virt((sg)))
20#define SG_ENT_PHYS_ADDRESS(SG) virt_to_phys(SG_ENT_VIRT_ADDRESS(SG)) 20#define SG_ENT_PHYS_ADDRESS(SG) virt_to_phys(SG_ENT_VIRT_ADDRESS(SG))
21 21
22/** 22/**
diff --git a/arch/m68k/kernel/dma.c b/arch/m68k/kernel/dma.c
index 9d4e4b5b6bd8..ef490e1ce600 100644
--- a/arch/m68k/kernel/dma.c
+++ b/arch/m68k/kernel/dma.c
@@ -121,7 +121,7 @@ int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
121 int i; 121 int i;
122 122
123 for (i = 0; i < nents; sg++, i++) { 123 for (i = 0; i < nents; sg++, i++) {
124 sg->dma_address = page_to_phys(sg->page) + sg->offset; 124 sg->dma_address = sg_phys(sg);
125 dma_sync_single_for_device(dev, sg->dma_address, sg->length, dir); 125 dma_sync_single_for_device(dev, sg->dma_address, sg->length, dir);
126 } 126 }
127 return nents; 127 return nents;
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig
index f52c627bdadd..f4b582cbb567 100644
--- a/arch/m68knommu/Kconfig
+++ b/arch/m68knommu/Kconfig
@@ -451,6 +451,12 @@ config MOD5272
451 help 451 help
452 Support for the Netburner MOD-5272 board. 452 Support for the Netburner MOD-5272 board.
453 453
454config SAVANTrosie1
455 bool "Savant Rosie1 board support"
456 depends on M523x
457 help
458 Support for the Savant Rosie1 board.
459
454config ROMFS_FROM_ROM 460config ROMFS_FROM_ROM
455 bool "ROMFS image not RAM resident" 461 bool "ROMFS image not RAM resident"
456 depends on (NETtel || SNAPGEAR) 462 depends on (NETtel || SNAPGEAR)
@@ -492,7 +498,12 @@ config SNEHA
492 bool 498 bool
493 default y 499 default y
494 depends on CPU16B 500 depends on CPU16B
495 501
502config SAVANT
503 bool
504 default y
505 depends on SAVANTrosie1
506
496config AVNET 507config AVNET
497 bool 508 bool
498 default y 509 default y
diff --git a/arch/m68knommu/Makefile b/arch/m68knommu/Makefile
index 92227aaaa26e..30aa2553693d 100644
--- a/arch/m68knommu/Makefile
+++ b/arch/m68knommu/Makefile
@@ -48,6 +48,7 @@ board-$(CONFIG_SNEHA) := SNEHA
48board-$(CONFIG_M5208EVB) := M5208EVB 48board-$(CONFIG_M5208EVB) := M5208EVB
49board-$(CONFIG_MOD5272) := MOD5272 49board-$(CONFIG_MOD5272) := MOD5272
50board-$(CONFIG_AVNET) := AVNET 50board-$(CONFIG_AVNET) := AVNET
51board-$(CONFIG_SAVANT) := SAVANT
51BOARD := $(board-y) 52BOARD := $(board-y)
52 53
53model-$(CONFIG_RAMKERNEL) := ram 54model-$(CONFIG_RAMKERNEL) := ram
@@ -117,4 +118,4 @@ core-y += arch/m68knommu/kernel/ \
117libs-y += arch/m68knommu/lib/ 118libs-y += arch/m68knommu/lib/
118 119
119archclean: 120archclean:
120 $(Q)$(MAKE) $(clean)=arch/m68knommu/boot 121
diff --git a/arch/m68knommu/defconfig b/arch/m68knommu/defconfig
index 3891de09ac23..5a0ecaaee3b0 100644
--- a/arch/m68knommu/defconfig
+++ b/arch/m68knommu/defconfig
@@ -1,41 +1,48 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.17 3# Linux kernel version: 2.6.23
4# Tue Jun 27 12:57:06 2006 4# Thu Oct 18 13:17:38 2007
5# 5#
6CONFIG_M68K=y 6CONFIG_M68K=y
7# CONFIG_MMU is not set 7# CONFIG_MMU is not set
8# CONFIG_FPU is not set 8# CONFIG_FPU is not set
9CONFIG_ZONE_DMA=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 10CONFIG_RWSEM_GENERIC_SPINLOCK=y
10# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set 11# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
12# CONFIG_ARCH_HAS_ILOG2_U32 is not set
13# CONFIG_ARCH_HAS_ILOG2_U64 is not set
11CONFIG_GENERIC_FIND_NEXT_BIT=y 14CONFIG_GENERIC_FIND_NEXT_BIT=y
12CONFIG_GENERIC_HWEIGHT=y 15CONFIG_GENERIC_HWEIGHT=y
16CONFIG_GENERIC_HARDIRQS=y
13CONFIG_GENERIC_CALIBRATE_DELAY=y 17CONFIG_GENERIC_CALIBRATE_DELAY=y
14CONFIG_TIME_LOW_RES=y 18CONFIG_TIME_LOW_RES=y
19CONFIG_NO_IOPORT=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
15 21
16# 22#
17# Code maturity level options 23# General setup
18# 24#
19CONFIG_EXPERIMENTAL=y 25CONFIG_EXPERIMENTAL=y
20CONFIG_BROKEN_ON_SMP=y 26CONFIG_BROKEN_ON_SMP=y
21CONFIG_INIT_ENV_ARG_LIMIT=32 27CONFIG_INIT_ENV_ARG_LIMIT=32
22
23#
24# General setup
25#
26CONFIG_LOCALVERSION="" 28CONFIG_LOCALVERSION=""
27CONFIG_LOCALVERSION_AUTO=y 29CONFIG_LOCALVERSION_AUTO=y
28# CONFIG_SYSVIPC is not set 30# CONFIG_SYSVIPC is not set
29# CONFIG_POSIX_MQUEUE is not set 31# CONFIG_POSIX_MQUEUE is not set
30# CONFIG_BSD_PROCESS_ACCT is not set 32# CONFIG_BSD_PROCESS_ACCT is not set
31# CONFIG_SYSCTL is not set 33# CONFIG_TASKSTATS is not set
34# CONFIG_USER_NS is not set
32# CONFIG_AUDIT is not set 35# CONFIG_AUDIT is not set
33# CONFIG_IKCONFIG is not set 36# CONFIG_IKCONFIG is not set
37CONFIG_LOG_BUF_SHIFT=14
38# CONFIG_SYSFS_DEPRECATED is not set
34# CONFIG_RELAY is not set 39# CONFIG_RELAY is not set
35CONFIG_INITRAMFS_SOURCE="" 40# CONFIG_BLK_DEV_INITRD is not set
36CONFIG_UID16=y
37# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 41# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
42CONFIG_SYSCTL=y
38CONFIG_EMBEDDED=y 43CONFIG_EMBEDDED=y
44CONFIG_UID16=y
45CONFIG_SYSCTL_SYSCALL=y
39# CONFIG_KALLSYMS is not set 46# CONFIG_KALLSYMS is not set
40# CONFIG_HOTPLUG is not set 47# CONFIG_HOTPLUG is not set
41CONFIG_PRINTK=y 48CONFIG_PRINTK=y
@@ -44,20 +51,25 @@ CONFIG_ELF_CORE=y
44CONFIG_BASE_FULL=y 51CONFIG_BASE_FULL=y
45# CONFIG_FUTEX is not set 52# CONFIG_FUTEX is not set
46# CONFIG_EPOLL is not set 53# CONFIG_EPOLL is not set
54# CONFIG_SIGNALFD is not set
55# CONFIG_EVENTFD is not set
56# CONFIG_VM_EVENT_COUNTERS is not set
47CONFIG_SLAB=y 57CONFIG_SLAB=y
58# CONFIG_SLUB is not set
59# CONFIG_SLOB is not set
48CONFIG_TINY_SHMEM=y 60CONFIG_TINY_SHMEM=y
49CONFIG_BASE_SMALL=0 61CONFIG_BASE_SMALL=0
50# CONFIG_SLOB is not set 62CONFIG_MODULES=y
51 63CONFIG_MODULE_UNLOAD=y
52# 64# CONFIG_MODULE_FORCE_UNLOAD is not set
53# Loadable module support 65# CONFIG_MODVERSIONS is not set
54# 66# CONFIG_MODULE_SRCVERSION_ALL is not set
55# CONFIG_MODULES is not set 67# CONFIG_KMOD is not set
56 68CONFIG_BLOCK=y
57# 69# CONFIG_LBD is not set
58# Block layer
59#
60# CONFIG_BLK_DEV_IO_TRACE is not set 70# CONFIG_BLK_DEV_IO_TRACE is not set
71# CONFIG_LSF is not set
72# CONFIG_BLK_DEV_BSG is not set
61 73
62# 74#
63# IO Schedulers 75# IO Schedulers
@@ -99,6 +111,7 @@ CONFIG_CLOCK_DIV=1
99# 111#
100# Platform 112# Platform
101# 113#
114# CONFIG_UC5272 is not set
102CONFIG_M5272C3=y 115CONFIG_M5272C3=y
103# CONFIG_COBRA5272 is not set 116# CONFIG_COBRA5272 is not set
104# CONFIG_CANCam is not set 117# CONFIG_CANCam is not set
@@ -107,7 +120,6 @@ CONFIG_M5272C3=y
107# CONFIG_CPU16B is not set 120# CONFIG_CPU16B is not set
108# CONFIG_MOD5272 is not set 121# CONFIG_MOD5272 is not set
109CONFIG_FREESCALE=y 122CONFIG_FREESCALE=y
110# CONFIG_LARGE_ALLOCS is not set
111CONFIG_4KSTACKS=y 123CONFIG_4KSTACKS=y
112 124
113# 125#
@@ -121,6 +133,11 @@ CONFIG_RAMAUTOBIT=y
121# CONFIG_RAM8BIT is not set 133# CONFIG_RAM8BIT is not set
122# CONFIG_RAM16BIT is not set 134# CONFIG_RAM16BIT is not set
123# CONFIG_RAM32BIT is not set 135# CONFIG_RAM32BIT is not set
136
137#
138# ROM configuration
139#
140# CONFIG_ROM is not set
124CONFIG_RAMKERNEL=y 141CONFIG_RAMKERNEL=y
125# CONFIG_ROMKERNEL is not set 142# CONFIG_ROMKERNEL is not set
126CONFIG_SELECT_MEMORY_MODEL=y 143CONFIG_SELECT_MEMORY_MODEL=y
@@ -131,20 +148,19 @@ CONFIG_FLATMEM=y
131CONFIG_FLAT_NODE_MEM_MAP=y 148CONFIG_FLAT_NODE_MEM_MAP=y
132# CONFIG_SPARSEMEM_STATIC is not set 149# CONFIG_SPARSEMEM_STATIC is not set
133CONFIG_SPLIT_PTLOCK_CPUS=4 150CONFIG_SPLIT_PTLOCK_CPUS=4
151# CONFIG_RESOURCES_64BIT is not set
152CONFIG_ZONE_DMA_FLAG=1
153CONFIG_VIRT_TO_BUS=y
134 154
135# 155#
136# Bus options (PCI, PCMCIA, EISA, MCA, ISA) 156# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
137# 157#
138# CONFIG_PCI is not set 158# CONFIG_PCI is not set
159# CONFIG_ARCH_SUPPORTS_MSI is not set
139 160
140# 161#
141# PCCARD (PCMCIA/CardBus) support 162# PCCARD (PCMCIA/CardBus) support
142# 163#
143# CONFIG_PCCARD is not set
144
145#
146# PCI Hotplug Support
147#
148 164
149# 165#
150# Executable file formats 166# Executable file formats
@@ -168,7 +184,6 @@ CONFIG_NET=y
168# 184#
169# Networking options 185# Networking options
170# 186#
171# CONFIG_NETDEBUG is not set
172CONFIG_PACKET=y 187CONFIG_PACKET=y
173# CONFIG_PACKET_MMAP is not set 188# CONFIG_PACKET_MMAP is not set
174CONFIG_UNIX=y 189CONFIG_UNIX=y
@@ -187,27 +202,21 @@ CONFIG_IP_FIB_HASH=y
187# CONFIG_INET_IPCOMP is not set 202# CONFIG_INET_IPCOMP is not set
188# CONFIG_INET_XFRM_TUNNEL is not set 203# CONFIG_INET_XFRM_TUNNEL is not set
189# CONFIG_INET_TUNNEL is not set 204# CONFIG_INET_TUNNEL is not set
205# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
206# CONFIG_INET_XFRM_MODE_TUNNEL is not set
207# CONFIG_INET_XFRM_MODE_BEET is not set
190# CONFIG_INET_DIAG is not set 208# CONFIG_INET_DIAG is not set
191# CONFIG_TCP_CONG_ADVANCED is not set 209# CONFIG_TCP_CONG_ADVANCED is not set
192CONFIG_TCP_CONG_BIC=y 210CONFIG_TCP_CONG_CUBIC=y
211CONFIG_DEFAULT_TCP_CONG="cubic"
212# CONFIG_TCP_MD5SIG is not set
193# CONFIG_IPV6 is not set 213# CONFIG_IPV6 is not set
194# CONFIG_INET6_XFRM_TUNNEL is not set 214# CONFIG_INET6_XFRM_TUNNEL is not set
195# CONFIG_INET6_TUNNEL is not set 215# CONFIG_INET6_TUNNEL is not set
216# CONFIG_NETWORK_SECMARK is not set
196# CONFIG_NETFILTER is not set 217# CONFIG_NETFILTER is not set
197
198#
199# DCCP Configuration (EXPERIMENTAL)
200#
201# CONFIG_IP_DCCP is not set 218# CONFIG_IP_DCCP is not set
202
203#
204# SCTP Configuration (EXPERIMENTAL)
205#
206# CONFIG_IP_SCTP is not set 219# CONFIG_IP_SCTP is not set
207
208#
209# TIPC Configuration (EXPERIMENTAL)
210#
211# CONFIG_TIPC is not set 220# CONFIG_TIPC is not set
212# CONFIG_ATM is not set 221# CONFIG_ATM is not set
213# CONFIG_BRIDGE is not set 222# CONFIG_BRIDGE is not set
@@ -218,7 +227,6 @@ CONFIG_TCP_CONG_BIC=y
218# CONFIG_ATALK is not set 227# CONFIG_ATALK is not set
219# CONFIG_X25 is not set 228# CONFIG_X25 is not set
220# CONFIG_LAPB is not set 229# CONFIG_LAPB is not set
221# CONFIG_NET_DIVERT is not set
222# CONFIG_ECONET is not set 230# CONFIG_ECONET is not set
223# CONFIG_WAN_ROUTER is not set 231# CONFIG_WAN_ROUTER is not set
224 232
@@ -234,7 +242,17 @@ CONFIG_TCP_CONG_BIC=y
234# CONFIG_HAMRADIO is not set 242# CONFIG_HAMRADIO is not set
235# CONFIG_IRDA is not set 243# CONFIG_IRDA is not set
236# CONFIG_BT is not set 244# CONFIG_BT is not set
245# CONFIG_AF_RXRPC is not set
246
247#
248# Wireless
249#
250# CONFIG_CFG80211 is not set
251# CONFIG_WIRELESS_EXT is not set
252# CONFIG_MAC80211 is not set
237# CONFIG_IEEE80211 is not set 253# CONFIG_IEEE80211 is not set
254# CONFIG_RFKILL is not set
255# CONFIG_NET_9P is not set
238 256
239# 257#
240# Device Drivers 258# Device Drivers
@@ -245,16 +263,8 @@ CONFIG_TCP_CONG_BIC=y
245# 263#
246CONFIG_STANDALONE=y 264CONFIG_STANDALONE=y
247CONFIG_PREVENT_FIRMWARE_BUILD=y 265CONFIG_PREVENT_FIRMWARE_BUILD=y
248# CONFIG_FW_LOADER is not set 266# CONFIG_SYS_HYPERVISOR is not set
249
250#
251# Connector - unified userspace <-> kernelspace linker
252#
253# CONFIG_CONNECTOR is not set 267# CONFIG_CONNECTOR is not set
254
255#
256# Memory Technology Devices (MTD)
257#
258CONFIG_MTD=y 268CONFIG_MTD=y
259# CONFIG_MTD_DEBUG is not set 269# CONFIG_MTD_DEBUG is not set
260# CONFIG_MTD_CONCAT is not set 270# CONFIG_MTD_CONCAT is not set
@@ -266,11 +276,13 @@ CONFIG_MTD_PARTITIONS=y
266# User Modules And Translation Layers 276# User Modules And Translation Layers
267# 277#
268CONFIG_MTD_CHAR=y 278CONFIG_MTD_CHAR=y
279CONFIG_MTD_BLKDEVS=y
269CONFIG_MTD_BLOCK=y 280CONFIG_MTD_BLOCK=y
270# CONFIG_FTL is not set 281# CONFIG_FTL is not set
271# CONFIG_NFTL is not set 282# CONFIG_NFTL is not set
272# CONFIG_INFTL is not set 283# CONFIG_INFTL is not set
273# CONFIG_RFD_FTL is not set 284# CONFIG_RFD_FTL is not set
285# CONFIG_SSFDC is not set
274 286
275# 287#
276# RAM/ROM/Flash chip drivers 288# RAM/ROM/Flash chip drivers
@@ -290,7 +302,6 @@ CONFIG_MTD_CFI_I2=y
290CONFIG_MTD_RAM=y 302CONFIG_MTD_RAM=y
291# CONFIG_MTD_ROM is not set 303# CONFIG_MTD_ROM is not set
292# CONFIG_MTD_ABSENT is not set 304# CONFIG_MTD_ABSENT is not set
293# CONFIG_MTD_OBSOLETE_CHIPS is not set
294 305
295# 306#
296# Mapping drivers for chip access 307# Mapping drivers for chip access
@@ -313,42 +324,25 @@ CONFIG_MTD_UCLINUX=y
313# CONFIG_MTD_DOC2000 is not set 324# CONFIG_MTD_DOC2000 is not set
314# CONFIG_MTD_DOC2001 is not set 325# CONFIG_MTD_DOC2001 is not set
315# CONFIG_MTD_DOC2001PLUS is not set 326# CONFIG_MTD_DOC2001PLUS is not set
316
317#
318# NAND Flash Device Drivers
319#
320# CONFIG_MTD_NAND is not set 327# CONFIG_MTD_NAND is not set
321
322#
323# OneNAND Flash Device Drivers
324#
325# CONFIG_MTD_ONENAND is not set 328# CONFIG_MTD_ONENAND is not set
326 329
327# 330#
328# Parallel port support 331# UBI - Unsorted block images
329# 332#
333# CONFIG_MTD_UBI is not set
330# CONFIG_PARPORT is not set 334# CONFIG_PARPORT is not set
331 335CONFIG_BLK_DEV=y
332#
333# Plug and Play support
334#
335
336#
337# Block devices
338#
339# CONFIG_BLK_DEV_COW_COMMON is not set 336# CONFIG_BLK_DEV_COW_COMMON is not set
340# CONFIG_BLK_DEV_LOOP is not set 337# CONFIG_BLK_DEV_LOOP is not set
341# CONFIG_BLK_DEV_NBD is not set 338# CONFIG_BLK_DEV_NBD is not set
342CONFIG_BLK_DEV_RAM=y 339CONFIG_BLK_DEV_RAM=y
343CONFIG_BLK_DEV_RAM_COUNT=16 340CONFIG_BLK_DEV_RAM_COUNT=16
344CONFIG_BLK_DEV_RAM_SIZE=4096 341CONFIG_BLK_DEV_RAM_SIZE=4096
345# CONFIG_BLK_DEV_INITRD is not set 342CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
346# CONFIG_CDROM_PKTCDVD is not set 343# CONFIG_CDROM_PKTCDVD is not set
347# CONFIG_ATA_OVER_ETH is not set 344# CONFIG_ATA_OVER_ETH is not set
348 345# CONFIG_MISC_DEVICES is not set
349#
350# ATA/ATAPI/MFM/RLL support
351#
352# CONFIG_IDE is not set 346# CONFIG_IDE is not set
353 347
354# 348#
@@ -356,67 +350,29 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
356# 350#
357# CONFIG_RAID_ATTRS is not set 351# CONFIG_RAID_ATTRS is not set
358# CONFIG_SCSI is not set 352# CONFIG_SCSI is not set
359 353# CONFIG_SCSI_DMA is not set
360# 354# CONFIG_SCSI_NETLINK is not set
361# Multi-device support (RAID and LVM)
362#
363# CONFIG_MD is not set 355# CONFIG_MD is not set
364
365#
366# Fusion MPT device support
367#
368# CONFIG_FUSION is not set
369
370#
371# IEEE 1394 (FireWire) support
372#
373
374#
375# I2O device support
376#
377
378#
379# Network device support
380#
381CONFIG_NETDEVICES=y 356CONFIG_NETDEVICES=y
357# CONFIG_NETDEVICES_MULTIQUEUE is not set
382# CONFIG_DUMMY is not set 358# CONFIG_DUMMY is not set
383# CONFIG_BONDING is not set 359# CONFIG_BONDING is not set
360# CONFIG_MACVLAN is not set
384# CONFIG_EQUALIZER is not set 361# CONFIG_EQUALIZER is not set
385# CONFIG_TUN is not set 362# CONFIG_TUN is not set
386
387#
388# PHY device support
389#
390# CONFIG_PHYLIB is not set 363# CONFIG_PHYLIB is not set
391
392#
393# Ethernet (10 or 100Mbit)
394#
395CONFIG_NET_ETHERNET=y 364CONFIG_NET_ETHERNET=y
396# CONFIG_MII is not set 365# CONFIG_MII is not set
397CONFIG_FEC=y 366CONFIG_FEC=y
398# CONFIG_FEC2 is not set 367# CONFIG_FEC2 is not set
368# CONFIG_NETDEV_1000 is not set
369# CONFIG_NETDEV_10000 is not set
399 370
400# 371#
401# Ethernet (1000 Mbit) 372# Wireless LAN
402#
403
404#
405# Ethernet (10000 Mbit)
406#
407
408#
409# Token Ring devices
410#
411
412#
413# Wireless LAN (non-hamradio)
414#
415# CONFIG_NET_RADIO is not set
416
417#
418# Wan interfaces
419# 373#
374# CONFIG_WLAN_PRE80211 is not set
375# CONFIG_WLAN_80211 is not set
420# CONFIG_WAN is not set 376# CONFIG_WAN is not set
421CONFIG_PPP=y 377CONFIG_PPP=y
422# CONFIG_PPP_MULTILINK is not set 378# CONFIG_PPP_MULTILINK is not set
@@ -427,20 +383,14 @@ CONFIG_PPP=y
427# CONFIG_PPP_BSDCOMP is not set 383# CONFIG_PPP_BSDCOMP is not set
428# CONFIG_PPP_MPPE is not set 384# CONFIG_PPP_MPPE is not set
429# CONFIG_PPPOE is not set 385# CONFIG_PPPOE is not set
386# CONFIG_PPPOL2TP is not set
430# CONFIG_SLIP is not set 387# CONFIG_SLIP is not set
388CONFIG_SLHC=y
431# CONFIG_SHAPER is not set 389# CONFIG_SHAPER is not set
432# CONFIG_NETCONSOLE is not set 390# CONFIG_NETCONSOLE is not set
433# CONFIG_NETPOLL is not set 391# CONFIG_NETPOLL is not set
434# CONFIG_NET_POLL_CONTROLLER is not set 392# CONFIG_NET_POLL_CONTROLLER is not set
435
436#
437# ISDN subsystem
438#
439# CONFIG_ISDN is not set 393# CONFIG_ISDN is not set
440
441#
442# Telephony Support
443#
444# CONFIG_PHONE is not set 394# CONFIG_PHONE is not set
445 395
446# 396#
@@ -472,34 +422,13 @@ CONFIG_SERIAL_COLDFIRE=y
472# CONFIG_UNIX98_PTYS is not set 422# CONFIG_UNIX98_PTYS is not set
473CONFIG_LEGACY_PTYS=y 423CONFIG_LEGACY_PTYS=y
474CONFIG_LEGACY_PTY_COUNT=256 424CONFIG_LEGACY_PTY_COUNT=256
475
476#
477# IPMI
478#
479# CONFIG_IPMI_HANDLER is not set 425# CONFIG_IPMI_HANDLER is not set
480
481#
482# Watchdog Cards
483#
484# CONFIG_WATCHDOG is not set 426# CONFIG_WATCHDOG is not set
427# CONFIG_HW_RANDOM is not set
485# CONFIG_GEN_RTC is not set 428# CONFIG_GEN_RTC is not set
486# CONFIG_DTLK is not set
487# CONFIG_R3964 is not set 429# CONFIG_R3964 is not set
488
489#
490# Ftape, the floppy tape device driver
491#
492# CONFIG_RAW_DRIVER is not set 430# CONFIG_RAW_DRIVER is not set
493
494#
495# TPM devices
496#
497# CONFIG_TCG_TPM is not set 431# CONFIG_TCG_TPM is not set
498# CONFIG_TELCLOCK is not set
499
500#
501# I2C support
502#
503# CONFIG_I2C is not set 432# CONFIG_I2C is not set
504 433
505# 434#
@@ -507,101 +436,74 @@ CONFIG_LEGACY_PTY_COUNT=256
507# 436#
508# CONFIG_SPI is not set 437# CONFIG_SPI is not set
509# CONFIG_SPI_MASTER is not set 438# CONFIG_SPI_MASTER is not set
510
511#
512# Dallas's 1-wire bus
513#
514# CONFIG_W1 is not set 439# CONFIG_W1 is not set
515 440# CONFIG_POWER_SUPPLY is not set
516#
517# Hardware Monitoring support
518#
519# CONFIG_HWMON is not set 441# CONFIG_HWMON is not set
520# CONFIG_HWMON_VID is not set
521 442
522# 443#
523# Misc devices 444# Multifunction device drivers
524# 445#
446# CONFIG_MFD_SM501 is not set
525 447
526# 448#
527# Multimedia devices 449# Multimedia devices
528# 450#
529# CONFIG_VIDEO_DEV is not set 451# CONFIG_VIDEO_DEV is not set
530CONFIG_VIDEO_V4L2=y 452# CONFIG_DVB_CORE is not set
453CONFIG_DAB=y
531 454
532# 455#
533# Digital Video Broadcasting Devices 456# Graphics support
534# 457#
535# CONFIG_DVB is not set 458# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
536 459
537# 460#
538# Graphics support 461# Display device support
539# 462#
463# CONFIG_DISPLAY_SUPPORT is not set
464# CONFIG_VGASTATE is not set
465CONFIG_VIDEO_OUTPUT_CONTROL=y
540# CONFIG_FB is not set 466# CONFIG_FB is not set
541 467
542# 468#
543# Sound 469# Sound
544# 470#
545# CONFIG_SOUND is not set 471# CONFIG_SOUND is not set
546 472# CONFIG_USB_SUPPORT is not set
547#
548# USB support
549#
550# CONFIG_USB_ARCH_HAS_HCD is not set
551# CONFIG_USB_ARCH_HAS_OHCI is not set
552# CONFIG_USB_ARCH_HAS_EHCI is not set
553
554#
555# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
556#
557
558#
559# USB Gadget Support
560#
561# CONFIG_USB_GADGET is not set
562
563#
564# MMC/SD Card support
565#
566# CONFIG_MMC is not set 473# CONFIG_MMC is not set
567
568#
569# LED devices
570#
571# CONFIG_NEW_LEDS is not set 474# CONFIG_NEW_LEDS is not set
475# CONFIG_RTC_CLASS is not set
572 476
573# 477#
574# LED drivers 478# DMA Engine support
575# 479#
480# CONFIG_DMA_ENGINE is not set
576 481
577# 482#
578# LED Triggers 483# DMA Clients
579# 484#
580 485
581# 486#
582# InfiniBand support 487# DMA Devices
583# 488#
584 489
585# 490#
586# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 491# Userspace I/O
587# 492#
588 493# CONFIG_UIO is not set
589#
590# Real Time Clock
591#
592# CONFIG_RTC_CLASS is not set
593 494
594# 495#
595# File systems 496# File systems
596# 497#
597CONFIG_EXT2_FS=y 498CONFIG_EXT2_FS=y
598# CONFIG_EXT2_FS_XATTR is not set 499# CONFIG_EXT2_FS_XATTR is not set
599# CONFIG_EXT2_FS_XIP is not set
600# CONFIG_EXT3_FS is not set 500# CONFIG_EXT3_FS is not set
501# CONFIG_EXT4DEV_FS is not set
601# CONFIG_REISERFS_FS is not set 502# CONFIG_REISERFS_FS is not set
602# CONFIG_JFS_FS is not set 503# CONFIG_JFS_FS is not set
603# CONFIG_FS_POSIX_ACL is not set 504# CONFIG_FS_POSIX_ACL is not set
604# CONFIG_XFS_FS is not set 505# CONFIG_XFS_FS is not set
506# CONFIG_GFS2_FS is not set
605# CONFIG_OCFS2_FS is not set 507# CONFIG_OCFS2_FS is not set
606# CONFIG_MINIX_FS is not set 508# CONFIG_MINIX_FS is not set
607CONFIG_ROMFS_FS=y 509CONFIG_ROMFS_FS=y
@@ -629,6 +531,7 @@ CONFIG_ROMFS_FS=y
629# Pseudo filesystems 531# Pseudo filesystems
630# 532#
631CONFIG_PROC_FS=y 533CONFIG_PROC_FS=y
534CONFIG_PROC_SYSCTL=y
632CONFIG_SYSFS=y 535CONFIG_SYSFS=y
633# CONFIG_TMPFS is not set 536# CONFIG_TMPFS is not set
634# CONFIG_HUGETLB_PAGE is not set 537# CONFIG_HUGETLB_PAGE is not set
@@ -645,7 +548,6 @@ CONFIG_RAMFS=y
645# CONFIG_BEFS_FS is not set 548# CONFIG_BEFS_FS is not set
646# CONFIG_BFS_FS is not set 549# CONFIG_BFS_FS is not set
647# CONFIG_EFS_FS is not set 550# CONFIG_EFS_FS is not set
648# CONFIG_JFFS_FS is not set
649# CONFIG_JFFS2_FS is not set 551# CONFIG_JFFS2_FS is not set
650# CONFIG_CRAMFS is not set 552# CONFIG_CRAMFS is not set
651# CONFIG_VXFS_FS is not set 553# CONFIG_VXFS_FS is not set
@@ -664,7 +566,6 @@ CONFIG_RAMFS=y
664# CONFIG_NCP_FS is not set 566# CONFIG_NCP_FS is not set
665# CONFIG_CODA_FS is not set 567# CONFIG_CODA_FS is not set
666# CONFIG_AFS_FS is not set 568# CONFIG_AFS_FS is not set
667# CONFIG_9P_FS is not set
668 569
669# 570#
670# Partition Types 571# Partition Types
@@ -678,15 +579,21 @@ CONFIG_MSDOS_PARTITION=y
678# CONFIG_NLS is not set 579# CONFIG_NLS is not set
679 580
680# 581#
582# Distributed Lock Manager
583#
584# CONFIG_DLM is not set
585
586#
681# Kernel hacking 587# Kernel hacking
682# 588#
683# CONFIG_PRINTK_TIME is not set 589# CONFIG_PRINTK_TIME is not set
590# CONFIG_ENABLE_MUST_CHECK is not set
684# CONFIG_MAGIC_SYSRQ is not set 591# CONFIG_MAGIC_SYSRQ is not set
592# CONFIG_UNUSED_SYMBOLS is not set
593# CONFIG_DEBUG_FS is not set
594# CONFIG_HEADERS_CHECK is not set
685# CONFIG_DEBUG_KERNEL is not set 595# CONFIG_DEBUG_KERNEL is not set
686CONFIG_LOG_BUF_SHIFT=14
687# CONFIG_DEBUG_BUGVERBOSE is not set 596# CONFIG_DEBUG_BUGVERBOSE is not set
688# CONFIG_DEBUG_FS is not set
689# CONFIG_UNWIND_INFO is not set
690# CONFIG_FULLDEBUG is not set 597# CONFIG_FULLDEBUG is not set
691# CONFIG_HIGHPROFILE is not set 598# CONFIG_HIGHPROFILE is not set
692# CONFIG_BOOTPARAM is not set 599# CONFIG_BOOTPARAM is not set
@@ -699,20 +606,16 @@ CONFIG_LOG_BUF_SHIFT=14
699# 606#
700# CONFIG_KEYS is not set 607# CONFIG_KEYS is not set
701# CONFIG_SECURITY is not set 608# CONFIG_SECURITY is not set
702
703#
704# Cryptographic options
705#
706# CONFIG_CRYPTO is not set 609# CONFIG_CRYPTO is not set
707 610
708# 611#
709# Hardware crypto devices
710#
711
712#
713# Library routines 612# Library routines
714# 613#
715# CONFIG_CRC_CCITT is not set 614# CONFIG_CRC_CCITT is not set
716# CONFIG_CRC16 is not set 615# CONFIG_CRC16 is not set
616# CONFIG_CRC_ITU_T is not set
717# CONFIG_CRC32 is not set 617# CONFIG_CRC32 is not set
618# CONFIG_CRC7 is not set
718# CONFIG_LIBCRC32C is not set 619# CONFIG_LIBCRC32C is not set
620CONFIG_HAS_IOMEM=y
621CONFIG_HAS_DMA=y
diff --git a/arch/m68knommu/kernel/setup.c b/arch/m68knommu/kernel/setup.c
index 3f86ade3a22a..74bf94948ec2 100644
--- a/arch/m68knommu/kernel/setup.c
+++ b/arch/m68knommu/kernel/setup.c
@@ -151,27 +151,15 @@ void setup_arch(char **cmdline_p)
151#ifdef CONFIG_ELITE 151#ifdef CONFIG_ELITE
152 printk(KERN_INFO "Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n"); 152 printk(KERN_INFO "Modified for M5206eLITE by Rob Scott, rscott@mtrob.fdns.net\n");
153#endif 153#endif
154#ifdef CONFIG_TELOS
155 printk(KERN_INFO "Modified for Omnia ToolVox by James D. Schettine, james@telos-systems.com\n");
156#endif
157#endif 154#endif
158 printk(KERN_INFO "Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n"); 155 printk(KERN_INFO "Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne\n");
159 156
160#if defined( CONFIG_PILOT ) && defined( CONFIG_M68328 ) 157#if defined( CONFIG_PILOT ) && defined( CONFIG_M68328 )
161 printk(KERN_INFO "TRG SuperPilot FLASH card support <info@trgnet.com>\n"); 158 printk(KERN_INFO "TRG SuperPilot FLASH card support <info@trgnet.com>\n");
162#endif 159#endif
163
164#if defined( CONFIG_PILOT ) && defined( CONFIG_M68EZ328 ) 160#if defined( CONFIG_PILOT ) && defined( CONFIG_M68EZ328 )
165 printk(KERN_INFO "PalmV support by Lineo Inc. <jeff@uclinux.com>\n"); 161 printk(KERN_INFO "PalmV support by Lineo Inc. <jeff@uclinux.com>\n");
166#endif 162#endif
167
168#ifdef CONFIG_M68EZ328ADS
169 printk(KERN_INFO "M68EZ328ADS board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n");
170#endif
171
172#ifdef CONFIG_ALMA_ANS
173 printk(KERN_INFO "Alma Electronics board support (C) 1999 Vladimir Gurevich <vgurevic@cisco.com>\n");
174#endif
175#if defined (CONFIG_M68360) 163#if defined (CONFIG_M68360)
176 printk(KERN_INFO "QUICC port done by SED Systems <hamilton@sedsystems.ca>,\n"); 164 printk(KERN_INFO "QUICC port done by SED Systems <hamilton@sedsystems.ca>,\n");
177 printk(KERN_INFO "based on 2.0.38 port by Lineo Inc. <mleslie@lineo.com>.\n"); 165 printk(KERN_INFO "based on 2.0.38 port by Lineo Inc. <mleslie@lineo.com>.\n");
@@ -188,11 +176,9 @@ void setup_arch(char **cmdline_p)
188 "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext, 176 "BSS=0x%06x-0x%06x\n", (int) &_stext, (int) &_etext,
189 (int) &_sdata, (int) &_edata, 177 (int) &_sdata, (int) &_edata,
190 (int) &_sbss, (int) &_ebss); 178 (int) &_sbss, (int) &_ebss);
191 printk(KERN_DEBUG "KERNEL -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x " 179 printk(KERN_DEBUG "MEMORY -> ROMFS=0x%06x-0x%06x MEM=0x%06x-0x%06x\n ",
192 "STACK=0x%06x-0x%06x\n",
193 (int) &_ebss, (int) memory_start, 180 (int) &_ebss, (int) memory_start,
194 (int) memory_start, (int) memory_end, 181 (int) memory_start, (int) memory_end);
195 (int) memory_end, (int) _ramend);
196#endif 182#endif
197 183
198 /* Keep a copy of command line */ 184 /* Keep a copy of command line */
@@ -287,12 +273,3 @@ struct seq_operations cpuinfo_op = {
287 .show = show_cpuinfo, 273 .show = show_cpuinfo,
288}; 274};
289 275
290void arch_gettod(int *year, int *mon, int *day, int *hour,
291 int *min, int *sec)
292{
293 if (mach_gettod)
294 mach_gettod(year, mon, day, hour, min, sec);
295 else
296 *year = *mon = *day = *hour = *min = *sec = 0;
297}
298
diff --git a/arch/m68knommu/kernel/signal.c b/arch/m68knommu/kernel/signal.c
index 437f8c6c14a0..70371378db86 100644
--- a/arch/m68knommu/kernel/signal.c
+++ b/arch/m68knommu/kernel/signal.c
@@ -781,15 +781,7 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs *regs)
781 /* Did we come from a system call? */ 781 /* Did we come from a system call? */
782 if (regs->orig_d0 >= 0) { 782 if (regs->orig_d0 >= 0) {
783 /* Restart the system call - no handlers present */ 783 /* Restart the system call - no handlers present */
784 if (regs->d0 == -ERESTARTNOHAND 784 handle_restart(regs, NULL, 0);
785 || regs->d0 == -ERESTARTSYS
786 || regs->d0 == -ERESTARTNOINTR) {
787 regs->d0 = regs->orig_d0;
788 regs->pc -= 2;
789 } else if (regs->d0 == -ERESTART_RESTARTBLOCK) {
790 regs->d0 = __NR_restart_syscall;
791 regs->pc -= 2;
792 }
793 } 785 }
794 return 0; 786 return 0;
795} 787}
diff --git a/arch/m68knommu/kernel/time.c b/arch/m68knommu/kernel/time.c
index 467053da2d08..77e5375a2dd5 100644
--- a/arch/m68knommu/kernel/time.c
+++ b/arch/m68knommu/kernel/time.c
@@ -27,7 +27,6 @@
27 27
28#define TICK_SIZE (tick_nsec / 1000) 28#define TICK_SIZE (tick_nsec / 1000)
29 29
30
31static inline int set_rtc_mmss(unsigned long nowtime) 30static inline int set_rtc_mmss(unsigned long nowtime)
32{ 31{
33 if (mach_set_clock_mmss) 32 if (mach_set_clock_mmss)
@@ -39,15 +38,11 @@ static inline int set_rtc_mmss(unsigned long nowtime)
39 * timer_interrupt() needs to keep up the real-time clock, 38 * timer_interrupt() needs to keep up the real-time clock,
40 * as well as call the "do_timer()" routine every clocktick 39 * as well as call the "do_timer()" routine every clocktick
41 */ 40 */
42static irqreturn_t timer_interrupt(int irq, void *dummy) 41irqreturn_t arch_timer_interrupt(int irq, void *dummy)
43{ 42{
44 /* last time the cmos clock got updated */ 43 /* last time the cmos clock got updated */
45 static long last_rtc_update=0; 44 static long last_rtc_update=0;
46 45
47 /* may need to kick the hardware timer */
48 if (mach_tick)
49 mach_tick();
50
51 write_seqlock(&xtime_lock); 46 write_seqlock(&xtime_lock);
52 47
53 do_timer(1); 48 do_timer(1);
@@ -103,10 +98,10 @@ void time_init(void)
103{ 98{
104 unsigned int year, mon, day, hour, min, sec; 99 unsigned int year, mon, day, hour, min, sec;
105 100
106 extern void arch_gettod(int *year, int *mon, int *day, int *hour, 101 if (mach_gettod)
107 int *min, int *sec); 102 mach_gettod(&year, &mon, &day, &hour, &min, &sec);
108 103 else
109 arch_gettod(&year, &mon, &day, &hour, &min, &sec); 104 year = mon = day = hour = min = sec = 0;
110 105
111 if ((year += 1900) < 1970) 106 if ((year += 1900) < 1970)
112 year += 100; 107 year += 100;
@@ -114,7 +109,7 @@ void time_init(void)
114 xtime.tv_nsec = 0; 109 xtime.tv_nsec = 0;
115 wall_to_monotonic.tv_sec = -xtime.tv_sec; 110 wall_to_monotonic.tv_sec = -xtime.tv_sec;
116 111
117 mach_sched_init(timer_interrupt); 112 hw_timer_init();
118} 113}
119 114
120/* 115/*
@@ -128,7 +123,7 @@ void do_gettimeofday(struct timeval *tv)
128 123
129 do { 124 do {
130 seq = read_seqbegin_irqsave(&xtime_lock, flags); 125 seq = read_seqbegin_irqsave(&xtime_lock, flags);
131 usec = mach_gettimeoffset ? mach_gettimeoffset() : 0; 126 usec = hw_timer_offset();
132 sec = xtime.tv_sec; 127 sec = xtime.tv_sec;
133 usec += (xtime.tv_nsec / 1000); 128 usec += (xtime.tv_nsec / 1000);
134 } while (read_seqretry_irqrestore(&xtime_lock, seq, flags)); 129 } while (read_seqretry_irqrestore(&xtime_lock, seq, flags));
@@ -160,8 +155,7 @@ int do_settimeofday(struct timespec *tv)
160 * Discover what correction gettimeofday 155 * Discover what correction gettimeofday
161 * would have done, and then undo it! 156 * would have done, and then undo it!
162 */ 157 */
163 if (mach_gettimeoffset) 158 nsec -= (hw_timer_offset() * 1000);
164 nsec -= (mach_gettimeoffset() * 1000);
165 159
166 wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec); 160 wtm_sec = wall_to_monotonic.tv_sec + (xtime.tv_sec - sec);
167 wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec); 161 wtm_nsec = wall_to_monotonic.tv_nsec + (xtime.tv_nsec - nsec);
diff --git a/arch/m68knommu/platform/5206/config.c b/arch/m68knommu/platform/5206/config.c
index d0f2dc5cb5a1..b3c4dd4cc135 100644
--- a/arch/m68knommu/platform/5206/config.c
+++ b/arch/m68knommu/platform/5206/config.c
@@ -10,13 +10,10 @@
10/***************************************************************************/ 10/***************************************************************************/
11 11
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/sched.h>
14#include <linux/param.h> 13#include <linux/param.h>
15#include <linux/init.h> 14#include <linux/init.h>
16#include <linux/interrupt.h> 15#include <linux/interrupt.h>
17#include <asm/irq.h>
18#include <asm/dma.h> 16#include <asm/dma.h>
19#include <asm/traps.h>
20#include <asm/machdep.h> 17#include <asm/machdep.h>
21#include <asm/coldfire.h> 18#include <asm/coldfire.h>
22#include <asm/mcftimer.h> 19#include <asm/mcftimer.h>
@@ -25,9 +22,6 @@
25 22
26/***************************************************************************/ 23/***************************************************************************/
27 24
28void coldfire_tick(void);
29void coldfire_timer_init(irq_handler_t handler);
30unsigned long coldfire_timer_offset(void);
31void coldfire_reset(void); 25void coldfire_reset(void);
32 26
33/***************************************************************************/ 27/***************************************************************************/
@@ -97,9 +91,6 @@ int mcf_timerirqpending(int timer)
97void config_BSP(char *commandp, int size) 91void config_BSP(char *commandp, int size)
98{ 92{
99 mcf_setimr(MCFSIM_IMR_MASKALL); 93 mcf_setimr(MCFSIM_IMR_MASKALL);
100 mach_sched_init = coldfire_timer_init;
101 mach_tick = coldfire_tick;
102 mach_gettimeoffset = coldfire_timer_offset;
103 mach_reset = coldfire_reset; 94 mach_reset = coldfire_reset;
104} 95}
105 96
diff --git a/arch/m68knommu/platform/5206e/config.c b/arch/m68knommu/platform/5206e/config.c
index 425703fb6cee..f84a4aea8cb6 100644
--- a/arch/m68knommu/platform/5206e/config.c
+++ b/arch/m68knommu/platform/5206e/config.c
@@ -9,23 +9,16 @@
9/***************************************************************************/ 9/***************************************************************************/
10 10
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/sched.h>
13#include <linux/param.h> 12#include <linux/param.h>
14#include <linux/interrupt.h> 13#include <linux/interrupt.h>
15#include <asm/irq.h>
16#include <asm/dma.h> 14#include <asm/dma.h>
17#include <asm/traps.h>
18#include <asm/machdep.h> 15#include <asm/machdep.h>
19#include <asm/coldfire.h> 16#include <asm/coldfire.h>
20#include <asm/mcftimer.h>
21#include <asm/mcfsim.h> 17#include <asm/mcfsim.h>
22#include <asm/mcfdma.h> 18#include <asm/mcfdma.h>
23 19
24/***************************************************************************/ 20/***************************************************************************/
25 21
26void coldfire_tick(void);
27void coldfire_timer_init(irq_handler_t handler);
28unsigned long coldfire_timer_offset(void);
29void coldfire_reset(void); 22void coldfire_reset(void);
30 23
31/***************************************************************************/ 24/***************************************************************************/
@@ -102,9 +95,6 @@ void config_BSP(char *commandp, int size)
102 commandp[size-1] = 0; 95 commandp[size-1] = 0;
103#endif /* CONFIG_NETtel */ 96#endif /* CONFIG_NETtel */
104 97
105 mach_sched_init = coldfire_timer_init;
106 mach_tick = coldfire_tick;
107 mach_gettimeoffset = coldfire_timer_offset;
108 mach_reset = coldfire_reset; 98 mach_reset = coldfire_reset;
109} 99}
110 100
diff --git a/arch/m68knommu/platform/520x/config.c b/arch/m68knommu/platform/520x/config.c
index a2c95bebd004..6edbd41261cc 100644
--- a/arch/m68knommu/platform/520x/config.c
+++ b/arch/m68knommu/platform/520x/config.c
@@ -27,9 +27,6 @@ unsigned int dma_device_address[MAX_M68K_DMA_CHANNELS];
27 27
28/***************************************************************************/ 28/***************************************************************************/
29 29
30void coldfire_pit_tick(void);
31void coldfire_pit_init(irq_handler_t handler);
32unsigned long coldfire_pit_offset(void);
33void coldfire_reset(void); 30void coldfire_reset(void);
34 31
35/***************************************************************************/ 32/***************************************************************************/
@@ -47,10 +44,7 @@ void mcf_autovector(unsigned int vec)
47 44
48void config_BSP(char *commandp, int size) 45void config_BSP(char *commandp, int size)
49{ 46{
50 mach_sched_init = coldfire_pit_init; 47 mach_reset = coldfire_reset;
51 mach_tick = coldfire_pit_tick;
52 mach_gettimeoffset = coldfire_pit_offset;
53 mach_reset = coldfire_reset;
54} 48}
55 49
56/***************************************************************************/ 50/***************************************************************************/
diff --git a/arch/m68knommu/platform/523x/config.c b/arch/m68knommu/platform/523x/config.c
index 0a3af05a434b..e7f80c8e8636 100644
--- a/arch/m68knommu/platform/523x/config.c
+++ b/arch/m68knommu/platform/523x/config.c
@@ -13,12 +13,10 @@
13/***************************************************************************/ 13/***************************************************************************/
14 14
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/sched.h>
17#include <linux/param.h> 16#include <linux/param.h>
18#include <linux/init.h> 17#include <linux/init.h>
19#include <linux/interrupt.h> 18#include <linux/interrupt.h>
20#include <asm/dma.h> 19#include <asm/dma.h>
21#include <asm/traps.h>
22#include <asm/machdep.h> 20#include <asm/machdep.h>
23#include <asm/coldfire.h> 21#include <asm/coldfire.h>
24#include <asm/mcfsim.h> 22#include <asm/mcfsim.h>
@@ -26,9 +24,6 @@
26 24
27/***************************************************************************/ 25/***************************************************************************/
28 26
29void coldfire_pit_tick(void);
30void coldfire_pit_init(irq_handler_t handler);
31unsigned long coldfire_pit_offset(void);
32void coldfire_reset(void); 27void coldfire_reset(void);
33 28
34/***************************************************************************/ 29/***************************************************************************/
@@ -62,9 +57,6 @@ void mcf_autovector(unsigned int vec)
62void config_BSP(char *commandp, int size) 57void config_BSP(char *commandp, int size)
63{ 58{
64 mcf_disableall(); 59 mcf_disableall();
65 mach_sched_init = coldfire_pit_init;
66 mach_tick = coldfire_pit_tick;
67 mach_gettimeoffset = coldfire_pit_offset;
68 mach_reset = coldfire_reset; 60 mach_reset = coldfire_reset;
69} 61}
70 62
diff --git a/arch/m68knommu/platform/5249/config.c b/arch/m68knommu/platform/5249/config.c
index dc2c362590c2..d4d39435cb15 100644
--- a/arch/m68knommu/platform/5249/config.c
+++ b/arch/m68knommu/platform/5249/config.c
@@ -9,24 +9,17 @@
9/***************************************************************************/ 9/***************************************************************************/
10 10
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/sched.h>
13#include <linux/param.h> 12#include <linux/param.h>
14#include <linux/init.h> 13#include <linux/init.h>
15#include <linux/interrupt.h> 14#include <linux/interrupt.h>
16#include <asm/irq.h>
17#include <asm/dma.h> 15#include <asm/dma.h>
18#include <asm/traps.h>
19#include <asm/machdep.h> 16#include <asm/machdep.h>
20#include <asm/coldfire.h> 17#include <asm/coldfire.h>
21#include <asm/mcftimer.h>
22#include <asm/mcfsim.h> 18#include <asm/mcfsim.h>
23#include <asm/mcfdma.h> 19#include <asm/mcfdma.h>
24 20
25/***************************************************************************/ 21/***************************************************************************/
26 22
27void coldfire_tick(void);
28void coldfire_timer_init(irq_handler_t handler);
29unsigned long coldfire_timer_offset(void);
30void coldfire_reset(void); 23void coldfire_reset(void);
31 24
32/***************************************************************************/ 25/***************************************************************************/
@@ -95,9 +88,6 @@ int mcf_timerirqpending(int timer)
95void config_BSP(char *commandp, int size) 88void config_BSP(char *commandp, int size)
96{ 89{
97 mcf_setimr(MCFSIM_IMR_MASKALL); 90 mcf_setimr(MCFSIM_IMR_MASKALL);
98 mach_sched_init = coldfire_timer_init;
99 mach_tick = coldfire_tick;
100 mach_gettimeoffset = coldfire_timer_offset;
101 mach_reset = coldfire_reset; 91 mach_reset = coldfire_reset;
102} 92}
103 93
diff --git a/arch/m68knommu/platform/5272/config.c b/arch/m68knommu/platform/5272/config.c
index 1365a8300d5d..634a6375e4a5 100644
--- a/arch/m68knommu/platform/5272/config.c
+++ b/arch/m68knommu/platform/5272/config.c
@@ -10,24 +10,17 @@
10/***************************************************************************/ 10/***************************************************************************/
11 11
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/sched.h>
14#include <linux/param.h> 13#include <linux/param.h>
15#include <linux/init.h> 14#include <linux/init.h>
16#include <linux/interrupt.h> 15#include <linux/interrupt.h>
17#include <asm/irq.h>
18#include <asm/dma.h> 16#include <asm/dma.h>
19#include <asm/traps.h>
20#include <asm/machdep.h> 17#include <asm/machdep.h>
21#include <asm/coldfire.h> 18#include <asm/coldfire.h>
22#include <asm/mcftimer.h>
23#include <asm/mcfsim.h> 19#include <asm/mcfsim.h>
24#include <asm/mcfdma.h> 20#include <asm/mcfdma.h>
25 21
26/***************************************************************************/ 22/***************************************************************************/
27 23
28void coldfire_tick(void);
29void coldfire_timer_init(irq_handler_t handler);
30unsigned long coldfire_timer_offset(void);
31void coldfire_reset(void); 24void coldfire_reset(void);
32 25
33extern unsigned int mcf_timervector; 26extern unsigned int mcf_timervector;
@@ -128,9 +121,6 @@ void config_BSP(char *commandp, int size)
128 121
129 mcf_timervector = 69; 122 mcf_timervector = 69;
130 mcf_profilevector = 70; 123 mcf_profilevector = 70;
131 mach_sched_init = coldfire_timer_init;
132 mach_tick = coldfire_tick;
133 mach_gettimeoffset = coldfire_timer_offset;
134 mach_reset = coldfire_reset; 124 mach_reset = coldfire_reset;
135} 125}
136 126
diff --git a/arch/m68knommu/platform/527x/config.c b/arch/m68knommu/platform/527x/config.c
index 1b820441419a..9cbfbc68ae4f 100644
--- a/arch/m68knommu/platform/527x/config.c
+++ b/arch/m68knommu/platform/527x/config.c
@@ -13,12 +13,10 @@
13/***************************************************************************/ 13/***************************************************************************/
14 14
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/sched.h>
17#include <linux/param.h> 16#include <linux/param.h>
18#include <linux/init.h> 17#include <linux/init.h>
19#include <linux/interrupt.h> 18#include <linux/interrupt.h>
20#include <asm/dma.h> 19#include <asm/dma.h>
21#include <asm/traps.h>
22#include <asm/machdep.h> 20#include <asm/machdep.h>
23#include <asm/coldfire.h> 21#include <asm/coldfire.h>
24#include <asm/mcfsim.h> 22#include <asm/mcfsim.h>
@@ -26,9 +24,6 @@
26 24
27/***************************************************************************/ 25/***************************************************************************/
28 26
29void coldfire_pit_tick(void);
30void coldfire_pit_init(irq_handler_t handler);
31unsigned long coldfire_pit_offset(void);
32void coldfire_reset(void); 27void coldfire_reset(void);
33 28
34/***************************************************************************/ 29/***************************************************************************/
@@ -62,9 +57,6 @@ void mcf_autovector(unsigned int vec)
62void config_BSP(char *commandp, int size) 57void config_BSP(char *commandp, int size)
63{ 58{
64 mcf_disableall(); 59 mcf_disableall();
65 mach_sched_init = coldfire_pit_init;
66 mach_tick = coldfire_pit_tick;
67 mach_gettimeoffset = coldfire_pit_offset;
68 mach_reset = coldfire_reset; 60 mach_reset = coldfire_reset;
69} 61}
70 62
diff --git a/arch/m68knommu/platform/528x/config.c b/arch/m68knommu/platform/528x/config.c
index a089e9513699..acbd43486d97 100644
--- a/arch/m68knommu/platform/528x/config.c
+++ b/arch/m68knommu/platform/528x/config.c
@@ -13,12 +13,10 @@
13/***************************************************************************/ 13/***************************************************************************/
14 14
15#include <linux/kernel.h> 15#include <linux/kernel.h>
16#include <linux/sched.h>
17#include <linux/param.h> 16#include <linux/param.h>
18#include <linux/init.h> 17#include <linux/init.h>
19#include <linux/interrupt.h> 18#include <linux/interrupt.h>
20#include <asm/dma.h> 19#include <asm/dma.h>
21#include <asm/traps.h>
22#include <asm/machdep.h> 20#include <asm/machdep.h>
23#include <asm/coldfire.h> 21#include <asm/coldfire.h>
24#include <asm/mcfsim.h> 22#include <asm/mcfsim.h>
@@ -26,9 +24,6 @@
26 24
27/***************************************************************************/ 25/***************************************************************************/
28 26
29void coldfire_pit_tick(void);
30void coldfire_pit_init(irq_handler_t handler);
31unsigned long coldfire_pit_offset(void);
32void coldfire_reset(void); 27void coldfire_reset(void);
33 28
34/***************************************************************************/ 29/***************************************************************************/
@@ -62,9 +57,6 @@ void mcf_autovector(unsigned int vec)
62void config_BSP(char *commandp, int size) 57void config_BSP(char *commandp, int size)
63{ 58{
64 mcf_disableall(); 59 mcf_disableall();
65 mach_sched_init = coldfire_pit_init;
66 mach_tick = coldfire_pit_tick;
67 mach_gettimeoffset = coldfire_pit_offset;
68 mach_reset = coldfire_reset; 60 mach_reset = coldfire_reset;
69} 61}
70 62
diff --git a/arch/m68knommu/platform/5307/config.c b/arch/m68knommu/platform/5307/config.c
index e3461619fd65..6040821e637d 100644
--- a/arch/m68knommu/platform/5307/config.c
+++ b/arch/m68knommu/platform/5307/config.c
@@ -10,25 +10,18 @@
10/***************************************************************************/ 10/***************************************************************************/
11 11
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/sched.h>
14#include <linux/param.h> 13#include <linux/param.h>
15#include <linux/init.h> 14#include <linux/init.h>
16#include <linux/interrupt.h> 15#include <linux/interrupt.h>
17#include <asm/irq.h>
18#include <asm/dma.h> 16#include <asm/dma.h>
19#include <asm/traps.h>
20#include <asm/machdep.h> 17#include <asm/machdep.h>
21#include <asm/coldfire.h> 18#include <asm/coldfire.h>
22#include <asm/mcftimer.h>
23#include <asm/mcfsim.h> 19#include <asm/mcfsim.h>
24#include <asm/mcfdma.h> 20#include <asm/mcfdma.h>
25#include <asm/mcfwdebug.h> 21#include <asm/mcfwdebug.h>
26 22
27/***************************************************************************/ 23/***************************************************************************/
28 24
29void coldfire_tick(void);
30void coldfire_timer_init(irq_handler_t handler);
31unsigned long coldfire_timer_offset(void);
32void coldfire_reset(void); 25void coldfire_reset(void);
33 26
34extern unsigned int mcf_timervector; 27extern unsigned int mcf_timervector;
@@ -122,9 +115,6 @@ void config_BSP(char *commandp, int size)
122 mcf_timerlevel = 6; 115 mcf_timerlevel = 6;
123#endif 116#endif
124 117
125 mach_sched_init = coldfire_timer_init;
126 mach_tick = coldfire_tick;
127 mach_gettimeoffset = coldfire_timer_offset;
128 mach_reset = coldfire_reset; 118 mach_reset = coldfire_reset;
129 119
130#ifdef MCF_BDM_DISABLE 120#ifdef MCF_BDM_DISABLE
diff --git a/arch/m68knommu/platform/5307/entry.S b/arch/m68knommu/platform/5307/entry.S
index a8cd867805ca..b333731b875a 100644
--- a/arch/m68knommu/platform/5307/entry.S
+++ b/arch/m68knommu/platform/5307/entry.S
@@ -74,7 +74,8 @@ ENTRY(system_call)
74 movel %sp,%d2 /* get thread_info pointer */ 74 movel %sp,%d2 /* get thread_info pointer */
75 andl #-THREAD_SIZE,%d2 /* at start of kernel stack */ 75 andl #-THREAD_SIZE,%d2 /* at start of kernel stack */
76 movel %d2,%a0 76 movel %d2,%a0
77 movel %sp,%a0@(THREAD_ESP0) /* save top of frame */ 77 movel %a0@,%a1 /* save top of frame */
78 movel %sp,%a1@(TASK_THREAD+THREAD_ESP0)
78 btst #(TIF_SYSCALL_TRACE%8),%a0@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8) 79 btst #(TIF_SYSCALL_TRACE%8),%a0@(TI_FLAGS+(31-TIF_SYSCALL_TRACE)/8)
79 bnes 1f 80 bnes 1f
80 81
@@ -83,6 +84,8 @@ ENTRY(system_call)
83 movel %d0,%sp@(PT_D0) /* save the return value */ 84 movel %d0,%sp@(PT_D0) /* save the return value */
84 jra ret_from_exception 85 jra ret_from_exception
851: 861:
87 movel #-ENOSYS,%d2 /* strace needs -ENOSYS in PT_D0 */
88 movel %d2,PT_D0(%sp) /* on syscall entry */
86 subql #4,%sp 89 subql #4,%sp
87 SAVE_SWITCH_STACK 90 SAVE_SWITCH_STACK
88 jbsr syscall_trace 91 jbsr syscall_trace
diff --git a/arch/m68knommu/platform/5307/pit.c b/arch/m68knommu/platform/5307/pit.c
index f18352fa35a6..173b754d1cda 100644
--- a/arch/m68knommu/platform/5307/pit.c
+++ b/arch/m68knommu/platform/5307/pit.c
@@ -17,6 +17,7 @@
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/interrupt.h> 18#include <linux/interrupt.h>
19#include <linux/irq.h> 19#include <linux/irq.h>
20#include <asm/machdep.h>
20#include <asm/io.h> 21#include <asm/io.h>
21#include <asm/coldfire.h> 22#include <asm/coldfire.h>
22#include <asm/mcfpit.h> 23#include <asm/mcfpit.h>
@@ -31,28 +32,30 @@
31 32
32/***************************************************************************/ 33/***************************************************************************/
33 34
34void coldfire_pit_tick(void) 35static irqreturn_t hw_tick(int irq, void *dummy)
35{ 36{
36 unsigned short pcsr; 37 unsigned short pcsr;
37 38
38 /* Reset the ColdFire timer */ 39 /* Reset the ColdFire timer */
39 pcsr = __raw_readw(TA(MCFPIT_PCSR)); 40 pcsr = __raw_readw(TA(MCFPIT_PCSR));
40 __raw_writew(pcsr | MCFPIT_PCSR_PIF, TA(MCFPIT_PCSR)); 41 __raw_writew(pcsr | MCFPIT_PCSR_PIF, TA(MCFPIT_PCSR));
42
43 return arch_timer_interrupt(irq, dummy);
41} 44}
42 45
43/***************************************************************************/ 46/***************************************************************************/
44 47
45static struct irqaction coldfire_pit_irq = { 48static struct irqaction coldfire_pit_irq = {
46 .name = "timer", 49 .name = "timer",
47 .flags = IRQF_DISABLED | IRQF_TIMER, 50 .flags = IRQF_DISABLED | IRQF_TIMER,
51 .handler = hw_tick,
48}; 52};
49 53
50void coldfire_pit_init(irq_handler_t handler) 54void hw_timer_init(void)
51{ 55{
52 volatile unsigned char *icrp; 56 volatile unsigned char *icrp;
53 volatile unsigned long *imrp; 57 volatile unsigned long *imrp;
54 58
55 coldfire_pit_irq.handler = handler;
56 setup_irq(MCFINT_VECBASE + MCFINT_PIT1, &coldfire_pit_irq); 59 setup_irq(MCFINT_VECBASE + MCFINT_PIT1, &coldfire_pit_irq);
57 60
58 icrp = (volatile unsigned char *) (MCF_IPSBAR + MCFICM_INTC0 + 61 icrp = (volatile unsigned char *) (MCF_IPSBAR + MCFICM_INTC0 +
@@ -71,7 +74,7 @@ void coldfire_pit_init(irq_handler_t handler)
71 74
72/***************************************************************************/ 75/***************************************************************************/
73 76
74unsigned long coldfire_pit_offset(void) 77unsigned long hw_timer_offset(void)
75{ 78{
76 volatile unsigned long *ipr; 79 volatile unsigned long *ipr;
77 unsigned long pmr, pcntr, offset; 80 unsigned long pmr, pcntr, offset;
diff --git a/arch/m68knommu/platform/5307/timers.c b/arch/m68knommu/platform/5307/timers.c
index 64bd0ff9029e..489dec85c859 100644
--- a/arch/m68knommu/platform/5307/timers.c
+++ b/arch/m68knommu/platform/5307/timers.c
@@ -9,10 +9,9 @@
9/***************************************************************************/ 9/***************************************************************************/
10 10
11#include <linux/kernel.h> 11#include <linux/kernel.h>
12#include <linux/init.h>
12#include <linux/sched.h> 13#include <linux/sched.h>
13#include <linux/param.h>
14#include <linux/interrupt.h> 14#include <linux/interrupt.h>
15#include <linux/init.h>
16#include <linux/irq.h> 15#include <linux/irq.h>
17#include <asm/io.h> 16#include <asm/io.h>
18#include <asm/traps.h> 17#include <asm/traps.h>
@@ -54,24 +53,28 @@ extern int mcf_timerirqpending(int timer);
54 53
55/***************************************************************************/ 54/***************************************************************************/
56 55
57void coldfire_tick(void) 56static irqreturn_t hw_tick(int irq, void *dummy)
58{ 57{
59 /* Reset the ColdFire timer */ 58 /* Reset the ColdFire timer */
60 __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, TA(MCFTIMER_TER)); 59 __raw_writeb(MCFTIMER_TER_CAP | MCFTIMER_TER_REF, TA(MCFTIMER_TER));
60
61 return arch_timer_interrupt(irq, dummy);
61} 62}
62 63
63/***************************************************************************/ 64/***************************************************************************/
64 65
65static struct irqaction coldfire_timer_irq = { 66static struct irqaction coldfire_timer_irq = {
66 .name = "timer", 67 .name = "timer",
67 .flags = IRQF_DISABLED | IRQF_TIMER, 68 .flags = IRQF_DISABLED | IRQF_TIMER,
69 .handler = hw_tick,
68}; 70};
69 71
72/***************************************************************************/
73
70static int ticks_per_intr; 74static int ticks_per_intr;
71 75
72void coldfire_timer_init(irq_handler_t handler) 76void hw_timer_init(void)
73{ 77{
74 coldfire_timer_irq.handler = handler;
75 setup_irq(mcf_timervector, &coldfire_timer_irq); 78 setup_irq(mcf_timervector, &coldfire_timer_irq);
76 79
77 __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR)); 80 __raw_writew(MCFTIMER_TMR_DISABLE, TA(MCFTIMER_TMR));
@@ -89,7 +92,7 @@ void coldfire_timer_init(irq_handler_t handler)
89 92
90/***************************************************************************/ 93/***************************************************************************/
91 94
92unsigned long coldfire_timer_offset(void) 95unsigned long hw_timer_offset(void)
93{ 96{
94 unsigned long tcn, offset; 97 unsigned long tcn, offset;
95 98
diff --git a/arch/m68knommu/platform/532x/config.c b/arch/m68knommu/platform/532x/config.c
index b32c6425f821..f77328b7b6db 100644
--- a/arch/m68knommu/platform/532x/config.c
+++ b/arch/m68knommu/platform/532x/config.c
@@ -18,25 +18,18 @@
18/***************************************************************************/ 18/***************************************************************************/
19 19
20#include <linux/kernel.h> 20#include <linux/kernel.h>
21#include <linux/sched.h>
22#include <linux/param.h> 21#include <linux/param.h>
23#include <linux/init.h> 22#include <linux/init.h>
24#include <linux/interrupt.h> 23#include <linux/interrupt.h>
25#include <asm/irq.h>
26#include <asm/dma.h> 24#include <asm/dma.h>
27#include <asm/traps.h>
28#include <asm/machdep.h> 25#include <asm/machdep.h>
29#include <asm/coldfire.h> 26#include <asm/coldfire.h>
30#include <asm/mcftimer.h>
31#include <asm/mcfsim.h> 27#include <asm/mcfsim.h>
32#include <asm/mcfdma.h> 28#include <asm/mcfdma.h>
33#include <asm/mcfwdebug.h> 29#include <asm/mcfwdebug.h>
34 30
35/***************************************************************************/ 31/***************************************************************************/
36 32
37void coldfire_tick(void);
38void coldfire_timer_init(irq_handler_t handler);
39unsigned long coldfire_timer_offset(void);
40void coldfire_reset(void); 33void coldfire_reset(void);
41 34
42extern unsigned int mcf_timervector; 35extern unsigned int mcf_timervector;
@@ -104,9 +97,6 @@ void config_BSP(char *commandp, int size)
104 97
105 mcf_timervector = 64+32; 98 mcf_timervector = 64+32;
106 mcf_profilevector = 64+33; 99 mcf_profilevector = 64+33;
107 mach_sched_init = coldfire_timer_init;
108 mach_tick = coldfire_tick;
109 mach_gettimeoffset = coldfire_timer_offset;
110 mach_reset = coldfire_reset; 100 mach_reset = coldfire_reset;
111 101
112#ifdef MCF_BDM_DISABLE 102#ifdef MCF_BDM_DISABLE
diff --git a/arch/m68knommu/platform/5407/config.c b/arch/m68knommu/platform/5407/config.c
index e692536817d8..2d3b62eba7ca 100644
--- a/arch/m68knommu/platform/5407/config.c
+++ b/arch/m68knommu/platform/5407/config.c
@@ -10,24 +10,17 @@
10/***************************************************************************/ 10/***************************************************************************/
11 11
12#include <linux/kernel.h> 12#include <linux/kernel.h>
13#include <linux/sched.h>
14#include <linux/param.h> 13#include <linux/param.h>
15#include <linux/init.h> 14#include <linux/init.h>
16#include <linux/interrupt.h> 15#include <linux/interrupt.h>
17#include <asm/irq.h>
18#include <asm/dma.h> 16#include <asm/dma.h>
19#include <asm/traps.h>
20#include <asm/machdep.h> 17#include <asm/machdep.h>
21#include <asm/coldfire.h> 18#include <asm/coldfire.h>
22#include <asm/mcftimer.h>
23#include <asm/mcfsim.h> 19#include <asm/mcfsim.h>
24#include <asm/mcfdma.h> 20#include <asm/mcfdma.h>
25 21
26/***************************************************************************/ 22/***************************************************************************/
27 23
28void coldfire_tick(void);
29void coldfire_timer_init(irq_handler_t handler);
30unsigned long coldfire_timer_offset(void);
31void coldfire_reset(void); 24void coldfire_reset(void);
32 25
33extern unsigned int mcf_timervector; 26extern unsigned int mcf_timervector;
@@ -108,9 +101,6 @@ void config_BSP(char *commandp, int size)
108 mcf_timerlevel = 6; 101 mcf_timerlevel = 6;
109#endif 102#endif
110 103
111 mach_sched_init = coldfire_timer_init;
112 mach_tick = coldfire_tick;
113 mach_gettimeoffset = coldfire_timer_offset;
114 mach_reset = coldfire_reset; 104 mach_reset = coldfire_reset;
115} 105}
116 106
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 3ecff5e9e4f3..61262c5f9c62 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -66,6 +66,7 @@ config BCM47XX
66config MIPS_COBALT 66config MIPS_COBALT
67 bool "Cobalt Server" 67 bool "Cobalt Server"
68 select CEVT_R4K 68 select CEVT_R4K
69 select CEVT_GT641XX
69 select DMA_NONCOHERENT 70 select DMA_NONCOHERENT
70 select HW_HAS_PCI 71 select HW_HAS_PCI
71 select I8253 72 select I8253
@@ -729,6 +730,9 @@ config ARCH_MAY_HAVE_PC_FDC
729config BOOT_RAW 730config BOOT_RAW
730 bool 731 bool
731 732
733config CEVT_GT641XX
734 bool
735
732config CEVT_R4K 736config CEVT_R4K
733 bool 737 bool
734 738
diff --git a/arch/mips/Kconfig.debug b/arch/mips/Kconfig.debug
index 3efe117721aa..fd7124c1b75a 100644
--- a/arch/mips/Kconfig.debug
+++ b/arch/mips/Kconfig.debug
@@ -6,18 +6,6 @@ config TRACE_IRQFLAGS_SUPPORT
6 6
7source "lib/Kconfig.debug" 7source "lib/Kconfig.debug"
8 8
9config CROSSCOMPILE
10 bool "Are you using a crosscompiler"
11 help
12 Say Y here if you are compiling the kernel on a different
13 architecture than the one it is intended to run on. This is just a
14 convenience option which will select the appropriate value for
15 the CROSS_COMPILE make variable which otherwise has to be passed on
16 the command line from mips-linux-, mipsel-linux-, mips64-linux- and
17 mips64el-linux- as appropriate for a particular kernel configuration.
18 You will have to pass the value for CROSS_COMPILE manually if the
19 name prefix for your tools is different.
20
21config CMDLINE 9config CMDLINE
22 string "Default kernel command string" 10 string "Default kernel command string"
23 default "" 11 default ""
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 14164c2b8791..23c17755eca0 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -18,15 +18,15 @@ cflags-y :=
18# Select the object file format to substitute into the linker script. 18# Select the object file format to substitute into the linker script.
19# 19#
20ifdef CONFIG_CPU_LITTLE_ENDIAN 20ifdef CONFIG_CPU_LITTLE_ENDIAN
2132bit-tool-prefix = mipsel-linux- 2132bit-tool-archpref = mipsel
2264bit-tool-prefix = mips64el-linux- 2264bit-tool-archpref = mips64el
2332bit-bfd = elf32-tradlittlemips 2332bit-bfd = elf32-tradlittlemips
2464bit-bfd = elf64-tradlittlemips 2464bit-bfd = elf64-tradlittlemips
2532bit-emul = elf32ltsmip 2532bit-emul = elf32ltsmip
2664bit-emul = elf64ltsmip 2664bit-emul = elf64ltsmip
27else 27else
2832bit-tool-prefix = mips-linux- 2832bit-tool-archpref = mips
2964bit-tool-prefix = mips64-linux- 2964bit-tool-archpref = mips64
3032bit-bfd = elf32-tradbigmips 3032bit-bfd = elf32-tradbigmips
3164bit-bfd = elf64-tradbigmips 3164bit-bfd = elf64-tradbigmips
3232bit-emul = elf32btsmip 3232bit-emul = elf32btsmip
@@ -34,16 +34,18 @@ else
34endif 34endif
35 35
36ifdef CONFIG_32BIT 36ifdef CONFIG_32BIT
37tool-prefix = $(32bit-tool-prefix) 37tool-archpref = $(32bit-tool-archpref)
38UTS_MACHINE := mips 38UTS_MACHINE := mips
39endif 39endif
40ifdef CONFIG_64BIT 40ifdef CONFIG_64BIT
41tool-prefix = $(64bit-tool-prefix) 41tool-archpref = $(64bit-tool-archpref)
42UTS_MACHINE := mips64 42UTS_MACHINE := mips64
43endif 43endif
44 44
45ifdef CONFIG_CROSSCOMPILE 45ifneq ($(SUBARCH),$(ARCH))
46CROSS_COMPILE := $(tool-prefix) 46 ifeq ($(CROSS_COMPILE),)
47 CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux- $(tool-archpref)-gnu-linux- $(tool-archpref)-unknown-gnu-linux-)
48 endif
47endif 49endif
48 50
49ifdef CONFIG_32BIT 51ifdef CONFIG_32BIT
diff --git a/arch/mips/cobalt/Makefile b/arch/mips/cobalt/Makefile
index 6b83f4ddc8fc..d73833b7c781 100644
--- a/arch/mips/cobalt/Makefile
+++ b/arch/mips/cobalt/Makefile
@@ -2,7 +2,7 @@
2# Makefile for the Cobalt micro systems family specific parts of the kernel 2# Makefile for the Cobalt micro systems family specific parts of the kernel
3# 3#
4 4
5obj-y := buttons.o irq.o led.o reset.o rtc.o serial.o setup.o 5obj-y := buttons.o irq.o led.o reset.o rtc.o serial.o setup.o time.o
6 6
7obj-$(CONFIG_PCI) += pci.o 7obj-$(CONFIG_PCI) += pci.o
8obj-$(CONFIG_EARLY_PRINTK) += console.o 8obj-$(CONFIG_EARLY_PRINTK) += console.o
diff --git a/arch/mips/cobalt/setup.c b/arch/mips/cobalt/setup.c
index d11bb1bc7b6b..dd23beb8604f 100644
--- a/arch/mips/cobalt/setup.c
+++ b/arch/mips/cobalt/setup.c
@@ -9,19 +9,17 @@
9 * Copyright (C) 2001, 2002, 2003 by Liam Davies (ldavies@agile.tv) 9 * Copyright (C) 2001, 2002, 2003 by Liam Davies (ldavies@agile.tv)
10 * 10 *
11 */ 11 */
12#include <linux/interrupt.h>
13#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/interrupt.h>
14#include <linux/io.h>
15#include <linux/ioport.h>
14#include <linux/pm.h> 16#include <linux/pm.h>
15 17
16#include <asm/bootinfo.h> 18#include <asm/bootinfo.h>
17#include <asm/time.h>
18#include <asm/i8253.h>
19#include <asm/io.h>
20#include <asm/reboot.h> 19#include <asm/reboot.h>
21#include <asm/gt64120.h> 20#include <asm/gt64120.h>
22 21
23#include <cobalt.h> 22#include <cobalt.h>
24#include <irq.h>
25 23
26extern void cobalt_machine_restart(char *command); 24extern void cobalt_machine_restart(char *command);
27extern void cobalt_machine_halt(void); 25extern void cobalt_machine_halt(void);
@@ -41,17 +39,6 @@ const char *get_system_type(void)
41 return "MIPS Cobalt"; 39 return "MIPS Cobalt";
42} 40}
43 41
44void __init plat_timer_setup(struct irqaction *irq)
45{
46 /* Load timer value for HZ (TCLK is 50MHz) */
47 GT_WRITE(GT_TC0_OFS, 50*1000*1000 / HZ);
48
49 /* Enable timer0 */
50 GT_WRITE(GT_TC_CONTROL_OFS, GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK);
51
52 setup_irq(GT641XX_TIMER0_IRQ, irq);
53}
54
55/* 42/*
56 * Cobalt doesn't have PS/2 keyboard/mouse interfaces, 43 * Cobalt doesn't have PS/2 keyboard/mouse interfaces,
57 * keyboard conntroller is never used. 44 * keyboard conntroller is never used.
@@ -84,11 +71,6 @@ static struct resource cobalt_reserved_resources[] = {
84 }, 71 },
85}; 72};
86 73
87void __init plat_time_init(void)
88{
89 setup_pit_timer();
90}
91
92void __init plat_mem_setup(void) 74void __init plat_mem_setup(void)
93{ 75{
94 int i; 76 int i;
diff --git a/arch/mips/cobalt/time.c b/arch/mips/cobalt/time.c
new file mode 100644
index 000000000000..fa819fccd5db
--- /dev/null
+++ b/arch/mips/cobalt/time.c
@@ -0,0 +1,35 @@
1/*
2 * Cobalt time initialization.
3 *
4 * Copyright (C) 2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20#include <linux/init.h>
21
22#include <asm/gt64120.h>
23#include <asm/i8253.h>
24#include <asm/time.h>
25
26#define GT641XX_BASE_CLOCK 50000000 /* 50MHz */
27
28void __init plat_time_init(void)
29{
30 setup_pit_timer();
31
32 gt641xx_set_base_clock(GT641XX_BASE_CLOCK);
33
34 mips_timer_state = gt641xx_timer0_state;
35}
diff --git a/arch/mips/kernel/Makefile b/arch/mips/kernel/Makefile
index a3afa39faae5..d7745c8976f6 100644
--- a/arch/mips/kernel/Makefile
+++ b/arch/mips/kernel/Makefile
@@ -9,6 +9,7 @@ obj-y += cpu-probe.o branch.o entry.o genex.o irq.o process.o \
9 time.o topology.o traps.o unaligned.o 9 time.o topology.o traps.o unaligned.o
10 10
11obj-$(CONFIG_CEVT_R4K) += cevt-r4k.o 11obj-$(CONFIG_CEVT_R4K) += cevt-r4k.o
12obj-$(CONFIG_CEVT_GT641XX) += cevt-gt641xx.o
12 13
13binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \ 14binfmt_irix-objs := irixelf.o irixinv.o irixioctl.o irixsig.o \
14 irix5sys.o sysirix.o 15 irix5sys.o sysirix.o
diff --git a/arch/mips/kernel/cevt-gt641xx.c b/arch/mips/kernel/cevt-gt641xx.c
new file mode 100644
index 000000000000..4c651b2680f9
--- /dev/null
+++ b/arch/mips/kernel/cevt-gt641xx.c
@@ -0,0 +1,144 @@
1/*
2 * GT641xx clockevent routines.
3 *
4 * Copyright (C) 2007 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20#include <linux/clockchips.h>
21#include <linux/init.h>
22#include <linux/interrupt.h>
23#include <linux/spinlock.h>
24
25#include <asm/gt64120.h>
26#include <asm/time.h>
27
28#include <irq.h>
29
30static DEFINE_SPINLOCK(gt641xx_timer_lock);
31static unsigned int gt641xx_base_clock;
32
33void gt641xx_set_base_clock(unsigned int clock)
34{
35 gt641xx_base_clock = clock;
36}
37
38int gt641xx_timer0_state(void)
39{
40 if (GT_READ(GT_TC0_OFS))
41 return 0;
42
43 GT_WRITE(GT_TC0_OFS, gt641xx_base_clock / HZ);
44 GT_WRITE(GT_TC_CONTROL_OFS, GT_TC_CONTROL_ENTC0_MSK);
45
46 return 1;
47}
48
49static int gt641xx_timer0_set_next_event(unsigned long delta,
50 struct clock_event_device *evt)
51{
52 unsigned long flags;
53 u32 ctrl;
54
55 spin_lock_irqsave(&gt641xx_timer_lock, flags);
56
57 ctrl = GT_READ(GT_TC_CONTROL_OFS);
58 ctrl &= ~(GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK);
59 ctrl |= GT_TC_CONTROL_ENTC0_MSK;
60
61 GT_WRITE(GT_TC0_OFS, delta);
62 GT_WRITE(GT_TC_CONTROL_OFS, ctrl);
63
64 spin_unlock_irqrestore(&gt641xx_timer_lock, flags);
65
66 return 0;
67}
68
69static void gt641xx_timer0_set_mode(enum clock_event_mode mode,
70 struct clock_event_device *evt)
71{
72 unsigned long flags;
73 u32 ctrl;
74
75 spin_lock_irqsave(&gt641xx_timer_lock, flags);
76
77 ctrl = GT_READ(GT_TC_CONTROL_OFS);
78 ctrl &= ~(GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK);
79
80 switch (mode) {
81 case CLOCK_EVT_MODE_PERIODIC:
82 ctrl |= GT_TC_CONTROL_ENTC0_MSK | GT_TC_CONTROL_SELTC0_MSK;
83 break;
84 case CLOCK_EVT_MODE_ONESHOT:
85 ctrl |= GT_TC_CONTROL_ENTC0_MSK;
86 break;
87 default:
88 break;
89 }
90
91 GT_WRITE(GT_TC_CONTROL_OFS, ctrl);
92
93 spin_unlock_irqrestore(&gt641xx_timer_lock, flags);
94}
95
96static void gt641xx_timer0_event_handler(struct clock_event_device *dev)
97{
98}
99
100static struct clock_event_device gt641xx_timer0_clockevent = {
101 .name = "gt641xx-timer0",
102 .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
103 .cpumask = CPU_MASK_CPU0,
104 .irq = GT641XX_TIMER0_IRQ,
105 .set_next_event = gt641xx_timer0_set_next_event,
106 .set_mode = gt641xx_timer0_set_mode,
107 .event_handler = gt641xx_timer0_event_handler,
108};
109
110static irqreturn_t gt641xx_timer0_interrupt(int irq, void *dev_id)
111{
112 struct clock_event_device *cd = &gt641xx_timer0_clockevent;
113
114 cd->event_handler(cd);
115
116 return IRQ_HANDLED;
117}
118
119static struct irqaction gt641xx_timer0_irqaction = {
120 .handler = gt641xx_timer0_interrupt,
121 .flags = IRQF_DISABLED | IRQF_PERCPU,
122 .name = "gt641xx_timer0",
123};
124
125static int __init gt641xx_timer0_clockevent_init(void)
126{
127 struct clock_event_device *cd;
128
129 if (!gt641xx_base_clock)
130 return 0;
131
132 GT_WRITE(GT_TC0_OFS, gt641xx_base_clock / HZ);
133
134 cd = &gt641xx_timer0_clockevent;
135 cd->rating = 200 + gt641xx_base_clock / 10000000;
136 cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd);
137 cd->min_delta_ns = clockevent_delta2ns(0x300, cd);
138 clockevent_set_clock(cd, gt641xx_base_clock);
139
140 clockevents_register_device(&gt641xx_timer0_clockevent);
141
142 return setup_irq(GT641XX_TIMER0_IRQ, &gt641xx_timer0_irqaction);
143}
144arch_initcall(gt641xx_timer0_clockevent_init);
diff --git a/arch/mips/kernel/cevt-r4k.c b/arch/mips/kernel/cevt-r4k.c
index a915e5693421..ae2984fff580 100644
--- a/arch/mips/kernel/cevt-r4k.c
+++ b/arch/mips/kernel/cevt-r4k.c
@@ -186,7 +186,7 @@ static int c0_compare_int_usable(void)
186 * IP7 already pending? Try to clear it by acking the timer. 186 * IP7 already pending? Try to clear it by acking the timer.
187 */ 187 */
188 if (c0_compare_int_pending()) { 188 if (c0_compare_int_pending()) {
189 write_c0_compare(read_c0_compare()); 189 write_c0_compare(read_c0_count());
190 irq_disable_hazard(); 190 irq_disable_hazard();
191 if (c0_compare_int_pending()) 191 if (c0_compare_int_pending())
192 return 0; 192 return 0;
@@ -202,7 +202,7 @@ static int c0_compare_int_usable(void)
202 if (!c0_compare_int_pending()) 202 if (!c0_compare_int_pending())
203 return 0; 203 return 0;
204 204
205 write_c0_compare(read_c0_compare()); 205 write_c0_compare(read_c0_count());
206 irq_disable_hazard(); 206 irq_disable_hazard();
207 if (c0_compare_int_pending()) 207 if (c0_compare_int_pending())
208 return 0; 208 return 0;
diff --git a/arch/mips/kernel/time.c b/arch/mips/kernel/time.c
index c4e6866d5cbc..6c6849a8f136 100644
--- a/arch/mips/kernel/time.c
+++ b/arch/mips/kernel/time.c
@@ -195,8 +195,8 @@ void __cpuinit clockevent_set_clock(struct clock_event_device *cd,
195 195
196 /* Find a shift value */ 196 /* Find a shift value */
197 for (shift = 32; shift > 0; shift--) { 197 for (shift = 32; shift > 0; shift--) {
198 temp = (u64) NSEC_PER_SEC << shift; 198 temp = (u64) clock << shift;
199 do_div(temp, clock); 199 do_div(temp, NSEC_PER_SEC);
200 if ((temp >> 32) == 0) 200 if ((temp >> 32) == 0)
201 break; 201 break;
202 } 202 }
diff --git a/arch/mips/mips-boards/generic/time.c b/arch/mips/mips-boards/generic/time.c
index 1d00b778ff1e..9d6243a8c15a 100644
--- a/arch/mips/mips-boards/generic/time.c
+++ b/arch/mips/mips-boards/generic/time.c
@@ -147,21 +147,8 @@ void __init plat_time_init(void)
147#endif 147#endif
148} 148}
149 149
150//static irqreturn_t mips_perf_interrupt(int irq, void *dev_id)
151//{
152// return perf_irq();
153//}
154
155//static struct irqaction perf_irqaction = {
156// .handler = mips_perf_interrupt,
157// .flags = IRQF_DISABLED | IRQF_PERCPU,
158// .name = "performance",
159//};
160
161void __init plat_perf_setup(void) 150void __init plat_perf_setup(void)
162{ 151{
163// struct irqaction *irq = &perf_irqaction;
164
165 cp0_perfcount_irq = -1; 152 cp0_perfcount_irq = -1;
166 153
167#ifdef MSC01E_INT_BASE 154#ifdef MSC01E_INT_BASE
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index 98b5e5bac02e..b1b40527658b 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -13,6 +13,7 @@
13#include <linux/mm.h> 13#include <linux/mm.h>
14#include <linux/module.h> 14#include <linux/module.h>
15#include <linux/string.h> 15#include <linux/string.h>
16#include <linux/scatterlist.h>
16 17
17#include <asm/cache.h> 18#include <asm/cache.h>
18#include <asm/io.h> 19#include <asm/io.h>
@@ -165,12 +166,11 @@ int dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
165 for (i = 0; i < nents; i++, sg++) { 166 for (i = 0; i < nents; i++, sg++) {
166 unsigned long addr; 167 unsigned long addr;
167 168
168 addr = (unsigned long) page_address(sg->page); 169 addr = (unsigned long) sg_virt(sg);
169 if (!plat_device_is_coherent(dev) && addr) 170 if (!plat_device_is_coherent(dev) && addr)
170 __dma_sync(addr + sg->offset, sg->length, direction); 171 __dma_sync(addr, sg->length, direction);
171 sg->dma_address = plat_map_dma_mem(dev, 172 sg->dma_address = plat_map_dma_mem(dev,
172 (void *)(addr + sg->offset), 173 (void *)addr, sg->length);
173 sg->length);
174 } 174 }
175 175
176 return nents; 176 return nents;
@@ -223,10 +223,9 @@ void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,
223 for (i = 0; i < nhwentries; i++, sg++) { 223 for (i = 0; i < nhwentries; i++, sg++) {
224 if (!plat_device_is_coherent(dev) && 224 if (!plat_device_is_coherent(dev) &&
225 direction != DMA_TO_DEVICE) { 225 direction != DMA_TO_DEVICE) {
226 addr = (unsigned long) page_address(sg->page); 226 addr = (unsigned long) sg_virt(sg);
227 if (addr) 227 if (addr)
228 __dma_sync(addr + sg->offset, sg->length, 228 __dma_sync(addr, sg->length, direction);
229 direction);
230 } 229 }
231 plat_unmap_dma_mem(sg->dma_address); 230 plat_unmap_dma_mem(sg->dma_address);
232 } 231 }
@@ -304,7 +303,7 @@ void dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sg, int nelems,
304 /* Make sure that gcc doesn't leave the empty loop body. */ 303 /* Make sure that gcc doesn't leave the empty loop body. */
305 for (i = 0; i < nelems; i++, sg++) { 304 for (i = 0; i < nelems; i++, sg++) {
306 if (cpu_is_noncoherent_r10000(dev)) 305 if (cpu_is_noncoherent_r10000(dev))
307 __dma_sync((unsigned long)page_address(sg->page), 306 __dma_sync((unsigned long)page_address(sg_page(sg)),
308 sg->length, direction); 307 sg->length, direction);
309 plat_unmap_dma_mem(sg->dma_address); 308 plat_unmap_dma_mem(sg->dma_address);
310 } 309 }
@@ -322,7 +321,7 @@ void dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg, int nele
322 /* Make sure that gcc doesn't leave the empty loop body. */ 321 /* Make sure that gcc doesn't leave the empty loop body. */
323 for (i = 0; i < nelems; i++, sg++) { 322 for (i = 0; i < nelems; i++, sg++) {
324 if (!plat_device_is_coherent(dev)) 323 if (!plat_device_is_coherent(dev))
325 __dma_sync((unsigned long)page_address(sg->page), 324 __dma_sync((unsigned long)page_address(sg_page(sg)),
326 sg->length, direction); 325 sg->length, direction);
327 plat_unmap_dma_mem(sg->dma_address); 326 plat_unmap_dma_mem(sg->dma_address);
328 } 327 }
diff --git a/arch/mips/sgi-ip27/ip27-init.c b/arch/mips/sgi-ip27/ip27-init.c
index 681b593071cb..3305fa9ae66d 100644
--- a/arch/mips/sgi-ip27/ip27-init.c
+++ b/arch/mips/sgi-ip27/ip27-init.c
@@ -110,7 +110,7 @@ static void __init per_hub_init(cnodeid_t cnode)
110 } 110 }
111} 111}
112 112
113void __init per_cpu_init(void) 113void __cpuinit per_cpu_init(void)
114{ 114{
115 int cpu = smp_processor_id(); 115 int cpu = smp_processor_id();
116 int slice = LOCAL_HUB_L(PI_CPU_NUM); 116 int slice = LOCAL_HUB_L(PI_CPU_NUM);
diff --git a/arch/mips/sgi-ip27/ip27-timer.c b/arch/mips/sgi-ip27/ip27-timer.c
index d467bf4f6c3f..f5dccf01da11 100644
--- a/arch/mips/sgi-ip27/ip27-timer.c
+++ b/arch/mips/sgi-ip27/ip27-timer.c
@@ -111,8 +111,24 @@ unsigned long read_persistent_clock(void)
111 return mktime(year, month, date, hour, min, sec); 111 return mktime(year, month, date, hour, min, sec);
112} 112}
113 113
114static int rt_set_next_event(unsigned long delta, 114static void enable_rt_irq(unsigned int irq)
115 struct clock_event_device *evt) 115{
116}
117
118static void disable_rt_irq(unsigned int irq)
119{
120}
121
122static struct irq_chip rt_irq_type = {
123 .name = "SN HUB RT timer",
124 .ack = disable_rt_irq,
125 .mask = disable_rt_irq,
126 .mask_ack = disable_rt_irq,
127 .unmask = enable_rt_irq,
128 .eoi = enable_rt_irq,
129};
130
131static int rt_next_event(unsigned long delta, struct clock_event_device *evt)
116{ 132{
117 unsigned int cpu = smp_processor_id(); 133 unsigned int cpu = smp_processor_id();
118 int slice = cputoslice(cpu) == 0; 134 int slice = cputoslice(cpu) == 0;
@@ -129,50 +145,24 @@ static void rt_set_mode(enum clock_event_mode mode,
129 struct clock_event_device *evt) 145 struct clock_event_device *evt)
130{ 146{
131 switch (mode) { 147 switch (mode) {
132 case CLOCK_EVT_MODE_PERIODIC: 148 case CLOCK_EVT_MODE_ONESHOT:
133 /* The only mode supported */ 149 /* The only mode supported */
134 break; 150 break;
135 151
152 case CLOCK_EVT_MODE_PERIODIC:
136 case CLOCK_EVT_MODE_UNUSED: 153 case CLOCK_EVT_MODE_UNUSED:
137 case CLOCK_EVT_MODE_SHUTDOWN: 154 case CLOCK_EVT_MODE_SHUTDOWN:
138 case CLOCK_EVT_MODE_ONESHOT:
139 case CLOCK_EVT_MODE_RESUME: 155 case CLOCK_EVT_MODE_RESUME:
140 /* Nothing to do */ 156 /* Nothing to do */
141 break; 157 break;
142 } 158 }
143} 159}
144 160
145struct clock_event_device rt_clock_event_device = {
146 .name = "HUB-RT",
147 .features = CLOCK_EVT_FEAT_ONESHOT,
148
149 .rating = 300,
150 .set_next_event = rt_set_next_event,
151 .set_mode = rt_set_mode,
152};
153
154static void enable_rt_irq(unsigned int irq)
155{
156}
157
158static void disable_rt_irq(unsigned int irq)
159{
160}
161
162static struct irq_chip rt_irq_type = {
163 .name = "SN HUB RT timer",
164 .ack = disable_rt_irq,
165 .mask = disable_rt_irq,
166 .mask_ack = disable_rt_irq,
167 .unmask = enable_rt_irq,
168 .eoi = enable_rt_irq,
169};
170
171unsigned int rt_timer_irq; 161unsigned int rt_timer_irq;
172 162
173static irqreturn_t ip27_rt_timer_interrupt(int irq, void *dev_id) 163static irqreturn_t hub_rt_counter_handler(int irq, void *dev_id)
174{ 164{
175 struct clock_event_device *cd = &rt_clock_event_device; 165 struct clock_event_device *cd = dev_id;
176 unsigned int cpu = smp_processor_id(); 166 unsigned int cpu = smp_processor_id();
177 int slice = cputoslice(cpu) == 0; 167 int slice = cputoslice(cpu) == 0;
178 168
@@ -182,11 +172,10 @@ static irqreturn_t ip27_rt_timer_interrupt(int irq, void *dev_id)
182 return IRQ_HANDLED; 172 return IRQ_HANDLED;
183} 173}
184 174
185static struct irqaction rt_irqaction = { 175struct irqaction hub_rt_irqaction = {
186 .handler = (irq_handler_t) ip27_rt_timer_interrupt, 176 .handler = hub_rt_counter_handler,
187 .flags = IRQF_DISABLED, 177 .flags = IRQF_DISABLED | IRQF_PERCPU,
188 .mask = CPU_MASK_NONE, 178 .name = "hub-rt",
189 .name = "timer"
190}; 179};
191 180
192/* 181/*
@@ -200,32 +189,48 @@ static struct irqaction rt_irqaction = {
200#define NSEC_PER_CYCLE 800 189#define NSEC_PER_CYCLE 800
201#define CYCLES_PER_SEC (NSEC_PER_SEC / NSEC_PER_CYCLE) 190#define CYCLES_PER_SEC (NSEC_PER_SEC / NSEC_PER_CYCLE)
202 191
203static void __init ip27_rt_clock_event_init(void) 192static DEFINE_PER_CPU(struct clock_event_device, hub_rt_clockevent);
193static DEFINE_PER_CPU(char [11], hub_rt_name);
194
195static void __cpuinit hub_rt_clock_event_init(void)
204{ 196{
205 struct clock_event_device *cd = &rt_clock_event_device;
206 unsigned int cpu = smp_processor_id(); 197 unsigned int cpu = smp_processor_id();
207 int irq = allocate_irqno(); 198 struct clock_event_device *cd = &per_cpu(hub_rt_clockevent, cpu);
208 199 unsigned char *name = per_cpu(hub_rt_name, cpu);
209 if (irq < 0) 200 int irq = rt_timer_irq;
210 panic("Can't allocate interrupt number for timer interrupt"); 201
211 202 sprintf(name, "hub-rt %d", cpu);
212 rt_timer_irq = irq; 203 cd->name = "HUB-RT",
213 204 cd->features = CLOCK_EVT_FEAT_ONESHOT,
205 clockevent_set_clock(cd, CYCLES_PER_SEC);
206 cd->max_delta_ns = clockevent_delta2ns(0xfffffffffffff, cd);
207 cd->min_delta_ns = clockevent_delta2ns(0x300, cd);
208 cd->rating = 200,
214 cd->irq = irq, 209 cd->irq = irq,
215 cd->cpumask = cpumask_of_cpu(cpu), 210 cd->cpumask = cpumask_of_cpu(cpu),
216 211 cd->rating = 300,
217 /* 212 cd->set_next_event = rt_next_event,
218 * Calculate the min / max delta 213 cd->set_mode = rt_set_mode,
219 */
220 cd->mult =
221 div_sc((unsigned long) CYCLES_PER_SEC, NSEC_PER_SEC, 32);
222 cd->shift = 32;
223 cd->max_delta_ns = clockevent_delta2ns(0x7fffffff, cd);
224 cd->min_delta_ns = clockevent_delta2ns(0x300, cd);
225 clockevents_register_device(cd); 214 clockevents_register_device(cd);
215}
216
217static void __init hub_rt_clock_event_global_init(void)
218{
219 unsigned int irq;
220
221 do {
222 smp_wmb();
223 irq = rt_timer_irq;
224 if (irq)
225 break;
226
227 irq = allocate_irqno();
228 if (irq < 0)
229 panic("Allocation of irq number for timer failed");
230 } while (xchg(&rt_timer_irq, irq));
226 231
227 set_irq_chip_and_handler(irq, &rt_irq_type, handle_percpu_irq); 232 set_irq_chip_and_handler(irq, &rt_irq_type, handle_percpu_irq);
228 setup_irq(irq, &rt_irqaction); 233 setup_irq(irq, &hub_rt_irqaction);
229} 234}
230 235
231static cycle_t hub_rt_read(void) 236static cycle_t hub_rt_read(void)
@@ -233,27 +238,29 @@ static cycle_t hub_rt_read(void)
233 return REMOTE_HUB_L(cputonasid(0), PI_RT_COUNT); 238 return REMOTE_HUB_L(cputonasid(0), PI_RT_COUNT);
234} 239}
235 240
236struct clocksource ht_rt_clocksource = { 241struct clocksource hub_rt_clocksource = {
237 .name = "HUB-RT", 242 .name = "HUB-RT",
238 .rating = 200, 243 .rating = 200,
239 .read = hub_rt_read, 244 .read = hub_rt_read,
240 .mask = CLOCKSOURCE_MASK(52), 245 .mask = CLOCKSOURCE_MASK(52),
241 .shift = 32,
242 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 246 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
243}; 247};
244 248
245static void __init ip27_rt_clocksource_init(void) 249static void __init hub_rt_clocksource_init(void)
246{ 250{
247 clocksource_register(&ht_rt_clocksource); 251 struct clocksource *cs = &hub_rt_clocksource;
252
253 clocksource_set_clock(cs, CYCLES_PER_SEC);
254 clocksource_register(cs);
248} 255}
249 256
250void __init plat_time_init(void) 257void __init plat_time_init(void)
251{ 258{
252 ip27_rt_clock_event_init(); 259 hub_rt_clocksource_init();
253 ip27_rt_clocksource_init(); 260 hub_rt_clock_event_global_init();
254} 261}
255 262
256void __init cpu_time_init(void) 263void __cpuinit cpu_time_init(void)
257{ 264{
258 lboard_t *board; 265 lboard_t *board;
259 klcpu_t *cpu; 266 klcpu_t *cpu;
@@ -271,6 +278,7 @@ void __init cpu_time_init(void)
271 278
272 printk("CPU %d clock is %dMHz.\n", smp_processor_id(), cpu->cpu_speed); 279 printk("CPU %d clock is %dMHz.\n", smp_processor_id(), cpu->cpu_speed);
273 280
281 hub_rt_clock_event_init();
274 set_c0_status(SRB_TIMOCLK); 282 set_c0_status(SRB_TIMOCLK);
275} 283}
276 284
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c
index 7aa79bf63c4a..10299bafeab7 100644
--- a/arch/mips/sibyte/bcm1480/irq.c
+++ b/arch/mips/sibyte/bcm1480/irq.c
@@ -452,6 +452,43 @@ static void bcm1480_kgdb_interrupt(void)
452 452
453extern void bcm1480_mailbox_interrupt(void); 453extern void bcm1480_mailbox_interrupt(void);
454 454
455static inline void dispatch_ip4(void)
456{
457 int cpu = smp_processor_id();
458 int irq = K_BCM1480_INT_TIMER_0 + cpu;
459
460 /* Reset the timer */
461 __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS,
462 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)));
463
464 do_IRQ(irq);
465}
466
467static inline void dispatch_ip2(void)
468{
469 unsigned long long mask_h, mask_l;
470 unsigned int cpu = smp_processor_id();
471 unsigned long base;
472
473 /*
474 * Default...we've hit an IP[2] interrupt, which means we've got to
475 * check the 1480 interrupt registers to figure out what to do. Need
476 * to detect which CPU we're on, now that smp_affinity is supported.
477 */
478 base = A_BCM1480_IMR_MAPPER(cpu);
479 mask_h = __raw_readq(
480 IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_H));
481 mask_l = __raw_readq(
482 IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_L));
483
484 if (mask_h) {
485 if (mask_h ^ 1)
486 do_IRQ(fls64(mask_h) - 1);
487 else if (mask_l)
488 do_IRQ(63 + fls64(mask_l));
489 }
490}
491
455asmlinkage void plat_irq_dispatch(void) 492asmlinkage void plat_irq_dispatch(void)
456{ 493{
457 unsigned int pending; 494 unsigned int pending;
@@ -469,17 +506,8 @@ asmlinkage void plat_irq_dispatch(void)
469 else 506 else
470#endif 507#endif
471 508
472 if (pending & CAUSEF_IP4) { 509 if (pending & CAUSEF_IP4)
473 int cpu = smp_processor_id(); 510 dispatch_ip4();
474 int irq = K_BCM1480_INT_TIMER_0 + cpu;
475
476 /* Reset the timer */
477 __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS,
478 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)));
479
480 do_IRQ(irq);
481 }
482
483#ifdef CONFIG_SMP 511#ifdef CONFIG_SMP
484 else if (pending & CAUSEF_IP3) 512 else if (pending & CAUSEF_IP3)
485 bcm1480_mailbox_interrupt(); 513 bcm1480_mailbox_interrupt();
@@ -490,27 +518,6 @@ asmlinkage void plat_irq_dispatch(void)
490 bcm1480_kgdb_interrupt(); /* KGDB (uart 1) */ 518 bcm1480_kgdb_interrupt(); /* KGDB (uart 1) */
491#endif 519#endif
492 520
493 else if (pending & CAUSEF_IP2) { 521 else if (pending & CAUSEF_IP2)
494 unsigned long long mask_h, mask_l; 522 dispatch_ip2();
495 unsigned long base;
496
497 /*
498 * Default...we've hit an IP[2] interrupt, which means we've
499 * got to check the 1480 interrupt registers to figure out what
500 * to do. Need to detect which CPU we're on, now that
501 * smp_affinity is supported.
502 */
503 base = A_BCM1480_IMR_MAPPER(smp_processor_id());
504 mask_h = __raw_readq(
505 IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_H));
506 mask_l = __raw_readq(
507 IOADDR(base + R_BCM1480_IMR_INTERRUPT_STATUS_BASE_L));
508
509 if (mask_h) {
510 if (mask_h ^ 1)
511 do_IRQ(fls64(mask_h) - 1);
512 else
513 do_IRQ(63 + fls64(mask_l));
514 }
515 }
516} 523}
diff --git a/arch/mips/sibyte/bcm1480/smp.c b/arch/mips/sibyte/bcm1480/smp.c
index 02b266a31c46..436ba78359ab 100644
--- a/arch/mips/sibyte/bcm1480/smp.c
+++ b/arch/mips/sibyte/bcm1480/smp.c
@@ -58,7 +58,7 @@ static void *mailbox_0_regs[] = {
58/* 58/*
59 * SMP init and finish on secondary CPUs 59 * SMP init and finish on secondary CPUs
60 */ 60 */
61void bcm1480_smp_init(void) 61void __cpuinit bcm1480_smp_init(void)
62{ 62{
63 unsigned int imask = STATUSF_IP4 | STATUSF_IP3 | STATUSF_IP2 | 63 unsigned int imask = STATUSF_IP4 | STATUSF_IP3 | STATUSF_IP2 |
64 STATUSF_IP1 | STATUSF_IP0; 64 STATUSF_IP1 | STATUSF_IP0;
@@ -67,7 +67,7 @@ void bcm1480_smp_init(void)
67 change_c0_status(ST0_IM, imask); 67 change_c0_status(ST0_IM, imask);
68} 68}
69 69
70void bcm1480_smp_finish(void) 70void __cpuinit bcm1480_smp_finish(void)
71{ 71{
72 extern void sb1480_clockevent_init(void); 72 extern void sb1480_clockevent_init(void);
73 73
diff --git a/arch/mips/sibyte/bcm1480/time.c b/arch/mips/sibyte/bcm1480/time.c
index c730744aa474..610f0253954d 100644
--- a/arch/mips/sibyte/bcm1480/time.c
+++ b/arch/mips/sibyte/bcm1480/time.c
@@ -15,22 +15,12 @@
15 * along with this program; if not, write to the Free Software 15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 */ 17 */
18
19/*
20 * These are routines to set up and handle interrupts from the
21 * bcm1480 general purpose timer 0. We're using the timer as a
22 * system clock, so we set it up to run at 100 Hz. On every
23 * interrupt, we update our idea of what the time of day is,
24 * then call do_timer() in the architecture-independent kernel
25 * code to do general bookkeeping (e.g. update jiffies, run
26 * bottom halves, etc.)
27 */
28#include <linux/clockchips.h> 18#include <linux/clockchips.h>
29#include <linux/interrupt.h> 19#include <linux/interrupt.h>
20#include <linux/irq.h>
30#include <linux/percpu.h> 21#include <linux/percpu.h>
31#include <linux/spinlock.h> 22#include <linux/spinlock.h>
32 23
33#include <asm/irq.h>
34#include <asm/addrspace.h> 24#include <asm/addrspace.h>
35#include <asm/time.h> 25#include <asm/time.h>
36#include <asm/io.h> 26#include <asm/io.h>
@@ -47,33 +37,10 @@
47#define IMR_IP3_VAL K_BCM1480_INT_MAP_I1 37#define IMR_IP3_VAL K_BCM1480_INT_MAP_I1
48#define IMR_IP4_VAL K_BCM1480_INT_MAP_I2 38#define IMR_IP4_VAL K_BCM1480_INT_MAP_I2
49 39
50#ifdef CONFIG_SIMULATION
51#define BCM1480_HPT_VALUE 50000
52#else
53#define BCM1480_HPT_VALUE 1000000
54#endif
55
56extern int bcm1480_steal_irq(int irq); 40extern int bcm1480_steal_irq(int irq);
57 41
58void __init plat_time_init(void)
59{
60 unsigned int cpu = smp_processor_id();
61 unsigned int irq = K_BCM1480_INT_TIMER_0 + cpu;
62
63 BUG_ON(cpu > 3); /* Only have 4 general purpose timers */
64
65 bcm1480_mask_irq(cpu, irq);
66
67 /* Map the timer interrupt to ip[4] of this cpu */
68 __raw_writeq(IMR_IP4_VAL, IOADDR(A_BCM1480_IMR_REGISTER(cpu, R_BCM1480_IMR_INTERRUPT_MAP_BASE_H)
69 + (irq<<3)));
70
71 bcm1480_unmask_irq(cpu, irq);
72 bcm1480_steal_irq(irq);
73}
74
75/* 42/*
76 * The general purpose timer ticks at 1 Mhz independent if 43 * The general purpose timer ticks at 1MHz independent if
77 * the rest of the system 44 * the rest of the system
78 */ 45 */
79static void sibyte_set_mode(enum clock_event_mode mode, 46static void sibyte_set_mode(enum clock_event_mode mode,
@@ -88,7 +55,7 @@ static void sibyte_set_mode(enum clock_event_mode mode,
88 switch (mode) { 55 switch (mode) {
89 case CLOCK_EVT_MODE_PERIODIC: 56 case CLOCK_EVT_MODE_PERIODIC:
90 __raw_writeq(0, timer_cfg); 57 __raw_writeq(0, timer_cfg);
91 __raw_writeq(BCM1480_HPT_VALUE / HZ - 1, timer_init); 58 __raw_writeq((V_SCD_TIMER_FREQ / HZ) - 1, timer_init);
92 __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, 59 __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS,
93 timer_cfg); 60 timer_cfg);
94 break; 61 break;
@@ -121,80 +88,96 @@ static int sibyte_next_event(unsigned long delta, struct clock_event_device *cd)
121 return res; 88 return res;
122} 89}
123 90
124static DEFINE_PER_CPU(struct clock_event_device, sibyte_hpt_clockevent);
125
126static irqreturn_t sibyte_counter_handler(int irq, void *dev_id) 91static irqreturn_t sibyte_counter_handler(int irq, void *dev_id)
127{ 92{
128 unsigned int cpu = smp_processor_id(); 93 unsigned int cpu = smp_processor_id();
129 struct clock_event_device *cd = &per_cpu(sibyte_hpt_clockevent, cpu); 94 struct clock_event_device *cd = dev_id;
95 void __iomem *timer_cfg;
96
97 timer_cfg = IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG));
130 98
131 /* Reset the timer */ 99 /* Reset the timer */
132 __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, 100 __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS,
133 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); 101 timer_cfg);
134 cd->event_handler(cd); 102 cd->event_handler(cd);
135 103
136 return IRQ_HANDLED; 104 return IRQ_HANDLED;
137} 105}
138 106
139static struct irqaction sibyte_counter_irqaction = { 107static DEFINE_PER_CPU(struct clock_event_device, sibyte_hpt_clockevent);
140 .handler = sibyte_counter_handler, 108static DEFINE_PER_CPU(struct irqaction, sibyte_hpt_irqaction);
141 .flags = IRQF_DISABLED | IRQF_PERCPU, 109static DEFINE_PER_CPU(char [18], sibyte_hpt_name);
142 .name = "timer",
143};
144 110
145/*
146 * This interrupt is "special" in that it doesn't use the request_irq
147 * way to hook the irq line. The timer interrupt is initialized early
148 * enough to make this a major pain, and it's also firing enough to
149 * warrant a bit of special case code. bcm1480_timer_interrupt is
150 * called directly from irq_handler.S when IP[4] is set during an
151 * interrupt
152 */
153void __cpuinit sb1480_clockevent_init(void) 111void __cpuinit sb1480_clockevent_init(void)
154{ 112{
155 unsigned int cpu = smp_processor_id(); 113 unsigned int cpu = smp_processor_id();
156 unsigned int irq = K_BCM1480_INT_TIMER_0 + cpu; 114 unsigned int irq = K_BCM1480_INT_TIMER_0 + cpu;
115 struct irqaction *action = &per_cpu(sibyte_hpt_irqaction, cpu);
157 struct clock_event_device *cd = &per_cpu(sibyte_hpt_clockevent, cpu); 116 struct clock_event_device *cd = &per_cpu(sibyte_hpt_clockevent, cpu);
117 unsigned char *name = per_cpu(sibyte_hpt_name, cpu);
118
119 BUG_ON(cpu > 3); /* Only have 4 general purpose timers */
158 120
159 cd->name = "bcm1480-counter"; 121 sprintf(name, "bcm1480-counter %d", cpu);
122 cd->name = name;
160 cd->features = CLOCK_EVT_FEAT_PERIODIC | 123 cd->features = CLOCK_EVT_FEAT_PERIODIC |
161 CLOCK_EVT_MODE_ONESHOT; 124 CLOCK_EVT_MODE_ONESHOT;
125 clockevent_set_clock(cd, V_SCD_TIMER_FREQ);
126 cd->max_delta_ns = clockevent_delta2ns(0x7fffff, cd);
127 cd->min_delta_ns = clockevent_delta2ns(1, cd);
128 cd->rating = 200;
129 cd->irq = irq;
130 cd->cpumask = cpumask_of_cpu(cpu);
162 cd->set_next_event = sibyte_next_event; 131 cd->set_next_event = sibyte_next_event;
163 cd->set_mode = sibyte_set_mode; 132 cd->set_mode = sibyte_set_mode;
164 cd->irq = irq; 133 clockevents_register_device(cd);
165 clockevent_set_clock(cd, BCM1480_HPT_VALUE); 134
135 bcm1480_mask_irq(cpu, irq);
136
137 /*
138 * Map timer interrupt to IP[4] of this cpu
139 */
140 __raw_writeq(IMR_IP4_VAL,
141 IOADDR(A_BCM1480_IMR_REGISTER(cpu,
142 R_BCM1480_IMR_INTERRUPT_MAP_BASE_H) + (irq << 3)));
166 143
167 setup_irq(irq, &sibyte_counter_irqaction); 144 bcm1480_unmask_irq(cpu, irq);
145 bcm1480_steal_irq(irq);
146
147 action->handler = sibyte_counter_handler;
148 action->flags = IRQF_DISABLED | IRQF_PERCPU;
149 action->name = name;
150 action->dev_id = cd;
151 setup_irq(irq, action);
168} 152}
169 153
170static cycle_t bcm1480_hpt_read(void) 154static cycle_t bcm1480_hpt_read(void)
171{ 155{
172 /* We assume this function is called xtime_lock held. */ 156 return (cycle_t) __raw_readq(IOADDR(A_SCD_ZBBUS_CYCLE_COUNT));
173 unsigned long count =
174 __raw_readq(IOADDR(A_SCD_TIMER_REGISTER(0, R_SCD_TIMER_CNT)));
175 return (jiffies + 1) * (BCM1480_HPT_VALUE / HZ) - count;
176} 157}
177 158
178struct clocksource bcm1480_clocksource = { 159struct clocksource bcm1480_clocksource = {
179 .name = "MIPS", 160 .name = "zbbus-cycles",
180 .rating = 200, 161 .rating = 200,
181 .read = bcm1480_hpt_read, 162 .read = bcm1480_hpt_read,
182 .mask = CLOCKSOURCE_MASK(32), 163 .mask = CLOCKSOURCE_MASK(64),
183 .shift = 32,
184 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 164 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
185}; 165};
186 166
187void __init sb1480_clocksource_init(void) 167void __init sb1480_clocksource_init(void)
188{ 168{
189 struct clocksource *cs = &bcm1480_clocksource; 169 struct clocksource *cs = &bcm1480_clocksource;
170 unsigned int plldiv;
171 unsigned long zbbus;
190 172
191 clocksource_set_clock(cs, BCM1480_HPT_VALUE); 173 plldiv = G_BCM1480_SYS_PLL_DIV(__raw_readq(IOADDR(A_SCD_SYSTEM_CFG)));
174 zbbus = ((plldiv >> 1) * 50000000) + ((plldiv & 1) * 25000000);
175 clocksource_set_clock(cs, zbbus);
192 clocksource_register(cs); 176 clocksource_register(cs);
193} 177}
194 178
195void __init bcm1480_hpt_setup(void) 179void __init plat_time_init(void)
196{ 180{
197 mips_hpt_frequency = BCM1480_HPT_VALUE;
198 sb1480_clocksource_init(); 181 sb1480_clocksource_init();
199 sb1480_clockevent_init(); 182 sb1480_clockevent_init();
200} 183}
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c
index 500d17e84c09..53780a179d1d 100644
--- a/arch/mips/sibyte/sb1250/irq.c
+++ b/arch/mips/sibyte/sb1250/irq.c
@@ -402,6 +402,22 @@ static void sb1250_kgdb_interrupt(void)
402 402
403extern void sb1250_mailbox_interrupt(void); 403extern void sb1250_mailbox_interrupt(void);
404 404
405static inline void dispatch_ip2(void)
406{
407 unsigned int cpu = smp_processor_id();
408 unsigned long long mask;
409
410 /*
411 * Default...we've hit an IP[2] interrupt, which means we've got to
412 * check the 1250 interrupt registers to figure out what to do. Need
413 * to detect which CPU we're on, now that smp_affinity is supported.
414 */
415 mask = __raw_readq(IOADDR(A_IMR_REGISTER(cpu,
416 R_IMR_INTERRUPT_STATUS_BASE)));
417 if (mask)
418 do_IRQ(fls64(mask) - 1);
419}
420
405asmlinkage void plat_irq_dispatch(void) 421asmlinkage void plat_irq_dispatch(void)
406{ 422{
407 unsigned int cpu = smp_processor_id(); 423 unsigned int cpu = smp_processor_id();
@@ -434,21 +450,8 @@ asmlinkage void plat_irq_dispatch(void)
434 sb1250_kgdb_interrupt(); 450 sb1250_kgdb_interrupt();
435#endif 451#endif
436 452
437 else if (pending & CAUSEF_IP2) { 453 else if (pending & CAUSEF_IP2)
438 unsigned long long mask; 454 dispatch_ip2();
439 455 else
440 /*
441 * Default...we've hit an IP[2] interrupt, which means we've
442 * got to check the 1250 interrupt registers to figure out what
443 * to do. Need to detect which CPU we're on, now that
444 * smp_affinity is supported.
445 */
446 mask = __raw_readq(IOADDR(A_IMR_REGISTER(smp_processor_id(),
447 R_IMR_INTERRUPT_STATUS_BASE)));
448 if (mask)
449 do_IRQ(fls64(mask) - 1);
450 else
451 spurious_interrupt();
452 } else
453 spurious_interrupt(); 456 spurious_interrupt();
454} 457}
diff --git a/arch/mips/sibyte/sb1250/smp.c b/arch/mips/sibyte/sb1250/smp.c
index aaa4f30dda79..3f52c95a4eb8 100644
--- a/arch/mips/sibyte/sb1250/smp.c
+++ b/arch/mips/sibyte/sb1250/smp.c
@@ -46,7 +46,7 @@ static void *mailbox_regs[] = {
46/* 46/*
47 * SMP init and finish on secondary CPUs 47 * SMP init and finish on secondary CPUs
48 */ 48 */
49void sb1250_smp_init(void) 49void __cpuinit sb1250_smp_init(void)
50{ 50{
51 unsigned int imask = STATUSF_IP4 | STATUSF_IP3 | STATUSF_IP2 | 51 unsigned int imask = STATUSF_IP4 | STATUSF_IP3 | STATUSF_IP2 |
52 STATUSF_IP1 | STATUSF_IP0; 52 STATUSF_IP1 | STATUSF_IP0;
@@ -55,7 +55,7 @@ void sb1250_smp_init(void)
55 change_c0_status(ST0_IM, imask); 55 change_c0_status(ST0_IM, imask);
56} 56}
57 57
58void sb1250_smp_finish(void) 58void __cpuinit sb1250_smp_finish(void)
59{ 59{
60 extern void sb1250_clockevent_init(void); 60 extern void sb1250_clockevent_init(void);
61 61
diff --git a/arch/mips/sibyte/sb1250/time.c b/arch/mips/sibyte/sb1250/time.c
index 9ef54628bc9c..a41e908bc218 100644
--- a/arch/mips/sibyte/sb1250/time.c
+++ b/arch/mips/sibyte/sb1250/time.c
@@ -52,26 +52,6 @@
52 52
53extern int sb1250_steal_irq(int irq); 53extern int sb1250_steal_irq(int irq);
54 54
55static cycle_t sb1250_hpt_read(void);
56
57void __init sb1250_hpt_setup(void)
58{
59 int cpu = smp_processor_id();
60
61 if (!cpu) {
62 /* Setup hpt using timer #3 but do not enable irq for it */
63 __raw_writeq(0, IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, R_SCD_TIMER_CFG)));
64 __raw_writeq(SB1250_HPT_VALUE,
65 IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, R_SCD_TIMER_INIT)));
66 __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS,
67 IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM, R_SCD_TIMER_CFG)));
68
69 mips_hpt_frequency = V_SCD_TIMER_FREQ;
70 clocksource_mips.read = sb1250_hpt_read;
71 clocksource_mips.mask = M_SCD_TIMER_INIT;
72 }
73}
74
75/* 55/*
76 * The general purpose timer ticks at 1 Mhz independent if 56 * The general purpose timer ticks at 1 Mhz independent if
77 * the rest of the system 57 * the rest of the system
@@ -121,18 +101,14 @@ sibyte_next_event(unsigned long delta, struct clock_event_device *evt)
121 return 0; 101 return 0;
122} 102}
123 103
124struct clock_event_device sibyte_hpt_clockevent = {
125 .name = "sb1250-counter",
126 .features = CLOCK_EVT_FEAT_PERIODIC,
127 .set_mode = sibyte_set_mode,
128 .set_next_event = sibyte_next_event,
129 .shift = 32,
130 .irq = 0,
131};
132
133static irqreturn_t sibyte_counter_handler(int irq, void *dev_id) 104static irqreturn_t sibyte_counter_handler(int irq, void *dev_id)
134{ 105{
135 struct clock_event_device *cd = &sibyte_hpt_clockevent; 106 unsigned int cpu = smp_processor_id();
107 struct clock_event_device *cd = dev_id;
108
109 /* ACK interrupt */
110 ____raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS,
111 IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)));
136 112
137 cd->event_handler(cd); 113 cd->event_handler(cd);
138 114
@@ -145,15 +121,35 @@ static struct irqaction sibyte_irqaction = {
145 .name = "timer", 121 .name = "timer",
146}; 122};
147 123
124static DEFINE_PER_CPU(struct clock_event_device, sibyte_hpt_clockevent);
125static DEFINE_PER_CPU(struct irqaction, sibyte_hpt_irqaction);
126static DEFINE_PER_CPU(char [18], sibyte_hpt_name);
127
148void __cpuinit sb1250_clockevent_init(void) 128void __cpuinit sb1250_clockevent_init(void)
149{ 129{
150 struct clock_event_device *cd = &sibyte_hpt_clockevent;
151 unsigned int cpu = smp_processor_id(); 130 unsigned int cpu = smp_processor_id();
152 int irq = K_INT_TIMER_0 + cpu; 131 unsigned int irq = K_INT_TIMER_0 + cpu;
132 struct irqaction *action = &per_cpu(sibyte_hpt_irqaction, cpu);
133 struct clock_event_device *cd = &per_cpu(sibyte_hpt_clockevent, cpu);
134 unsigned char *name = per_cpu(sibyte_hpt_name, cpu);
153 135
154 /* Only have 4 general purpose timers, and we use last one as hpt */ 136 /* Only have 4 general purpose timers, and we use last one as hpt */
155 BUG_ON(cpu > 2); 137 BUG_ON(cpu > 2);
156 138
139 sprintf(name, "bcm1480-counter %d", cpu);
140 cd->name = name;
141 cd->features = CLOCK_EVT_FEAT_PERIODIC |
142 CLOCK_EVT_MODE_ONESHOT;
143 clockevent_set_clock(cd, V_SCD_TIMER_FREQ);
144 cd->max_delta_ns = clockevent_delta2ns(0x7fffff, cd);
145 cd->min_delta_ns = clockevent_delta2ns(1, cd);
146 cd->rating = 200;
147 cd->irq = irq;
148 cd->cpumask = cpumask_of_cpu(cpu);
149 cd->set_next_event = sibyte_next_event;
150 cd->set_mode = sibyte_set_mode;
151 clockevents_register_device(cd);
152
157 sb1250_mask_irq(cpu, irq); 153 sb1250_mask_irq(cpu, irq);
158 154
159 /* Map the timer interrupt to ip[4] of this cpu */ 155 /* Map the timer interrupt to ip[4] of this cpu */
@@ -165,17 +161,11 @@ void __cpuinit sb1250_clockevent_init(void)
165 sb1250_unmask_irq(cpu, irq); 161 sb1250_unmask_irq(cpu, irq);
166 sb1250_steal_irq(irq); 162 sb1250_steal_irq(irq);
167 163
168 /* 164 action->handler = sibyte_counter_handler;
169 * This interrupt is "special" in that it doesn't use the request_irq 165 action->flags = IRQF_DISABLED | IRQF_PERCPU;
170 * way to hook the irq line. The timer interrupt is initialized early 166 action->name = name;
171 * enough to make this a major pain, and it's also firing enough to 167 action->dev_id = cd;
172 * warrant a bit of special case code. sb1250_timer_interrupt is
173 * called directly from irq_handler.S when IP[4] is set during an
174 * interrupt
175 */
176 setup_irq(irq, &sibyte_irqaction); 168 setup_irq(irq, &sibyte_irqaction);
177
178 clockevents_register_device(cd);
179} 169}
180 170
181/* 171/*
@@ -195,8 +185,7 @@ struct clocksource bcm1250_clocksource = {
195 .name = "MIPS", 185 .name = "MIPS",
196 .rating = 200, 186 .rating = 200,
197 .read = sb1250_hpt_read, 187 .read = sb1250_hpt_read,
198 .mask = CLOCKSOURCE_MASK(32), 188 .mask = CLOCKSOURCE_MASK(23),
199 .shift = 32,
200 .flags = CLOCK_SOURCE_IS_CONTINUOUS, 189 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
201}; 190};
202 191
@@ -204,6 +193,17 @@ void __init sb1250_clocksource_init(void)
204{ 193{
205 struct clocksource *cs = &bcm1250_clocksource; 194 struct clocksource *cs = &bcm1250_clocksource;
206 195
196 /* Setup hpt using timer #3 but do not enable irq for it */
197 __raw_writeq(0,
198 IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM,
199 R_SCD_TIMER_CFG)));
200 __raw_writeq(SB1250_HPT_VALUE,
201 IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM,
202 R_SCD_TIMER_INIT)));
203 __raw_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS,
204 IOADDR(A_SCD_TIMER_REGISTER(SB1250_HPT_NUM,
205 R_SCD_TIMER_CFG)));
206
207 clocksource_set_clock(cs, V_SCD_TIMER_FREQ); 207 clocksource_set_clock(cs, V_SCD_TIMER_FREQ);
208 clocksource_register(cs); 208 clocksource_register(cs);
209} 209}
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
index f3d0d7c70977..ae4a9b3d4fd6 100644
--- a/arch/parisc/Makefile
+++ b/arch/parisc/Makefile
@@ -19,26 +19,27 @@
19NM = sh $(srctree)/arch/parisc/nm 19NM = sh $(srctree)/arch/parisc/nm
20CHECKFLAGS += -D__hppa__=1 20CHECKFLAGS += -D__hppa__=1
21 21
22MACHINE := $(shell uname -m)
23ifeq ($(MACHINE),parisc*)
24NATIVE := 1
25endif
26
22ifdef CONFIG_64BIT 27ifdef CONFIG_64BIT
23CROSS_COMPILE := $(shell if [ -x /usr/bin/hppa64-linux-gnu-gcc ]; then \
24 echo hppa64-linux-gnu-; else echo hppa64-linux-; fi)
25UTS_MACHINE := parisc64 28UTS_MACHINE := parisc64
26CHECKFLAGS += -D__LP64__=1 -m64 29CHECKFLAGS += -D__LP64__=1 -m64
27else 30WIDTH := 64
28MACHINE := $(subst 64,,$(shell uname -m)) 31CROSS_COMPILE := hppa64-linux-gnu-
29ifneq ($(MACHINE),parisc) 32else # 32-bit
30CROSS_COMPILE := hppa-linux- 33WIDTH :=
31endif
32endif 34endif
33 35
34FINAL_LD=$(CROSS_COMPILE)ld --warn-common --warn-section-align 36# attempt to help out folks who are cross-compiling
37ifeq ($(NATIVE),1)
38CROSS_COMPILE := hppa$(WIDTH)-linux-
39endif
35 40
36OBJCOPY_FLAGS =-O binary -R .note -R .comment -S 41OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
37 42
38ifneq ($(call cc-ifversion, -lt, 0303, "bad"),)
39$(error Sorry, GCC v3.3 or above is required.)
40endif
41
42cflags-y := -pipe 43cflags-y := -pipe
43 44
44# These flags should be implied by an hppa-linux configuration, but they 45# These flags should be implied by an hppa-linux configuration, but they
@@ -69,7 +70,7 @@ kernel-y := mm/ kernel/ math-emu/ kernel/init_task.o
69kernel-$(CONFIG_HPUX) += hpux/ 70kernel-$(CONFIG_HPUX) += hpux/
70 71
71core-y += $(addprefix arch/parisc/, $(kernel-y)) 72core-y += $(addprefix arch/parisc/, $(kernel-y))
72libs-y += arch/parisc/lib/ `$(CC) -print-libgcc-file-name` 73libs-y += arch/parisc/lib/
73 74
74drivers-$(CONFIG_OPROFILE) += arch/parisc/oprofile/ 75drivers-$(CONFIG_OPROFILE) += arch/parisc/oprofile/
75 76
@@ -77,27 +78,27 @@ PALO := $(shell if which palo; then : ; \
77 elif [ -x /sbin/palo ]; then echo /sbin/palo; \ 78 elif [ -x /sbin/palo ]; then echo /sbin/palo; \
78 fi) 79 fi)
79 80
81PALOCONF := $(shell if [ -f $(src)/palo.conf ]; then echo $(src)/palo.conf; \
82 else echo $(obj)/palo.conf; \
83 fi)
84
80palo: vmlinux 85palo: vmlinux
81 @if [ -x $PALO ]; then \ 86 @if test ! -x "$(PALO)"; then \
82 echo 'ERROR: Please install palo first (apt-get install palo)';\ 87 echo 'ERROR: Please install palo first (apt-get install palo)';\
83 echo 'or build it from source and install it somewhere in your $$PATH';\ 88 echo 'or build it from source and install it somewhere in your $$PATH';\
84 false; \ 89 false; \
85 fi 90 fi
86 @if [ ! -f ./palo.conf ]; then \ 91 @if test ! -f "$(PALOCONF)"; then \
87 cp arch/parisc/defpalo.conf palo.conf; \ 92 cp $(src)/arch/parisc/defpalo.conf $(obj)/palo.conf; \
88 echo 'A generic palo config file (./palo.conf) has been created for you.'; \ 93 echo 'A generic palo config file ($(obj)/palo.conf) has been created for you.'; \
89 echo 'You should check it and re-run "make palo".'; \ 94 echo 'You should check it and re-run "make palo".'; \
90 echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \ 95 echo 'WARNING: the "lifimage" file is now placed in this directory by default!'; \
91 false; \ 96 false; \
92 fi 97 fi
93 $(PALO) -f ./palo.conf 98 $(PALO) -f $(PALOCONF)
94
95oldpalo: vmlinux
96 export TOPDIR=`pwd`; \
97 unset STRIP LDFLAGS CPP CPPFLAGS AFLAGS CFLAGS CC LD; cd ../palo && make lifimage
98 99
99# Shorthands for known targets not supported by parisc, use palo as default 100# Shorthands for known targets not supported by parisc, use vmlinux as default
100Image zImage bzImage: palo 101Image zImage bzImage: vmlinux
101 102
102kernel_install: vmlinux 103kernel_install: vmlinux
103 sh $(src)/arch/parisc/install.sh \ 104 sh $(src)/arch/parisc/install.sh \
@@ -116,3 +117,12 @@ define archhelp
116 @echo ' (distribution) /sbin/installkernel or' 117 @echo ' (distribution) /sbin/installkernel or'
117 @echo ' copy to $$(INSTALL_PATH)' 118 @echo ' copy to $$(INSTALL_PATH)'
118endef 119endef
120
121# we require gcc 3.3 or above to compile the kernel
122archprepare: checkbin
123checkbin:
124 @if test "$(call cc-version)" -lt "0303"; then \
125 echo -n "Sorry, GCC v3.3 or above is required to build " ; \
126 echo "the kernel." ; \
127 false ; \
128 fi
diff --git a/arch/parisc/configs/712_defconfig b/arch/parisc/configs/712_defconfig
index 41fd0696bbe7..9fc96e727165 100644
--- a/arch/parisc/configs/712_defconfig
+++ b/arch/parisc/configs/712_defconfig
@@ -1,39 +1,51 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-pa6 3# Linux kernel version: 2.6.23
4# Sun Mar 26 19:59:51 2006 4# Fri Oct 12 21:00:07 2007
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
8CONFIG_STACK_GROWSUP=y 8CONFIG_STACK_GROWSUP=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10# CONFIG_ARCH_HAS_ILOG2_U32 is not set
11# CONFIG_ARCH_HAS_ILOG2_U64 is not set
12CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_BUG=y
14CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
16CONFIG_GENERIC_TIME=y
11CONFIG_GENERIC_HARDIRQS=y 17CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 18CONFIG_GENERIC_IRQ_PROBE=y
19CONFIG_IRQ_PER_CPU=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
13 21
14# 22#
15# Code maturity level options 23# General setup
16# 24#
17CONFIG_EXPERIMENTAL=y 25CONFIG_EXPERIMENTAL=y
18CONFIG_BROKEN_ON_SMP=y 26CONFIG_BROKEN_ON_SMP=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 27CONFIG_INIT_ENV_ARG_LIMIT=32
20
21#
22# General setup
23#
24CONFIG_LOCALVERSION="" 28CONFIG_LOCALVERSION=""
25# CONFIG_LOCALVERSION_AUTO is not set 29# CONFIG_LOCALVERSION_AUTO is not set
26CONFIG_SWAP=y 30CONFIG_SWAP=y
27CONFIG_SYSVIPC=y 31CONFIG_SYSVIPC=y
32CONFIG_SYSVIPC_SYSCTL=y
28CONFIG_POSIX_MQUEUE=y 33CONFIG_POSIX_MQUEUE=y
29# CONFIG_BSD_PROCESS_ACCT is not set 34# CONFIG_BSD_PROCESS_ACCT is not set
30CONFIG_SYSCTL=y 35# CONFIG_TASKSTATS is not set
36# CONFIG_USER_NS is not set
31# CONFIG_AUDIT is not set 37# CONFIG_AUDIT is not set
32CONFIG_IKCONFIG=y 38CONFIG_IKCONFIG=y
33CONFIG_IKCONFIG_PROC=y 39CONFIG_IKCONFIG_PROC=y
40CONFIG_LOG_BUF_SHIFT=16
41CONFIG_SYSFS_DEPRECATED=y
42# CONFIG_RELAY is not set
43CONFIG_BLK_DEV_INITRD=y
34CONFIG_INITRAMFS_SOURCE="" 44CONFIG_INITRAMFS_SOURCE=""
35CONFIG_CC_OPTIMIZE_FOR_SIZE=y 45CONFIG_CC_OPTIMIZE_FOR_SIZE=y
46CONFIG_SYSCTL=y
36# CONFIG_EMBEDDED is not set 47# CONFIG_EMBEDDED is not set
48CONFIG_SYSCTL_SYSCALL=y
37CONFIG_KALLSYMS=y 49CONFIG_KALLSYMS=y
38CONFIG_KALLSYMS_ALL=y 50CONFIG_KALLSYMS_ALL=y
39# CONFIG_KALLSYMS_EXTRA_PASS is not set 51# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -43,31 +55,29 @@ CONFIG_BUG=y
43CONFIG_ELF_CORE=y 55CONFIG_ELF_CORE=y
44CONFIG_BASE_FULL=y 56CONFIG_BASE_FULL=y
45CONFIG_FUTEX=y 57CONFIG_FUTEX=y
58CONFIG_ANON_INODES=y
46CONFIG_EPOLL=y 59CONFIG_EPOLL=y
60CONFIG_SIGNALFD=y
61CONFIG_EVENTFD=y
47CONFIG_SHMEM=y 62CONFIG_SHMEM=y
48CONFIG_CC_ALIGN_FUNCTIONS=0 63CONFIG_VM_EVENT_COUNTERS=y
49CONFIG_CC_ALIGN_LABELS=0
50CONFIG_CC_ALIGN_LOOPS=0
51CONFIG_CC_ALIGN_JUMPS=0
52CONFIG_SLAB=y 64CONFIG_SLAB=y
65# CONFIG_SLUB is not set
66# CONFIG_SLOB is not set
67CONFIG_RT_MUTEXES=y
53# CONFIG_TINY_SHMEM is not set 68# CONFIG_TINY_SHMEM is not set
54CONFIG_BASE_SMALL=0 69CONFIG_BASE_SMALL=0
55# CONFIG_SLOB is not set
56
57#
58# Loadable module support
59#
60CONFIG_MODULES=y 70CONFIG_MODULES=y
61CONFIG_MODULE_UNLOAD=y 71CONFIG_MODULE_UNLOAD=y
62CONFIG_MODULE_FORCE_UNLOAD=y 72CONFIG_MODULE_FORCE_UNLOAD=y
63CONFIG_OBSOLETE_MODPARM=y
64# CONFIG_MODVERSIONS is not set 73# CONFIG_MODVERSIONS is not set
65# CONFIG_MODULE_SRCVERSION_ALL is not set 74# CONFIG_MODULE_SRCVERSION_ALL is not set
66CONFIG_KMOD=y 75CONFIG_KMOD=y
67 76CONFIG_BLOCK=y
68# 77# CONFIG_LBD is not set
69# Block layer 78# CONFIG_BLK_DEV_IO_TRACE is not set
70# 79# CONFIG_LSF is not set
80# CONFIG_BLK_DEV_BSG is not set
71 81
72# 82#
73# IO Schedulers 83# IO Schedulers
@@ -91,6 +101,9 @@ CONFIG_PA7100LC=y
91# CONFIG_PA7300LC is not set 101# CONFIG_PA7300LC is not set
92# CONFIG_PA8X00 is not set 102# CONFIG_PA8X00 is not set
93CONFIG_PA11=y 103CONFIG_PA11=y
104CONFIG_PARISC_PAGE_SIZE_4KB=y
105# CONFIG_PARISC_PAGE_SIZE_16KB is not set
106# CONFIG_PARISC_PAGE_SIZE_64KB is not set
94# CONFIG_SMP is not set 107# CONFIG_SMP is not set
95CONFIG_ARCH_FLATMEM_ENABLE=y 108CONFIG_ARCH_FLATMEM_ENABLE=y
96# CONFIG_PREEMPT_NONE is not set 109# CONFIG_PREEMPT_NONE is not set
@@ -98,6 +111,7 @@ CONFIG_PREEMPT_VOLUNTARY=y
98# CONFIG_PREEMPT is not set 111# CONFIG_PREEMPT is not set
99# CONFIG_HZ_100 is not set 112# CONFIG_HZ_100 is not set
100CONFIG_HZ_250=y 113CONFIG_HZ_250=y
114# CONFIG_HZ_300 is not set
101# CONFIG_HZ_1000 is not set 115# CONFIG_HZ_1000 is not set
102CONFIG_HZ=250 116CONFIG_HZ=250
103CONFIG_SELECT_MEMORY_MODEL=y 117CONFIG_SELECT_MEMORY_MODEL=y
@@ -108,6 +122,9 @@ CONFIG_FLATMEM=y
108CONFIG_FLAT_NODE_MEM_MAP=y 122CONFIG_FLAT_NODE_MEM_MAP=y
109# CONFIG_SPARSEMEM_STATIC is not set 123# CONFIG_SPARSEMEM_STATIC is not set
110CONFIG_SPLIT_PTLOCK_CPUS=4096 124CONFIG_SPLIT_PTLOCK_CPUS=4096
125# CONFIG_RESOURCES_64BIT is not set
126CONFIG_ZONE_DMA_FLAG=0
127CONFIG_VIRT_TO_BUS=y
111# CONFIG_HPUX is not set 128# CONFIG_HPUX is not set
112 129
113# 130#
@@ -120,6 +137,7 @@ CONFIG_GSC_LASI=y
120# CONFIG_GSC_WAX is not set 137# CONFIG_GSC_WAX is not set
121# CONFIG_EISA is not set 138# CONFIG_EISA is not set
122# CONFIG_PCI is not set 139# CONFIG_PCI is not set
140# CONFIG_ARCH_SUPPORTS_MSI is not set
123 141
124# 142#
125# PCCARD (PCMCIA/CardBus) support 143# PCCARD (PCMCIA/CardBus) support
@@ -127,14 +145,11 @@ CONFIG_GSC_LASI=y
127# CONFIG_PCCARD is not set 145# CONFIG_PCCARD is not set
128 146
129# 147#
130# PCI Hotplug Support
131#
132
133#
134# PA-RISC specific drivers 148# PA-RISC specific drivers
135# 149#
136CONFIG_CHASSIS_LCD_LED=y 150CONFIG_CHASSIS_LCD_LED=y
137# CONFIG_PDC_CHASSIS is not set 151# CONFIG_PDC_CHASSIS is not set
152CONFIG_PDC_CHASSIS_WARN=y
138CONFIG_PDC_STABLE=y 153CONFIG_PDC_STABLE=y
139 154
140# 155#
@@ -151,13 +166,15 @@ CONFIG_NET=y
151# 166#
152# Networking options 167# Networking options
153# 168#
154# CONFIG_NETDEBUG is not set
155CONFIG_PACKET=y 169CONFIG_PACKET=y
156CONFIG_PACKET_MMAP=y 170CONFIG_PACKET_MMAP=y
157CONFIG_UNIX=y 171CONFIG_UNIX=y
158CONFIG_XFRM=y 172CONFIG_XFRM=y
159CONFIG_XFRM_USER=m 173CONFIG_XFRM_USER=m
174# CONFIG_XFRM_SUB_POLICY is not set
175# CONFIG_XFRM_MIGRATE is not set
160CONFIG_NET_KEY=m 176CONFIG_NET_KEY=m
177# CONFIG_NET_KEY_MIGRATE is not set
161CONFIG_INET=y 178CONFIG_INET=y
162CONFIG_IP_MULTICAST=y 179CONFIG_IP_MULTICAST=y
163# CONFIG_IP_ADVANCED_ROUTER is not set 180# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -174,17 +191,23 @@ CONFIG_IP_PNP_BOOTP=y
174CONFIG_INET_AH=m 191CONFIG_INET_AH=m
175CONFIG_INET_ESP=m 192CONFIG_INET_ESP=m
176# CONFIG_INET_IPCOMP is not set 193# CONFIG_INET_IPCOMP is not set
177CONFIG_INET_TUNNEL=m 194# CONFIG_INET_XFRM_TUNNEL is not set
195# CONFIG_INET_TUNNEL is not set
196CONFIG_INET_XFRM_MODE_TRANSPORT=y
197CONFIG_INET_XFRM_MODE_TUNNEL=y
198CONFIG_INET_XFRM_MODE_BEET=y
199# CONFIG_INET_LRO is not set
178CONFIG_INET_DIAG=m 200CONFIG_INET_DIAG=m
179CONFIG_INET_TCP_DIAG=m 201CONFIG_INET_TCP_DIAG=m
180# CONFIG_TCP_CONG_ADVANCED is not set 202# CONFIG_TCP_CONG_ADVANCED is not set
181CONFIG_TCP_CONG_BIC=y 203CONFIG_TCP_CONG_CUBIC=y
182 204CONFIG_DEFAULT_TCP_CONG="cubic"
183# 205# CONFIG_TCP_MD5SIG is not set
184# IP: Virtual Server Configuration
185#
186# CONFIG_IP_VS is not set 206# CONFIG_IP_VS is not set
187# CONFIG_IPV6 is not set 207# CONFIG_IPV6 is not set
208# CONFIG_INET6_XFRM_TUNNEL is not set
209# CONFIG_INET6_TUNNEL is not set
210# CONFIG_NETWORK_SECMARK is not set
188CONFIG_NETFILTER=y 211CONFIG_NETFILTER=y
189# CONFIG_NETFILTER_DEBUG is not set 212# CONFIG_NETFILTER_DEBUG is not set
190 213
@@ -192,37 +215,18 @@ CONFIG_NETFILTER=y
192# Core Netfilter Configuration 215# Core Netfilter Configuration
193# 216#
194# CONFIG_NETFILTER_NETLINK is not set 217# CONFIG_NETFILTER_NETLINK is not set
218# CONFIG_NF_CONNTRACK_ENABLED is not set
219# CONFIG_NF_CONNTRACK is not set
195# CONFIG_NETFILTER_XTABLES is not set 220# CONFIG_NETFILTER_XTABLES is not set
196 221
197# 222#
198# IP: Netfilter Configuration 223# IP: Netfilter Configuration
199# 224#
200CONFIG_IP_NF_CONNTRACK=m
201# CONFIG_IP_NF_CT_ACCT is not set
202CONFIG_IP_NF_CONNTRACK_MARK=y
203# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
204CONFIG_IP_NF_CT_PROTO_SCTP=m
205CONFIG_IP_NF_FTP=m
206CONFIG_IP_NF_IRC=m
207# CONFIG_IP_NF_NETBIOS_NS is not set
208CONFIG_IP_NF_TFTP=m
209CONFIG_IP_NF_AMANDA=m
210# CONFIG_IP_NF_PPTP is not set
211CONFIG_IP_NF_QUEUE=m 225CONFIG_IP_NF_QUEUE=m
212 226# CONFIG_IP_NF_IPTABLES is not set
213# 227# CONFIG_IP_NF_ARPTABLES is not set
214# DCCP Configuration (EXPERIMENTAL)
215#
216# CONFIG_IP_DCCP is not set 228# CONFIG_IP_DCCP is not set
217
218#
219# SCTP Configuration (EXPERIMENTAL)
220#
221# CONFIG_IP_SCTP is not set 229# CONFIG_IP_SCTP is not set
222
223#
224# TIPC Configuration (EXPERIMENTAL)
225#
226# CONFIG_TIPC is not set 230# CONFIG_TIPC is not set
227# CONFIG_ATM is not set 231# CONFIG_ATM is not set
228# CONFIG_BRIDGE is not set 232# CONFIG_BRIDGE is not set
@@ -234,7 +238,6 @@ CONFIG_LLC2=m
234# CONFIG_ATALK is not set 238# CONFIG_ATALK is not set
235# CONFIG_X25 is not set 239# CONFIG_X25 is not set
236# CONFIG_LAPB is not set 240# CONFIG_LAPB is not set
237# CONFIG_NET_DIVERT is not set
238# CONFIG_ECONET is not set 241# CONFIG_ECONET is not set
239# CONFIG_WAN_ROUTER is not set 242# CONFIG_WAN_ROUTER is not set
240 243
@@ -250,7 +253,17 @@ CONFIG_NET_PKTGEN=m
250# CONFIG_HAMRADIO is not set 253# CONFIG_HAMRADIO is not set
251# CONFIG_IRDA is not set 254# CONFIG_IRDA is not set
252# CONFIG_BT is not set 255# CONFIG_BT is not set
256# CONFIG_AF_RXRPC is not set
257
258#
259# Wireless
260#
261# CONFIG_CFG80211 is not set
262# CONFIG_WIRELESS_EXT is not set
263# CONFIG_MAC80211 is not set
253# CONFIG_IEEE80211 is not set 264# CONFIG_IEEE80211 is not set
265# CONFIG_RFKILL is not set
266# CONFIG_NET_9P is not set
254 267
255# 268#
256# Device Drivers 269# Device Drivers
@@ -259,39 +272,24 @@ CONFIG_NET_PKTGEN=m
259# 272#
260# Generic Driver Options 273# Generic Driver Options
261# 274#
275CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
262# CONFIG_STANDALONE is not set 276# CONFIG_STANDALONE is not set
263# CONFIG_PREVENT_FIRMWARE_BUILD is not set 277# CONFIG_PREVENT_FIRMWARE_BUILD is not set
264CONFIG_FW_LOADER=y 278CONFIG_FW_LOADER=y
265# CONFIG_DEBUG_DRIVER is not set 279# CONFIG_DEBUG_DRIVER is not set
266 280# CONFIG_DEBUG_DEVRES is not set
267# 281# CONFIG_SYS_HYPERVISOR is not set
268# Connector - unified userspace <-> kernelspace linker
269#
270# CONFIG_CONNECTOR is not set 282# CONFIG_CONNECTOR is not set
271
272#
273# Memory Technology Devices (MTD)
274#
275# CONFIG_MTD is not set 283# CONFIG_MTD is not set
276
277#
278# Parallel port support
279#
280CONFIG_PARPORT=y 284CONFIG_PARPORT=y
281CONFIG_PARPORT_PC=m 285CONFIG_PARPORT_PC=m
282# CONFIG_PARPORT_PC_FIFO is not set 286# CONFIG_PARPORT_PC_FIFO is not set
283# CONFIG_PARPORT_PC_SUPERIO is not set 287# CONFIG_PARPORT_PC_SUPERIO is not set
284CONFIG_PARPORT_NOT_PC=y
285CONFIG_PARPORT_GSC=y 288CONFIG_PARPORT_GSC=y
289# CONFIG_PARPORT_AX88796 is not set
286# CONFIG_PARPORT_1284 is not set 290# CONFIG_PARPORT_1284 is not set
287 291CONFIG_PARPORT_NOT_PC=y
288# 292CONFIG_BLK_DEV=y
289# Plug and Play support
290#
291
292#
293# Block devices
294#
295# CONFIG_PARIDE is not set 293# CONFIG_PARIDE is not set
296# CONFIG_BLK_DEV_COW_COMMON is not set 294# CONFIG_BLK_DEV_COW_COMMON is not set
297CONFIG_BLK_DEV_LOOP=y 295CONFIG_BLK_DEV_LOOP=y
@@ -300,13 +298,11 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y
300CONFIG_BLK_DEV_RAM=y 298CONFIG_BLK_DEV_RAM=y
301CONFIG_BLK_DEV_RAM_COUNT=16 299CONFIG_BLK_DEV_RAM_COUNT=16
302CONFIG_BLK_DEV_RAM_SIZE=6144 300CONFIG_BLK_DEV_RAM_SIZE=6144
303CONFIG_BLK_DEV_INITRD=y 301CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
304# CONFIG_CDROM_PKTCDVD is not set 302# CONFIG_CDROM_PKTCDVD is not set
305CONFIG_ATA_OVER_ETH=m 303CONFIG_ATA_OVER_ETH=m
306 304CONFIG_MISC_DEVICES=y
307# 305# CONFIG_EEPROM_93CX6 is not set
308# ATA/ATAPI/MFM/RLL support
309#
310# CONFIG_IDE is not set 306# CONFIG_IDE is not set
311 307
312# 308#
@@ -314,6 +310,9 @@ CONFIG_ATA_OVER_ETH=m
314# 310#
315# CONFIG_RAID_ATTRS is not set 311# CONFIG_RAID_ATTRS is not set
316CONFIG_SCSI=y 312CONFIG_SCSI=y
313CONFIG_SCSI_DMA=y
314# CONFIG_SCSI_TGT is not set
315# CONFIG_SCSI_NETLINK is not set
317CONFIG_SCSI_PROC_FS=y 316CONFIG_SCSI_PROC_FS=y
318 317
319# 318#
@@ -333,104 +332,61 @@ CONFIG_CHR_DEV_SG=y
333# CONFIG_SCSI_MULTI_LUN is not set 332# CONFIG_SCSI_MULTI_LUN is not set
334# CONFIG_SCSI_CONSTANTS is not set 333# CONFIG_SCSI_CONSTANTS is not set
335# CONFIG_SCSI_LOGGING is not set 334# CONFIG_SCSI_LOGGING is not set
335# CONFIG_SCSI_SCAN_ASYNC is not set
336CONFIG_SCSI_WAIT_SCAN=m
336 337
337# 338#
338# SCSI Transport Attributes 339# SCSI Transports
339# 340#
340CONFIG_SCSI_SPI_ATTRS=y 341CONFIG_SCSI_SPI_ATTRS=y
341# CONFIG_SCSI_FC_ATTRS is not set 342# CONFIG_SCSI_FC_ATTRS is not set
342CONFIG_SCSI_ISCSI_ATTRS=m 343CONFIG_SCSI_ISCSI_ATTRS=m
343# CONFIG_SCSI_SAS_ATTRS is not set 344# CONFIG_SCSI_SAS_LIBSAS is not set
344 345CONFIG_SCSI_LOWLEVEL=y
345#
346# SCSI low-level drivers
347#
348# CONFIG_ISCSI_TCP is not set 346# CONFIG_ISCSI_TCP is not set
349# CONFIG_SCSI_SATA is not set
350# CONFIG_SCSI_PPA is not set 347# CONFIG_SCSI_PPA is not set
351# CONFIG_SCSI_IMM is not set 348# CONFIG_SCSI_IMM is not set
352CONFIG_SCSI_LASI700=y 349CONFIG_SCSI_LASI700=y
353CONFIG_53C700_LE_ON_BE=y 350CONFIG_53C700_LE_ON_BE=y
354# CONFIG_SCSI_ZALON is not set 351# CONFIG_SCSI_ZALON is not set
355CONFIG_SCSI_DEBUG=m 352CONFIG_SCSI_DEBUG=m
356 353# CONFIG_ATA is not set
357#
358# Multi-device support (RAID and LVM)
359#
360CONFIG_MD=y 354CONFIG_MD=y
361CONFIG_BLK_DEV_MD=m 355CONFIG_BLK_DEV_MD=m
362CONFIG_MD_LINEAR=m 356CONFIG_MD_LINEAR=m
363CONFIG_MD_RAID0=m 357CONFIG_MD_RAID0=m
364CONFIG_MD_RAID1=m 358CONFIG_MD_RAID1=m
365# CONFIG_MD_RAID10 is not set 359# CONFIG_MD_RAID10 is not set
366# CONFIG_MD_RAID5 is not set 360# CONFIG_MD_RAID456 is not set
367# CONFIG_MD_RAID6 is not set
368# CONFIG_MD_MULTIPATH is not set 361# CONFIG_MD_MULTIPATH is not set
369# CONFIG_MD_FAULTY is not set 362# CONFIG_MD_FAULTY is not set
370# CONFIG_BLK_DEV_DM is not set 363# CONFIG_BLK_DEV_DM is not set
371
372#
373# Fusion MPT device support
374#
375# CONFIG_FUSION is not set
376
377#
378# IEEE 1394 (FireWire) support
379#
380
381#
382# I2O device support
383#
384
385#
386# Network device support
387#
388CONFIG_NETDEVICES=y 364CONFIG_NETDEVICES=y
365# CONFIG_NETDEVICES_MULTIQUEUE is not set
389CONFIG_DUMMY=m 366CONFIG_DUMMY=m
390CONFIG_BONDING=m 367CONFIG_BONDING=m
368# CONFIG_MACVLAN is not set
391# CONFIG_EQUALIZER is not set 369# CONFIG_EQUALIZER is not set
392CONFIG_TUN=m 370CONFIG_TUN=m
393 371# CONFIG_VETH is not set
394#
395# PHY device support
396#
397# CONFIG_PHYLIB is not set 372# CONFIG_PHYLIB is not set
398
399#
400# Ethernet (10 or 100Mbit)
401#
402CONFIG_NET_ETHERNET=y 373CONFIG_NET_ETHERNET=y
403CONFIG_MII=m 374CONFIG_MII=m
404CONFIG_LASI_82596=y 375CONFIG_LASI_82596=y
376# CONFIG_IBM_NEW_EMAC_ZMII is not set
377# CONFIG_IBM_NEW_EMAC_RGMII is not set
378# CONFIG_IBM_NEW_EMAC_TAH is not set
379# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
380# CONFIG_B44 is not set
405# CONFIG_NET_POCKET is not set 381# CONFIG_NET_POCKET is not set
382CONFIG_NETDEV_1000=y
383CONFIG_NETDEV_10000=y
406 384
407# 385#
408# Ethernet (1000 Mbit) 386# Wireless LAN
409#
410
411#
412# Ethernet (10000 Mbit)
413#
414
415#
416# Token Ring devices
417#
418
419#
420# Wireless LAN (non-hamradio)
421#
422CONFIG_NET_RADIO=y
423
424#
425# Obsolete Wireless cards support (pre-802.11)
426#
427# CONFIG_STRIP is not set
428# CONFIG_ATMEL is not set
429# CONFIG_HOSTAP is not set
430
431#
432# Wan interfaces
433# 387#
388# CONFIG_WLAN_PRE80211 is not set
389# CONFIG_WLAN_80211 is not set
434# CONFIG_WAN is not set 390# CONFIG_WAN is not set
435# CONFIG_PLIP is not set 391# CONFIG_PLIP is not set
436CONFIG_PPP=m 392CONFIG_PPP=m
@@ -442,26 +398,22 @@ CONFIG_PPP_DEFLATE=m
442CONFIG_PPP_BSDCOMP=m 398CONFIG_PPP_BSDCOMP=m
443CONFIG_PPP_MPPE=m 399CONFIG_PPP_MPPE=m
444CONFIG_PPPOE=m 400CONFIG_PPPOE=m
401# CONFIG_PPPOL2TP is not set
445# CONFIG_SLIP is not set 402# CONFIG_SLIP is not set
403CONFIG_SLHC=m
446# CONFIG_SHAPER is not set 404# CONFIG_SHAPER is not set
447# CONFIG_NETCONSOLE is not set 405# CONFIG_NETCONSOLE is not set
448# CONFIG_NETPOLL is not set 406# CONFIG_NETPOLL is not set
449# CONFIG_NET_POLL_CONTROLLER is not set 407# CONFIG_NET_POLL_CONTROLLER is not set
450
451#
452# ISDN subsystem
453#
454# CONFIG_ISDN is not set 408# CONFIG_ISDN is not set
455
456#
457# Telephony Support
458#
459# CONFIG_PHONE is not set 409# CONFIG_PHONE is not set
460 410
461# 411#
462# Input device support 412# Input device support
463# 413#
464CONFIG_INPUT=y 414CONFIG_INPUT=y
415# CONFIG_INPUT_FF_MEMLESS is not set
416# CONFIG_INPUT_POLLDEV is not set
465 417
466# 418#
467# Userland interfaces 419# Userland interfaces
@@ -486,14 +438,22 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y
486# CONFIG_KEYBOARD_LKKBD is not set 438# CONFIG_KEYBOARD_LKKBD is not set
487# CONFIG_KEYBOARD_XTKBD is not set 439# CONFIG_KEYBOARD_XTKBD is not set
488# CONFIG_KEYBOARD_NEWTON is not set 440# CONFIG_KEYBOARD_NEWTON is not set
441# CONFIG_KEYBOARD_STOWAWAY is not set
489# CONFIG_KEYBOARD_HIL_OLD is not set 442# CONFIG_KEYBOARD_HIL_OLD is not set
490CONFIG_KEYBOARD_HIL=y 443CONFIG_KEYBOARD_HIL=y
491CONFIG_INPUT_MOUSE=y 444CONFIG_INPUT_MOUSE=y
492CONFIG_MOUSE_PS2=y 445CONFIG_MOUSE_PS2=y
446CONFIG_MOUSE_PS2_ALPS=y
447CONFIG_MOUSE_PS2_LOGIPS2PP=y
448CONFIG_MOUSE_PS2_SYNAPTICS=y
449CONFIG_MOUSE_PS2_LIFEBOOK=y
450CONFIG_MOUSE_PS2_TRACKPOINT=y
451# CONFIG_MOUSE_PS2_TOUCHKIT is not set
493CONFIG_MOUSE_SERIAL=m 452CONFIG_MOUSE_SERIAL=m
494# CONFIG_MOUSE_VSXXXAA is not set 453# CONFIG_MOUSE_VSXXXAA is not set
495CONFIG_MOUSE_HIL=m 454CONFIG_MOUSE_HIL=m
496# CONFIG_INPUT_JOYSTICK is not set 455# CONFIG_INPUT_JOYSTICK is not set
456# CONFIG_INPUT_TABLET is not set
497# CONFIG_INPUT_TOUCHSCREEN is not set 457# CONFIG_INPUT_TOUCHSCREEN is not set
498# CONFIG_INPUT_MISC is not set 458# CONFIG_INPUT_MISC is not set
499 459
@@ -516,6 +476,7 @@ CONFIG_SERIO_LIBPS2=y
516CONFIG_VT=y 476CONFIG_VT=y
517CONFIG_VT_CONSOLE=y 477CONFIG_VT_CONSOLE=y
518CONFIG_HW_CONSOLE=y 478CONFIG_HW_CONSOLE=y
479# CONFIG_VT_HW_CONSOLE_BINDING is not set
519# CONFIG_SERIAL_NONSTANDARD is not set 480# CONFIG_SERIAL_NONSTANDARD is not set
520 481
521# 482#
@@ -523,6 +484,7 @@ CONFIG_HW_CONSOLE=y
523# 484#
524CONFIG_SERIAL_8250=y 485CONFIG_SERIAL_8250=y
525CONFIG_SERIAL_8250_CONSOLE=y 486CONFIG_SERIAL_8250_CONSOLE=y
487CONFIG_SERIAL_8250_GSC=y
526CONFIG_SERIAL_8250_NR_UARTS=17 488CONFIG_SERIAL_8250_NR_UARTS=17
527CONFIG_SERIAL_8250_RUNTIME_UARTS=4 489CONFIG_SERIAL_8250_RUNTIME_UARTS=4
528CONFIG_SERIAL_8250_EXTENDED=y 490CONFIG_SERIAL_8250_EXTENDED=y
@@ -545,36 +507,15 @@ CONFIG_PRINTER=m
545# CONFIG_LP_CONSOLE is not set 507# CONFIG_LP_CONSOLE is not set
546CONFIG_PPDEV=m 508CONFIG_PPDEV=m
547# CONFIG_TIPAR is not set 509# CONFIG_TIPAR is not set
548
549#
550# IPMI
551#
552# CONFIG_IPMI_HANDLER is not set 510# CONFIG_IPMI_HANDLER is not set
553
554#
555# Watchdog Cards
556#
557# CONFIG_WATCHDOG is not set 511# CONFIG_WATCHDOG is not set
512# CONFIG_HW_RANDOM is not set
558CONFIG_GEN_RTC=y 513CONFIG_GEN_RTC=y
559CONFIG_GEN_RTC_X=y 514CONFIG_GEN_RTC_X=y
560# CONFIG_DTLK is not set
561# CONFIG_R3964 is not set 515# CONFIG_R3964 is not set
562
563#
564# Ftape, the floppy tape device driver
565#
566CONFIG_RAW_DRIVER=y 516CONFIG_RAW_DRIVER=y
567CONFIG_MAX_RAW_DEVS=256 517CONFIG_MAX_RAW_DEVS=256
568
569#
570# TPM devices
571#
572# CONFIG_TCG_TPM is not set 518# CONFIG_TCG_TPM is not set
573# CONFIG_TELCLOCK is not set
574
575#
576# I2C support
577#
578# CONFIG_I2C is not set 519# CONFIG_I2C is not set
579 520
580# 521#
@@ -582,46 +523,59 @@ CONFIG_MAX_RAW_DEVS=256
582# 523#
583# CONFIG_SPI is not set 524# CONFIG_SPI is not set
584# CONFIG_SPI_MASTER is not set 525# CONFIG_SPI_MASTER is not set
585
586#
587# Dallas's 1-wire bus
588#
589# CONFIG_W1 is not set 526# CONFIG_W1 is not set
590 527# CONFIG_POWER_SUPPLY is not set
591#
592# Hardware Monitoring support
593#
594# CONFIG_HWMON is not set 528# CONFIG_HWMON is not set
595# CONFIG_HWMON_VID is not set
596 529
597# 530#
598# Misc devices 531# Sonics Silicon Backplane
599# 532#
533CONFIG_SSB_POSSIBLE=y
534# CONFIG_SSB is not set
600 535
601# 536#
602# Multimedia Capabilities Port drivers 537# Multifunction device drivers
603# 538#
539# CONFIG_MFD_SM501 is not set
604 540
605# 541#
606# Multimedia devices 542# Multimedia devices
607# 543#
608# CONFIG_VIDEO_DEV is not set 544# CONFIG_VIDEO_DEV is not set
545# CONFIG_DVB_CORE is not set
546# CONFIG_DAB is not set
609 547
610# 548#
611# Digital Video Broadcasting Devices 549# Graphics support
612# 550#
613# CONFIG_DVB is not set 551# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
614 552
615# 553#
616# Graphics support 554# Display device support
617# 555#
556# CONFIG_DISPLAY_SUPPORT is not set
557# CONFIG_VGASTATE is not set
558CONFIG_VIDEO_OUTPUT_CONTROL=m
618CONFIG_FB=y 559CONFIG_FB=y
560# CONFIG_FIRMWARE_EDID is not set
561# CONFIG_FB_DDC is not set
619CONFIG_FB_CFB_FILLRECT=y 562CONFIG_FB_CFB_FILLRECT=y
620CONFIG_FB_CFB_COPYAREA=y 563CONFIG_FB_CFB_COPYAREA=y
621CONFIG_FB_CFB_IMAGEBLIT=y 564CONFIG_FB_CFB_IMAGEBLIT=y
565# CONFIG_FB_SYS_FILLRECT is not set
566# CONFIG_FB_SYS_COPYAREA is not set
567# CONFIG_FB_SYS_IMAGEBLIT is not set
568# CONFIG_FB_SYS_FOPS is not set
569CONFIG_FB_DEFERRED_IO=y
570# CONFIG_FB_SVGALIB is not set
622# CONFIG_FB_MACMODES is not set 571# CONFIG_FB_MACMODES is not set
572# CONFIG_FB_BACKLIGHT is not set
623CONFIG_FB_MODE_HELPERS=y 573CONFIG_FB_MODE_HELPERS=y
624CONFIG_FB_TILEBLITTING=y 574CONFIG_FB_TILEBLITTING=y
575
576#
577# Frame buffer hardware drivers
578#
625CONFIG_FB_STI=y 579CONFIG_FB_STI=y
626# CONFIG_FB_S1D13XXX is not set 580# CONFIG_FB_S1D13XXX is not set
627# CONFIG_FB_VIRTUAL is not set 581# CONFIG_FB_VIRTUAL is not set
@@ -633,6 +587,7 @@ CONFIG_DUMMY_CONSOLE=y
633CONFIG_DUMMY_CONSOLE_COLUMNS=128 587CONFIG_DUMMY_CONSOLE_COLUMNS=128
634CONFIG_DUMMY_CONSOLE_ROWS=48 588CONFIG_DUMMY_CONSOLE_ROWS=48
635CONFIG_FRAMEBUFFER_CONSOLE=y 589CONFIG_FRAMEBUFFER_CONSOLE=y
590# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
636# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 591# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
637CONFIG_STI_CONSOLE=y 592CONFIG_STI_CONSOLE=y
638CONFIG_FONTS=y 593CONFIG_FONTS=y
@@ -646,16 +601,11 @@ CONFIG_FONT_8x16=y
646# CONFIG_FONT_SUN8x16 is not set 601# CONFIG_FONT_SUN8x16 is not set
647# CONFIG_FONT_SUN12x22 is not set 602# CONFIG_FONT_SUN12x22 is not set
648# CONFIG_FONT_10x18 is not set 603# CONFIG_FONT_10x18 is not set
649
650#
651# Logo configuration
652#
653CONFIG_LOGO=y 604CONFIG_LOGO=y
654# CONFIG_LOGO_LINUX_MONO is not set 605# CONFIG_LOGO_LINUX_MONO is not set
655# CONFIG_LOGO_LINUX_VGA16 is not set 606# CONFIG_LOGO_LINUX_VGA16 is not set
656# CONFIG_LOGO_LINUX_CLUT224 is not set 607# CONFIG_LOGO_LINUX_CLUT224 is not set
657CONFIG_LOGO_PARISC_CLUT224=y 608CONFIG_LOGO_PARISC_CLUT224=y
658# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
659 609
660# 610#
661# Sound 611# Sound
@@ -673,9 +623,11 @@ CONFIG_SND_SEQUENCER=y
673CONFIG_SND_OSSEMUL=y 623CONFIG_SND_OSSEMUL=y
674CONFIG_SND_MIXER_OSS=y 624CONFIG_SND_MIXER_OSS=y
675CONFIG_SND_PCM_OSS=y 625CONFIG_SND_PCM_OSS=y
626CONFIG_SND_PCM_OSS_PLUGINS=y
676CONFIG_SND_SEQUENCER_OSS=y 627CONFIG_SND_SEQUENCER_OSS=y
677# CONFIG_SND_DYNAMIC_MINORS is not set 628# CONFIG_SND_DYNAMIC_MINORS is not set
678CONFIG_SND_SUPPORT_OLD_API=y 629CONFIG_SND_SUPPORT_OLD_API=y
630CONFIG_SND_VERBOSE_PROCFS=y
679# CONFIG_SND_VERBOSE_PRINTK is not set 631# CONFIG_SND_VERBOSE_PRINTK is not set
680# CONFIG_SND_DEBUG is not set 632# CONFIG_SND_DEBUG is not set
681 633
@@ -685,8 +637,10 @@ CONFIG_SND_SUPPORT_OLD_API=y
685# CONFIG_SND_DUMMY is not set 637# CONFIG_SND_DUMMY is not set
686# CONFIG_SND_VIRMIDI is not set 638# CONFIG_SND_VIRMIDI is not set
687# CONFIG_SND_MTPAV is not set 639# CONFIG_SND_MTPAV is not set
640# CONFIG_SND_MTS64 is not set
688# CONFIG_SND_SERIAL_U16550 is not set 641# CONFIG_SND_SERIAL_U16550 is not set
689# CONFIG_SND_MPU401 is not set 642# CONFIG_SND_MPU401 is not set
643# CONFIG_SND_PORTMAN2X4 is not set
690 644
691# 645#
692# GSC devices 646# GSC devices
@@ -694,15 +648,25 @@ CONFIG_SND_SUPPORT_OLD_API=y
694CONFIG_SND_HARMONY=y 648CONFIG_SND_HARMONY=y
695 649
696# 650#
697# Open Sound System 651# System on Chip audio support
698# 652#
699# CONFIG_SOUND_PRIME is not set 653# CONFIG_SND_SOC is not set
700 654
701# 655#
702# USB support 656# SoC Audio support for SuperH
703# 657#
658
659#
660# Open Sound System
661#
662# CONFIG_SOUND_PRIME is not set
663CONFIG_HID_SUPPORT=y
664CONFIG_HID=y
665CONFIG_HID_DEBUG=y
666CONFIG_USB_SUPPORT=y
704# CONFIG_USB_ARCH_HAS_HCD is not set 667# CONFIG_USB_ARCH_HAS_HCD is not set
705# CONFIG_USB_ARCH_HAS_OHCI is not set 668# CONFIG_USB_ARCH_HAS_OHCI is not set
669# CONFIG_USB_ARCH_HAS_EHCI is not set
706 670
707# 671#
708# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' 672# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
@@ -712,19 +676,28 @@ CONFIG_SND_HARMONY=y
712# USB Gadget Support 676# USB Gadget Support
713# 677#
714# CONFIG_USB_GADGET is not set 678# CONFIG_USB_GADGET is not set
679# CONFIG_MMC is not set
680# CONFIG_NEW_LEDS is not set
681# CONFIG_RTC_CLASS is not set
715 682
716# 683#
717# MMC/SD Card support 684# DMA Engine support
685#
686# CONFIG_DMA_ENGINE is not set
687
688#
689# DMA Clients
718# 690#
719# CONFIG_MMC is not set
720 691
721# 692#
722# InfiniBand support 693# DMA Devices
723# 694#
695# CONFIG_AUXDISPLAY is not set
724 696
725# 697#
726# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 698# Userspace I/O
727# 699#
700# CONFIG_UIO is not set
728 701
729# 702#
730# File systems 703# File systems
@@ -734,6 +707,7 @@ CONFIG_EXT2_FS=y
734# CONFIG_EXT2_FS_XIP is not set 707# CONFIG_EXT2_FS_XIP is not set
735CONFIG_EXT3_FS=y 708CONFIG_EXT3_FS=y
736# CONFIG_EXT3_FS_XATTR is not set 709# CONFIG_EXT3_FS_XATTR is not set
710# CONFIG_EXT4DEV_FS is not set
737CONFIG_JBD=y 711CONFIG_JBD=y
738# CONFIG_JBD_DEBUG is not set 712# CONFIG_JBD_DEBUG is not set
739# CONFIG_REISERFS_FS is not set 713# CONFIG_REISERFS_FS is not set
@@ -744,15 +718,16 @@ CONFIG_JFS_FS=m
744# CONFIG_JFS_STATISTICS is not set 718# CONFIG_JFS_STATISTICS is not set
745CONFIG_FS_POSIX_ACL=y 719CONFIG_FS_POSIX_ACL=y
746CONFIG_XFS_FS=m 720CONFIG_XFS_FS=m
747CONFIG_XFS_EXPORT=y
748# CONFIG_XFS_QUOTA is not set 721# CONFIG_XFS_QUOTA is not set
749# CONFIG_XFS_SECURITY is not set 722# CONFIG_XFS_SECURITY is not set
750# CONFIG_XFS_POSIX_ACL is not set 723# CONFIG_XFS_POSIX_ACL is not set
751# CONFIG_XFS_RT is not set 724# CONFIG_XFS_RT is not set
725# CONFIG_GFS2_FS is not set
752# CONFIG_OCFS2_FS is not set 726# CONFIG_OCFS2_FS is not set
753# CONFIG_MINIX_FS is not set 727# CONFIG_MINIX_FS is not set
754# CONFIG_ROMFS_FS is not set 728# CONFIG_ROMFS_FS is not set
755CONFIG_INOTIFY=y 729CONFIG_INOTIFY=y
730CONFIG_INOTIFY_USER=y
756# CONFIG_QUOTA is not set 731# CONFIG_QUOTA is not set
757CONFIG_DNOTIFY=y 732CONFIG_DNOTIFY=y
758# CONFIG_AUTOFS_FS is not set 733# CONFIG_AUTOFS_FS is not set
@@ -783,11 +758,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
783# 758#
784CONFIG_PROC_FS=y 759CONFIG_PROC_FS=y
785CONFIG_PROC_KCORE=y 760CONFIG_PROC_KCORE=y
761CONFIG_PROC_SYSCTL=y
786CONFIG_SYSFS=y 762CONFIG_SYSFS=y
787CONFIG_TMPFS=y 763CONFIG_TMPFS=y
764# CONFIG_TMPFS_POSIX_ACL is not set
788# CONFIG_HUGETLB_PAGE is not set 765# CONFIG_HUGETLB_PAGE is not set
789CONFIG_RAMFS=y 766CONFIG_RAMFS=y
790# CONFIG_RELAYFS_FS is not set
791# CONFIG_CONFIGFS_FS is not set 767# CONFIG_CONFIGFS_FS is not set
792 768
793# 769#
@@ -795,6 +771,7 @@ CONFIG_RAMFS=y
795# 771#
796# CONFIG_ADFS_FS is not set 772# CONFIG_ADFS_FS is not set
797# CONFIG_AFFS_FS is not set 773# CONFIG_AFFS_FS is not set
774# CONFIG_ECRYPT_FS is not set
798# CONFIG_HFS_FS is not set 775# CONFIG_HFS_FS is not set
799# CONFIG_HFSPLUS_FS is not set 776# CONFIG_HFSPLUS_FS is not set
800# CONFIG_BEFS_FS is not set 777# CONFIG_BEFS_FS is not set
@@ -806,6 +783,8 @@ CONFIG_RAMFS=y
806# CONFIG_QNX4FS_FS is not set 783# CONFIG_QNX4FS_FS is not set
807# CONFIG_SYSV_FS is not set 784# CONFIG_SYSV_FS is not set
808CONFIG_UFS_FS=m 785CONFIG_UFS_FS=m
786# CONFIG_UFS_FS_WRITE is not set
787# CONFIG_UFS_DEBUG is not set
809 788
810# 789#
811# Network File Systems 790# Network File Systems
@@ -827,6 +806,7 @@ CONFIG_EXPORTFS=m
827CONFIG_NFS_COMMON=y 806CONFIG_NFS_COMMON=y
828CONFIG_SUNRPC=y 807CONFIG_SUNRPC=y
829CONFIG_SUNRPC_GSS=y 808CONFIG_SUNRPC_GSS=y
809# CONFIG_SUNRPC_BIND34 is not set
830CONFIG_RPCSEC_GSS_KRB5=y 810CONFIG_RPCSEC_GSS_KRB5=y
831CONFIG_RPCSEC_GSS_SPKM3=m 811CONFIG_RPCSEC_GSS_SPKM3=m
832CONFIG_SMB_FS=m 812CONFIG_SMB_FS=m
@@ -834,12 +814,13 @@ CONFIG_SMB_NLS_DEFAULT=y
834CONFIG_SMB_NLS_REMOTE="cp437" 814CONFIG_SMB_NLS_REMOTE="cp437"
835CONFIG_CIFS=m 815CONFIG_CIFS=m
836# CONFIG_CIFS_STATS is not set 816# CONFIG_CIFS_STATS is not set
817# CONFIG_CIFS_WEAK_PW_HASH is not set
837# CONFIG_CIFS_XATTR is not set 818# CONFIG_CIFS_XATTR is not set
819# CONFIG_CIFS_DEBUG2 is not set
838# CONFIG_CIFS_EXPERIMENTAL is not set 820# CONFIG_CIFS_EXPERIMENTAL is not set
839# CONFIG_NCP_FS is not set 821# CONFIG_NCP_FS is not set
840# CONFIG_CODA_FS is not set 822# CONFIG_CODA_FS is not set
841# CONFIG_AFS_FS is not set 823# CONFIG_AFS_FS is not set
842# CONFIG_9P_FS is not set
843 824
844# 825#
845# Partition Types 826# Partition Types
@@ -892,6 +873,11 @@ CONFIG_NLS_KOI8_U=m
892CONFIG_NLS_UTF8=m 873CONFIG_NLS_UTF8=m
893 874
894# 875#
876# Distributed Lock Manager
877#
878# CONFIG_DLM is not set
879
880#
895# Profiling support 881# Profiling support
896# 882#
897CONFIG_PROFILING=y 883CONFIG_PROFILING=y
@@ -901,21 +887,32 @@ CONFIG_OPROFILE=m
901# Kernel hacking 887# Kernel hacking
902# 888#
903# CONFIG_PRINTK_TIME is not set 889# CONFIG_PRINTK_TIME is not set
890CONFIG_ENABLE_MUST_CHECK=y
904CONFIG_MAGIC_SYSRQ=y 891CONFIG_MAGIC_SYSRQ=y
892# CONFIG_UNUSED_SYMBOLS is not set
893# CONFIG_DEBUG_FS is not set
894# CONFIG_HEADERS_CHECK is not set
905CONFIG_DEBUG_KERNEL=y 895CONFIG_DEBUG_KERNEL=y
906CONFIG_LOG_BUF_SHIFT=16 896# CONFIG_DEBUG_SHIRQ is not set
907CONFIG_DETECT_SOFTLOCKUP=y 897CONFIG_DETECT_SOFTLOCKUP=y
898CONFIG_SCHED_DEBUG=y
908# CONFIG_SCHEDSTATS is not set 899# CONFIG_SCHEDSTATS is not set
900# CONFIG_TIMER_STATS is not set
909# CONFIG_DEBUG_SLAB is not set 901# CONFIG_DEBUG_SLAB is not set
910CONFIG_DEBUG_MUTEXES=y 902# CONFIG_DEBUG_RT_MUTEXES is not set
903# CONFIG_RT_MUTEX_TESTER is not set
911# CONFIG_DEBUG_SPINLOCK is not set 904# CONFIG_DEBUG_SPINLOCK is not set
905CONFIG_DEBUG_MUTEXES=y
912# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 906# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
907# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
913# CONFIG_DEBUG_KOBJECT is not set 908# CONFIG_DEBUG_KOBJECT is not set
909CONFIG_DEBUG_BUGVERBOSE=y
914# CONFIG_DEBUG_INFO is not set 910# CONFIG_DEBUG_INFO is not set
915# CONFIG_DEBUG_FS is not set
916# CONFIG_DEBUG_VM is not set 911# CONFIG_DEBUG_VM is not set
912# CONFIG_DEBUG_LIST is not set
917CONFIG_FORCED_INLINING=y 913CONFIG_FORCED_INLINING=y
918# CONFIG_RCU_TORTURE_TEST is not set 914# CONFIG_RCU_TORTURE_TEST is not set
915# CONFIG_FAULT_INJECTION is not set
919CONFIG_DEBUG_RODATA=y 916CONFIG_DEBUG_RODATA=y
920 917
921# 918#
@@ -924,12 +921,13 @@ CONFIG_DEBUG_RODATA=y
924CONFIG_KEYS=y 921CONFIG_KEYS=y
925CONFIG_KEYS_DEBUG_PROC_KEYS=y 922CONFIG_KEYS_DEBUG_PROC_KEYS=y
926# CONFIG_SECURITY is not set 923# CONFIG_SECURITY is not set
927
928#
929# Cryptographic options
930#
931CONFIG_CRYPTO=y 924CONFIG_CRYPTO=y
925CONFIG_CRYPTO_ALGAPI=y
926CONFIG_CRYPTO_BLKCIPHER=y
927CONFIG_CRYPTO_HASH=y
928CONFIG_CRYPTO_MANAGER=y
932CONFIG_CRYPTO_HMAC=y 929CONFIG_CRYPTO_HMAC=y
930# CONFIG_CRYPTO_XCBC is not set
933CONFIG_CRYPTO_NULL=m 931CONFIG_CRYPTO_NULL=m
934CONFIG_CRYPTO_MD4=m 932CONFIG_CRYPTO_MD4=m
935CONFIG_CRYPTO_MD5=y 933CONFIG_CRYPTO_MD5=y
@@ -938,9 +936,18 @@ CONFIG_CRYPTO_SHA256=m
938CONFIG_CRYPTO_SHA512=m 936CONFIG_CRYPTO_SHA512=m
939CONFIG_CRYPTO_WP512=m 937CONFIG_CRYPTO_WP512=m
940CONFIG_CRYPTO_TGR192=m 938CONFIG_CRYPTO_TGR192=m
939# CONFIG_CRYPTO_GF128MUL is not set
940CONFIG_CRYPTO_ECB=m
941CONFIG_CRYPTO_CBC=y
942# CONFIG_CRYPTO_PCBC is not set
943# CONFIG_CRYPTO_LRW is not set
944# CONFIG_CRYPTO_XTS is not set
945# CONFIG_CRYPTO_CRYPTD is not set
941CONFIG_CRYPTO_DES=y 946CONFIG_CRYPTO_DES=y
947# CONFIG_CRYPTO_FCRYPT is not set
942CONFIG_CRYPTO_BLOWFISH=m 948CONFIG_CRYPTO_BLOWFISH=m
943CONFIG_CRYPTO_TWOFISH=m 949CONFIG_CRYPTO_TWOFISH=m
950CONFIG_CRYPTO_TWOFISH_COMMON=m
944CONFIG_CRYPTO_SERPENT=m 951CONFIG_CRYPTO_SERPENT=m
945CONFIG_CRYPTO_AES=m 952CONFIG_CRYPTO_AES=m
946CONFIG_CRYPTO_CAST5=m 953CONFIG_CRYPTO_CAST5=m
@@ -949,21 +956,28 @@ CONFIG_CRYPTO_TEA=m
949CONFIG_CRYPTO_ARC4=m 956CONFIG_CRYPTO_ARC4=m
950CONFIG_CRYPTO_KHAZAD=m 957CONFIG_CRYPTO_KHAZAD=m
951CONFIG_CRYPTO_ANUBIS=m 958CONFIG_CRYPTO_ANUBIS=m
959# CONFIG_CRYPTO_SEED is not set
952CONFIG_CRYPTO_DEFLATE=m 960CONFIG_CRYPTO_DEFLATE=m
953CONFIG_CRYPTO_MICHAEL_MIC=m 961CONFIG_CRYPTO_MICHAEL_MIC=m
954CONFIG_CRYPTO_CRC32C=m 962CONFIG_CRYPTO_CRC32C=m
963# CONFIG_CRYPTO_CAMELLIA is not set
955CONFIG_CRYPTO_TEST=m 964CONFIG_CRYPTO_TEST=m
956 965# CONFIG_CRYPTO_AUTHENC is not set
957# 966# CONFIG_CRYPTO_HW is not set
958# Hardware crypto devices
959#
960 967
961# 968#
962# Library routines 969# Library routines
963# 970#
971CONFIG_BITREVERSE=y
964CONFIG_CRC_CCITT=m 972CONFIG_CRC_CCITT=m
965# CONFIG_CRC16 is not set 973# CONFIG_CRC16 is not set
974# CONFIG_CRC_ITU_T is not set
966CONFIG_CRC32=y 975CONFIG_CRC32=y
976# CONFIG_CRC7 is not set
967CONFIG_LIBCRC32C=m 977CONFIG_LIBCRC32C=m
968CONFIG_ZLIB_INFLATE=m 978CONFIG_ZLIB_INFLATE=m
969CONFIG_ZLIB_DEFLATE=m 979CONFIG_ZLIB_DEFLATE=m
980CONFIG_PLIST=y
981CONFIG_HAS_IOMEM=y
982CONFIG_HAS_IOPORT=y
983CONFIG_HAS_DMA=y
diff --git a/arch/parisc/configs/a500_defconfig b/arch/parisc/configs/a500_defconfig
index f3b812f04592..ea071218a3ed 100644
--- a/arch/parisc/configs/a500_defconfig
+++ b/arch/parisc/configs/a500_defconfig
@@ -1,73 +1,98 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.14-rc5-pa1 3# Linux kernel version: 2.6.23
4# Fri Oct 21 23:04:54 2005 4# Fri Oct 12 21:12:44 2007
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
8CONFIG_STACK_GROWSUP=y 8CONFIG_STACK_GROWSUP=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10# CONFIG_ARCH_HAS_ILOG2_U32 is not set
11# CONFIG_ARCH_HAS_ILOG2_U64 is not set
12CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_BUG=y
14CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
16CONFIG_GENERIC_TIME=y
17CONFIG_TIME_LOW_RES=y
11CONFIG_GENERIC_HARDIRQS=y 18CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 19CONFIG_GENERIC_IRQ_PROBE=y
13CONFIG_ARCH_MAY_HAVE_PC_FDC=y 20CONFIG_IRQ_PER_CPU=y
21CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
14 22
15# 23#
16# Code maturity level options 24# General setup
17# 25#
18CONFIG_EXPERIMENTAL=y 26CONFIG_EXPERIMENTAL=y
19# CONFIG_CLEAN_COMPILE is not set
20CONFIG_BROKEN=y
21CONFIG_BROKEN_ON_SMP=y
22CONFIG_LOCK_KERNEL=y 27CONFIG_LOCK_KERNEL=y
23CONFIG_INIT_ENV_ARG_LIMIT=32 28CONFIG_INIT_ENV_ARG_LIMIT=32
24
25#
26# General setup
27#
28CONFIG_LOCALVERSION="" 29CONFIG_LOCALVERSION=""
29# CONFIG_LOCALVERSION_AUTO is not set 30# CONFIG_LOCALVERSION_AUTO is not set
30CONFIG_SWAP=y 31CONFIG_SWAP=y
31CONFIG_SYSVIPC=y 32CONFIG_SYSVIPC=y
33CONFIG_SYSVIPC_SYSCTL=y
32CONFIG_POSIX_MQUEUE=y 34CONFIG_POSIX_MQUEUE=y
33# CONFIG_BSD_PROCESS_ACCT is not set 35# CONFIG_BSD_PROCESS_ACCT is not set
34CONFIG_SYSCTL=y 36# CONFIG_TASKSTATS is not set
37# CONFIG_USER_NS is not set
35# CONFIG_AUDIT is not set 38# CONFIG_AUDIT is not set
36CONFIG_HOTPLUG=y
37CONFIG_KOBJECT_UEVENT=y
38CONFIG_IKCONFIG=y 39CONFIG_IKCONFIG=y
39CONFIG_IKCONFIG_PROC=y 40CONFIG_IKCONFIG_PROC=y
41CONFIG_LOG_BUF_SHIFT=16
40# CONFIG_CPUSETS is not set 42# CONFIG_CPUSETS is not set
43CONFIG_SYSFS_DEPRECATED=y
44# CONFIG_RELAY is not set
45CONFIG_BLK_DEV_INITRD=y
41CONFIG_INITRAMFS_SOURCE="" 46CONFIG_INITRAMFS_SOURCE=""
47# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
48CONFIG_SYSCTL=y
42CONFIG_EMBEDDED=y 49CONFIG_EMBEDDED=y
50CONFIG_SYSCTL_SYSCALL=y
43CONFIG_KALLSYMS=y 51CONFIG_KALLSYMS=y
44CONFIG_KALLSYMS_ALL=y 52CONFIG_KALLSYMS_ALL=y
45# CONFIG_KALLSYMS_EXTRA_PASS is not set 53# CONFIG_KALLSYMS_EXTRA_PASS is not set
54CONFIG_HOTPLUG=y
46CONFIG_PRINTK=y 55CONFIG_PRINTK=y
47CONFIG_BUG=y 56CONFIG_BUG=y
57CONFIG_ELF_CORE=y
48CONFIG_BASE_FULL=y 58CONFIG_BASE_FULL=y
49CONFIG_FUTEX=y 59CONFIG_FUTEX=y
60CONFIG_ANON_INODES=y
50CONFIG_EPOLL=y 61CONFIG_EPOLL=y
51# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 62CONFIG_SIGNALFD=y
63CONFIG_EVENTFD=y
52CONFIG_SHMEM=y 64CONFIG_SHMEM=y
53CONFIG_CC_ALIGN_FUNCTIONS=0 65CONFIG_VM_EVENT_COUNTERS=y
54CONFIG_CC_ALIGN_LABELS=0 66CONFIG_SLAB=y
55CONFIG_CC_ALIGN_LOOPS=0 67# CONFIG_SLUB is not set
56CONFIG_CC_ALIGN_JUMPS=0 68# CONFIG_SLOB is not set
69CONFIG_RT_MUTEXES=y
57# CONFIG_TINY_SHMEM is not set 70# CONFIG_TINY_SHMEM is not set
58CONFIG_BASE_SMALL=0 71CONFIG_BASE_SMALL=0
59
60#
61# Loadable module support
62#
63CONFIG_MODULES=y 72CONFIG_MODULES=y
64CONFIG_MODULE_UNLOAD=y 73CONFIG_MODULE_UNLOAD=y
65CONFIG_MODULE_FORCE_UNLOAD=y 74CONFIG_MODULE_FORCE_UNLOAD=y
66CONFIG_OBSOLETE_MODPARM=y
67# CONFIG_MODVERSIONS is not set 75# CONFIG_MODVERSIONS is not set
68# CONFIG_MODULE_SRCVERSION_ALL is not set 76# CONFIG_MODULE_SRCVERSION_ALL is not set
69CONFIG_KMOD=y 77CONFIG_KMOD=y
70CONFIG_STOP_MACHINE=y 78CONFIG_STOP_MACHINE=y
79CONFIG_BLOCK=y
80# CONFIG_BLK_DEV_IO_TRACE is not set
81# CONFIG_BLK_DEV_BSG is not set
82CONFIG_BLOCK_COMPAT=y
83
84#
85# IO Schedulers
86#
87CONFIG_IOSCHED_NOOP=y
88CONFIG_IOSCHED_AS=y
89CONFIG_IOSCHED_DEADLINE=y
90CONFIG_IOSCHED_CFQ=y
91# CONFIG_DEFAULT_AS is not set
92# CONFIG_DEFAULT_DEADLINE is not set
93CONFIG_DEFAULT_CFQ=y
94# CONFIG_DEFAULT_NOOP is not set
95CONFIG_DEFAULT_IOSCHED="cfq"
71 96
72# 97#
73# Processor type and features 98# Processor type and features
@@ -80,11 +105,23 @@ CONFIG_PA8X00=y
80CONFIG_PA20=y 105CONFIG_PA20=y
81CONFIG_PREFETCH=y 106CONFIG_PREFETCH=y
82CONFIG_64BIT=y 107CONFIG_64BIT=y
108CONFIG_PARISC_PAGE_SIZE_4KB=y
109# CONFIG_PARISC_PAGE_SIZE_16KB is not set
110# CONFIG_PARISC_PAGE_SIZE_64KB is not set
83CONFIG_SMP=y 111CONFIG_SMP=y
84CONFIG_HOTPLUG_CPU=y 112CONFIG_HOTPLUG_CPU=y
113CONFIG_ARCH_SELECT_MEMORY_MODEL=y
85CONFIG_ARCH_DISCONTIGMEM_ENABLE=y 114CONFIG_ARCH_DISCONTIGMEM_ENABLE=y
115CONFIG_ARCH_FLATMEM_ENABLE=y
116CONFIG_ARCH_DISCONTIGMEM_DEFAULT=y
117CONFIG_NODES_SHIFT=3
118CONFIG_PREEMPT_NONE=y
119# CONFIG_PREEMPT_VOLUNTARY is not set
120# CONFIG_PREEMPT is not set
121CONFIG_PREEMPT_BKL=y
86# CONFIG_HZ_100 is not set 122# CONFIG_HZ_100 is not set
87CONFIG_HZ_250=y 123CONFIG_HZ_250=y
124# CONFIG_HZ_300 is not set
88# CONFIG_HZ_1000 is not set 125# CONFIG_HZ_1000 is not set
89CONFIG_HZ=250 126CONFIG_HZ=250
90CONFIG_SELECT_MEMORY_MODEL=y 127CONFIG_SELECT_MEMORY_MODEL=y
@@ -95,7 +132,10 @@ CONFIG_DISCONTIGMEM=y
95CONFIG_FLAT_NODE_MEM_MAP=y 132CONFIG_FLAT_NODE_MEM_MAP=y
96CONFIG_NEED_MULTIPLE_NODES=y 133CONFIG_NEED_MULTIPLE_NODES=y
97# CONFIG_SPARSEMEM_STATIC is not set 134# CONFIG_SPARSEMEM_STATIC is not set
98# CONFIG_PREEMPT is not set 135CONFIG_SPLIT_PTLOCK_CPUS=4
136CONFIG_RESOURCES_64BIT=y
137CONFIG_ZONE_DMA_FLAG=0
138CONFIG_VIRT_TO_BUS=y
99CONFIG_COMPAT=y 139CONFIG_COMPAT=y
100CONFIG_NR_CPUS=8 140CONFIG_NR_CPUS=8
101 141
@@ -104,7 +144,7 @@ CONFIG_NR_CPUS=8
104# 144#
105# CONFIG_GSC is not set 145# CONFIG_GSC is not set
106CONFIG_PCI=y 146CONFIG_PCI=y
107CONFIG_PCI_LEGACY_PROC=y 147# CONFIG_ARCH_SUPPORTS_MSI is not set
108# CONFIG_PCI_DEBUG is not set 148# CONFIG_PCI_DEBUG is not set
109CONFIG_PCI_LBA=y 149CONFIG_PCI_LBA=y
110CONFIG_IOSAPIC=y 150CONFIG_IOSAPIC=y
@@ -124,13 +164,14 @@ CONFIG_CARDBUS=y
124# PC-card bridges 164# PC-card bridges
125# 165#
126CONFIG_YENTA=m 166CONFIG_YENTA=m
167CONFIG_YENTA_O2=y
168CONFIG_YENTA_RICOH=y
169CONFIG_YENTA_TI=y
170CONFIG_YENTA_ENE_TUNE=y
171CONFIG_YENTA_TOSHIBA=y
127CONFIG_PD6729=m 172CONFIG_PD6729=m
128CONFIG_I82092=m 173CONFIG_I82092=m
129CONFIG_PCCARD_NONSTATIC=m 174CONFIG_PCCARD_NONSTATIC=m
130
131#
132# PCI Hotplug Support
133#
134# CONFIG_HOTPLUG_PCI is not set 175# CONFIG_HOTPLUG_PCI is not set
135 176
136# 177#
@@ -139,6 +180,7 @@ CONFIG_PCCARD_NONSTATIC=m
139# CONFIG_SUPERIO is not set 180# CONFIG_SUPERIO is not set
140# CONFIG_CHASSIS_LCD_LED is not set 181# CONFIG_CHASSIS_LCD_LED is not set
141CONFIG_PDC_CHASSIS=y 182CONFIG_PDC_CHASSIS=y
183CONFIG_PDC_CHASSIS_WARN=y
142CONFIG_PDC_STABLE=y 184CONFIG_PDC_STABLE=y
143 185
144# 186#
@@ -160,7 +202,10 @@ CONFIG_PACKET_MMAP=y
160CONFIG_UNIX=y 202CONFIG_UNIX=y
161CONFIG_XFRM=y 203CONFIG_XFRM=y
162CONFIG_XFRM_USER=m 204CONFIG_XFRM_USER=m
205# CONFIG_XFRM_SUB_POLICY is not set
206# CONFIG_XFRM_MIGRATE is not set
163CONFIG_NET_KEY=m 207CONFIG_NET_KEY=m
208# CONFIG_NET_KEY_MIGRATE is not set
164CONFIG_INET=y 209CONFIG_INET=y
165CONFIG_IP_MULTICAST=y 210CONFIG_IP_MULTICAST=y
166# CONFIG_IP_ADVANCED_ROUTER is not set 211# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -177,97 +222,97 @@ CONFIG_IP_PNP_BOOTP=y
177CONFIG_INET_AH=m 222CONFIG_INET_AH=m
178CONFIG_INET_ESP=m 223CONFIG_INET_ESP=m
179# CONFIG_INET_IPCOMP is not set 224# CONFIG_INET_IPCOMP is not set
225# CONFIG_INET_XFRM_TUNNEL is not set
180CONFIG_INET_TUNNEL=m 226CONFIG_INET_TUNNEL=m
227CONFIG_INET_XFRM_MODE_TRANSPORT=y
228CONFIG_INET_XFRM_MODE_TUNNEL=y
229CONFIG_INET_XFRM_MODE_BEET=y
230# CONFIG_INET_LRO is not set
181CONFIG_INET_DIAG=y 231CONFIG_INET_DIAG=y
182CONFIG_INET_TCP_DIAG=y 232CONFIG_INET_TCP_DIAG=y
183# CONFIG_TCP_CONG_ADVANCED is not set 233# CONFIG_TCP_CONG_ADVANCED is not set
184CONFIG_TCP_CONG_BIC=y 234CONFIG_TCP_CONG_CUBIC=y
185 235CONFIG_DEFAULT_TCP_CONG="cubic"
186# 236# CONFIG_TCP_MD5SIG is not set
187# IP: Virtual Server Configuration
188#
189# CONFIG_IP_VS is not set 237# CONFIG_IP_VS is not set
190CONFIG_IPV6=m 238CONFIG_IPV6=m
191# CONFIG_IPV6_PRIVACY is not set 239# CONFIG_IPV6_PRIVACY is not set
240# CONFIG_IPV6_ROUTER_PREF is not set
241# CONFIG_IPV6_OPTIMISTIC_DAD is not set
192CONFIG_INET6_AH=m 242CONFIG_INET6_AH=m
193CONFIG_INET6_ESP=m 243CONFIG_INET6_ESP=m
194CONFIG_INET6_IPCOMP=m 244CONFIG_INET6_IPCOMP=m
245# CONFIG_IPV6_MIP6 is not set
246CONFIG_INET6_XFRM_TUNNEL=m
195CONFIG_INET6_TUNNEL=m 247CONFIG_INET6_TUNNEL=m
248CONFIG_INET6_XFRM_MODE_TRANSPORT=m
249CONFIG_INET6_XFRM_MODE_TUNNEL=m
250CONFIG_INET6_XFRM_MODE_BEET=m
251# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
252CONFIG_IPV6_SIT=m
196CONFIG_IPV6_TUNNEL=m 253CONFIG_IPV6_TUNNEL=m
254# CONFIG_IPV6_MULTIPLE_TABLES is not set
255# CONFIG_NETWORK_SECMARK is not set
197CONFIG_NETFILTER=y 256CONFIG_NETFILTER=y
198# CONFIG_NETFILTER_DEBUG is not set 257# CONFIG_NETFILTER_DEBUG is not set
258
259#
260# Core Netfilter Configuration
261#
199# CONFIG_NETFILTER_NETLINK is not set 262# CONFIG_NETFILTER_NETLINK is not set
263# CONFIG_NF_CONNTRACK_ENABLED is not set
264# CONFIG_NF_CONNTRACK is not set
265CONFIG_NETFILTER_XTABLES=m
266# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set
267# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
268# CONFIG_NETFILTER_XT_TARGET_MARK is not set
269# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set
270# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set
271# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
272# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set
273# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set
274# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
275# CONFIG_NETFILTER_XT_MATCH_DSCP is not set
276# CONFIG_NETFILTER_XT_MATCH_ESP is not set
277# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set
278# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set
279# CONFIG_NETFILTER_XT_MATCH_MAC is not set
280# CONFIG_NETFILTER_XT_MATCH_MARK is not set
281# CONFIG_NETFILTER_XT_MATCH_POLICY is not set
282# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set
283# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set
284# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set
285# CONFIG_NETFILTER_XT_MATCH_REALM is not set
286# CONFIG_NETFILTER_XT_MATCH_SCTP is not set
287# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set
288# CONFIG_NETFILTER_XT_MATCH_STRING is not set
289# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set
290# CONFIG_NETFILTER_XT_MATCH_TIME is not set
291# CONFIG_NETFILTER_XT_MATCH_U32 is not set
292# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set
200 293
201# 294#
202# IP: Netfilter Configuration 295# IP: Netfilter Configuration
203# 296#
204CONFIG_IP_NF_CONNTRACK=m
205# CONFIG_IP_NF_CT_ACCT is not set
206CONFIG_IP_NF_CONNTRACK_MARK=y
207# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
208CONFIG_IP_NF_CT_PROTO_SCTP=m
209CONFIG_IP_NF_FTP=m
210CONFIG_IP_NF_IRC=m
211# CONFIG_IP_NF_NETBIOS_NS is not set
212CONFIG_IP_NF_TFTP=m
213CONFIG_IP_NF_AMANDA=m
214# CONFIG_IP_NF_PPTP is not set
215CONFIG_IP_NF_QUEUE=m 297CONFIG_IP_NF_QUEUE=m
216CONFIG_IP_NF_IPTABLES=m 298CONFIG_IP_NF_IPTABLES=m
217CONFIG_IP_NF_MATCH_LIMIT=m
218CONFIG_IP_NF_MATCH_IPRANGE=m 299CONFIG_IP_NF_MATCH_IPRANGE=m
219CONFIG_IP_NF_MATCH_MAC=m
220CONFIG_IP_NF_MATCH_PKTTYPE=m
221CONFIG_IP_NF_MATCH_MARK=m
222CONFIG_IP_NF_MATCH_MULTIPORT=m
223CONFIG_IP_NF_MATCH_TOS=m 300CONFIG_IP_NF_MATCH_TOS=m
224CONFIG_IP_NF_MATCH_RECENT=m 301CONFIG_IP_NF_MATCH_RECENT=m
225CONFIG_IP_NF_MATCH_ECN=m 302CONFIG_IP_NF_MATCH_ECN=m
226CONFIG_IP_NF_MATCH_DSCP=m 303# CONFIG_IP_NF_MATCH_AH is not set
227CONFIG_IP_NF_MATCH_AH_ESP=m
228CONFIG_IP_NF_MATCH_LENGTH=m
229CONFIG_IP_NF_MATCH_TTL=m 304CONFIG_IP_NF_MATCH_TTL=m
230CONFIG_IP_NF_MATCH_TCPMSS=m
231CONFIG_IP_NF_MATCH_HELPER=m
232CONFIG_IP_NF_MATCH_STATE=m
233CONFIG_IP_NF_MATCH_CONNTRACK=m
234CONFIG_IP_NF_MATCH_OWNER=m 305CONFIG_IP_NF_MATCH_OWNER=m
235# CONFIG_IP_NF_MATCH_ADDRTYPE is not set 306# CONFIG_IP_NF_MATCH_ADDRTYPE is not set
236# CONFIG_IP_NF_MATCH_REALM is not set
237CONFIG_IP_NF_MATCH_SCTP=m
238# CONFIG_IP_NF_MATCH_DCCP is not set
239CONFIG_IP_NF_MATCH_COMMENT=m
240CONFIG_IP_NF_MATCH_CONNMARK=m
241CONFIG_IP_NF_MATCH_HASHLIMIT=m
242# CONFIG_IP_NF_MATCH_STRING is not set
243CONFIG_IP_NF_FILTER=m 307CONFIG_IP_NF_FILTER=m
244CONFIG_IP_NF_TARGET_REJECT=m 308CONFIG_IP_NF_TARGET_REJECT=m
245CONFIG_IP_NF_TARGET_LOG=m 309CONFIG_IP_NF_TARGET_LOG=m
246CONFIG_IP_NF_TARGET_ULOG=m 310CONFIG_IP_NF_TARGET_ULOG=m
247CONFIG_IP_NF_TARGET_TCPMSS=m
248# CONFIG_IP_NF_TARGET_NFQUEUE is not set
249CONFIG_IP_NF_NAT=m
250CONFIG_IP_NF_NAT_NEEDED=y
251CONFIG_IP_NF_TARGET_MASQUERADE=m
252CONFIG_IP_NF_TARGET_REDIRECT=m
253CONFIG_IP_NF_TARGET_NETMAP=m
254CONFIG_IP_NF_TARGET_SAME=m
255CONFIG_IP_NF_NAT_SNMP_BASIC=m
256CONFIG_IP_NF_NAT_IRC=m
257CONFIG_IP_NF_NAT_FTP=m
258CONFIG_IP_NF_NAT_TFTP=m
259CONFIG_IP_NF_NAT_AMANDA=m
260CONFIG_IP_NF_MANGLE=m 311CONFIG_IP_NF_MANGLE=m
261CONFIG_IP_NF_TARGET_TOS=m 312CONFIG_IP_NF_TARGET_TOS=m
262CONFIG_IP_NF_TARGET_ECN=m 313CONFIG_IP_NF_TARGET_ECN=m
263CONFIG_IP_NF_TARGET_DSCP=m
264CONFIG_IP_NF_TARGET_MARK=m
265CONFIG_IP_NF_TARGET_CLASSIFY=m
266# CONFIG_IP_NF_TARGET_TTL is not set 314# CONFIG_IP_NF_TARGET_TTL is not set
267CONFIG_IP_NF_TARGET_CONNMARK=m
268CONFIG_IP_NF_TARGET_CLUSTERIP=m
269CONFIG_IP_NF_RAW=m 315CONFIG_IP_NF_RAW=m
270CONFIG_IP_NF_TARGET_NOTRACK=m
271CONFIG_IP_NF_ARPTABLES=m 316CONFIG_IP_NF_ARPTABLES=m
272CONFIG_IP_NF_ARPFILTER=m 317CONFIG_IP_NF_ARPFILTER=m
273CONFIG_IP_NF_ARP_MANGLE=m 318CONFIG_IP_NF_ARP_MANGLE=m
@@ -277,48 +322,38 @@ CONFIG_IP_NF_ARP_MANGLE=m
277# 322#
278# CONFIG_IP6_NF_QUEUE is not set 323# CONFIG_IP6_NF_QUEUE is not set
279CONFIG_IP6_NF_IPTABLES=m 324CONFIG_IP6_NF_IPTABLES=m
280# CONFIG_IP6_NF_MATCH_LIMIT is not set
281CONFIG_IP6_NF_MATCH_MAC=m
282CONFIG_IP6_NF_MATCH_RT=m 325CONFIG_IP6_NF_MATCH_RT=m
283CONFIG_IP6_NF_MATCH_OPTS=m 326CONFIG_IP6_NF_MATCH_OPTS=m
284CONFIG_IP6_NF_MATCH_FRAG=m 327CONFIG_IP6_NF_MATCH_FRAG=m
285CONFIG_IP6_NF_MATCH_HL=m 328CONFIG_IP6_NF_MATCH_HL=m
286# CONFIG_IP6_NF_MATCH_MULTIPORT is not set
287# CONFIG_IP6_NF_MATCH_OWNER is not set 329# CONFIG_IP6_NF_MATCH_OWNER is not set
288# CONFIG_IP6_NF_MATCH_MARK is not set
289CONFIG_IP6_NF_MATCH_IPV6HEADER=m 330CONFIG_IP6_NF_MATCH_IPV6HEADER=m
290# CONFIG_IP6_NF_MATCH_AHESP is not set 331# CONFIG_IP6_NF_MATCH_AH is not set
291# CONFIG_IP6_NF_MATCH_LENGTH is not set 332# CONFIG_IP6_NF_MATCH_MH is not set
292# CONFIG_IP6_NF_MATCH_EUI64 is not set 333# CONFIG_IP6_NF_MATCH_EUI64 is not set
293CONFIG_IP6_NF_FILTER=m 334CONFIG_IP6_NF_FILTER=m
294CONFIG_IP6_NF_TARGET_LOG=m 335CONFIG_IP6_NF_TARGET_LOG=m
295CONFIG_IP6_NF_TARGET_REJECT=m 336CONFIG_IP6_NF_TARGET_REJECT=m
296# CONFIG_IP6_NF_TARGET_NFQUEUE is not set
297CONFIG_IP6_NF_MANGLE=m 337CONFIG_IP6_NF_MANGLE=m
298# CONFIG_IP6_NF_TARGET_MARK is not set
299# CONFIG_IP6_NF_TARGET_HL is not set 338# CONFIG_IP6_NF_TARGET_HL is not set
300CONFIG_IP6_NF_RAW=m 339CONFIG_IP6_NF_RAW=m
301
302#
303# DCCP Configuration (EXPERIMENTAL)
304#
305CONFIG_IP_DCCP=m 340CONFIG_IP_DCCP=m
306CONFIG_INET_DCCP_DIAG=m 341CONFIG_INET_DCCP_DIAG=m
342CONFIG_IP_DCCP_ACKVEC=y
307 343
308# 344#
309# DCCP CCIDs Configuration (EXPERIMENTAL) 345# DCCP CCIDs Configuration (EXPERIMENTAL)
310# 346#
347CONFIG_IP_DCCP_CCID2=m
348# CONFIG_IP_DCCP_CCID2_DEBUG is not set
311# CONFIG_IP_DCCP_CCID3 is not set 349# CONFIG_IP_DCCP_CCID3 is not set
312 350
313# 351#
314# DCCP Kernel Hacking 352# DCCP Kernel Hacking
315# 353#
316# CONFIG_IP_DCCP_DEBUG is not set 354# CONFIG_IP_DCCP_DEBUG is not set
317
318#
319# SCTP Configuration (EXPERIMENTAL)
320#
321# CONFIG_IP_SCTP is not set 355# CONFIG_IP_SCTP is not set
356# CONFIG_TIPC is not set
322# CONFIG_ATM is not set 357# CONFIG_ATM is not set
323# CONFIG_BRIDGE is not set 358# CONFIG_BRIDGE is not set
324# CONFIG_VLAN_8021Q is not set 359# CONFIG_VLAN_8021Q is not set
@@ -329,11 +364,13 @@ CONFIG_LLC2=m
329# CONFIG_ATALK is not set 364# CONFIG_ATALK is not set
330# CONFIG_X25 is not set 365# CONFIG_X25 is not set
331# CONFIG_LAPB is not set 366# CONFIG_LAPB is not set
332# CONFIG_NET_DIVERT is not set
333# CONFIG_ECONET is not set 367# CONFIG_ECONET is not set
334# CONFIG_WAN_ROUTER is not set 368# CONFIG_WAN_ROUTER is not set
369
370#
371# QoS and/or fair queueing
372#
335# CONFIG_NET_SCHED is not set 373# CONFIG_NET_SCHED is not set
336# CONFIG_NET_CLS_ROUTE is not set
337 374
338# 375#
339# Network testing 376# Network testing
@@ -342,7 +379,17 @@ CONFIG_NET_PKTGEN=m
342# CONFIG_HAMRADIO is not set 379# CONFIG_HAMRADIO is not set
343# CONFIG_IRDA is not set 380# CONFIG_IRDA is not set
344# CONFIG_BT is not set 381# CONFIG_BT is not set
382# CONFIG_AF_RXRPC is not set
383
384#
385# Wireless
386#
387# CONFIG_CFG80211 is not set
388# CONFIG_WIRELESS_EXT is not set
389# CONFIG_MAC80211 is not set
345# CONFIG_IEEE80211 is not set 390# CONFIG_IEEE80211 is not set
391# CONFIG_RFKILL is not set
392# CONFIG_NET_9P is not set
346 393
347# 394#
348# Device Drivers 395# Device Drivers
@@ -351,34 +398,17 @@ CONFIG_NET_PKTGEN=m
351# 398#
352# Generic Driver Options 399# Generic Driver Options
353# 400#
401CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
354# CONFIG_STANDALONE is not set 402# CONFIG_STANDALONE is not set
355# CONFIG_PREVENT_FIRMWARE_BUILD is not set 403# CONFIG_PREVENT_FIRMWARE_BUILD is not set
356CONFIG_FW_LOADER=y 404CONFIG_FW_LOADER=y
357# CONFIG_DEBUG_DRIVER is not set 405# CONFIG_DEBUG_DRIVER is not set
358 406# CONFIG_DEBUG_DEVRES is not set
359# 407# CONFIG_SYS_HYPERVISOR is not set
360# Connector - unified userspace <-> kernelspace linker
361#
362# CONFIG_CONNECTOR is not set 408# CONFIG_CONNECTOR is not set
363
364#
365# Memory Technology Devices (MTD)
366#
367# CONFIG_MTD is not set 409# CONFIG_MTD is not set
368
369#
370# Parallel port support
371#
372# CONFIG_PARPORT is not set 410# CONFIG_PARPORT is not set
373 411CONFIG_BLK_DEV=y
374#
375# Plug and Play support
376#
377
378#
379# Block devices
380#
381# CONFIG_BLK_DEV_FD is not set
382# CONFIG_BLK_CPQ_DA is not set 412# CONFIG_BLK_CPQ_DA is not set
383# CONFIG_BLK_CPQ_CISS_DA is not set 413# CONFIG_BLK_CPQ_CISS_DA is not set
384# CONFIG_BLK_DEV_DAC960 is not set 414# CONFIG_BLK_DEV_DAC960 is not set
@@ -391,21 +421,14 @@ CONFIG_BLK_DEV_LOOP=y
391CONFIG_BLK_DEV_RAM=y 421CONFIG_BLK_DEV_RAM=y
392CONFIG_BLK_DEV_RAM_COUNT=16 422CONFIG_BLK_DEV_RAM_COUNT=16
393CONFIG_BLK_DEV_RAM_SIZE=6144 423CONFIG_BLK_DEV_RAM_SIZE=6144
394CONFIG_BLK_DEV_INITRD=y 424CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
395# CONFIG_CDROM_PKTCDVD is not set 425# CONFIG_CDROM_PKTCDVD is not set
396
397#
398# IO Schedulers
399#
400CONFIG_IOSCHED_NOOP=y
401CONFIG_IOSCHED_AS=y
402CONFIG_IOSCHED_DEADLINE=y
403CONFIG_IOSCHED_CFQ=y
404# CONFIG_ATA_OVER_ETH is not set 426# CONFIG_ATA_OVER_ETH is not set
405 427CONFIG_MISC_DEVICES=y
406# 428# CONFIG_PHANTOM is not set
407# ATA/ATAPI/MFM/RLL support 429# CONFIG_EEPROM_93CX6 is not set
408# 430# CONFIG_SGI_IOC4 is not set
431# CONFIG_TIFM_CORE is not set
409# CONFIG_IDE is not set 432# CONFIG_IDE is not set
410 433
411# 434#
@@ -413,6 +436,9 @@ CONFIG_IOSCHED_CFQ=y
413# 436#
414CONFIG_RAID_ATTRS=m 437CONFIG_RAID_ATTRS=m
415CONFIG_SCSI=y 438CONFIG_SCSI=y
439CONFIG_SCSI_DMA=y
440# CONFIG_SCSI_TGT is not set
441CONFIG_SCSI_NETLINK=y
416CONFIG_SCSI_PROC_FS=y 442CONFIG_SCSI_PROC_FS=y
417 443
418# 444#
@@ -432,18 +458,18 @@ CONFIG_CHR_DEV_SG=y
432CONFIG_SCSI_MULTI_LUN=y 458CONFIG_SCSI_MULTI_LUN=y
433# CONFIG_SCSI_CONSTANTS is not set 459# CONFIG_SCSI_CONSTANTS is not set
434# CONFIG_SCSI_LOGGING is not set 460# CONFIG_SCSI_LOGGING is not set
461# CONFIG_SCSI_SCAN_ASYNC is not set
462CONFIG_SCSI_WAIT_SCAN=m
435 463
436# 464#
437# SCSI Transport Attributes 465# SCSI Transports
438# 466#
439CONFIG_SCSI_SPI_ATTRS=y 467CONFIG_SCSI_SPI_ATTRS=y
440CONFIG_SCSI_FC_ATTRS=m 468CONFIG_SCSI_FC_ATTRS=m
441CONFIG_SCSI_ISCSI_ATTRS=m 469CONFIG_SCSI_ISCSI_ATTRS=m
442CONFIG_SCSI_SAS_ATTRS=m 470# CONFIG_SCSI_SAS_LIBSAS is not set
443 471CONFIG_SCSI_LOWLEVEL=y
444# 472# CONFIG_ISCSI_TCP is not set
445# SCSI low-level drivers
446#
447# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 473# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
448# CONFIG_SCSI_3W_9XXX is not set 474# CONFIG_SCSI_3W_9XXX is not set
449# CONFIG_SCSI_ACARD is not set 475# CONFIG_SCSI_ACARD is not set
@@ -451,59 +477,40 @@ CONFIG_SCSI_SAS_ATTRS=m
451# CONFIG_SCSI_AIC7XXX is not set 477# CONFIG_SCSI_AIC7XXX is not set
452# CONFIG_SCSI_AIC7XXX_OLD is not set 478# CONFIG_SCSI_AIC7XXX_OLD is not set
453# CONFIG_SCSI_AIC79XX is not set 479# CONFIG_SCSI_AIC79XX is not set
454# CONFIG_SCSI_ADVANSYS is not set 480# CONFIG_SCSI_AIC94XX is not set
481# CONFIG_SCSI_ARCMSR is not set
455# CONFIG_MEGARAID_NEWGEN is not set 482# CONFIG_MEGARAID_NEWGEN is not set
456# CONFIG_MEGARAID_LEGACY is not set 483# CONFIG_MEGARAID_LEGACY is not set
457# CONFIG_MEGARAID_SAS is not set 484# CONFIG_MEGARAID_SAS is not set
458# CONFIG_SCSI_SATA is not set 485# CONFIG_SCSI_HPTIOP is not set
459# CONFIG_SCSI_CPQFCTS is not set
460# CONFIG_SCSI_DMX3191D is not set 486# CONFIG_SCSI_DMX3191D is not set
461# CONFIG_SCSI_EATA_PIO is not set
462# CONFIG_SCSI_FUTURE_DOMAIN is not set 487# CONFIG_SCSI_FUTURE_DOMAIN is not set
463# CONFIG_SCSI_IPS is not set 488# CONFIG_SCSI_IPS is not set
464# CONFIG_SCSI_INITIO is not set 489# CONFIG_SCSI_INITIO is not set
465# CONFIG_SCSI_INIA100 is not set 490# CONFIG_SCSI_INIA100 is not set
491# CONFIG_SCSI_STEX is not set
466CONFIG_SCSI_SYM53C8XX_2=y 492CONFIG_SCSI_SYM53C8XX_2=y
467CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 493CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
468CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 494CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
469CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 495CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
470# CONFIG_SCSI_SYM53C8XX_IOMAPPED is not set 496CONFIG_SCSI_SYM53C8XX_MMIO=y
471# CONFIG_SCSI_IPR is not set
472# CONFIG_SCSI_QLOGIC_ISP is not set
473CONFIG_SCSI_QLOGIC_FC=m
474# CONFIG_SCSI_QLOGIC_FC_FIRMWARE is not set
475CONFIG_SCSI_QLOGIC_1280=m 497CONFIG_SCSI_QLOGIC_1280=m
476# CONFIG_SCSI_QLOGIC_1280_1040 is not set 498# CONFIG_SCSI_QLA_FC is not set
477CONFIG_SCSI_QLA2XXX=y 499# CONFIG_SCSI_QLA_ISCSI is not set
478# CONFIG_SCSI_QLA21XX is not set
479# CONFIG_SCSI_QLA22XX is not set
480CONFIG_SCSI_QLA2300=m
481CONFIG_SCSI_QLA2322=m
482# CONFIG_SCSI_QLA6312 is not set
483# CONFIG_SCSI_QLA24XX is not set
484# CONFIG_SCSI_LPFC is not set 500# CONFIG_SCSI_LPFC is not set
485# CONFIG_SCSI_DC395x is not set 501# CONFIG_SCSI_DC395x is not set
486# CONFIG_SCSI_DC390T is not set 502# CONFIG_SCSI_DC390T is not set
487CONFIG_SCSI_DEBUG=m 503CONFIG_SCSI_DEBUG=m
488 504# CONFIG_SCSI_SRP is not set
489# 505# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
490# PCMCIA SCSI adapter support 506# CONFIG_ATA is not set
491#
492CONFIG_PCMCIA_FDOMAIN=m
493CONFIG_PCMCIA_QLOGIC=m
494CONFIG_PCMCIA_SYM53C500=m
495
496#
497# Multi-device support (RAID and LVM)
498#
499CONFIG_MD=y 507CONFIG_MD=y
500CONFIG_BLK_DEV_MD=y 508CONFIG_BLK_DEV_MD=y
501CONFIG_MD_LINEAR=y 509CONFIG_MD_LINEAR=y
502CONFIG_MD_RAID0=y 510CONFIG_MD_RAID0=y
503CONFIG_MD_RAID1=y 511CONFIG_MD_RAID1=y
504# CONFIG_MD_RAID10 is not set 512# CONFIG_MD_RAID10 is not set
505# CONFIG_MD_RAID5 is not set 513# CONFIG_MD_RAID456 is not set
506# CONFIG_MD_RAID6 is not set
507# CONFIG_MD_MULTIPATH is not set 514# CONFIG_MD_MULTIPATH is not set
508# CONFIG_MD_FAULTY is not set 515# CONFIG_MD_FAULTY is not set
509# CONFIG_BLK_DEV_DM is not set 516# CONFIG_BLK_DEV_DM is not set
@@ -517,39 +524,25 @@ CONFIG_FUSION_FC=m
517# CONFIG_FUSION_SAS is not set 524# CONFIG_FUSION_SAS is not set
518CONFIG_FUSION_MAX_SGE=128 525CONFIG_FUSION_MAX_SGE=128
519CONFIG_FUSION_CTL=m 526CONFIG_FUSION_CTL=m
527# CONFIG_FUSION_LOGGING is not set
520 528
521# 529#
522# IEEE 1394 (FireWire) support 530# IEEE 1394 (FireWire) support
523# 531#
532# CONFIG_FIREWIRE is not set
524# CONFIG_IEEE1394 is not set 533# CONFIG_IEEE1394 is not set
525
526#
527# I2O device support
528#
529# CONFIG_I2O is not set 534# CONFIG_I2O is not set
530
531#
532# Network device support
533#
534CONFIG_NETDEVICES=y 535CONFIG_NETDEVICES=y
536# CONFIG_NETDEVICES_MULTIQUEUE is not set
535CONFIG_DUMMY=m 537CONFIG_DUMMY=m
536CONFIG_BONDING=m 538CONFIG_BONDING=m
539# CONFIG_MACVLAN is not set
537# CONFIG_EQUALIZER is not set 540# CONFIG_EQUALIZER is not set
538CONFIG_TUN=m 541CONFIG_TUN=m
539 542# CONFIG_VETH is not set
540# 543# CONFIG_IP1000 is not set
541# ARCnet devices
542#
543# CONFIG_ARCNET is not set 544# CONFIG_ARCNET is not set
544
545#
546# PHY device support
547#
548# CONFIG_PHYLIB is not set 545# CONFIG_PHYLIB is not set
549
550#
551# Ethernet (10 or 100Mbit)
552#
553CONFIG_NET_ETHERNET=y 546CONFIG_NET_ETHERNET=y
554CONFIG_MII=m 547CONFIG_MII=m
555# CONFIG_HAPPYMEAL is not set 548# CONFIG_HAPPYMEAL is not set
@@ -558,10 +551,6 @@ CONFIG_MII=m
558CONFIG_NET_VENDOR_3COM=y 551CONFIG_NET_VENDOR_3COM=y
559CONFIG_VORTEX=m 552CONFIG_VORTEX=m
560CONFIG_TYPHOON=m 553CONFIG_TYPHOON=m
561
562#
563# Tulip family network device support
564#
565CONFIG_NET_TULIP=y 554CONFIG_NET_TULIP=y
566CONFIG_DE2104X=m 555CONFIG_DE2104X=m
567CONFIG_TULIP=y 556CONFIG_TULIP=y
@@ -573,15 +562,18 @@ CONFIG_TULIP_MMIO=y
573# CONFIG_DM9102 is not set 562# CONFIG_DM9102 is not set
574# CONFIG_ULI526X is not set 563# CONFIG_ULI526X is not set
575CONFIG_PCMCIA_XIRCOM=m 564CONFIG_PCMCIA_XIRCOM=m
576# CONFIG_PCMCIA_XIRTULIP is not set
577CONFIG_HP100=m 565CONFIG_HP100=m
566# CONFIG_IBM_NEW_EMAC_ZMII is not set
567# CONFIG_IBM_NEW_EMAC_RGMII is not set
568# CONFIG_IBM_NEW_EMAC_TAH is not set
569# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
578CONFIG_NET_PCI=y 570CONFIG_NET_PCI=y
579CONFIG_PCNET32=m 571CONFIG_PCNET32=m
572# CONFIG_PCNET32_NAPI is not set
580# CONFIG_AMD8111_ETH is not set 573# CONFIG_AMD8111_ETH is not set
581# CONFIG_ADAPTEC_STARFIRE is not set 574# CONFIG_ADAPTEC_STARFIRE is not set
582# CONFIG_B44 is not set 575# CONFIG_B44 is not set
583# CONFIG_FORCEDETH is not set 576# CONFIG_FORCEDETH is not set
584# CONFIG_DGRS is not set
585# CONFIG_EEPRO100 is not set 577# CONFIG_EEPRO100 is not set
586CONFIG_E100=m 578CONFIG_E100=m
587# CONFIG_FEALNX is not set 579# CONFIG_FEALNX is not set
@@ -593,84 +585,46 @@ CONFIG_E100=m
593# CONFIG_EPIC100 is not set 585# CONFIG_EPIC100 is not set
594# CONFIG_SUNDANCE is not set 586# CONFIG_SUNDANCE is not set
595# CONFIG_VIA_RHINE is not set 587# CONFIG_VIA_RHINE is not set
596 588# CONFIG_SC92031 is not set
597# 589CONFIG_NETDEV_1000=y
598# Ethernet (1000 Mbit)
599#
600CONFIG_ACENIC=m 590CONFIG_ACENIC=m
601CONFIG_ACENIC_OMIT_TIGON_I=y 591CONFIG_ACENIC_OMIT_TIGON_I=y
602# CONFIG_DL2K is not set 592# CONFIG_DL2K is not set
603CONFIG_E1000=m 593CONFIG_E1000=m
604CONFIG_E1000_NAPI=y 594CONFIG_E1000_NAPI=y
605# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 595# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
596# CONFIG_E1000E is not set
606# CONFIG_NS83820 is not set 597# CONFIG_NS83820 is not set
607# CONFIG_HAMACHI is not set 598# CONFIG_HAMACHI is not set
608# CONFIG_YELLOWFIN is not set 599# CONFIG_YELLOWFIN is not set
609# CONFIG_R8169 is not set 600# CONFIG_R8169 is not set
610# CONFIG_SIS190 is not set 601# CONFIG_SIS190 is not set
611# CONFIG_SKGE is not set 602# CONFIG_SKGE is not set
603# CONFIG_SKY2 is not set
612# CONFIG_SK98LIN is not set 604# CONFIG_SK98LIN is not set
613# CONFIG_VIA_VELOCITY is not set 605# CONFIG_VIA_VELOCITY is not set
614CONFIG_TIGON3=m 606CONFIG_TIGON3=m
615# CONFIG_BNX2 is not set 607# CONFIG_BNX2 is not set
616 608# CONFIG_QLA3XXX is not set
617# 609# CONFIG_ATL1 is not set
618# Ethernet (10000 Mbit) 610CONFIG_NETDEV_10000=y
619#
620# CONFIG_CHELSIO_T1 is not set 611# CONFIG_CHELSIO_T1 is not set
612# CONFIG_CHELSIO_T3 is not set
613# CONFIG_IXGBE is not set
621# CONFIG_IXGB is not set 614# CONFIG_IXGB is not set
622# CONFIG_S2IO is not set 615# CONFIG_S2IO is not set
623 616# CONFIG_MYRI10GE is not set
624# 617# CONFIG_NETXEN_NIC is not set
625# Token Ring devices 618# CONFIG_NIU is not set
626# 619# CONFIG_MLX4_CORE is not set
620# CONFIG_TEHUTI is not set
627# CONFIG_TR is not set 621# CONFIG_TR is not set
628 622
629# 623#
630# Wireless LAN (non-hamradio) 624# Wireless LAN
631#
632CONFIG_NET_RADIO=y
633
634#
635# Obsolete Wireless cards support (pre-802.11)
636#
637# CONFIG_STRIP is not set
638# CONFIG_PCMCIA_WAVELAN is not set
639CONFIG_PCMCIA_NETWAVE=m
640
641#
642# Wireless 802.11 Frequency Hopping cards support
643#
644CONFIG_PCMCIA_RAYCS=m
645
646#
647# Wireless 802.11b ISA/PCI cards support
648#
649CONFIG_HERMES=m
650CONFIG_PLX_HERMES=m
651CONFIG_TMD_HERMES=m
652# CONFIG_NORTEL_HERMES is not set
653CONFIG_PCI_HERMES=m
654# CONFIG_ATMEL is not set
655
656#
657# Wireless 802.11b Pcmcia/Cardbus cards support
658#
659CONFIG_PCMCIA_HERMES=m
660# CONFIG_PCMCIA_SPECTRUM is not set
661CONFIG_AIRO_CS=m
662CONFIG_PCMCIA_WL3501=m
663
664#
665# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
666#
667# CONFIG_PRISM54 is not set
668# CONFIG_HOSTAP is not set
669CONFIG_NET_WIRELESS=y
670
671#
672# PCMCIA network device support
673# 625#
626# CONFIG_WLAN_PRE80211 is not set
627# CONFIG_WLAN_80211 is not set
674CONFIG_NET_PCMCIA=y 628CONFIG_NET_PCMCIA=y
675CONFIG_PCMCIA_3C589=m 629CONFIG_PCMCIA_3C589=m
676CONFIG_PCMCIA_3C574=m 630CONFIG_PCMCIA_3C574=m
@@ -680,10 +634,6 @@ CONFIG_PCMCIA_3C574=m
680CONFIG_PCMCIA_SMC91C92=m 634CONFIG_PCMCIA_SMC91C92=m
681CONFIG_PCMCIA_XIRC2PS=m 635CONFIG_PCMCIA_XIRC2PS=m
682# CONFIG_PCMCIA_AXNET is not set 636# CONFIG_PCMCIA_AXNET is not set
683
684#
685# Wan interfaces
686#
687# CONFIG_WAN is not set 637# CONFIG_WAN is not set
688# CONFIG_FDDI is not set 638# CONFIG_FDDI is not set
689# CONFIG_HIPPI is not set 639# CONFIG_HIPPI is not set
@@ -694,28 +644,25 @@ CONFIG_PPP_ASYNC=m
694CONFIG_PPP_SYNC_TTY=m 644CONFIG_PPP_SYNC_TTY=m
695CONFIG_PPP_DEFLATE=m 645CONFIG_PPP_DEFLATE=m
696CONFIG_PPP_BSDCOMP=m 646CONFIG_PPP_BSDCOMP=m
647# CONFIG_PPP_MPPE is not set
697# CONFIG_PPPOE is not set 648# CONFIG_PPPOE is not set
649# CONFIG_PPPOL2TP is not set
698# CONFIG_SLIP is not set 650# CONFIG_SLIP is not set
651CONFIG_SLHC=m
699# CONFIG_NET_FC is not set 652# CONFIG_NET_FC is not set
700# CONFIG_SHAPER is not set 653# CONFIG_SHAPER is not set
701# CONFIG_NETCONSOLE is not set 654# CONFIG_NETCONSOLE is not set
702# CONFIG_NETPOLL is not set 655# CONFIG_NETPOLL is not set
703# CONFIG_NET_POLL_CONTROLLER is not set 656# CONFIG_NET_POLL_CONTROLLER is not set
704
705#
706# ISDN subsystem
707#
708# CONFIG_ISDN is not set 657# CONFIG_ISDN is not set
709
710#
711# Telephony Support
712#
713# CONFIG_PHONE is not set 658# CONFIG_PHONE is not set
714 659
715# 660#
716# Input device support 661# Input device support
717# 662#
718CONFIG_INPUT=y 663CONFIG_INPUT=y
664# CONFIG_INPUT_FF_MEMLESS is not set
665# CONFIG_INPUT_POLLDEV is not set
719 666
720# 667#
721# Userland interfaces 668# Userland interfaces
@@ -732,6 +679,7 @@ CONFIG_INPUT=y
732# CONFIG_INPUT_KEYBOARD is not set 679# CONFIG_INPUT_KEYBOARD is not set
733# CONFIG_INPUT_MOUSE is not set 680# CONFIG_INPUT_MOUSE is not set
734# CONFIG_INPUT_JOYSTICK is not set 681# CONFIG_INPUT_JOYSTICK is not set
682# CONFIG_INPUT_TABLET is not set
735# CONFIG_INPUT_TOUCHSCREEN is not set 683# CONFIG_INPUT_TOUCHSCREEN is not set
736# CONFIG_INPUT_MISC is not set 684# CONFIG_INPUT_MISC is not set
737 685
@@ -747,6 +695,7 @@ CONFIG_INPUT=y
747CONFIG_VT=y 695CONFIG_VT=y
748CONFIG_VT_CONSOLE=y 696CONFIG_VT_CONSOLE=y
749CONFIG_HW_CONSOLE=y 697CONFIG_HW_CONSOLE=y
698# CONFIG_VT_HW_CONSOLE_BINDING is not set
750# CONFIG_SERIAL_NONSTANDARD is not set 699# CONFIG_SERIAL_NONSTANDARD is not set
751 700
752# 701#
@@ -754,8 +703,10 @@ CONFIG_HW_CONSOLE=y
754# 703#
755CONFIG_SERIAL_8250=y 704CONFIG_SERIAL_8250=y
756CONFIG_SERIAL_8250_CONSOLE=y 705CONFIG_SERIAL_8250_CONSOLE=y
706CONFIG_SERIAL_8250_PCI=y
757CONFIG_SERIAL_8250_CS=m 707CONFIG_SERIAL_8250_CS=m
758CONFIG_SERIAL_8250_NR_UARTS=17 708CONFIG_SERIAL_8250_NR_UARTS=17
709CONFIG_SERIAL_8250_RUNTIME_UARTS=4
759CONFIG_SERIAL_8250_EXTENDED=y 710CONFIG_SERIAL_8250_EXTENDED=y
760CONFIG_SERIAL_8250_MANY_PORTS=y 711CONFIG_SERIAL_8250_MANY_PORTS=y
761CONFIG_SERIAL_8250_SHARE_IRQ=y 712CONFIG_SERIAL_8250_SHARE_IRQ=y
@@ -765,83 +716,73 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
765# 716#
766# Non-8250 serial port support 717# Non-8250 serial port support
767# 718#
768# CONFIG_SERIAL_MUX is not set
769CONFIG_PDC_CONSOLE=y 719CONFIG_PDC_CONSOLE=y
770CONFIG_SERIAL_CORE=y 720CONFIG_SERIAL_CORE=y
771CONFIG_SERIAL_CORE_CONSOLE=y 721CONFIG_SERIAL_CORE_CONSOLE=y
772# CONFIG_SERIAL_JSM is not set 722# CONFIG_SERIAL_JSM is not set
773CONFIG_UNIX98_PTYS=y 723CONFIG_UNIX98_PTYS=y
774# CONFIG_LEGACY_PTYS is not set 724# CONFIG_LEGACY_PTYS is not set
775
776#
777# IPMI
778#
779# CONFIG_IPMI_HANDLER is not set 725# CONFIG_IPMI_HANDLER is not set
780
781#
782# Watchdog Cards
783#
784# CONFIG_WATCHDOG is not set 726# CONFIG_WATCHDOG is not set
727# CONFIG_HW_RANDOM is not set
785CONFIG_GEN_RTC=y 728CONFIG_GEN_RTC=y
786CONFIG_GEN_RTC_X=y 729CONFIG_GEN_RTC_X=y
787# CONFIG_DTLK is not set
788# CONFIG_R3964 is not set 730# CONFIG_R3964 is not set
789# CONFIG_APPLICOM is not set 731# CONFIG_APPLICOM is not set
790 732CONFIG_AGP=y
791# 733CONFIG_AGP_PARISC=y
792# Ftape, the floppy tape device driver
793#
794# CONFIG_DRM is not set 734# CONFIG_DRM is not set
795 735
796# 736#
797# PCMCIA character devices 737# PCMCIA character devices
798# 738#
799# CONFIG_SYNCLINK_CS is not set 739# CONFIG_SYNCLINK_CS is not set
740# CONFIG_CARDMAN_4000 is not set
741# CONFIG_CARDMAN_4040 is not set
800CONFIG_RAW_DRIVER=y 742CONFIG_RAW_DRIVER=y
801CONFIG_MAX_RAW_DEVS=256 743CONFIG_MAX_RAW_DEVS=256
802
803#
804# TPM devices
805#
806# CONFIG_TCG_TPM is not set 744# CONFIG_TCG_TPM is not set
807 745CONFIG_DEVPORT=y
808#
809# I2C support
810#
811# CONFIG_I2C is not set 746# CONFIG_I2C is not set
812 747
813# 748#
814# Dallas's 1-wire bus 749# SPI support
815# 750#
751# CONFIG_SPI is not set
752# CONFIG_SPI_MASTER is not set
816# CONFIG_W1 is not set 753# CONFIG_W1 is not set
817 754# CONFIG_POWER_SUPPLY is not set
818#
819# Hardware Monitoring support
820#
821# CONFIG_HWMON is not set 755# CONFIG_HWMON is not set
822# CONFIG_HWMON_VID is not set
823 756
824# 757#
825# Misc devices 758# Sonics Silicon Backplane
826# 759#
760CONFIG_SSB_POSSIBLE=y
761# CONFIG_SSB is not set
827 762
828# 763#
829# Multimedia Capabilities Port drivers 764# Multifunction device drivers
830# 765#
766# CONFIG_MFD_SM501 is not set
831 767
832# 768#
833# Multimedia devices 769# Multimedia devices
834# 770#
835# CONFIG_VIDEO_DEV is not set 771# CONFIG_VIDEO_DEV is not set
772# CONFIG_DVB_CORE is not set
773# CONFIG_DAB is not set
836 774
837# 775#
838# Digital Video Broadcasting Devices 776# Graphics support
839# 777#
840# CONFIG_DVB is not set 778# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
841 779
842# 780#
843# Graphics support 781# Display device support
844# 782#
783# CONFIG_DISPLAY_SUPPORT is not set
784# CONFIG_VGASTATE is not set
785# CONFIG_VIDEO_OUTPUT_CONTROL is not set
845# CONFIG_FB is not set 786# CONFIG_FB is not set
846 787
847# 788#
@@ -856,34 +797,47 @@ CONFIG_DUMMY_CONSOLE_ROWS=64
856# Sound 797# Sound
857# 798#
858# CONFIG_SOUND is not set 799# CONFIG_SOUND is not set
859 800CONFIG_HID_SUPPORT=y
860# 801CONFIG_HID=y
861# USB support 802# CONFIG_HID_DEBUG is not set
862# 803CONFIG_USB_SUPPORT=y
863CONFIG_USB_ARCH_HAS_HCD=y 804CONFIG_USB_ARCH_HAS_HCD=y
864CONFIG_USB_ARCH_HAS_OHCI=y 805CONFIG_USB_ARCH_HAS_OHCI=y
806CONFIG_USB_ARCH_HAS_EHCI=y
865# CONFIG_USB is not set 807# CONFIG_USB is not set
866 808
867# 809#
810# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
811#
812
813#
868# USB Gadget Support 814# USB Gadget Support
869# 815#
870# CONFIG_USB_GADGET is not set 816# CONFIG_USB_GADGET is not set
817# CONFIG_MMC is not set
818# CONFIG_NEW_LEDS is not set
819# CONFIG_INFINIBAND is not set
820# CONFIG_RTC_CLASS is not set
871 821
872# 822#
873# MMC/SD Card support 823# DMA Engine support
874# 824#
875# CONFIG_MMC is not set 825# CONFIG_DMA_ENGINE is not set
876 826
877# 827#
878# InfiniBand support 828# DMA Clients
879# 829#
880# CONFIG_INFINIBAND is not set
881 830
882# 831#
883# SN Devices 832# DMA Devices
884# 833#
885 834
886# 835#
836# Userspace I/O
837#
838# CONFIG_UIO is not set
839
840#
887# File systems 841# File systems
888# 842#
889CONFIG_EXT2_FS=y 843CONFIG_EXT2_FS=y
@@ -891,6 +845,7 @@ CONFIG_EXT2_FS=y
891# CONFIG_EXT2_FS_XIP is not set 845# CONFIG_EXT2_FS_XIP is not set
892CONFIG_EXT3_FS=y 846CONFIG_EXT3_FS=y
893# CONFIG_EXT3_FS_XATTR is not set 847# CONFIG_EXT3_FS_XATTR is not set
848# CONFIG_EXT4DEV_FS is not set
894CONFIG_JBD=y 849CONFIG_JBD=y
895# CONFIG_JBD_DEBUG is not set 850# CONFIG_JBD_DEBUG is not set
896# CONFIG_REISERFS_FS is not set 851# CONFIG_REISERFS_FS is not set
@@ -901,14 +856,16 @@ CONFIG_JFS_FS=m
901# CONFIG_JFS_STATISTICS is not set 856# CONFIG_JFS_STATISTICS is not set
902CONFIG_FS_POSIX_ACL=y 857CONFIG_FS_POSIX_ACL=y
903CONFIG_XFS_FS=m 858CONFIG_XFS_FS=m
904CONFIG_XFS_EXPORT=y
905# CONFIG_XFS_QUOTA is not set 859# CONFIG_XFS_QUOTA is not set
906# CONFIG_XFS_SECURITY is not set 860# CONFIG_XFS_SECURITY is not set
907# CONFIG_XFS_POSIX_ACL is not set 861# CONFIG_XFS_POSIX_ACL is not set
908# CONFIG_XFS_RT is not set 862# CONFIG_XFS_RT is not set
863# CONFIG_GFS2_FS is not set
864# CONFIG_OCFS2_FS is not set
909# CONFIG_MINIX_FS is not set 865# CONFIG_MINIX_FS is not set
910# CONFIG_ROMFS_FS is not set 866# CONFIG_ROMFS_FS is not set
911CONFIG_INOTIFY=y 867CONFIG_INOTIFY=y
868CONFIG_INOTIFY_USER=y
912# CONFIG_QUOTA is not set 869# CONFIG_QUOTA is not set
913CONFIG_DNOTIFY=y 870CONFIG_DNOTIFY=y
914# CONFIG_AUTOFS_FS is not set 871# CONFIG_AUTOFS_FS is not set
@@ -939,18 +896,20 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
939# 896#
940CONFIG_PROC_FS=y 897CONFIG_PROC_FS=y
941CONFIG_PROC_KCORE=y 898CONFIG_PROC_KCORE=y
899CONFIG_PROC_SYSCTL=y
942CONFIG_SYSFS=y 900CONFIG_SYSFS=y
943CONFIG_TMPFS=y 901CONFIG_TMPFS=y
944# CONFIG_HUGETLBFS is not set 902# CONFIG_TMPFS_POSIX_ACL is not set
945# CONFIG_HUGETLB_PAGE is not set 903# CONFIG_HUGETLB_PAGE is not set
946CONFIG_RAMFS=y 904CONFIG_RAMFS=y
947# CONFIG_RELAYFS_FS is not set 905# CONFIG_CONFIGFS_FS is not set
948 906
949# 907#
950# Miscellaneous filesystems 908# Miscellaneous filesystems
951# 909#
952# CONFIG_ADFS_FS is not set 910# CONFIG_ADFS_FS is not set
953# CONFIG_AFFS_FS is not set 911# CONFIG_AFFS_FS is not set
912# CONFIG_ECRYPT_FS is not set
954# CONFIG_HFS_FS is not set 913# CONFIG_HFS_FS is not set
955# CONFIG_HFSPLUS_FS is not set 914# CONFIG_HFSPLUS_FS is not set
956# CONFIG_BEFS_FS is not set 915# CONFIG_BEFS_FS is not set
@@ -963,6 +922,7 @@ CONFIG_RAMFS=y
963# CONFIG_SYSV_FS is not set 922# CONFIG_SYSV_FS is not set
964CONFIG_UFS_FS=m 923CONFIG_UFS_FS=m
965# CONFIG_UFS_FS_WRITE is not set 924# CONFIG_UFS_FS_WRITE is not set
925# CONFIG_UFS_DEBUG is not set
966 926
967# 927#
968# Network File Systems 928# Network File Systems
@@ -983,6 +943,7 @@ CONFIG_EXPORTFS=m
983CONFIG_NFS_COMMON=y 943CONFIG_NFS_COMMON=y
984CONFIG_SUNRPC=m 944CONFIG_SUNRPC=m
985CONFIG_SUNRPC_GSS=m 945CONFIG_SUNRPC_GSS=m
946# CONFIG_SUNRPC_BIND34 is not set
986CONFIG_RPCSEC_GSS_KRB5=m 947CONFIG_RPCSEC_GSS_KRB5=m
987CONFIG_RPCSEC_GSS_SPKM3=m 948CONFIG_RPCSEC_GSS_SPKM3=m
988CONFIG_SMB_FS=m 949CONFIG_SMB_FS=m
@@ -990,12 +951,13 @@ CONFIG_SMB_NLS_DEFAULT=y
990CONFIG_SMB_NLS_REMOTE="cp437" 951CONFIG_SMB_NLS_REMOTE="cp437"
991CONFIG_CIFS=m 952CONFIG_CIFS=m
992# CONFIG_CIFS_STATS is not set 953# CONFIG_CIFS_STATS is not set
954# CONFIG_CIFS_WEAK_PW_HASH is not set
993# CONFIG_CIFS_XATTR is not set 955# CONFIG_CIFS_XATTR is not set
956# CONFIG_CIFS_DEBUG2 is not set
994# CONFIG_CIFS_EXPERIMENTAL is not set 957# CONFIG_CIFS_EXPERIMENTAL is not set
995# CONFIG_NCP_FS is not set 958# CONFIG_NCP_FS is not set
996# CONFIG_CODA_FS is not set 959# CONFIG_CODA_FS is not set
997# CONFIG_AFS_FS is not set 960# CONFIG_AFS_FS is not set
998# CONFIG_9P_FS is not set
999 961
1000# 962#
1001# Partition Types 963# Partition Types
@@ -1048,6 +1010,11 @@ CONFIG_NLS_ISO8859_15=m
1048CONFIG_NLS_UTF8=m 1010CONFIG_NLS_UTF8=m
1049 1011
1050# 1012#
1013# Distributed Lock Manager
1014#
1015# CONFIG_DLM is not set
1016
1017#
1051# Profiling support 1018# Profiling support
1052# 1019#
1053CONFIG_PROFILING=y 1020CONFIG_PROFILING=y
@@ -1057,19 +1024,34 @@ CONFIG_OPROFILE=m
1057# Kernel hacking 1024# Kernel hacking
1058# 1025#
1059# CONFIG_PRINTK_TIME is not set 1026# CONFIG_PRINTK_TIME is not set
1060CONFIG_DEBUG_KERNEL=y 1027CONFIG_ENABLE_MUST_CHECK=y
1061CONFIG_MAGIC_SYSRQ=y 1028CONFIG_MAGIC_SYSRQ=y
1062CONFIG_LOG_BUF_SHIFT=16 1029# CONFIG_UNUSED_SYMBOLS is not set
1030# CONFIG_DEBUG_FS is not set
1031CONFIG_HEADERS_CHECK=y
1032CONFIG_DEBUG_KERNEL=y
1033# CONFIG_DEBUG_SHIRQ is not set
1063CONFIG_DETECT_SOFTLOCKUP=y 1034CONFIG_DETECT_SOFTLOCKUP=y
1035CONFIG_SCHED_DEBUG=y
1064# CONFIG_SCHEDSTATS is not set 1036# CONFIG_SCHEDSTATS is not set
1037# CONFIG_TIMER_STATS is not set
1065# CONFIG_DEBUG_SLAB is not set 1038# CONFIG_DEBUG_SLAB is not set
1039# CONFIG_DEBUG_RT_MUTEXES is not set
1040# CONFIG_RT_MUTEX_TESTER is not set
1066# CONFIG_DEBUG_SPINLOCK is not set 1041# CONFIG_DEBUG_SPINLOCK is not set
1042# CONFIG_DEBUG_MUTEXES is not set
1067# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1043# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1044# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1068# CONFIG_DEBUG_KOBJECT is not set 1045# CONFIG_DEBUG_KOBJECT is not set
1046# CONFIG_DEBUG_BUGVERBOSE is not set
1069# CONFIG_DEBUG_INFO is not set 1047# CONFIG_DEBUG_INFO is not set
1070# CONFIG_DEBUG_IOREMAP is not set 1048# CONFIG_DEBUG_VM is not set
1071# CONFIG_DEBUG_FS is not set 1049# CONFIG_DEBUG_LIST is not set
1050CONFIG_FORCED_INLINING=y
1051# CONFIG_RCU_TORTURE_TEST is not set
1052# CONFIG_FAULT_INJECTION is not set
1072# CONFIG_DEBUG_RWLOCK is not set 1053# CONFIG_DEBUG_RWLOCK is not set
1054# CONFIG_DEBUG_RODATA is not set
1073 1055
1074# 1056#
1075# Security options 1057# Security options
@@ -1077,12 +1059,13 @@ CONFIG_DETECT_SOFTLOCKUP=y
1077CONFIG_KEYS=y 1059CONFIG_KEYS=y
1078CONFIG_KEYS_DEBUG_PROC_KEYS=y 1060CONFIG_KEYS_DEBUG_PROC_KEYS=y
1079# CONFIG_SECURITY is not set 1061# CONFIG_SECURITY is not set
1080
1081#
1082# Cryptographic options
1083#
1084CONFIG_CRYPTO=y 1062CONFIG_CRYPTO=y
1063CONFIG_CRYPTO_ALGAPI=y
1064CONFIG_CRYPTO_BLKCIPHER=m
1065CONFIG_CRYPTO_HASH=y
1066CONFIG_CRYPTO_MANAGER=y
1085CONFIG_CRYPTO_HMAC=y 1067CONFIG_CRYPTO_HMAC=y
1068# CONFIG_CRYPTO_XCBC is not set
1086CONFIG_CRYPTO_NULL=m 1069CONFIG_CRYPTO_NULL=m
1087# CONFIG_CRYPTO_MD4 is not set 1070# CONFIG_CRYPTO_MD4 is not set
1088CONFIG_CRYPTO_MD5=y 1071CONFIG_CRYPTO_MD5=y
@@ -1091,32 +1074,47 @@ CONFIG_CRYPTO_SHA1=m
1091# CONFIG_CRYPTO_SHA512 is not set 1074# CONFIG_CRYPTO_SHA512 is not set
1092# CONFIG_CRYPTO_WP512 is not set 1075# CONFIG_CRYPTO_WP512 is not set
1093# CONFIG_CRYPTO_TGR192 is not set 1076# CONFIG_CRYPTO_TGR192 is not set
1077# CONFIG_CRYPTO_GF128MUL is not set
1078# CONFIG_CRYPTO_ECB is not set
1079CONFIG_CRYPTO_CBC=m
1080# CONFIG_CRYPTO_PCBC is not set
1081# CONFIG_CRYPTO_LRW is not set
1082# CONFIG_CRYPTO_XTS is not set
1083# CONFIG_CRYPTO_CRYPTD is not set
1094CONFIG_CRYPTO_DES=m 1084CONFIG_CRYPTO_DES=m
1085# CONFIG_CRYPTO_FCRYPT is not set
1095CONFIG_CRYPTO_BLOWFISH=m 1086CONFIG_CRYPTO_BLOWFISH=m
1096# CONFIG_CRYPTO_TWOFISH is not set 1087# CONFIG_CRYPTO_TWOFISH is not set
1097# CONFIG_CRYPTO_SERPENT is not set 1088# CONFIG_CRYPTO_SERPENT is not set
1098# CONFIG_CRYPTO_AES is not set 1089# CONFIG_CRYPTO_AES is not set
1099# CONFIG_CRYPTO_CAST5 is not set 1090CONFIG_CRYPTO_CAST5=m
1100# CONFIG_CRYPTO_CAST6 is not set 1091# CONFIG_CRYPTO_CAST6 is not set
1101# CONFIG_CRYPTO_TEA is not set 1092# CONFIG_CRYPTO_TEA is not set
1102# CONFIG_CRYPTO_ARC4 is not set 1093# CONFIG_CRYPTO_ARC4 is not set
1103# CONFIG_CRYPTO_KHAZAD is not set 1094# CONFIG_CRYPTO_KHAZAD is not set
1104# CONFIG_CRYPTO_ANUBIS is not set 1095# CONFIG_CRYPTO_ANUBIS is not set
1096# CONFIG_CRYPTO_SEED is not set
1105CONFIG_CRYPTO_DEFLATE=m 1097CONFIG_CRYPTO_DEFLATE=m
1106# CONFIG_CRYPTO_MICHAEL_MIC is not set 1098# CONFIG_CRYPTO_MICHAEL_MIC is not set
1107CONFIG_CRYPTO_CRC32C=m 1099CONFIG_CRYPTO_CRC32C=m
1100# CONFIG_CRYPTO_CAMELLIA is not set
1108CONFIG_CRYPTO_TEST=m 1101CONFIG_CRYPTO_TEST=m
1109 1102# CONFIG_CRYPTO_AUTHENC is not set
1110# 1103# CONFIG_CRYPTO_HW is not set
1111# Hardware crypto devices
1112#
1113 1104
1114# 1105#
1115# Library routines 1106# Library routines
1116# 1107#
1108CONFIG_BITREVERSE=y
1117CONFIG_CRC_CCITT=m 1109CONFIG_CRC_CCITT=m
1118# CONFIG_CRC16 is not set 1110# CONFIG_CRC16 is not set
1111# CONFIG_CRC_ITU_T is not set
1119CONFIG_CRC32=y 1112CONFIG_CRC32=y
1113# CONFIG_CRC7 is not set
1120CONFIG_LIBCRC32C=m 1114CONFIG_LIBCRC32C=m
1121CONFIG_ZLIB_INFLATE=m 1115CONFIG_ZLIB_INFLATE=m
1122CONFIG_ZLIB_DEFLATE=m 1116CONFIG_ZLIB_DEFLATE=m
1117CONFIG_PLIST=y
1118CONFIG_HAS_IOMEM=y
1119CONFIG_HAS_IOPORT=y
1120CONFIG_HAS_DMA=y
diff --git a/arch/parisc/configs/b180_defconfig b/arch/parisc/configs/b180_defconfig
index 35093612ad2c..1bf22c9a4614 100644
--- a/arch/parisc/configs/b180_defconfig
+++ b/arch/parisc/configs/b180_defconfig
@@ -1,38 +1,47 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-rc1-pa0 3# Linux kernel version: 2.6.23
4# Tue Jan 17 08:21:01 2006 4# Fri Oct 12 21:16:46 2007
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
8CONFIG_STACK_GROWSUP=y 8CONFIG_STACK_GROWSUP=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10# CONFIG_ARCH_HAS_ILOG2_U32 is not set
11# CONFIG_ARCH_HAS_ILOG2_U64 is not set
12CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_BUG=y
14CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
16CONFIG_GENERIC_TIME=y
11CONFIG_GENERIC_HARDIRQS=y 17CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 18CONFIG_GENERIC_IRQ_PROBE=y
19CONFIG_IRQ_PER_CPU=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
13 21
14# 22#
15# Code maturity level options 23# General setup
16# 24#
17# CONFIG_EXPERIMENTAL is not set 25# CONFIG_EXPERIMENTAL is not set
18CONFIG_CLEAN_COMPILE=y
19CONFIG_BROKEN_ON_SMP=y 26CONFIG_BROKEN_ON_SMP=y
20CONFIG_INIT_ENV_ARG_LIMIT=32 27CONFIG_INIT_ENV_ARG_LIMIT=32
21
22#
23# General setup
24#
25CONFIG_LOCALVERSION="" 28CONFIG_LOCALVERSION=""
26# CONFIG_LOCALVERSION_AUTO is not set 29# CONFIG_LOCALVERSION_AUTO is not set
27CONFIG_SWAP=y 30CONFIG_SWAP=y
28CONFIG_SYSVIPC=y 31CONFIG_SYSVIPC=y
32CONFIG_SYSVIPC_SYSCTL=y
29# CONFIG_BSD_PROCESS_ACCT is not set 33# CONFIG_BSD_PROCESS_ACCT is not set
30CONFIG_SYSCTL=y 34# CONFIG_TASKSTATS is not set
31# CONFIG_AUDIT is not set 35# CONFIG_AUDIT is not set
32CONFIG_IKCONFIG=y 36CONFIG_IKCONFIG=y
33CONFIG_IKCONFIG_PROC=y 37CONFIG_IKCONFIG_PROC=y
34CONFIG_INITRAMFS_SOURCE="" 38CONFIG_LOG_BUF_SHIFT=16
39CONFIG_SYSFS_DEPRECATED=y
40# CONFIG_RELAY is not set
41# CONFIG_BLK_DEV_INITRD is not set
42CONFIG_SYSCTL=y
35# CONFIG_EMBEDDED is not set 43# CONFIG_EMBEDDED is not set
44CONFIG_SYSCTL_SYSCALL=y
36CONFIG_KALLSYMS=y 45CONFIG_KALLSYMS=y
37# CONFIG_KALLSYMS_ALL is not set 46# CONFIG_KALLSYMS_ALL is not set
38# CONFIG_KALLSYMS_EXTRA_PASS is not set 47# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -42,30 +51,27 @@ CONFIG_BUG=y
42CONFIG_ELF_CORE=y 51CONFIG_ELF_CORE=y
43CONFIG_BASE_FULL=y 52CONFIG_BASE_FULL=y
44CONFIG_FUTEX=y 53CONFIG_FUTEX=y
54CONFIG_ANON_INODES=y
45CONFIG_EPOLL=y 55CONFIG_EPOLL=y
56CONFIG_SIGNALFD=y
57CONFIG_EVENTFD=y
46CONFIG_SHMEM=y 58CONFIG_SHMEM=y
47CONFIG_CC_ALIGN_FUNCTIONS=0 59CONFIG_VM_EVENT_COUNTERS=y
48CONFIG_CC_ALIGN_LABELS=0
49CONFIG_CC_ALIGN_LOOPS=0
50CONFIG_CC_ALIGN_JUMPS=0
51CONFIG_SLAB=y 60CONFIG_SLAB=y
61# CONFIG_SLUB is not set
62# CONFIG_SLOB is not set
63CONFIG_RT_MUTEXES=y
52# CONFIG_TINY_SHMEM is not set 64# CONFIG_TINY_SHMEM is not set
53CONFIG_BASE_SMALL=0 65CONFIG_BASE_SMALL=0
54# CONFIG_SLOB is not set
55
56#
57# Loadable module support
58#
59CONFIG_MODULES=y 66CONFIG_MODULES=y
60# CONFIG_MODULE_UNLOAD is not set 67# CONFIG_MODULE_UNLOAD is not set
61CONFIG_OBSOLETE_MODPARM=y
62CONFIG_MODVERSIONS=y 68CONFIG_MODVERSIONS=y
63# CONFIG_MODULE_SRCVERSION_ALL is not set 69# CONFIG_MODULE_SRCVERSION_ALL is not set
64# CONFIG_KMOD is not set 70# CONFIG_KMOD is not set
65 71CONFIG_BLOCK=y
66# 72# CONFIG_LBD is not set
67# Block layer 73# CONFIG_BLK_DEV_IO_TRACE is not set
68# 74# CONFIG_LSF is not set
69 75
70# 76#
71# IO Schedulers 77# IO Schedulers
@@ -89,16 +95,26 @@ CONFIG_PA7100LC=y
89# CONFIG_PA7300LC is not set 95# CONFIG_PA7300LC is not set
90# CONFIG_PA8X00 is not set 96# CONFIG_PA8X00 is not set
91CONFIG_PA11=y 97CONFIG_PA11=y
98CONFIG_PARISC_PAGE_SIZE_4KB=y
99# CONFIG_PARISC_PAGE_SIZE_16KB is not set
100# CONFIG_PARISC_PAGE_SIZE_64KB is not set
92# CONFIG_SMP is not set 101# CONFIG_SMP is not set
102CONFIG_ARCH_FLATMEM_ENABLE=y
103CONFIG_PREEMPT_NONE=y
104# CONFIG_PREEMPT_VOLUNTARY is not set
105# CONFIG_PREEMPT is not set
93# CONFIG_HZ_100 is not set 106# CONFIG_HZ_100 is not set
94CONFIG_HZ_250=y 107CONFIG_HZ_250=y
108# CONFIG_HZ_300 is not set
95# CONFIG_HZ_1000 is not set 109# CONFIG_HZ_1000 is not set
96CONFIG_HZ=250 110CONFIG_HZ=250
97CONFIG_FLATMEM=y 111CONFIG_FLATMEM=y
98CONFIG_FLAT_NODE_MEM_MAP=y 112CONFIG_FLAT_NODE_MEM_MAP=y
99# CONFIG_SPARSEMEM_STATIC is not set 113# CONFIG_SPARSEMEM_STATIC is not set
100CONFIG_SPLIT_PTLOCK_CPUS=4096 114CONFIG_SPLIT_PTLOCK_CPUS=4096
101# CONFIG_PREEMPT is not set 115# CONFIG_RESOURCES_64BIT is not set
116CONFIG_ZONE_DMA_FLAG=0
117CONFIG_VIRT_TO_BUS=y
102# CONFIG_HPUX is not set 118# CONFIG_HPUX is not set
103 119
104# 120#
@@ -113,7 +129,7 @@ CONFIG_EISA=y
113CONFIG_EISA_NAMES=y 129CONFIG_EISA_NAMES=y
114CONFIG_ISA=y 130CONFIG_ISA=y
115CONFIG_PCI=y 131CONFIG_PCI=y
116CONFIG_PCI_LEGACY_PROC=y 132# CONFIG_ARCH_SUPPORTS_MSI is not set
117# CONFIG_PCI_DEBUG is not set 133# CONFIG_PCI_DEBUG is not set
118CONFIG_GSC_DINO=y 134CONFIG_GSC_DINO=y
119# CONFIG_PCI_LBA is not set 135# CONFIG_PCI_LBA is not set
@@ -124,14 +140,11 @@ CONFIG_GSC_DINO=y
124# CONFIG_PCCARD is not set 140# CONFIG_PCCARD is not set
125 141
126# 142#
127# PCI Hotplug Support
128#
129
130#
131# PA-RISC specific drivers 143# PA-RISC specific drivers
132# 144#
133CONFIG_CHASSIS_LCD_LED=y 145CONFIG_CHASSIS_LCD_LED=y
134# CONFIG_PDC_CHASSIS is not set 146# CONFIG_PDC_CHASSIS is not set
147CONFIG_PDC_CHASSIS_WARN=y
135CONFIG_PDC_STABLE=y 148CONFIG_PDC_STABLE=y
136 149
137# 150#
@@ -151,6 +164,8 @@ CONFIG_NET=y
151CONFIG_PACKET=y 164CONFIG_PACKET=y
152CONFIG_PACKET_MMAP=y 165CONFIG_PACKET_MMAP=y
153CONFIG_UNIX=y 166CONFIG_UNIX=y
167CONFIG_XFRM=y
168# CONFIG_XFRM_USER is not set
154# CONFIG_NET_KEY is not set 169# CONFIG_NET_KEY is not set
155CONFIG_INET=y 170CONFIG_INET=y
156CONFIG_IP_MULTICAST=y 171CONFIG_IP_MULTICAST=y
@@ -167,18 +182,32 @@ CONFIG_IP_PNP_BOOTP=y
167# CONFIG_INET_AH is not set 182# CONFIG_INET_AH is not set
168# CONFIG_INET_ESP is not set 183# CONFIG_INET_ESP is not set
169# CONFIG_INET_IPCOMP is not set 184# CONFIG_INET_IPCOMP is not set
170# CONFIG_INET_TUNNEL is not set 185# CONFIG_INET_XFRM_TUNNEL is not set
186CONFIG_INET_TUNNEL=y
187CONFIG_INET_XFRM_MODE_TRANSPORT=y
188CONFIG_INET_XFRM_MODE_TUNNEL=y
189CONFIG_INET_XFRM_MODE_BEET=y
190# CONFIG_INET_LRO is not set
171CONFIG_INET_DIAG=y 191CONFIG_INET_DIAG=y
172CONFIG_INET_TCP_DIAG=y 192CONFIG_INET_TCP_DIAG=y
173# CONFIG_TCP_CONG_ADVANCED is not set 193# CONFIG_TCP_CONG_ADVANCED is not set
174CONFIG_TCP_CONG_BIC=y 194CONFIG_TCP_CONG_CUBIC=y
195CONFIG_DEFAULT_TCP_CONG="cubic"
175CONFIG_IPV6=y 196CONFIG_IPV6=y
176# CONFIG_IPV6_PRIVACY is not set 197# CONFIG_IPV6_PRIVACY is not set
198# CONFIG_IPV6_ROUTER_PREF is not set
177# CONFIG_INET6_AH is not set 199# CONFIG_INET6_AH is not set
178# CONFIG_INET6_ESP is not set 200# CONFIG_INET6_ESP is not set
179# CONFIG_INET6_IPCOMP is not set 201# CONFIG_INET6_IPCOMP is not set
202# CONFIG_INET6_XFRM_TUNNEL is not set
180# CONFIG_INET6_TUNNEL is not set 203# CONFIG_INET6_TUNNEL is not set
204CONFIG_INET6_XFRM_MODE_TRANSPORT=y
205CONFIG_INET6_XFRM_MODE_TUNNEL=y
206CONFIG_INET6_XFRM_MODE_BEET=y
207CONFIG_IPV6_SIT=y
181# CONFIG_IPV6_TUNNEL is not set 208# CONFIG_IPV6_TUNNEL is not set
209# CONFIG_NETLABEL is not set
210# CONFIG_NETWORK_SECMARK is not set
182# CONFIG_NETFILTER is not set 211# CONFIG_NETFILTER is not set
183# CONFIG_BRIDGE is not set 212# CONFIG_BRIDGE is not set
184# CONFIG_VLAN_8021Q is not set 213# CONFIG_VLAN_8021Q is not set
@@ -199,7 +228,14 @@ CONFIG_IPV6=y
199# CONFIG_HAMRADIO is not set 228# CONFIG_HAMRADIO is not set
200# CONFIG_IRDA is not set 229# CONFIG_IRDA is not set
201# CONFIG_BT is not set 230# CONFIG_BT is not set
231
232#
233# Wireless
234#
235# CONFIG_CFG80211 is not set
236# CONFIG_WIRELESS_EXT is not set
202# CONFIG_IEEE80211 is not set 237# CONFIG_IEEE80211 is not set
238# CONFIG_RFKILL is not set
203 239
204# 240#
205# Device Drivers 241# Device Drivers
@@ -208,39 +244,24 @@ CONFIG_IPV6=y
208# 244#
209# Generic Driver Options 245# Generic Driver Options
210# 246#
247CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
211CONFIG_STANDALONE=y 248CONFIG_STANDALONE=y
212# CONFIG_PREVENT_FIRMWARE_BUILD is not set 249# CONFIG_PREVENT_FIRMWARE_BUILD is not set
213# CONFIG_FW_LOADER is not set 250# CONFIG_FW_LOADER is not set
214# CONFIG_DEBUG_DRIVER is not set 251# CONFIG_DEBUG_DRIVER is not set
215 252# CONFIG_DEBUG_DEVRES is not set
216# 253# CONFIG_SYS_HYPERVISOR is not set
217# Connector - unified userspace <-> kernelspace linker
218#
219# CONFIG_CONNECTOR is not set 254# CONFIG_CONNECTOR is not set
220
221#
222# Memory Technology Devices (MTD)
223#
224# CONFIG_MTD is not set 255# CONFIG_MTD is not set
225
226#
227# Parallel port support
228#
229CONFIG_PARPORT=y 256CONFIG_PARPORT=y
230CONFIG_PARPORT_PC=y 257CONFIG_PARPORT_PC=y
231# CONFIG_PARPORT_SERIAL is not set 258# CONFIG_PARPORT_SERIAL is not set
232CONFIG_PARPORT_NOT_PC=y
233CONFIG_PARPORT_GSC=y 259CONFIG_PARPORT_GSC=y
260# CONFIG_PARPORT_AX88796 is not set
234# CONFIG_PARPORT_1284 is not set 261# CONFIG_PARPORT_1284 is not set
235 262CONFIG_PARPORT_NOT_PC=y
236#
237# Plug and Play support
238#
239# CONFIG_PNP is not set 263# CONFIG_PNP is not set
240 264CONFIG_BLK_DEV=y
241#
242# Block devices
243#
244# CONFIG_PARIDE is not set 265# CONFIG_PARIDE is not set
245# CONFIG_BLK_CPQ_DA is not set 266# CONFIG_BLK_CPQ_DA is not set
246# CONFIG_BLK_CPQ_CISS_DA is not set 267# CONFIG_BLK_CPQ_CISS_DA is not set
@@ -251,15 +272,13 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y
251# CONFIG_BLK_DEV_NBD is not set 272# CONFIG_BLK_DEV_NBD is not set
252# CONFIG_BLK_DEV_SX8 is not set 273# CONFIG_BLK_DEV_SX8 is not set
253# CONFIG_BLK_DEV_RAM is not set 274# CONFIG_BLK_DEV_RAM is not set
254CONFIG_BLK_DEV_RAM_COUNT=16
255CONFIG_CDROM_PKTCDVD=m 275CONFIG_CDROM_PKTCDVD=m
256CONFIG_CDROM_PKTCDVD_BUFFERS=8 276CONFIG_CDROM_PKTCDVD_BUFFERS=8
257# CONFIG_CDROM_PKTCDVD_WCACHE is not set
258CONFIG_ATA_OVER_ETH=y 277CONFIG_ATA_OVER_ETH=y
259 278CONFIG_MISC_DEVICES=y
260# 279# CONFIG_PHANTOM is not set
261# ATA/ATAPI/MFM/RLL support 280# CONFIG_EEPROM_93CX6 is not set
262# 281# CONFIG_SGI_IOC4 is not set
263# CONFIG_IDE is not set 282# CONFIG_IDE is not set
264 283
265# 284#
@@ -267,6 +286,8 @@ CONFIG_ATA_OVER_ETH=y
267# 286#
268# CONFIG_RAID_ATTRS is not set 287# CONFIG_RAID_ATTRS is not set
269CONFIG_SCSI=y 288CONFIG_SCSI=y
289CONFIG_SCSI_DMA=y
290# CONFIG_SCSI_NETLINK is not set
270CONFIG_SCSI_PROC_FS=y 291CONFIG_SCSI_PROC_FS=y
271 292
272# 293#
@@ -286,18 +307,17 @@ CONFIG_CHR_DEV_SG=y
286# CONFIG_SCSI_MULTI_LUN is not set 307# CONFIG_SCSI_MULTI_LUN is not set
287# CONFIG_SCSI_CONSTANTS is not set 308# CONFIG_SCSI_CONSTANTS is not set
288# CONFIG_SCSI_LOGGING is not set 309# CONFIG_SCSI_LOGGING is not set
310# CONFIG_SCSI_SCAN_ASYNC is not set
311CONFIG_SCSI_WAIT_SCAN=m
289 312
290# 313#
291# SCSI Transport Attributes 314# SCSI Transports
292# 315#
293CONFIG_SCSI_SPI_ATTRS=y 316CONFIG_SCSI_SPI_ATTRS=y
294# CONFIG_SCSI_FC_ATTRS is not set 317# CONFIG_SCSI_FC_ATTRS is not set
295# CONFIG_SCSI_ISCSI_ATTRS is not set 318# CONFIG_SCSI_ISCSI_ATTRS is not set
296# CONFIG_SCSI_SAS_ATTRS is not set 319# CONFIG_SCSI_SAS_LIBSAS is not set
297 320CONFIG_SCSI_LOWLEVEL=y
298#
299# SCSI low-level drivers
300#
301# CONFIG_ISCSI_TCP is not set 321# CONFIG_ISCSI_TCP is not set
302# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 322# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
303# CONFIG_SCSI_3W_9XXX is not set 323# CONFIG_SCSI_3W_9XXX is not set
@@ -308,12 +328,14 @@ CONFIG_SCSI_SPI_ATTRS=y
308# CONFIG_SCSI_AIC7XXX is not set 328# CONFIG_SCSI_AIC7XXX is not set
309# CONFIG_SCSI_AIC7XXX_OLD is not set 329# CONFIG_SCSI_AIC7XXX_OLD is not set
310# CONFIG_SCSI_AIC79XX is not set 330# CONFIG_SCSI_AIC79XX is not set
331# CONFIG_SCSI_AIC94XX is not set
311# CONFIG_SCSI_DPT_I2O is not set 332# CONFIG_SCSI_DPT_I2O is not set
312# CONFIG_SCSI_IN2000 is not set 333# CONFIG_SCSI_IN2000 is not set
334# CONFIG_SCSI_ARCMSR is not set
313# CONFIG_MEGARAID_NEWGEN is not set 335# CONFIG_MEGARAID_NEWGEN is not set
314# CONFIG_MEGARAID_LEGACY is not set 336# CONFIG_MEGARAID_LEGACY is not set
315# CONFIG_MEGARAID_SAS is not set 337# CONFIG_MEGARAID_SAS is not set
316# CONFIG_SCSI_SATA is not set 338# CONFIG_SCSI_HPTIOP is not set
317# CONFIG_SCSI_DMX3191D is not set 339# CONFIG_SCSI_DMX3191D is not set
318# CONFIG_SCSI_DTC3280 is not set 340# CONFIG_SCSI_DTC3280 is not set
319# CONFIG_SCSI_FUTURE_DOMAIN is not set 341# CONFIG_SCSI_FUTURE_DOMAIN is not set
@@ -327,23 +349,22 @@ CONFIG_SCSI_SPI_ATTRS=y
327# CONFIG_SCSI_NCR53C406A is not set 349# CONFIG_SCSI_NCR53C406A is not set
328CONFIG_SCSI_LASI700=y 350CONFIG_SCSI_LASI700=y
329CONFIG_53C700_LE_ON_BE=y 351CONFIG_53C700_LE_ON_BE=y
352# CONFIG_SCSI_STEX is not set
330CONFIG_SCSI_SYM53C8XX_2=y 353CONFIG_SCSI_SYM53C8XX_2=y
331CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 354CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
332CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 355CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
333CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 356CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
334CONFIG_SCSI_SYM53C8XX_MMIO=y 357CONFIG_SCSI_SYM53C8XX_MMIO=y
335# CONFIG_SCSI_IPR is not set
336CONFIG_SCSI_ZALON=y 358CONFIG_SCSI_ZALON=y
337CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 359CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
338CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 360CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
339CONFIG_SCSI_NCR53C8XX_SYNC=40 361CONFIG_SCSI_NCR53C8XX_SYNC=40
340# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
341# CONFIG_SCSI_PAS16 is not set 362# CONFIG_SCSI_PAS16 is not set
342# CONFIG_SCSI_PSI240I is not set 363# CONFIG_SCSI_PSI240I is not set
343# CONFIG_SCSI_QLOGIC_FAS is not set 364# CONFIG_SCSI_QLOGIC_FAS is not set
344# CONFIG_SCSI_QLOGIC_FC is not set
345# CONFIG_SCSI_QLOGIC_1280 is not set 365# CONFIG_SCSI_QLOGIC_1280 is not set
346# CONFIG_SCSI_QLA_FC is not set 366# CONFIG_SCSI_QLA_FC is not set
367# CONFIG_SCSI_QLA_ISCSI is not set
347# CONFIG_SCSI_LPFC is not set 368# CONFIG_SCSI_LPFC is not set
348# CONFIG_SCSI_SIM710 is not set 369# CONFIG_SCSI_SIM710 is not set
349# CONFIG_SCSI_SYM53C416 is not set 370# CONFIG_SCSI_SYM53C416 is not set
@@ -351,22 +372,14 @@ CONFIG_SCSI_NCR53C8XX_SYNC=40
351# CONFIG_SCSI_T128 is not set 372# CONFIG_SCSI_T128 is not set
352# CONFIG_SCSI_NSP32 is not set 373# CONFIG_SCSI_NSP32 is not set
353# CONFIG_SCSI_DEBUG is not set 374# CONFIG_SCSI_DEBUG is not set
354 375# CONFIG_SCSI_SRP is not set
355# 376# CONFIG_ATA is not set
356# Old CD-ROM drivers (not SCSI, not IDE)
357#
358# CONFIG_CD_NO_IDESCSI is not set
359
360#
361# Multi-device support (RAID and LVM)
362#
363CONFIG_MD=y 377CONFIG_MD=y
364CONFIG_BLK_DEV_MD=y 378CONFIG_BLK_DEV_MD=y
365CONFIG_MD_LINEAR=y 379CONFIG_MD_LINEAR=y
366CONFIG_MD_RAID0=y 380CONFIG_MD_RAID0=y
367CONFIG_MD_RAID1=y 381CONFIG_MD_RAID1=y
368CONFIG_MD_RAID5=y 382# CONFIG_MD_RAID456 is not set
369CONFIG_MD_RAID6=y
370# CONFIG_MD_MULTIPATH is not set 383# CONFIG_MD_MULTIPATH is not set
371# CONFIG_MD_FAULTY is not set 384# CONFIG_MD_FAULTY is not set
372# CONFIG_BLK_DEV_DM is not set 385# CONFIG_BLK_DEV_DM is not set
@@ -382,35 +395,21 @@ CONFIG_MD_RAID6=y
382# 395#
383# IEEE 1394 (FireWire) support 396# IEEE 1394 (FireWire) support
384# 397#
385# CONFIG_IEEE1394 is not set
386 398
387# 399#
388# I2O device support 400# An alternative FireWire stack is available with EXPERIMENTAL=y
389# 401#
402# CONFIG_IEEE1394 is not set
390# CONFIG_I2O is not set 403# CONFIG_I2O is not set
391
392#
393# Network device support
394#
395CONFIG_NETDEVICES=y 404CONFIG_NETDEVICES=y
405# CONFIG_NETDEVICES_MULTIQUEUE is not set
396# CONFIG_DUMMY is not set 406# CONFIG_DUMMY is not set
397# CONFIG_BONDING is not set 407# CONFIG_BONDING is not set
398# CONFIG_EQUALIZER is not set 408# CONFIG_EQUALIZER is not set
399# CONFIG_TUN is not set 409# CONFIG_TUN is not set
400 410# CONFIG_VETH is not set
401#
402# ARCnet devices
403#
404# CONFIG_ARCNET is not set 411# CONFIG_ARCNET is not set
405
406#
407# PHY device support
408#
409# CONFIG_PHYLIB is not set 412# CONFIG_PHYLIB is not set
410
411#
412# Ethernet (10 or 100Mbit)
413#
414CONFIG_NET_ETHERNET=y 413CONFIG_NET_ETHERNET=y
415# CONFIG_MII is not set 414# CONFIG_MII is not set
416CONFIG_LASI_82596=y 415CONFIG_LASI_82596=y
@@ -420,10 +419,6 @@ CONFIG_LASI_82596=y
420# CONFIG_NET_VENDOR_3COM is not set 419# CONFIG_NET_VENDOR_3COM is not set
421# CONFIG_NET_VENDOR_SMC is not set 420# CONFIG_NET_VENDOR_SMC is not set
422# CONFIG_NET_VENDOR_RACAL is not set 421# CONFIG_NET_VENDOR_RACAL is not set
423
424#
425# Tulip family network device support
426#
427CONFIG_NET_TULIP=y 422CONFIG_NET_TULIP=y
428CONFIG_TULIP=y 423CONFIG_TULIP=y
429# CONFIG_TULIP_MMIO is not set 424# CONFIG_TULIP_MMIO is not set
@@ -435,62 +430,47 @@ CONFIG_TULIP=y
435# CONFIG_DEPCA is not set 430# CONFIG_DEPCA is not set
436# CONFIG_HP100 is not set 431# CONFIG_HP100 is not set
437# CONFIG_NET_ISA is not set 432# CONFIG_NET_ISA is not set
433# CONFIG_IBM_NEW_EMAC_ZMII is not set
434# CONFIG_IBM_NEW_EMAC_RGMII is not set
435# CONFIG_IBM_NEW_EMAC_TAH is not set
436# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
438# CONFIG_NET_PCI is not set 437# CONFIG_NET_PCI is not set
438# CONFIG_B44 is not set
439# CONFIG_NET_POCKET is not set 439# CONFIG_NET_POCKET is not set
440 440CONFIG_NETDEV_1000=y
441#
442# Ethernet (1000 Mbit)
443#
444# CONFIG_ACENIC is not set 441# CONFIG_ACENIC is not set
445# CONFIG_DL2K is not set 442# CONFIG_DL2K is not set
446# CONFIG_E1000 is not set 443# CONFIG_E1000 is not set
444# CONFIG_E1000E is not set
447# CONFIG_NS83820 is not set 445# CONFIG_NS83820 is not set
448# CONFIG_HAMACHI is not set 446# CONFIG_HAMACHI is not set
449# CONFIG_R8169 is not set 447# CONFIG_R8169 is not set
450# CONFIG_SIS190 is not set 448# CONFIG_SIS190 is not set
449# CONFIG_SKGE is not set
450# CONFIG_SKY2 is not set
451# CONFIG_SK98LIN is not set 451# CONFIG_SK98LIN is not set
452# CONFIG_VIA_VELOCITY is not set
452# CONFIG_TIGON3 is not set 453# CONFIG_TIGON3 is not set
453# CONFIG_BNX2 is not set 454# CONFIG_BNX2 is not set
454 455# CONFIG_QLA3XXX is not set
455# 456CONFIG_NETDEV_10000=y
456# Ethernet (10000 Mbit)
457#
458# CONFIG_CHELSIO_T1 is not set 457# CONFIG_CHELSIO_T1 is not set
458# CONFIG_CHELSIO_T3 is not set
459# CONFIG_IXGBE is not set
459# CONFIG_IXGB is not set 460# CONFIG_IXGB is not set
460# CONFIG_S2IO is not set 461# CONFIG_S2IO is not set
461 462# CONFIG_MYRI10GE is not set
462# 463# CONFIG_NETXEN_NIC is not set
463# Token Ring devices 464# CONFIG_NIU is not set
464# 465# CONFIG_MLX4_CORE is not set
466# CONFIG_TEHUTI is not set
465# CONFIG_TR is not set 467# CONFIG_TR is not set
466 468
467# 469#
468# Wireless LAN (non-hamradio) 470# Wireless LAN
469#
470CONFIG_NET_RADIO=y
471
472#
473# Obsolete Wireless cards support (pre-802.11)
474#
475# CONFIG_STRIP is not set
476# CONFIG_ARLAN is not set
477# CONFIG_WAVELAN is not set
478
479#
480# Wireless 802.11b ISA/PCI cards support
481#
482# CONFIG_HERMES is not set
483# CONFIG_ATMEL is not set
484
485#
486# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support
487#
488# CONFIG_HOSTAP is not set
489CONFIG_NET_WIRELESS=y
490
491#
492# Wan interfaces
493# 471#
472# CONFIG_WLAN_PRE80211 is not set
473# CONFIG_WLAN_80211 is not set
494# CONFIG_WAN is not set 474# CONFIG_WAN is not set
495# CONFIG_FDDI is not set 475# CONFIG_FDDI is not set
496# CONFIG_PLIP is not set 476# CONFIG_PLIP is not set
@@ -501,24 +481,19 @@ CONFIG_PPP=y
501# CONFIG_PPP_DEFLATE is not set 481# CONFIG_PPP_DEFLATE is not set
502# CONFIG_PPP_BSDCOMP is not set 482# CONFIG_PPP_BSDCOMP is not set
503# CONFIG_SLIP is not set 483# CONFIG_SLIP is not set
484CONFIG_SLHC=y
504# CONFIG_NET_FC is not set 485# CONFIG_NET_FC is not set
505# CONFIG_NETPOLL is not set 486# CONFIG_NETPOLL is not set
506# CONFIG_NET_POLL_CONTROLLER is not set 487# CONFIG_NET_POLL_CONTROLLER is not set
507
508#
509# ISDN subsystem
510#
511# CONFIG_ISDN is not set 488# CONFIG_ISDN is not set
512
513#
514# Telephony Support
515#
516# CONFIG_PHONE is not set 489# CONFIG_PHONE is not set
517 490
518# 491#
519# Input device support 492# Input device support
520# 493#
521CONFIG_INPUT=y 494CONFIG_INPUT=y
495# CONFIG_INPUT_FF_MEMLESS is not set
496# CONFIG_INPUT_POLLDEV is not set
522 497
523# 498#
524# Userland interfaces 499# Userland interfaces
@@ -543,19 +518,31 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y
543# CONFIG_KEYBOARD_LKKBD is not set 518# CONFIG_KEYBOARD_LKKBD is not set
544# CONFIG_KEYBOARD_XTKBD is not set 519# CONFIG_KEYBOARD_XTKBD is not set
545# CONFIG_KEYBOARD_NEWTON is not set 520# CONFIG_KEYBOARD_NEWTON is not set
521# CONFIG_KEYBOARD_STOWAWAY is not set
546# CONFIG_KEYBOARD_HIL_OLD is not set 522# CONFIG_KEYBOARD_HIL_OLD is not set
547CONFIG_KEYBOARD_HIL=y 523CONFIG_KEYBOARD_HIL=y
548CONFIG_INPUT_MOUSE=y 524CONFIG_INPUT_MOUSE=y
549CONFIG_MOUSE_PS2=y 525CONFIG_MOUSE_PS2=y
526CONFIG_MOUSE_PS2_ALPS=y
527CONFIG_MOUSE_PS2_LOGIPS2PP=y
528CONFIG_MOUSE_PS2_SYNAPTICS=y
529CONFIG_MOUSE_PS2_LIFEBOOK=y
530CONFIG_MOUSE_PS2_TRACKPOINT=y
531# CONFIG_MOUSE_PS2_TOUCHKIT is not set
550# CONFIG_MOUSE_SERIAL is not set 532# CONFIG_MOUSE_SERIAL is not set
533# CONFIG_MOUSE_APPLETOUCH is not set
551# CONFIG_MOUSE_INPORT is not set 534# CONFIG_MOUSE_INPORT is not set
552# CONFIG_MOUSE_LOGIBM is not set 535# CONFIG_MOUSE_LOGIBM is not set
553# CONFIG_MOUSE_PC110PAD is not set 536# CONFIG_MOUSE_PC110PAD is not set
554# CONFIG_MOUSE_VSXXXAA is not set 537# CONFIG_MOUSE_VSXXXAA is not set
555CONFIG_MOUSE_HIL=y 538CONFIG_MOUSE_HIL=y
556# CONFIG_INPUT_JOYSTICK is not set 539# CONFIG_INPUT_JOYSTICK is not set
540# CONFIG_INPUT_TABLET is not set
557# CONFIG_INPUT_TOUCHSCREEN is not set 541# CONFIG_INPUT_TOUCHSCREEN is not set
558CONFIG_INPUT_MISC=y 542CONFIG_INPUT_MISC=y
543# CONFIG_INPUT_ATI_REMOTE is not set
544# CONFIG_INPUT_ATI_REMOTE2 is not set
545# CONFIG_INPUT_POWERMATE is not set
559# CONFIG_INPUT_UINPUT is not set 546# CONFIG_INPUT_UINPUT is not set
560# CONFIG_HP_SDC_RTC is not set 547# CONFIG_HP_SDC_RTC is not set
561 548
@@ -579,6 +566,7 @@ CONFIG_SERIO_LIBPS2=y
579CONFIG_VT=y 566CONFIG_VT=y
580CONFIG_VT_CONSOLE=y 567CONFIG_VT_CONSOLE=y
581CONFIG_HW_CONSOLE=y 568CONFIG_HW_CONSOLE=y
569# CONFIG_VT_HW_CONSOLE_BINDING is not set
582# CONFIG_SERIAL_NONSTANDARD is not set 570# CONFIG_SERIAL_NONSTANDARD is not set
583 571
584# 572#
@@ -586,17 +574,20 @@ CONFIG_HW_CONSOLE=y
586# 574#
587CONFIG_SERIAL_8250=y 575CONFIG_SERIAL_8250=y
588CONFIG_SERIAL_8250_CONSOLE=y 576CONFIG_SERIAL_8250_CONSOLE=y
577CONFIG_SERIAL_8250_GSC=y
578CONFIG_SERIAL_8250_PCI=y
589CONFIG_SERIAL_8250_NR_UARTS=13 579CONFIG_SERIAL_8250_NR_UARTS=13
590CONFIG_SERIAL_8250_RUNTIME_UARTS=4 580CONFIG_SERIAL_8250_RUNTIME_UARTS=4
591CONFIG_SERIAL_8250_EXTENDED=y 581CONFIG_SERIAL_8250_EXTENDED=y
592CONFIG_SERIAL_8250_MANY_PORTS=y 582CONFIG_SERIAL_8250_MANY_PORTS=y
593CONFIG_SERIAL_8250_SHARE_IRQ=y
594# CONFIG_SERIAL_8250_DETECT_IRQ is not set
595# CONFIG_SERIAL_8250_RSA is not set
596# CONFIG_SERIAL_8250_FOURPORT is not set 583# CONFIG_SERIAL_8250_FOURPORT is not set
597# CONFIG_SERIAL_8250_ACCENT is not set 584# CONFIG_SERIAL_8250_ACCENT is not set
598# CONFIG_SERIAL_8250_BOCA is not set 585# CONFIG_SERIAL_8250_BOCA is not set
586# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set
599# CONFIG_SERIAL_8250_HUB6 is not set 587# CONFIG_SERIAL_8250_HUB6 is not set
588CONFIG_SERIAL_8250_SHARE_IRQ=y
589# CONFIG_SERIAL_8250_DETECT_IRQ is not set
590# CONFIG_SERIAL_8250_RSA is not set
600 591
601# 592#
602# Non-8250 serial port support 593# Non-8250 serial port support
@@ -605,6 +596,7 @@ CONFIG_SERIAL_MUX=y
605CONFIG_SERIAL_MUX_CONSOLE=y 596CONFIG_SERIAL_MUX_CONSOLE=y
606CONFIG_SERIAL_CORE=y 597CONFIG_SERIAL_CORE=y
607CONFIG_SERIAL_CORE_CONSOLE=y 598CONFIG_SERIAL_CORE_CONSOLE=y
599# CONFIG_SERIAL_JSM is not set
608CONFIG_UNIX98_PTYS=y 600CONFIG_UNIX98_PTYS=y
609CONFIG_LEGACY_PTYS=y 601CONFIG_LEGACY_PTYS=y
610CONFIG_LEGACY_PTY_COUNT=256 602CONFIG_LEGACY_PTY_COUNT=256
@@ -612,35 +604,18 @@ CONFIG_PRINTER=y
612# CONFIG_LP_CONSOLE is not set 604# CONFIG_LP_CONSOLE is not set
613# CONFIG_PPDEV is not set 605# CONFIG_PPDEV is not set
614# CONFIG_TIPAR is not set 606# CONFIG_TIPAR is not set
615
616#
617# IPMI
618#
619# CONFIG_IPMI_HANDLER is not set 607# CONFIG_IPMI_HANDLER is not set
620
621#
622# Watchdog Cards
623#
624# CONFIG_WATCHDOG is not set 608# CONFIG_WATCHDOG is not set
609# CONFIG_HW_RANDOM is not set
625CONFIG_GEN_RTC=y 610CONFIG_GEN_RTC=y
626# CONFIG_GEN_RTC_X is not set 611# CONFIG_GEN_RTC_X is not set
627# CONFIG_DTLK is not set 612# CONFIG_DTLK is not set
628# CONFIG_R3964 is not set 613# CONFIG_R3964 is not set
629# CONFIG_APPLICOM is not set 614# CONFIG_APPLICOM is not set
630 615# CONFIG_AGP is not set
631#
632# Ftape, the floppy tape device driver
633#
634# CONFIG_DRM is not set 616# CONFIG_DRM is not set
635# CONFIG_RAW_DRIVER is not set 617# CONFIG_RAW_DRIVER is not set
636 618CONFIG_DEVPORT=y
637#
638# TPM devices
639#
640
641#
642# I2C support
643#
644# CONFIG_I2C is not set 619# CONFIG_I2C is not set
645 620
646# 621#
@@ -648,46 +623,59 @@ CONFIG_GEN_RTC=y
648# 623#
649# CONFIG_SPI is not set 624# CONFIG_SPI is not set
650# CONFIG_SPI_MASTER is not set 625# CONFIG_SPI_MASTER is not set
651
652#
653# Dallas's 1-wire bus
654#
655# CONFIG_W1 is not set 626# CONFIG_W1 is not set
656 627# CONFIG_POWER_SUPPLY is not set
657#
658# Hardware Monitoring support
659#
660# CONFIG_HWMON is not set 628# CONFIG_HWMON is not set
661# CONFIG_HWMON_VID is not set
662 629
663# 630#
664# Misc devices 631# Sonics Silicon Backplane
665# 632#
633CONFIG_SSB_POSSIBLE=y
634# CONFIG_SSB is not set
666 635
667# 636#
668# Multimedia Capabilities Port drivers 637# Multifunction device drivers
669# 638#
639# CONFIG_MFD_SM501 is not set
670 640
671# 641#
672# Multimedia devices 642# Multimedia devices
673# 643#
674# CONFIG_VIDEO_DEV is not set 644# CONFIG_VIDEO_DEV is not set
645# CONFIG_DVB_CORE is not set
646# CONFIG_DAB is not set
675 647
676# 648#
677# Digital Video Broadcasting Devices 649# Graphics support
678# 650#
679# CONFIG_DVB is not set 651# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
680 652
681# 653#
682# Graphics support 654# Display device support
683# 655#
656# CONFIG_DISPLAY_SUPPORT is not set
657# CONFIG_VGASTATE is not set
658CONFIG_VIDEO_OUTPUT_CONTROL=m
684CONFIG_FB=y 659CONFIG_FB=y
660# CONFIG_FIRMWARE_EDID is not set
661# CONFIG_FB_DDC is not set
685CONFIG_FB_CFB_FILLRECT=y 662CONFIG_FB_CFB_FILLRECT=y
686CONFIG_FB_CFB_COPYAREA=y 663CONFIG_FB_CFB_COPYAREA=y
687CONFIG_FB_CFB_IMAGEBLIT=y 664CONFIG_FB_CFB_IMAGEBLIT=y
665# CONFIG_FB_SYS_FILLRECT is not set
666# CONFIG_FB_SYS_COPYAREA is not set
667# CONFIG_FB_SYS_IMAGEBLIT is not set
668# CONFIG_FB_SYS_FOPS is not set
669CONFIG_FB_DEFERRED_IO=y
670# CONFIG_FB_SVGALIB is not set
688# CONFIG_FB_MACMODES is not set 671# CONFIG_FB_MACMODES is not set
672# CONFIG_FB_BACKLIGHT is not set
689# CONFIG_FB_MODE_HELPERS is not set 673# CONFIG_FB_MODE_HELPERS is not set
690# CONFIG_FB_TILEBLITTING is not set 674# CONFIG_FB_TILEBLITTING is not set
675
676#
677# Frame buffer hardware drivers
678#
691# CONFIG_FB_CIRRUS is not set 679# CONFIG_FB_CIRRUS is not set
692# CONFIG_FB_PM2 is not set 680# CONFIG_FB_PM2 is not set
693# CONFIG_FB_CYBER2000 is not set 681# CONFIG_FB_CYBER2000 is not set
@@ -698,16 +686,18 @@ CONFIG_FB_STI=y
698# CONFIG_FB_NVIDIA is not set 686# CONFIG_FB_NVIDIA is not set
699# CONFIG_FB_RIVA is not set 687# CONFIG_FB_RIVA is not set
700# CONFIG_FB_MATROX is not set 688# CONFIG_FB_MATROX is not set
701# CONFIG_FB_RADEON_OLD is not set
702# CONFIG_FB_RADEON is not set 689# CONFIG_FB_RADEON is not set
703# CONFIG_FB_ATY128 is not set 690# CONFIG_FB_ATY128 is not set
704# CONFIG_FB_ATY is not set 691# CONFIG_FB_ATY is not set
692# CONFIG_FB_S3 is not set
705# CONFIG_FB_SIS is not set 693# CONFIG_FB_SIS is not set
706# CONFIG_FB_NEOMAGIC is not set 694# CONFIG_FB_NEOMAGIC is not set
707# CONFIG_FB_KYRO is not set 695# CONFIG_FB_KYRO is not set
708# CONFIG_FB_3DFX is not set 696# CONFIG_FB_3DFX is not set
709# CONFIG_FB_VOODOO1 is not set 697# CONFIG_FB_VOODOO1 is not set
698# CONFIG_FB_VT8623 is not set
710# CONFIG_FB_TRIDENT is not set 699# CONFIG_FB_TRIDENT is not set
700# CONFIG_FB_ARK is not set
711# CONFIG_FB_VIRTUAL is not set 701# CONFIG_FB_VIRTUAL is not set
712 702
713# 703#
@@ -717,21 +707,17 @@ CONFIG_DUMMY_CONSOLE=y
717CONFIG_DUMMY_CONSOLE_COLUMNS=160 707CONFIG_DUMMY_CONSOLE_COLUMNS=160
718CONFIG_DUMMY_CONSOLE_ROWS=64 708CONFIG_DUMMY_CONSOLE_ROWS=64
719CONFIG_FRAMEBUFFER_CONSOLE=y 709CONFIG_FRAMEBUFFER_CONSOLE=y
710# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
720# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 711# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
721CONFIG_STI_CONSOLE=y 712CONFIG_STI_CONSOLE=y
722# CONFIG_FONTS is not set 713# CONFIG_FONTS is not set
723CONFIG_FONT_8x8=y 714CONFIG_FONT_8x8=y
724CONFIG_FONT_8x16=y 715CONFIG_FONT_8x16=y
725
726#
727# Logo configuration
728#
729CONFIG_LOGO=y 716CONFIG_LOGO=y
730CONFIG_LOGO_LINUX_MONO=y 717CONFIG_LOGO_LINUX_MONO=y
731CONFIG_LOGO_LINUX_VGA16=y 718CONFIG_LOGO_LINUX_VGA16=y
732CONFIG_LOGO_LINUX_CLUT224=y 719CONFIG_LOGO_LINUX_CLUT224=y
733CONFIG_LOGO_PARISC_CLUT224=y 720CONFIG_LOGO_PARISC_CLUT224=y
734# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
735 721
736# 722#
737# Sound 723# Sound
@@ -749,8 +735,11 @@ CONFIG_SND_SEQUENCER=y
749CONFIG_SND_OSSEMUL=y 735CONFIG_SND_OSSEMUL=y
750CONFIG_SND_MIXER_OSS=y 736CONFIG_SND_MIXER_OSS=y
751CONFIG_SND_PCM_OSS=y 737CONFIG_SND_PCM_OSS=y
738CONFIG_SND_PCM_OSS_PLUGINS=y
752CONFIG_SND_SEQUENCER_OSS=y 739CONFIG_SND_SEQUENCER_OSS=y
740# CONFIG_SND_DYNAMIC_MINORS is not set
753CONFIG_SND_SUPPORT_OLD_API=y 741CONFIG_SND_SUPPORT_OLD_API=y
742CONFIG_SND_VERBOSE_PROCFS=y
754# CONFIG_SND_VERBOSE_PRINTK is not set 743# CONFIG_SND_VERBOSE_PRINTK is not set
755# CONFIG_SND_DEBUG is not set 744# CONFIG_SND_DEBUG is not set
756 745
@@ -760,13 +749,16 @@ CONFIG_SND_SUPPORT_OLD_API=y
760# CONFIG_SND_DUMMY is not set 749# CONFIG_SND_DUMMY is not set
761# CONFIG_SND_VIRMIDI is not set 750# CONFIG_SND_VIRMIDI is not set
762# CONFIG_SND_MTPAV is not set 751# CONFIG_SND_MTPAV is not set
752# CONFIG_SND_MTS64 is not set
763# CONFIG_SND_SERIAL_U16550 is not set 753# CONFIG_SND_SERIAL_U16550 is not set
764# CONFIG_SND_MPU401 is not set 754# CONFIG_SND_MPU401 is not set
755# CONFIG_SND_PORTMAN2X4 is not set
765 756
766# 757#
767# PCI devices 758# PCI devices
768# 759#
769# CONFIG_SND_AD1889 is not set 760# CONFIG_SND_AD1889 is not set
761# CONFIG_SND_ALS300 is not set
770# CONFIG_SND_ALI5451 is not set 762# CONFIG_SND_ALI5451 is not set
771# CONFIG_SND_ATIIXP is not set 763# CONFIG_SND_ATIIXP is not set
772# CONFIG_SND_ATIIXP_MODEM is not set 764# CONFIG_SND_ATIIXP_MODEM is not set
@@ -778,6 +770,18 @@ CONFIG_SND_SUPPORT_OLD_API=y
778# CONFIG_SND_CMIPCI is not set 770# CONFIG_SND_CMIPCI is not set
779# CONFIG_SND_CS4281 is not set 771# CONFIG_SND_CS4281 is not set
780# CONFIG_SND_CS46XX is not set 772# CONFIG_SND_CS46XX is not set
773# CONFIG_SND_DARLA20 is not set
774# CONFIG_SND_GINA20 is not set
775# CONFIG_SND_LAYLA20 is not set
776# CONFIG_SND_DARLA24 is not set
777# CONFIG_SND_GINA24 is not set
778# CONFIG_SND_LAYLA24 is not set
779# CONFIG_SND_MONA is not set
780# CONFIG_SND_MIA is not set
781# CONFIG_SND_ECHO3G is not set
782# CONFIG_SND_INDIGO is not set
783# CONFIG_SND_INDIGOIO is not set
784# CONFIG_SND_INDIGODJ is not set
781# CONFIG_SND_EMU10K1 is not set 785# CONFIG_SND_EMU10K1 is not set
782# CONFIG_SND_EMU10K1X is not set 786# CONFIG_SND_EMU10K1X is not set
783# CONFIG_SND_ENS1370 is not set 787# CONFIG_SND_ENS1370 is not set
@@ -791,11 +795,13 @@ CONFIG_SND_SUPPORT_OLD_API=y
791# CONFIG_SND_ICE1712 is not set 795# CONFIG_SND_ICE1712 is not set
792# CONFIG_SND_ICE1724 is not set 796# CONFIG_SND_ICE1724 is not set
793# CONFIG_SND_INTEL8X0 is not set 797# CONFIG_SND_INTEL8X0 is not set
798# CONFIG_SND_INTEL8X0M is not set
794# CONFIG_SND_KORG1212 is not set 799# CONFIG_SND_KORG1212 is not set
795# CONFIG_SND_MAESTRO3 is not set 800# CONFIG_SND_MAESTRO3 is not set
796# CONFIG_SND_MIXART is not set 801# CONFIG_SND_MIXART is not set
797# CONFIG_SND_NM256 is not set 802# CONFIG_SND_NM256 is not set
798# CONFIG_SND_PCXHR is not set 803# CONFIG_SND_PCXHR is not set
804# CONFIG_SND_RIPTIDE is not set
799# CONFIG_SND_RME32 is not set 805# CONFIG_SND_RME32 is not set
800# CONFIG_SND_RME96 is not set 806# CONFIG_SND_RME96 is not set
801# CONFIG_SND_RME9652 is not set 807# CONFIG_SND_RME9652 is not set
@@ -812,15 +818,25 @@ CONFIG_SND_SUPPORT_OLD_API=y
812CONFIG_SND_HARMONY=y 818CONFIG_SND_HARMONY=y
813 819
814# 820#
815# Open Sound System 821# System on Chip audio support
816# 822#
817# CONFIG_SOUND_PRIME is not set 823# CONFIG_SND_SOC is not set
818 824
819# 825#
820# USB support 826# SoC Audio support for SuperH
827#
828
829#
830# Open Sound System
821# 831#
832# CONFIG_SOUND_PRIME is not set
833CONFIG_HID_SUPPORT=y
834CONFIG_HID=y
835CONFIG_HID_DEBUG=y
836CONFIG_USB_SUPPORT=y
822CONFIG_USB_ARCH_HAS_HCD=y 837CONFIG_USB_ARCH_HAS_HCD=y
823CONFIG_USB_ARCH_HAS_OHCI=y 838CONFIG_USB_ARCH_HAS_OHCI=y
839CONFIG_USB_ARCH_HAS_EHCI=y
824# CONFIG_USB is not set 840# CONFIG_USB is not set
825 841
826# 842#
@@ -831,20 +847,29 @@ CONFIG_USB_ARCH_HAS_OHCI=y
831# USB Gadget Support 847# USB Gadget Support
832# 848#
833# CONFIG_USB_GADGET is not set 849# CONFIG_USB_GADGET is not set
850# CONFIG_MMC is not set
851# CONFIG_NEW_LEDS is not set
852# CONFIG_INFINIBAND is not set
853# CONFIG_RTC_CLASS is not set
834 854
835# 855#
836# MMC/SD Card support 856# DMA Engine support
837# 857#
838# CONFIG_MMC is not set 858# CONFIG_DMA_ENGINE is not set
839 859
840# 860#
841# InfiniBand support 861# DMA Clients
842# 862#
843# CONFIG_INFINIBAND is not set
844 863
845# 864#
846# SN Devices 865# DMA Devices
847# 866#
867# CONFIG_AUXDISPLAY is not set
868
869#
870# Userspace I/O
871#
872# CONFIG_UIO is not set
848 873
849# 874#
850# File systems 875# File systems
@@ -860,9 +885,11 @@ CONFIG_JBD=y
860# CONFIG_JFS_FS is not set 885# CONFIG_JFS_FS is not set
861# CONFIG_FS_POSIX_ACL is not set 886# CONFIG_FS_POSIX_ACL is not set
862# CONFIG_XFS_FS is not set 887# CONFIG_XFS_FS is not set
888# CONFIG_OCFS2_FS is not set
863# CONFIG_MINIX_FS is not set 889# CONFIG_MINIX_FS is not set
864# CONFIG_ROMFS_FS is not set 890# CONFIG_ROMFS_FS is not set
865CONFIG_INOTIFY=y 891CONFIG_INOTIFY=y
892CONFIG_INOTIFY_USER=y
866# CONFIG_QUOTA is not set 893# CONFIG_QUOTA is not set
867CONFIG_DNOTIFY=y 894CONFIG_DNOTIFY=y
868# CONFIG_AUTOFS_FS is not set 895# CONFIG_AUTOFS_FS is not set
@@ -889,11 +916,12 @@ CONFIG_JOLIET=y
889# 916#
890CONFIG_PROC_FS=y 917CONFIG_PROC_FS=y
891CONFIG_PROC_KCORE=y 918CONFIG_PROC_KCORE=y
919CONFIG_PROC_SYSCTL=y
892CONFIG_SYSFS=y 920CONFIG_SYSFS=y
893CONFIG_TMPFS=y 921CONFIG_TMPFS=y
922# CONFIG_TMPFS_POSIX_ACL is not set
894# CONFIG_HUGETLB_PAGE is not set 923# CONFIG_HUGETLB_PAGE is not set
895CONFIG_RAMFS=y 924CONFIG_RAMFS=y
896# CONFIG_RELAYFS_FS is not set
897 925
898# 926#
899# Miscellaneous filesystems 927# Miscellaneous filesystems
@@ -912,6 +940,7 @@ CONFIG_RAMFS=y
912CONFIG_NFS_FS=y 940CONFIG_NFS_FS=y
913CONFIG_NFS_V3=y 941CONFIG_NFS_V3=y
914# CONFIG_NFS_V3_ACL is not set 942# CONFIG_NFS_V3_ACL is not set
943# CONFIG_NFS_DIRECTIO is not set
915CONFIG_NFSD=y 944CONFIG_NFSD=y
916CONFIG_NFSD_V3=y 945CONFIG_NFSD_V3=y
917# CONFIG_NFSD_V3_ACL is not set 946# CONFIG_NFSD_V3_ACL is not set
@@ -982,22 +1011,32 @@ CONFIG_NLS_UTF8=m
982# Kernel hacking 1011# Kernel hacking
983# 1012#
984# CONFIG_PRINTK_TIME is not set 1013# CONFIG_PRINTK_TIME is not set
1014CONFIG_ENABLE_MUST_CHECK=y
985CONFIG_MAGIC_SYSRQ=y 1015CONFIG_MAGIC_SYSRQ=y
1016# CONFIG_UNUSED_SYMBOLS is not set
1017# CONFIG_DEBUG_FS is not set
1018CONFIG_HEADERS_CHECK=y
986CONFIG_DEBUG_KERNEL=y 1019CONFIG_DEBUG_KERNEL=y
987CONFIG_LOG_BUF_SHIFT=16 1020# CONFIG_DEBUG_SHIRQ is not set
988CONFIG_DETECT_SOFTLOCKUP=y 1021CONFIG_DETECT_SOFTLOCKUP=y
1022CONFIG_SCHED_DEBUG=y
989# CONFIG_SCHEDSTATS is not set 1023# CONFIG_SCHEDSTATS is not set
1024# CONFIG_TIMER_STATS is not set
990# CONFIG_DEBUG_SLAB is not set 1025# CONFIG_DEBUG_SLAB is not set
991# CONFIG_DEBUG_MUTEXES is not set 1026# CONFIG_DEBUG_RT_MUTEXES is not set
1027# CONFIG_RT_MUTEX_TESTER is not set
992# CONFIG_DEBUG_SPINLOCK is not set 1028# CONFIG_DEBUG_SPINLOCK is not set
1029# CONFIG_DEBUG_MUTEXES is not set
993# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1030# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1031# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
994# CONFIG_DEBUG_KOBJECT is not set 1032# CONFIG_DEBUG_KOBJECT is not set
1033CONFIG_DEBUG_BUGVERBOSE=y
995# CONFIG_DEBUG_INFO is not set 1034# CONFIG_DEBUG_INFO is not set
996# CONFIG_DEBUG_IOREMAP is not set
997# CONFIG_DEBUG_FS is not set
998# CONFIG_DEBUG_VM is not set 1035# CONFIG_DEBUG_VM is not set
1036# CONFIG_DEBUG_LIST is not set
999CONFIG_FORCED_INLINING=y 1037CONFIG_FORCED_INLINING=y
1000# CONFIG_RCU_TORTURE_TEST is not set 1038# CONFIG_RCU_TORTURE_TEST is not set
1039# CONFIG_FAULT_INJECTION is not set
1001# CONFIG_DEBUG_RODATA is not set 1040# CONFIG_DEBUG_RODATA is not set
1002 1041
1003# 1042#
@@ -1007,13 +1046,10 @@ CONFIG_FORCED_INLINING=y
1007CONFIG_SECURITY=y 1046CONFIG_SECURITY=y
1008# CONFIG_SECURITY_NETWORK is not set 1047# CONFIG_SECURITY_NETWORK is not set
1009CONFIG_SECURITY_CAPABILITIES=y 1048CONFIG_SECURITY_CAPABILITIES=y
1010# CONFIG_SECURITY_SECLVL is not set
1011# CONFIG_SECURITY_SELINUX is not set
1012
1013#
1014# Cryptographic options
1015#
1016CONFIG_CRYPTO=y 1049CONFIG_CRYPTO=y
1050CONFIG_CRYPTO_ALGAPI=y
1051CONFIG_CRYPTO_BLKCIPHER=y
1052CONFIG_CRYPTO_MANAGER=y
1017# CONFIG_CRYPTO_HMAC is not set 1053# CONFIG_CRYPTO_HMAC is not set
1018# CONFIG_CRYPTO_NULL is not set 1054# CONFIG_CRYPTO_NULL is not set
1019# CONFIG_CRYPTO_MD4 is not set 1055# CONFIG_CRYPTO_MD4 is not set
@@ -1023,7 +1059,12 @@ CONFIG_CRYPTO=y
1023# CONFIG_CRYPTO_SHA512 is not set 1059# CONFIG_CRYPTO_SHA512 is not set
1024# CONFIG_CRYPTO_WP512 is not set 1060# CONFIG_CRYPTO_WP512 is not set
1025# CONFIG_CRYPTO_TGR192 is not set 1061# CONFIG_CRYPTO_TGR192 is not set
1062# CONFIG_CRYPTO_ECB is not set
1063CONFIG_CRYPTO_CBC=y
1064# CONFIG_CRYPTO_PCBC is not set
1065# CONFIG_CRYPTO_CRYPTD is not set
1026# CONFIG_CRYPTO_DES is not set 1066# CONFIG_CRYPTO_DES is not set
1067# CONFIG_CRYPTO_FCRYPT is not set
1027# CONFIG_CRYPTO_BLOWFISH is not set 1068# CONFIG_CRYPTO_BLOWFISH is not set
1028# CONFIG_CRYPTO_TWOFISH is not set 1069# CONFIG_CRYPTO_TWOFISH is not set
1029# CONFIG_CRYPTO_SERPENT is not set 1070# CONFIG_CRYPTO_SERPENT is not set
@@ -1034,19 +1075,26 @@ CONFIG_CRYPTO=y
1034# CONFIG_CRYPTO_ARC4 is not set 1075# CONFIG_CRYPTO_ARC4 is not set
1035# CONFIG_CRYPTO_KHAZAD is not set 1076# CONFIG_CRYPTO_KHAZAD is not set
1036# CONFIG_CRYPTO_ANUBIS is not set 1077# CONFIG_CRYPTO_ANUBIS is not set
1078# CONFIG_CRYPTO_SEED is not set
1037# CONFIG_CRYPTO_DEFLATE is not set 1079# CONFIG_CRYPTO_DEFLATE is not set
1038# CONFIG_CRYPTO_MICHAEL_MIC is not set 1080# CONFIG_CRYPTO_MICHAEL_MIC is not set
1039# CONFIG_CRYPTO_CRC32C is not set 1081# CONFIG_CRYPTO_CRC32C is not set
1082# CONFIG_CRYPTO_CAMELLIA is not set
1040# CONFIG_CRYPTO_TEST is not set 1083# CONFIG_CRYPTO_TEST is not set
1041 1084# CONFIG_CRYPTO_AUTHENC is not set
1042# 1085CONFIG_CRYPTO_HW=y
1043# Hardware crypto devices
1044#
1045 1086
1046# 1087#
1047# Library routines 1088# Library routines
1048# 1089#
1090CONFIG_BITREVERSE=y
1049# CONFIG_CRC_CCITT is not set 1091# CONFIG_CRC_CCITT is not set
1050# CONFIG_CRC16 is not set 1092# CONFIG_CRC16 is not set
1093# CONFIG_CRC_ITU_T is not set
1051CONFIG_CRC32=y 1094CONFIG_CRC32=y
1095# CONFIG_CRC7 is not set
1052# CONFIG_LIBCRC32C is not set 1096# CONFIG_LIBCRC32C is not set
1097CONFIG_PLIST=y
1098CONFIG_HAS_IOMEM=y
1099CONFIG_HAS_IOPORT=y
1100CONFIG_HAS_DMA=y
diff --git a/arch/parisc/configs/c3000_defconfig b/arch/parisc/configs/c3000_defconfig
index eb2f9a3d515c..c6def3c1d209 100644
--- a/arch/parisc/configs/c3000_defconfig
+++ b/arch/parisc/configs/c3000_defconfig
@@ -1,39 +1,50 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-pa6 3# Linux kernel version: 2.6.23
4# Sun Mar 26 20:03:29 2006 4# Fri Oct 12 21:24:00 2007
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
8CONFIG_STACK_GROWSUP=y 8CONFIG_STACK_GROWSUP=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10# CONFIG_ARCH_HAS_ILOG2_U32 is not set
11# CONFIG_ARCH_HAS_ILOG2_U64 is not set
12CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_BUG=y
14CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
16CONFIG_GENERIC_TIME=y
11CONFIG_GENERIC_HARDIRQS=y 17CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 18CONFIG_GENERIC_IRQ_PROBE=y
19CONFIG_IRQ_PER_CPU=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
13 21
14# 22#
15# Code maturity level options 23# General setup
16# 24#
17CONFIG_EXPERIMENTAL=y 25CONFIG_EXPERIMENTAL=y
18CONFIG_BROKEN_ON_SMP=y 26CONFIG_BROKEN_ON_SMP=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 27CONFIG_INIT_ENV_ARG_LIMIT=32
20
21#
22# General setup
23#
24CONFIG_LOCALVERSION="" 28CONFIG_LOCALVERSION=""
25# CONFIG_LOCALVERSION_AUTO is not set 29# CONFIG_LOCALVERSION_AUTO is not set
26CONFIG_SWAP=y 30CONFIG_SWAP=y
27CONFIG_SYSVIPC=y 31CONFIG_SYSVIPC=y
32CONFIG_SYSVIPC_SYSCTL=y
28# CONFIG_POSIX_MQUEUE is not set 33# CONFIG_POSIX_MQUEUE is not set
29# CONFIG_BSD_PROCESS_ACCT is not set 34# CONFIG_BSD_PROCESS_ACCT is not set
30CONFIG_SYSCTL=y 35# CONFIG_TASKSTATS is not set
36# CONFIG_USER_NS is not set
31# CONFIG_AUDIT is not set 37# CONFIG_AUDIT is not set
32CONFIG_IKCONFIG=y 38CONFIG_IKCONFIG=y
33CONFIG_IKCONFIG_PROC=y 39CONFIG_IKCONFIG_PROC=y
34CONFIG_INITRAMFS_SOURCE="" 40CONFIG_LOG_BUF_SHIFT=16
41CONFIG_SYSFS_DEPRECATED=y
42# CONFIG_RELAY is not set
43# CONFIG_BLK_DEV_INITRD is not set
35# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set 44# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
45CONFIG_SYSCTL=y
36CONFIG_EMBEDDED=y 46CONFIG_EMBEDDED=y
47CONFIG_SYSCTL_SYSCALL=y
37CONFIG_KALLSYMS=y 48CONFIG_KALLSYMS=y
38CONFIG_KALLSYMS_ALL=y 49CONFIG_KALLSYMS_ALL=y
39# CONFIG_KALLSYMS_EXTRA_PASS is not set 50# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -43,31 +54,29 @@ CONFIG_BUG=y
43CONFIG_ELF_CORE=y 54CONFIG_ELF_CORE=y
44CONFIG_BASE_FULL=y 55CONFIG_BASE_FULL=y
45CONFIG_FUTEX=y 56CONFIG_FUTEX=y
57CONFIG_ANON_INODES=y
46CONFIG_EPOLL=y 58CONFIG_EPOLL=y
59CONFIG_SIGNALFD=y
60CONFIG_EVENTFD=y
47CONFIG_SHMEM=y 61CONFIG_SHMEM=y
48CONFIG_CC_ALIGN_FUNCTIONS=0 62CONFIG_VM_EVENT_COUNTERS=y
49CONFIG_CC_ALIGN_LABELS=0
50CONFIG_CC_ALIGN_LOOPS=0
51CONFIG_CC_ALIGN_JUMPS=0
52CONFIG_SLAB=y 63CONFIG_SLAB=y
64# CONFIG_SLUB is not set
65# CONFIG_SLOB is not set
66CONFIG_RT_MUTEXES=y
53# CONFIG_TINY_SHMEM is not set 67# CONFIG_TINY_SHMEM is not set
54CONFIG_BASE_SMALL=0 68CONFIG_BASE_SMALL=0
55# CONFIG_SLOB is not set
56
57#
58# Loadable module support
59#
60CONFIG_MODULES=y 69CONFIG_MODULES=y
61CONFIG_MODULE_UNLOAD=y 70CONFIG_MODULE_UNLOAD=y
62CONFIG_MODULE_FORCE_UNLOAD=y 71CONFIG_MODULE_FORCE_UNLOAD=y
63CONFIG_OBSOLETE_MODPARM=y
64# CONFIG_MODVERSIONS is not set 72# CONFIG_MODVERSIONS is not set
65# CONFIG_MODULE_SRCVERSION_ALL is not set 73# CONFIG_MODULE_SRCVERSION_ALL is not set
66CONFIG_KMOD=y 74CONFIG_KMOD=y
67 75CONFIG_BLOCK=y
68# 76# CONFIG_LBD is not set
69# Block layer 77# CONFIG_BLK_DEV_IO_TRACE is not set
70# 78# CONFIG_LSF is not set
79# CONFIG_BLK_DEV_BSG is not set
71 80
72# 81#
73# IO Schedulers 82# IO Schedulers
@@ -93,6 +102,9 @@ CONFIG_PA8X00=y
93CONFIG_PA20=y 102CONFIG_PA20=y
94CONFIG_PREFETCH=y 103CONFIG_PREFETCH=y
95# CONFIG_64BIT is not set 104# CONFIG_64BIT is not set
105CONFIG_PARISC_PAGE_SIZE_4KB=y
106# CONFIG_PARISC_PAGE_SIZE_16KB is not set
107# CONFIG_PARISC_PAGE_SIZE_64KB is not set
96# CONFIG_SMP is not set 108# CONFIG_SMP is not set
97CONFIG_ARCH_FLATMEM_ENABLE=y 109CONFIG_ARCH_FLATMEM_ENABLE=y
98# CONFIG_PREEMPT_NONE is not set 110# CONFIG_PREEMPT_NONE is not set
@@ -100,6 +112,7 @@ CONFIG_PREEMPT_VOLUNTARY=y
100# CONFIG_PREEMPT is not set 112# CONFIG_PREEMPT is not set
101# CONFIG_HZ_100 is not set 113# CONFIG_HZ_100 is not set
102CONFIG_HZ_250=y 114CONFIG_HZ_250=y
115# CONFIG_HZ_300 is not set
103# CONFIG_HZ_1000 is not set 116# CONFIG_HZ_1000 is not set
104CONFIG_HZ=250 117CONFIG_HZ=250
105CONFIG_SELECT_MEMORY_MODEL=y 118CONFIG_SELECT_MEMORY_MODEL=y
@@ -110,6 +123,9 @@ CONFIG_FLATMEM=y
110CONFIG_FLAT_NODE_MEM_MAP=y 123CONFIG_FLAT_NODE_MEM_MAP=y
111# CONFIG_SPARSEMEM_STATIC is not set 124# CONFIG_SPARSEMEM_STATIC is not set
112CONFIG_SPLIT_PTLOCK_CPUS=4 125CONFIG_SPLIT_PTLOCK_CPUS=4
126# CONFIG_RESOURCES_64BIT is not set
127CONFIG_ZONE_DMA_FLAG=0
128CONFIG_VIRT_TO_BUS=y
113# CONFIG_HPUX is not set 129# CONFIG_HPUX is not set
114 130
115# 131#
@@ -117,7 +133,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
117# 133#
118# CONFIG_GSC is not set 134# CONFIG_GSC is not set
119CONFIG_PCI=y 135CONFIG_PCI=y
120CONFIG_PCI_LEGACY_PROC=y 136# CONFIG_ARCH_SUPPORTS_MSI is not set
121# CONFIG_PCI_DEBUG is not set 137# CONFIG_PCI_DEBUG is not set
122CONFIG_PCI_LBA=y 138CONFIG_PCI_LBA=y
123CONFIG_IOSAPIC=y 139CONFIG_IOSAPIC=y
@@ -127,10 +143,6 @@ CONFIG_IOMMU_SBA=y
127# PCCARD (PCMCIA/CardBus) support 143# PCCARD (PCMCIA/CardBus) support
128# 144#
129# CONFIG_PCCARD is not set 145# CONFIG_PCCARD is not set
130
131#
132# PCI Hotplug Support
133#
134# CONFIG_HOTPLUG_PCI is not set 146# CONFIG_HOTPLUG_PCI is not set
135 147
136# 148#
@@ -139,6 +151,7 @@ CONFIG_IOMMU_SBA=y
139CONFIG_SUPERIO=y 151CONFIG_SUPERIO=y
140CONFIG_CHASSIS_LCD_LED=y 152CONFIG_CHASSIS_LCD_LED=y
141# CONFIG_PDC_CHASSIS is not set 153# CONFIG_PDC_CHASSIS is not set
154CONFIG_PDC_CHASSIS_WARN=y
142CONFIG_PDC_STABLE=y 155CONFIG_PDC_STABLE=y
143 156
144# 157#
@@ -155,13 +168,15 @@ CONFIG_NET=y
155# 168#
156# Networking options 169# Networking options
157# 170#
158# CONFIG_NETDEBUG is not set
159CONFIG_PACKET=y 171CONFIG_PACKET=y
160CONFIG_PACKET_MMAP=y 172CONFIG_PACKET_MMAP=y
161CONFIG_UNIX=y 173CONFIG_UNIX=y
162CONFIG_XFRM=y 174CONFIG_XFRM=y
163CONFIG_XFRM_USER=m 175CONFIG_XFRM_USER=m
176# CONFIG_XFRM_SUB_POLICY is not set
177# CONFIG_XFRM_MIGRATE is not set
164CONFIG_NET_KEY=m 178CONFIG_NET_KEY=m
179# CONFIG_NET_KEY_MIGRATE is not set
165CONFIG_INET=y 180CONFIG_INET=y
166CONFIG_IP_MULTICAST=y 181CONFIG_IP_MULTICAST=y
167# CONFIG_IP_ADVANCED_ROUTER is not set 182# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -178,22 +193,36 @@ CONFIG_IP_PNP_BOOTP=y
178# CONFIG_INET_AH is not set 193# CONFIG_INET_AH is not set
179# CONFIG_INET_ESP is not set 194# CONFIG_INET_ESP is not set
180# CONFIG_INET_IPCOMP is not set 195# CONFIG_INET_IPCOMP is not set
181# CONFIG_INET_TUNNEL is not set 196# CONFIG_INET_XFRM_TUNNEL is not set
197CONFIG_INET_TUNNEL=m
198CONFIG_INET_XFRM_MODE_TRANSPORT=y
199CONFIG_INET_XFRM_MODE_TUNNEL=y
200CONFIG_INET_XFRM_MODE_BEET=y
201# CONFIG_INET_LRO is not set
182# CONFIG_INET_DIAG is not set 202# CONFIG_INET_DIAG is not set
183# CONFIG_TCP_CONG_ADVANCED is not set 203# CONFIG_TCP_CONG_ADVANCED is not set
184CONFIG_TCP_CONG_BIC=y 204CONFIG_TCP_CONG_CUBIC=y
185 205CONFIG_DEFAULT_TCP_CONG="cubic"
186# 206# CONFIG_TCP_MD5SIG is not set
187# IP: Virtual Server Configuration
188#
189# CONFIG_IP_VS is not set 207# CONFIG_IP_VS is not set
190CONFIG_IPV6=m 208CONFIG_IPV6=m
191# CONFIG_IPV6_PRIVACY is not set 209# CONFIG_IPV6_PRIVACY is not set
210# CONFIG_IPV6_ROUTER_PREF is not set
211# CONFIG_IPV6_OPTIMISTIC_DAD is not set
192# CONFIG_INET6_AH is not set 212# CONFIG_INET6_AH is not set
193# CONFIG_INET6_ESP is not set 213# CONFIG_INET6_ESP is not set
194CONFIG_INET6_IPCOMP=m 214CONFIG_INET6_IPCOMP=m
215# CONFIG_IPV6_MIP6 is not set
216CONFIG_INET6_XFRM_TUNNEL=m
195CONFIG_INET6_TUNNEL=m 217CONFIG_INET6_TUNNEL=m
218CONFIG_INET6_XFRM_MODE_TRANSPORT=m
219CONFIG_INET6_XFRM_MODE_TUNNEL=m
220CONFIG_INET6_XFRM_MODE_BEET=m
221# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
222CONFIG_IPV6_SIT=m
196CONFIG_IPV6_TUNNEL=m 223CONFIG_IPV6_TUNNEL=m
224# CONFIG_IPV6_MULTIPLE_TABLES is not set
225# CONFIG_NETWORK_SECMARK is not set
197CONFIG_NETFILTER=y 226CONFIG_NETFILTER=y
198CONFIG_NETFILTER_DEBUG=y 227CONFIG_NETFILTER_DEBUG=y
199 228
@@ -201,42 +230,24 @@ CONFIG_NETFILTER_DEBUG=y
201# Core Netfilter Configuration 230# Core Netfilter Configuration
202# 231#
203# CONFIG_NETFILTER_NETLINK is not set 232# CONFIG_NETFILTER_NETLINK is not set
233# CONFIG_NF_CONNTRACK_ENABLED is not set
234# CONFIG_NF_CONNTRACK is not set
204# CONFIG_NETFILTER_XTABLES is not set 235# CONFIG_NETFILTER_XTABLES is not set
205 236
206# 237#
207# IP: Netfilter Configuration 238# IP: Netfilter Configuration
208# 239#
209CONFIG_IP_NF_CONNTRACK=m
210# CONFIG_IP_NF_CT_ACCT is not set
211# CONFIG_IP_NF_CONNTRACK_MARK is not set
212# CONFIG_IP_NF_CONNTRACK_EVENTS is not set
213# CONFIG_IP_NF_CT_PROTO_SCTP is not set
214CONFIG_IP_NF_FTP=m
215CONFIG_IP_NF_IRC=m
216# CONFIG_IP_NF_NETBIOS_NS is not set
217CONFIG_IP_NF_TFTP=m
218CONFIG_IP_NF_AMANDA=m
219# CONFIG_IP_NF_PPTP is not set
220CONFIG_IP_NF_QUEUE=m 240CONFIG_IP_NF_QUEUE=m
241# CONFIG_IP_NF_IPTABLES is not set
242# CONFIG_IP_NF_ARPTABLES is not set
221 243
222# 244#
223# IPv6: Netfilter Configuration (EXPERIMENTAL) 245# IPv6: Netfilter Configuration (EXPERIMENTAL)
224# 246#
225# CONFIG_IP6_NF_QUEUE is not set 247# CONFIG_IP6_NF_QUEUE is not set
226 248# CONFIG_IP6_NF_IPTABLES is not set
227#
228# DCCP Configuration (EXPERIMENTAL)
229#
230# CONFIG_IP_DCCP is not set 249# CONFIG_IP_DCCP is not set
231
232#
233# SCTP Configuration (EXPERIMENTAL)
234#
235# CONFIG_IP_SCTP is not set 250# CONFIG_IP_SCTP is not set
236
237#
238# TIPC Configuration (EXPERIMENTAL)
239#
240# CONFIG_TIPC is not set 251# CONFIG_TIPC is not set
241# CONFIG_ATM is not set 252# CONFIG_ATM is not set
242# CONFIG_BRIDGE is not set 253# CONFIG_BRIDGE is not set
@@ -247,7 +258,6 @@ CONFIG_IP_NF_QUEUE=m
247# CONFIG_ATALK is not set 258# CONFIG_ATALK is not set
248# CONFIG_X25 is not set 259# CONFIG_X25 is not set
249# CONFIG_LAPB is not set 260# CONFIG_LAPB is not set
250# CONFIG_NET_DIVERT is not set
251# CONFIG_ECONET is not set 261# CONFIG_ECONET is not set
252# CONFIG_WAN_ROUTER is not set 262# CONFIG_WAN_ROUTER is not set
253 263
@@ -263,7 +273,17 @@ CONFIG_NET_PKTGEN=m
263# CONFIG_HAMRADIO is not set 273# CONFIG_HAMRADIO is not set
264# CONFIG_IRDA is not set 274# CONFIG_IRDA is not set
265# CONFIG_BT is not set 275# CONFIG_BT is not set
276# CONFIG_AF_RXRPC is not set
277
278#
279# Wireless
280#
281# CONFIG_CFG80211 is not set
282# CONFIG_WIRELESS_EXT is not set
283# CONFIG_MAC80211 is not set
266# CONFIG_IEEE80211 is not set 284# CONFIG_IEEE80211 is not set
285# CONFIG_RFKILL is not set
286# CONFIG_NET_9P is not set
267 287
268# 288#
269# Device Drivers 289# Device Drivers
@@ -272,33 +292,17 @@ CONFIG_NET_PKTGEN=m
272# 292#
273# Generic Driver Options 293# Generic Driver Options
274# 294#
295CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
275# CONFIG_STANDALONE is not set 296# CONFIG_STANDALONE is not set
276# CONFIG_PREVENT_FIRMWARE_BUILD is not set 297# CONFIG_PREVENT_FIRMWARE_BUILD is not set
277CONFIG_FW_LOADER=y 298CONFIG_FW_LOADER=y
278# CONFIG_DEBUG_DRIVER is not set 299# CONFIG_DEBUG_DRIVER is not set
279 300# CONFIG_DEBUG_DEVRES is not set
280# 301# CONFIG_SYS_HYPERVISOR is not set
281# Connector - unified userspace <-> kernelspace linker
282#
283# CONFIG_CONNECTOR is not set 302# CONFIG_CONNECTOR is not set
284
285#
286# Memory Technology Devices (MTD)
287#
288# CONFIG_MTD is not set 303# CONFIG_MTD is not set
289
290#
291# Parallel port support
292#
293# CONFIG_PARPORT is not set 304# CONFIG_PARPORT is not set
294 305CONFIG_BLK_DEV=y
295#
296# Plug and Play support
297#
298
299#
300# Block devices
301#
302# CONFIG_BLK_CPQ_DA is not set 306# CONFIG_BLK_CPQ_DA is not set
303# CONFIG_BLK_CPQ_CISS_DA is not set 307# CONFIG_BLK_CPQ_CISS_DA is not set
304# CONFIG_BLK_DEV_DAC960 is not set 308# CONFIG_BLK_DEV_DAC960 is not set
@@ -310,14 +314,15 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
310# CONFIG_BLK_DEV_SX8 is not set 314# CONFIG_BLK_DEV_SX8 is not set
311# CONFIG_BLK_DEV_UB is not set 315# CONFIG_BLK_DEV_UB is not set
312# CONFIG_BLK_DEV_RAM is not set 316# CONFIG_BLK_DEV_RAM is not set
313CONFIG_BLK_DEV_RAM_COUNT=16
314# CONFIG_CDROM_PKTCDVD is not set 317# CONFIG_CDROM_PKTCDVD is not set
315# CONFIG_ATA_OVER_ETH is not set 318# CONFIG_ATA_OVER_ETH is not set
316 319CONFIG_MISC_DEVICES=y
317# 320# CONFIG_PHANTOM is not set
318# ATA/ATAPI/MFM/RLL support 321# CONFIG_EEPROM_93CX6 is not set
319# 322# CONFIG_SGI_IOC4 is not set
323# CONFIG_TIFM_CORE is not set
320CONFIG_IDE=y 324CONFIG_IDE=y
325CONFIG_IDE_MAX_HWIFS=4
321CONFIG_BLK_DEV_IDE=y 326CONFIG_BLK_DEV_IDE=y
322 327
323# 328#
@@ -331,19 +336,26 @@ CONFIG_BLK_DEV_IDECD=y
331# CONFIG_BLK_DEV_IDEFLOPPY is not set 336# CONFIG_BLK_DEV_IDEFLOPPY is not set
332CONFIG_BLK_DEV_IDESCSI=y 337CONFIG_BLK_DEV_IDESCSI=y
333# CONFIG_IDE_TASK_IOCTL is not set 338# CONFIG_IDE_TASK_IOCTL is not set
339CONFIG_IDE_PROC_FS=y
334 340
335# 341#
336# IDE chipset support/bugfixes 342# IDE chipset support/bugfixes
337# 343#
338CONFIG_IDE_GENERIC=y 344CONFIG_IDE_GENERIC=y
345# CONFIG_BLK_DEV_PLATFORM is not set
346
347#
348# PCI IDE chipsets support
349#
339CONFIG_BLK_DEV_IDEPCI=y 350CONFIG_BLK_DEV_IDEPCI=y
340CONFIG_IDEPCI_SHARE_IRQ=y 351CONFIG_IDEPCI_SHARE_IRQ=y
352CONFIG_IDEPCI_PCIBUS_ORDER=y
341# CONFIG_BLK_DEV_OFFBOARD is not set 353# CONFIG_BLK_DEV_OFFBOARD is not set
342# CONFIG_BLK_DEV_GENERIC is not set 354# CONFIG_BLK_DEV_GENERIC is not set
343# CONFIG_BLK_DEV_OPTI621 is not set 355# CONFIG_BLK_DEV_OPTI621 is not set
344CONFIG_BLK_DEV_IDEDMA_PCI=y 356CONFIG_BLK_DEV_IDEDMA_PCI=y
345# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 357# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
346# CONFIG_IDEDMA_PCI_AUTO is not set 358CONFIG_IDEDMA_ONLYDISK=y
347# CONFIG_BLK_DEV_AEC62XX is not set 359# CONFIG_BLK_DEV_AEC62XX is not set
348# CONFIG_BLK_DEV_ALI15X3 is not set 360# CONFIG_BLK_DEV_ALI15X3 is not set
349# CONFIG_BLK_DEV_AMD74XX is not set 361# CONFIG_BLK_DEV_AMD74XX is not set
@@ -354,8 +366,10 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
354# CONFIG_BLK_DEV_CS5530 is not set 366# CONFIG_BLK_DEV_CS5530 is not set
355# CONFIG_BLK_DEV_HPT34X is not set 367# CONFIG_BLK_DEV_HPT34X is not set
356# CONFIG_BLK_DEV_HPT366 is not set 368# CONFIG_BLK_DEV_HPT366 is not set
369# CONFIG_BLK_DEV_JMICRON is not set
357# CONFIG_BLK_DEV_SC1200 is not set 370# CONFIG_BLK_DEV_SC1200 is not set
358# CONFIG_BLK_DEV_PIIX is not set 371# CONFIG_BLK_DEV_PIIX is not set
372# CONFIG_BLK_DEV_IT8213 is not set
359# CONFIG_BLK_DEV_IT821X is not set 373# CONFIG_BLK_DEV_IT821X is not set
360CONFIG_BLK_DEV_NS87415=y 374CONFIG_BLK_DEV_NS87415=y
361# CONFIG_BLK_DEV_PDC202XX_OLD is not set 375# CONFIG_BLK_DEV_PDC202XX_OLD is not set
@@ -365,10 +379,10 @@ CONFIG_BLK_DEV_SIIMAGE=m
365# CONFIG_BLK_DEV_SLC90E66 is not set 379# CONFIG_BLK_DEV_SLC90E66 is not set
366# CONFIG_BLK_DEV_TRM290 is not set 380# CONFIG_BLK_DEV_TRM290 is not set
367# CONFIG_BLK_DEV_VIA82CXXX is not set 381# CONFIG_BLK_DEV_VIA82CXXX is not set
382# CONFIG_BLK_DEV_TC86C001 is not set
368# CONFIG_IDE_ARM is not set 383# CONFIG_IDE_ARM is not set
369CONFIG_BLK_DEV_IDEDMA=y 384CONFIG_BLK_DEV_IDEDMA=y
370# CONFIG_IDEDMA_IVB is not set 385# CONFIG_IDEDMA_IVB is not set
371# CONFIG_IDEDMA_AUTO is not set
372# CONFIG_BLK_DEV_HD is not set 386# CONFIG_BLK_DEV_HD is not set
373 387
374# 388#
@@ -376,6 +390,9 @@ CONFIG_BLK_DEV_IDEDMA=y
376# 390#
377# CONFIG_RAID_ATTRS is not set 391# CONFIG_RAID_ATTRS is not set
378CONFIG_SCSI=y 392CONFIG_SCSI=y
393CONFIG_SCSI_DMA=y
394# CONFIG_SCSI_TGT is not set
395# CONFIG_SCSI_NETLINK is not set
379CONFIG_SCSI_PROC_FS=y 396CONFIG_SCSI_PROC_FS=y
380 397
381# 398#
@@ -395,18 +412,17 @@ CONFIG_CHR_DEV_SG=y
395CONFIG_SCSI_MULTI_LUN=y 412CONFIG_SCSI_MULTI_LUN=y
396# CONFIG_SCSI_CONSTANTS is not set 413# CONFIG_SCSI_CONSTANTS is not set
397# CONFIG_SCSI_LOGGING is not set 414# CONFIG_SCSI_LOGGING is not set
415# CONFIG_SCSI_SCAN_ASYNC is not set
416CONFIG_SCSI_WAIT_SCAN=m
398 417
399# 418#
400# SCSI Transport Attributes 419# SCSI Transports
401# 420#
402CONFIG_SCSI_SPI_ATTRS=y 421CONFIG_SCSI_SPI_ATTRS=y
403# CONFIG_SCSI_FC_ATTRS is not set 422# CONFIG_SCSI_FC_ATTRS is not set
404CONFIG_SCSI_ISCSI_ATTRS=m 423CONFIG_SCSI_ISCSI_ATTRS=m
405# CONFIG_SCSI_SAS_ATTRS is not set 424# CONFIG_SCSI_SAS_LIBSAS is not set
406 425CONFIG_SCSI_LOWLEVEL=y
407#
408# SCSI low-level drivers
409#
410# CONFIG_ISCSI_TCP is not set 426# CONFIG_ISCSI_TCP is not set
411# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 427# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
412# CONFIG_SCSI_3W_9XXX is not set 428# CONFIG_SCSI_3W_9XXX is not set
@@ -415,66 +431,53 @@ CONFIG_SCSI_ISCSI_ATTRS=m
415# CONFIG_SCSI_AIC7XXX is not set 431# CONFIG_SCSI_AIC7XXX is not set
416# CONFIG_SCSI_AIC7XXX_OLD is not set 432# CONFIG_SCSI_AIC7XXX_OLD is not set
417# CONFIG_SCSI_AIC79XX is not set 433# CONFIG_SCSI_AIC79XX is not set
434# CONFIG_SCSI_AIC94XX is not set
418# CONFIG_SCSI_DPT_I2O is not set 435# CONFIG_SCSI_DPT_I2O is not set
436# CONFIG_SCSI_ARCMSR is not set
419# CONFIG_MEGARAID_NEWGEN is not set 437# CONFIG_MEGARAID_NEWGEN is not set
420# CONFIG_MEGARAID_LEGACY is not set 438# CONFIG_MEGARAID_LEGACY is not set
421# CONFIG_MEGARAID_SAS is not set 439# CONFIG_MEGARAID_SAS is not set
422CONFIG_SCSI_SATA=y 440# CONFIG_SCSI_HPTIOP is not set
423# CONFIG_SCSI_SATA_AHCI is not set
424# CONFIG_SCSI_SATA_SVW is not set
425CONFIG_SCSI_ATA_PIIX=m
426# CONFIG_SCSI_SATA_MV is not set
427# CONFIG_SCSI_SATA_NV is not set
428# CONFIG_SCSI_PDC_ADMA is not set
429# CONFIG_SCSI_SATA_QSTOR is not set
430CONFIG_SCSI_SATA_PROMISE=m
431# CONFIG_SCSI_SATA_SX4 is not set
432CONFIG_SCSI_SATA_SIL=m
433# CONFIG_SCSI_SATA_SIL24 is not set
434# CONFIG_SCSI_SATA_SIS is not set
435# CONFIG_SCSI_SATA_ULI is not set
436CONFIG_SCSI_SATA_VIA=m
437# CONFIG_SCSI_SATA_VITESSE is not set
438# CONFIG_SCSI_DMX3191D is not set 441# CONFIG_SCSI_DMX3191D is not set
439# CONFIG_SCSI_FUTURE_DOMAIN is not set 442# CONFIG_SCSI_FUTURE_DOMAIN is not set
440# CONFIG_SCSI_IPS is not set 443# CONFIG_SCSI_IPS is not set
441# CONFIG_SCSI_INITIO is not set 444# CONFIG_SCSI_INITIO is not set
442# CONFIG_SCSI_INIA100 is not set 445# CONFIG_SCSI_INIA100 is not set
446# CONFIG_SCSI_STEX is not set
443CONFIG_SCSI_SYM53C8XX_2=y 447CONFIG_SCSI_SYM53C8XX_2=y
444CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 448CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
445CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 449CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
446CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 450CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
447CONFIG_SCSI_SYM53C8XX_MMIO=y 451CONFIG_SCSI_SYM53C8XX_MMIO=y
448# CONFIG_SCSI_IPR is not set
449# CONFIG_SCSI_QLOGIC_FC is not set
450# CONFIG_SCSI_QLOGIC_1280 is not set 452# CONFIG_SCSI_QLOGIC_1280 is not set
451# CONFIG_SCSI_QLA_FC is not set 453# CONFIG_SCSI_QLA_FC is not set
454# CONFIG_SCSI_QLA_ISCSI is not set
452# CONFIG_SCSI_LPFC is not set 455# CONFIG_SCSI_LPFC is not set
453# CONFIG_SCSI_DC395x is not set 456# CONFIG_SCSI_DC395x is not set
454# CONFIG_SCSI_DC390T is not set 457# CONFIG_SCSI_DC390T is not set
455# CONFIG_SCSI_NSP32 is not set 458# CONFIG_SCSI_NSP32 is not set
456CONFIG_SCSI_DEBUG=m 459CONFIG_SCSI_DEBUG=m
457 460# CONFIG_SCSI_SRP is not set
458# 461# CONFIG_ATA is not set
459# Multi-device support (RAID and LVM)
460#
461CONFIG_MD=y 462CONFIG_MD=y
462CONFIG_BLK_DEV_MD=y 463CONFIG_BLK_DEV_MD=y
463CONFIG_MD_LINEAR=y 464CONFIG_MD_LINEAR=y
464CONFIG_MD_RAID0=y 465CONFIG_MD_RAID0=y
465CONFIG_MD_RAID1=y 466CONFIG_MD_RAID1=y
466# CONFIG_MD_RAID10 is not set 467# CONFIG_MD_RAID10 is not set
467# CONFIG_MD_RAID5 is not set 468# CONFIG_MD_RAID456 is not set
468# CONFIG_MD_RAID6 is not set
469# CONFIG_MD_MULTIPATH is not set 469# CONFIG_MD_MULTIPATH is not set
470# CONFIG_MD_FAULTY is not set 470# CONFIG_MD_FAULTY is not set
471CONFIG_BLK_DEV_DM=m 471CONFIG_BLK_DEV_DM=m
472# CONFIG_DM_DEBUG is not set
472CONFIG_DM_CRYPT=m 473CONFIG_DM_CRYPT=m
473CONFIG_DM_SNAPSHOT=m 474CONFIG_DM_SNAPSHOT=m
474CONFIG_DM_MIRROR=m 475CONFIG_DM_MIRROR=m
475CONFIG_DM_ZERO=m 476CONFIG_DM_ZERO=m
476CONFIG_DM_MULTIPATH=m 477CONFIG_DM_MULTIPATH=m
477# CONFIG_DM_MULTIPATH_EMC is not set 478# CONFIG_DM_MULTIPATH_EMC is not set
479# CONFIG_DM_MULTIPATH_RDAC is not set
480# CONFIG_DM_DELAY is not set
478 481
479# 482#
480# Fusion MPT device support 483# Fusion MPT device support
@@ -485,49 +488,31 @@ CONFIG_FUSION_SPI=m
485# CONFIG_FUSION_SAS is not set 488# CONFIG_FUSION_SAS is not set
486CONFIG_FUSION_MAX_SGE=128 489CONFIG_FUSION_MAX_SGE=128
487CONFIG_FUSION_CTL=m 490CONFIG_FUSION_CTL=m
491# CONFIG_FUSION_LOGGING is not set
488 492
489# 493#
490# IEEE 1394 (FireWire) support 494# IEEE 1394 (FireWire) support
491# 495#
496# CONFIG_FIREWIRE is not set
492# CONFIG_IEEE1394 is not set 497# CONFIG_IEEE1394 is not set
493
494#
495# I2O device support
496#
497# CONFIG_I2O is not set 498# CONFIG_I2O is not set
498
499#
500# Network device support
501#
502CONFIG_NETDEVICES=y 499CONFIG_NETDEVICES=y
500# CONFIG_NETDEVICES_MULTIQUEUE is not set
503CONFIG_DUMMY=m 501CONFIG_DUMMY=m
504CONFIG_BONDING=m 502CONFIG_BONDING=m
503# CONFIG_MACVLAN is not set
505# CONFIG_EQUALIZER is not set 504# CONFIG_EQUALIZER is not set
506CONFIG_TUN=m 505CONFIG_TUN=m
507 506# CONFIG_VETH is not set
508# 507# CONFIG_IP1000 is not set
509# ARCnet devices
510#
511# CONFIG_ARCNET is not set 508# CONFIG_ARCNET is not set
512
513#
514# PHY device support
515#
516# CONFIG_PHYLIB is not set 509# CONFIG_PHYLIB is not set
517
518#
519# Ethernet (10 or 100Mbit)
520#
521CONFIG_NET_ETHERNET=y 510CONFIG_NET_ETHERNET=y
522CONFIG_MII=m 511CONFIG_MII=m
523# CONFIG_HAPPYMEAL is not set 512# CONFIG_HAPPYMEAL is not set
524# CONFIG_SUNGEM is not set 513# CONFIG_SUNGEM is not set
525# CONFIG_CASSINI is not set 514# CONFIG_CASSINI is not set
526# CONFIG_NET_VENDOR_3COM is not set 515# CONFIG_NET_VENDOR_3COM is not set
527
528#
529# Tulip family network device support
530#
531CONFIG_NET_TULIP=y 516CONFIG_NET_TULIP=y
532CONFIG_DE2104X=m 517CONFIG_DE2104X=m
533CONFIG_TULIP=y 518CONFIG_TULIP=y
@@ -539,13 +524,16 @@ CONFIG_TULIP_MMIO=y
539# CONFIG_DM9102 is not set 524# CONFIG_DM9102 is not set
540# CONFIG_ULI526X is not set 525# CONFIG_ULI526X is not set
541# CONFIG_HP100 is not set 526# CONFIG_HP100 is not set
527# CONFIG_IBM_NEW_EMAC_ZMII is not set
528# CONFIG_IBM_NEW_EMAC_RGMII is not set
529# CONFIG_IBM_NEW_EMAC_TAH is not set
530# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
542CONFIG_NET_PCI=y 531CONFIG_NET_PCI=y
543# CONFIG_PCNET32 is not set 532# CONFIG_PCNET32 is not set
544# CONFIG_AMD8111_ETH is not set 533# CONFIG_AMD8111_ETH is not set
545# CONFIG_ADAPTEC_STARFIRE is not set 534# CONFIG_ADAPTEC_STARFIRE is not set
546# CONFIG_B44 is not set 535# CONFIG_B44 is not set
547# CONFIG_FORCEDETH is not set 536# CONFIG_FORCEDETH is not set
548# CONFIG_DGRS is not set
549# CONFIG_EEPRO100 is not set 537# CONFIG_EEPRO100 is not set
550CONFIG_E100=m 538CONFIG_E100=m
551# CONFIG_FEALNX is not set 539# CONFIG_FEALNX is not set
@@ -558,16 +546,15 @@ CONFIG_E100=m
558# CONFIG_SUNDANCE is not set 546# CONFIG_SUNDANCE is not set
559# CONFIG_TLAN is not set 547# CONFIG_TLAN is not set
560# CONFIG_VIA_RHINE is not set 548# CONFIG_VIA_RHINE is not set
561 549# CONFIG_SC92031 is not set
562# 550CONFIG_NETDEV_1000=y
563# Ethernet (1000 Mbit)
564#
565CONFIG_ACENIC=m 551CONFIG_ACENIC=m
566# CONFIG_ACENIC_OMIT_TIGON_I is not set 552# CONFIG_ACENIC_OMIT_TIGON_I is not set
567# CONFIG_DL2K is not set 553# CONFIG_DL2K is not set
568CONFIG_E1000=m 554CONFIG_E1000=m
569# CONFIG_E1000_NAPI is not set 555# CONFIG_E1000_NAPI is not set
570# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set 556# CONFIG_E1000_DISABLE_PACKET_SPLIT is not set
557# CONFIG_E1000E is not set
571# CONFIG_NS83820 is not set 558# CONFIG_NS83820 is not set
572# CONFIG_HAMACHI is not set 559# CONFIG_HAMACHI is not set
573# CONFIG_YELLOWFIN is not set 560# CONFIG_YELLOWFIN is not set
@@ -579,27 +566,36 @@ CONFIG_E1000=m
579# CONFIG_VIA_VELOCITY is not set 566# CONFIG_VIA_VELOCITY is not set
580CONFIG_TIGON3=m 567CONFIG_TIGON3=m
581# CONFIG_BNX2 is not set 568# CONFIG_BNX2 is not set
582 569# CONFIG_QLA3XXX is not set
583# 570# CONFIG_ATL1 is not set
584# Ethernet (10000 Mbit) 571CONFIG_NETDEV_10000=y
585#
586# CONFIG_CHELSIO_T1 is not set 572# CONFIG_CHELSIO_T1 is not set
573# CONFIG_CHELSIO_T3 is not set
574# CONFIG_IXGBE is not set
587# CONFIG_IXGB is not set 575# CONFIG_IXGB is not set
588# CONFIG_S2IO is not set 576# CONFIG_S2IO is not set
589 577# CONFIG_MYRI10GE is not set
590# 578# CONFIG_NETXEN_NIC is not set
591# Token Ring devices 579# CONFIG_NIU is not set
592# 580# CONFIG_MLX4_CORE is not set
581# CONFIG_TEHUTI is not set
593# CONFIG_TR is not set 582# CONFIG_TR is not set
594 583
595# 584#
596# Wireless LAN (non-hamradio) 585# Wireless LAN
597# 586#
598# CONFIG_NET_RADIO is not set 587# CONFIG_WLAN_PRE80211 is not set
588# CONFIG_WLAN_80211 is not set
599 589
600# 590#
601# Wan interfaces 591# USB Network Adapters
602# 592#
593# CONFIG_USB_CATC is not set
594# CONFIG_USB_KAWETH is not set
595# CONFIG_USB_PEGASUS is not set
596# CONFIG_USB_RTL8150 is not set
597# CONFIG_USB_USBNET_MII is not set
598# CONFIG_USB_USBNET is not set
603# CONFIG_WAN is not set 599# CONFIG_WAN is not set
604# CONFIG_FDDI is not set 600# CONFIG_FDDI is not set
605# CONFIG_HIPPI is not set 601# CONFIG_HIPPI is not set
@@ -612,27 +608,23 @@ CONFIG_PPP_DEFLATE=m
612CONFIG_PPP_BSDCOMP=m 608CONFIG_PPP_BSDCOMP=m
613# CONFIG_PPP_MPPE is not set 609# CONFIG_PPP_MPPE is not set
614CONFIG_PPPOE=m 610CONFIG_PPPOE=m
611# CONFIG_PPPOL2TP is not set
615# CONFIG_SLIP is not set 612# CONFIG_SLIP is not set
613CONFIG_SLHC=m
616# CONFIG_NET_FC is not set 614# CONFIG_NET_FC is not set
617# CONFIG_SHAPER is not set 615# CONFIG_SHAPER is not set
618# CONFIG_NETCONSOLE is not set 616# CONFIG_NETCONSOLE is not set
619# CONFIG_NETPOLL is not set 617# CONFIG_NETPOLL is not set
620# CONFIG_NET_POLL_CONTROLLER is not set 618# CONFIG_NET_POLL_CONTROLLER is not set
621
622#
623# ISDN subsystem
624#
625# CONFIG_ISDN is not set 619# CONFIG_ISDN is not set
626
627#
628# Telephony Support
629#
630# CONFIG_PHONE is not set 620# CONFIG_PHONE is not set
631 621
632# 622#
633# Input device support 623# Input device support
634# 624#
635CONFIG_INPUT=y 625CONFIG_INPUT=y
626# CONFIG_INPUT_FF_MEMLESS is not set
627# CONFIG_INPUT_POLLDEV is not set
636 628
637# 629#
638# Userland interfaces 630# Userland interfaces
@@ -655,11 +647,14 @@ CONFIG_INPUT_KEYBOARD=y
655# CONFIG_KEYBOARD_LKKBD is not set 647# CONFIG_KEYBOARD_LKKBD is not set
656# CONFIG_KEYBOARD_XTKBD is not set 648# CONFIG_KEYBOARD_XTKBD is not set
657# CONFIG_KEYBOARD_NEWTON is not set 649# CONFIG_KEYBOARD_NEWTON is not set
650# CONFIG_KEYBOARD_STOWAWAY is not set
658CONFIG_INPUT_MOUSE=y 651CONFIG_INPUT_MOUSE=y
659# CONFIG_MOUSE_PS2 is not set 652# CONFIG_MOUSE_PS2 is not set
660# CONFIG_MOUSE_SERIAL is not set 653# CONFIG_MOUSE_SERIAL is not set
654# CONFIG_MOUSE_APPLETOUCH is not set
661# CONFIG_MOUSE_VSXXXAA is not set 655# CONFIG_MOUSE_VSXXXAA is not set
662# CONFIG_INPUT_JOYSTICK is not set 656# CONFIG_INPUT_JOYSTICK is not set
657# CONFIG_INPUT_TABLET is not set
663# CONFIG_INPUT_TOUCHSCREEN is not set 658# CONFIG_INPUT_TOUCHSCREEN is not set
664# CONFIG_INPUT_MISC is not set 659# CONFIG_INPUT_MISC is not set
665 660
@@ -679,6 +674,7 @@ CONFIG_SERIO_LIBPS2=m
679CONFIG_VT=y 674CONFIG_VT=y
680CONFIG_VT_CONSOLE=y 675CONFIG_VT_CONSOLE=y
681CONFIG_HW_CONSOLE=y 676CONFIG_HW_CONSOLE=y
677# CONFIG_VT_HW_CONSOLE_BINDING is not set
682# CONFIG_SERIAL_NONSTANDARD is not set 678# CONFIG_SERIAL_NONSTANDARD is not set
683 679
684# 680#
@@ -686,6 +682,7 @@ CONFIG_HW_CONSOLE=y
686# 682#
687CONFIG_SERIAL_8250=y 683CONFIG_SERIAL_8250=y
688CONFIG_SERIAL_8250_CONSOLE=y 684CONFIG_SERIAL_8250_CONSOLE=y
685CONFIG_SERIAL_8250_PCI=y
689CONFIG_SERIAL_8250_NR_UARTS=13 686CONFIG_SERIAL_8250_NR_UARTS=13
690CONFIG_SERIAL_8250_RUNTIME_UARTS=4 687CONFIG_SERIAL_8250_RUNTIME_UARTS=4
691CONFIG_SERIAL_8250_EXTENDED=y 688CONFIG_SERIAL_8250_EXTENDED=y
@@ -704,38 +701,19 @@ CONFIG_SERIAL_CORE_CONSOLE=y
704CONFIG_UNIX98_PTYS=y 701CONFIG_UNIX98_PTYS=y
705CONFIG_LEGACY_PTYS=y 702CONFIG_LEGACY_PTYS=y
706CONFIG_LEGACY_PTY_COUNT=256 703CONFIG_LEGACY_PTY_COUNT=256
707
708#
709# IPMI
710#
711# CONFIG_IPMI_HANDLER is not set 704# CONFIG_IPMI_HANDLER is not set
712
713#
714# Watchdog Cards
715#
716# CONFIG_WATCHDOG is not set 705# CONFIG_WATCHDOG is not set
706# CONFIG_HW_RANDOM is not set
717CONFIG_GEN_RTC=y 707CONFIG_GEN_RTC=y
718CONFIG_GEN_RTC_X=y 708CONFIG_GEN_RTC_X=y
719# CONFIG_DTLK is not set
720# CONFIG_R3964 is not set 709# CONFIG_R3964 is not set
721# CONFIG_APPLICOM is not set 710# CONFIG_APPLICOM is not set
722 711# CONFIG_AGP is not set
723#
724# Ftape, the floppy tape device driver
725#
726# CONFIG_DRM is not set 712# CONFIG_DRM is not set
727CONFIG_RAW_DRIVER=y 713CONFIG_RAW_DRIVER=y
728CONFIG_MAX_RAW_DEVS=256 714CONFIG_MAX_RAW_DEVS=256
729
730#
731# TPM devices
732#
733# CONFIG_TCG_TPM is not set 715# CONFIG_TCG_TPM is not set
734# CONFIG_TELCLOCK is not set 716CONFIG_DEVPORT=y
735
736#
737# I2C support
738#
739# CONFIG_I2C is not set 717# CONFIG_I2C is not set
740 718
741# 719#
@@ -743,46 +721,59 @@ CONFIG_MAX_RAW_DEVS=256
743# 721#
744# CONFIG_SPI is not set 722# CONFIG_SPI is not set
745# CONFIG_SPI_MASTER is not set 723# CONFIG_SPI_MASTER is not set
746
747#
748# Dallas's 1-wire bus
749#
750# CONFIG_W1 is not set 724# CONFIG_W1 is not set
751 725# CONFIG_POWER_SUPPLY is not set
752#
753# Hardware Monitoring support
754#
755# CONFIG_HWMON is not set 726# CONFIG_HWMON is not set
756# CONFIG_HWMON_VID is not set
757 727
758# 728#
759# Misc devices 729# Sonics Silicon Backplane
760# 730#
731CONFIG_SSB_POSSIBLE=y
732# CONFIG_SSB is not set
761 733
762# 734#
763# Multimedia Capabilities Port drivers 735# Multifunction device drivers
764# 736#
737# CONFIG_MFD_SM501 is not set
765 738
766# 739#
767# Multimedia devices 740# Multimedia devices
768# 741#
769# CONFIG_VIDEO_DEV is not set 742# CONFIG_VIDEO_DEV is not set
743# CONFIG_DVB_CORE is not set
744# CONFIG_DAB is not set
770 745
771# 746#
772# Digital Video Broadcasting Devices 747# Graphics support
773# 748#
774# CONFIG_DVB is not set 749# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
775 750
776# 751#
777# Graphics support 752# Display device support
778# 753#
754# CONFIG_DISPLAY_SUPPORT is not set
755# CONFIG_VGASTATE is not set
756CONFIG_VIDEO_OUTPUT_CONTROL=m
779CONFIG_FB=y 757CONFIG_FB=y
758# CONFIG_FIRMWARE_EDID is not set
759# CONFIG_FB_DDC is not set
780CONFIG_FB_CFB_FILLRECT=y 760CONFIG_FB_CFB_FILLRECT=y
781CONFIG_FB_CFB_COPYAREA=y 761CONFIG_FB_CFB_COPYAREA=y
782CONFIG_FB_CFB_IMAGEBLIT=y 762CONFIG_FB_CFB_IMAGEBLIT=y
763# CONFIG_FB_SYS_FILLRECT is not set
764# CONFIG_FB_SYS_COPYAREA is not set
765# CONFIG_FB_SYS_IMAGEBLIT is not set
766# CONFIG_FB_SYS_FOPS is not set
767CONFIG_FB_DEFERRED_IO=y
768# CONFIG_FB_SVGALIB is not set
783# CONFIG_FB_MACMODES is not set 769# CONFIG_FB_MACMODES is not set
770# CONFIG_FB_BACKLIGHT is not set
784# CONFIG_FB_MODE_HELPERS is not set 771# CONFIG_FB_MODE_HELPERS is not set
785# CONFIG_FB_TILEBLITTING is not set 772# CONFIG_FB_TILEBLITTING is not set
773
774#
775# Frame buffer hardware drivers
776#
786# CONFIG_FB_CIRRUS is not set 777# CONFIG_FB_CIRRUS is not set
787# CONFIG_FB_PM2 is not set 778# CONFIG_FB_PM2 is not set
788# CONFIG_FB_CYBER2000 is not set 779# CONFIG_FB_CYBER2000 is not set
@@ -793,17 +784,20 @@ CONFIG_FB_STI=y
793# CONFIG_FB_NVIDIA is not set 784# CONFIG_FB_NVIDIA is not set
794# CONFIG_FB_RIVA is not set 785# CONFIG_FB_RIVA is not set
795# CONFIG_FB_MATROX is not set 786# CONFIG_FB_MATROX is not set
796# CONFIG_FB_RADEON_OLD is not set
797# CONFIG_FB_RADEON is not set 787# CONFIG_FB_RADEON is not set
798# CONFIG_FB_ATY128 is not set 788# CONFIG_FB_ATY128 is not set
799# CONFIG_FB_ATY is not set 789# CONFIG_FB_ATY is not set
790# CONFIG_FB_S3 is not set
800# CONFIG_FB_SAVAGE is not set 791# CONFIG_FB_SAVAGE is not set
801# CONFIG_FB_SIS is not set 792# CONFIG_FB_SIS is not set
802# CONFIG_FB_NEOMAGIC is not set 793# CONFIG_FB_NEOMAGIC is not set
803# CONFIG_FB_KYRO is not set 794# CONFIG_FB_KYRO is not set
804# CONFIG_FB_3DFX is not set 795# CONFIG_FB_3DFX is not set
805# CONFIG_FB_VOODOO1 is not set 796# CONFIG_FB_VOODOO1 is not set
797# CONFIG_FB_VT8623 is not set
806# CONFIG_FB_TRIDENT is not set 798# CONFIG_FB_TRIDENT is not set
799# CONFIG_FB_ARK is not set
800# CONFIG_FB_PM3 is not set
807# CONFIG_FB_VIRTUAL is not set 801# CONFIG_FB_VIRTUAL is not set
808 802
809# 803#
@@ -813,21 +807,17 @@ CONFIG_DUMMY_CONSOLE=y
813CONFIG_DUMMY_CONSOLE_COLUMNS=160 807CONFIG_DUMMY_CONSOLE_COLUMNS=160
814CONFIG_DUMMY_CONSOLE_ROWS=64 808CONFIG_DUMMY_CONSOLE_ROWS=64
815CONFIG_FRAMEBUFFER_CONSOLE=y 809CONFIG_FRAMEBUFFER_CONSOLE=y
810# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
816# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 811# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
817CONFIG_STI_CONSOLE=y 812CONFIG_STI_CONSOLE=y
818# CONFIG_FONTS is not set 813# CONFIG_FONTS is not set
819CONFIG_FONT_8x8=y 814CONFIG_FONT_8x8=y
820CONFIG_FONT_8x16=y 815CONFIG_FONT_8x16=y
821
822#
823# Logo configuration
824#
825CONFIG_LOGO=y 816CONFIG_LOGO=y
826# CONFIG_LOGO_LINUX_MONO is not set 817# CONFIG_LOGO_LINUX_MONO is not set
827# CONFIG_LOGO_LINUX_VGA16 is not set 818# CONFIG_LOGO_LINUX_VGA16 is not set
828# CONFIG_LOGO_LINUX_CLUT224 is not set 819# CONFIG_LOGO_LINUX_CLUT224 is not set
829CONFIG_LOGO_PARISC_CLUT224=y 820CONFIG_LOGO_PARISC_CLUT224=y
830# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
831 821
832# 822#
833# Sound 823# Sound
@@ -845,9 +835,11 @@ CONFIG_SND_SEQUENCER=y
845CONFIG_SND_OSSEMUL=y 835CONFIG_SND_OSSEMUL=y
846CONFIG_SND_MIXER_OSS=y 836CONFIG_SND_MIXER_OSS=y
847CONFIG_SND_PCM_OSS=y 837CONFIG_SND_PCM_OSS=y
838CONFIG_SND_PCM_OSS_PLUGINS=y
848CONFIG_SND_SEQUENCER_OSS=y 839CONFIG_SND_SEQUENCER_OSS=y
849# CONFIG_SND_DYNAMIC_MINORS is not set 840# CONFIG_SND_DYNAMIC_MINORS is not set
850CONFIG_SND_SUPPORT_OLD_API=y 841CONFIG_SND_SUPPORT_OLD_API=y
842CONFIG_SND_VERBOSE_PROCFS=y
851# CONFIG_SND_VERBOSE_PRINTK is not set 843# CONFIG_SND_VERBOSE_PRINTK is not set
852# CONFIG_SND_DEBUG is not set 844# CONFIG_SND_DEBUG is not set
853 845
@@ -855,7 +847,6 @@ CONFIG_SND_SUPPORT_OLD_API=y
855# Generic devices 847# Generic devices
856# 848#
857CONFIG_SND_AC97_CODEC=y 849CONFIG_SND_AC97_CODEC=y
858CONFIG_SND_AC97_BUS=y
859# CONFIG_SND_DUMMY is not set 850# CONFIG_SND_DUMMY is not set
860# CONFIG_SND_VIRMIDI is not set 851# CONFIG_SND_VIRMIDI is not set
861# CONFIG_SND_MTPAV is not set 852# CONFIG_SND_MTPAV is not set
@@ -866,7 +857,7 @@ CONFIG_SND_AC97_BUS=y
866# PCI devices 857# PCI devices
867# 858#
868CONFIG_SND_AD1889=y 859CONFIG_SND_AD1889=y
869# CONFIG_SND_AD1889_OPL3 is not set 860# CONFIG_SND_ALS300 is not set
870# CONFIG_SND_ALI5451 is not set 861# CONFIG_SND_ALI5451 is not set
871# CONFIG_SND_ATIIXP is not set 862# CONFIG_SND_ATIIXP is not set
872# CONFIG_SND_ATIIXP_MODEM is not set 863# CONFIG_SND_ATIIXP_MODEM is not set
@@ -879,6 +870,18 @@ CONFIG_SND_AD1889=y
879# CONFIG_SND_CMIPCI is not set 870# CONFIG_SND_CMIPCI is not set
880# CONFIG_SND_CS4281 is not set 871# CONFIG_SND_CS4281 is not set
881# CONFIG_SND_CS46XX is not set 872# CONFIG_SND_CS46XX is not set
873# CONFIG_SND_DARLA20 is not set
874# CONFIG_SND_GINA20 is not set
875# CONFIG_SND_LAYLA20 is not set
876# CONFIG_SND_DARLA24 is not set
877# CONFIG_SND_GINA24 is not set
878# CONFIG_SND_LAYLA24 is not set
879# CONFIG_SND_MONA is not set
880# CONFIG_SND_MIA is not set
881# CONFIG_SND_ECHO3G is not set
882# CONFIG_SND_INDIGO is not set
883# CONFIG_SND_INDIGOIO is not set
884# CONFIG_SND_INDIGODJ is not set
882# CONFIG_SND_EMU10K1 is not set 885# CONFIG_SND_EMU10K1 is not set
883# CONFIG_SND_EMU10K1X is not set 886# CONFIG_SND_EMU10K1X is not set
884# CONFIG_SND_ENS1370 is not set 887# CONFIG_SND_ENS1370 is not set
@@ -898,6 +901,7 @@ CONFIG_SND_AD1889=y
898# CONFIG_SND_MIXART is not set 901# CONFIG_SND_MIXART is not set
899# CONFIG_SND_NM256 is not set 902# CONFIG_SND_NM256 is not set
900# CONFIG_SND_PCXHR is not set 903# CONFIG_SND_PCXHR is not set
904# CONFIG_SND_RIPTIDE is not set
901# CONFIG_SND_RME32 is not set 905# CONFIG_SND_RME32 is not set
902# CONFIG_SND_RME96 is not set 906# CONFIG_SND_RME96 is not set
903# CONFIG_SND_RME9652 is not set 907# CONFIG_SND_RME9652 is not set
@@ -907,22 +911,43 @@ CONFIG_SND_AD1889=y
907# CONFIG_SND_VIA82XX_MODEM is not set 911# CONFIG_SND_VIA82XX_MODEM is not set
908# CONFIG_SND_VX222 is not set 912# CONFIG_SND_VX222 is not set
909# CONFIG_SND_YMFPCI is not set 913# CONFIG_SND_YMFPCI is not set
914# CONFIG_SND_AC97_POWER_SAVE is not set
910 915
911# 916#
912# USB devices 917# USB devices
913# 918#
914# CONFIG_SND_USB_AUDIO is not set 919# CONFIG_SND_USB_AUDIO is not set
920# CONFIG_SND_USB_CAIAQ is not set
921
922#
923# System on Chip audio support
924#
925# CONFIG_SND_SOC is not set
926
927#
928# SoC Audio support for SuperH
929#
915 930
916# 931#
917# Open Sound System 932# Open Sound System
918# 933#
919# CONFIG_SOUND_PRIME is not set 934# CONFIG_SOUND_PRIME is not set
935CONFIG_AC97_BUS=y
936CONFIG_HID_SUPPORT=y
937CONFIG_HID=y
938# CONFIG_HID_DEBUG is not set
920 939
921# 940#
922# USB support 941# USB Input Devices
923# 942#
943CONFIG_USB_HID=y
944# CONFIG_USB_HIDINPUT_POWERBOOK is not set
945# CONFIG_HID_FF is not set
946CONFIG_USB_HIDDEV=y
947CONFIG_USB_SUPPORT=y
924CONFIG_USB_ARCH_HAS_HCD=y 948CONFIG_USB_ARCH_HAS_HCD=y
925CONFIG_USB_ARCH_HAS_OHCI=y 949CONFIG_USB_ARCH_HAS_OHCI=y
950CONFIG_USB_ARCH_HAS_EHCI=y
926CONFIG_USB=y 951CONFIG_USB=y
927CONFIG_USB_DEBUG=y 952CONFIG_USB_DEBUG=y
928 953
@@ -930,7 +955,7 @@ CONFIG_USB_DEBUG=y
930# Miscellaneous USB options 955# Miscellaneous USB options
931# 956#
932CONFIG_USB_DEVICEFS=y 957CONFIG_USB_DEVICEFS=y
933# CONFIG_USB_BANDWIDTH is not set 958CONFIG_USB_DEVICE_CLASS=y
934# CONFIG_USB_DYNAMIC_MINORS is not set 959# CONFIG_USB_DYNAMIC_MINORS is not set
935# CONFIG_USB_OTG is not set 960# CONFIG_USB_OTG is not set
936 961
@@ -940,15 +965,16 @@ CONFIG_USB_DEVICEFS=y
940# CONFIG_USB_EHCI_HCD is not set 965# CONFIG_USB_EHCI_HCD is not set
941# CONFIG_USB_ISP116X_HCD is not set 966# CONFIG_USB_ISP116X_HCD is not set
942CONFIG_USB_OHCI_HCD=y 967CONFIG_USB_OHCI_HCD=y
943# CONFIG_USB_OHCI_BIG_ENDIAN is not set 968# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
969# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
944CONFIG_USB_OHCI_LITTLE_ENDIAN=y 970CONFIG_USB_OHCI_LITTLE_ENDIAN=y
945# CONFIG_USB_UHCI_HCD is not set 971# CONFIG_USB_UHCI_HCD is not set
946# CONFIG_USB_SL811_HCD is not set 972# CONFIG_USB_SL811_HCD is not set
973# CONFIG_USB_R8A66597_HCD is not set
947 974
948# 975#
949# USB Device Class drivers 976# USB Device Class drivers
950# 977#
951# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
952# CONFIG_USB_ACM is not set 978# CONFIG_USB_ACM is not set
953CONFIG_USB_PRINTER=m 979CONFIG_USB_PRINTER=m
954 980
@@ -970,54 +996,14 @@ CONFIG_USB_STORAGE_SDDR09=y
970CONFIG_USB_STORAGE_SDDR55=y 996CONFIG_USB_STORAGE_SDDR55=y
971CONFIG_USB_STORAGE_JUMPSHOT=y 997CONFIG_USB_STORAGE_JUMPSHOT=y
972# CONFIG_USB_STORAGE_ALAUDA is not set 998# CONFIG_USB_STORAGE_ALAUDA is not set
999# CONFIG_USB_STORAGE_KARMA is not set
973# CONFIG_USB_LIBUSUAL is not set 1000# CONFIG_USB_LIBUSUAL is not set
974 1001
975# 1002#
976# USB Input Devices
977#
978CONFIG_USB_HID=y
979CONFIG_USB_HIDINPUT=y
980# CONFIG_USB_HIDINPUT_POWERBOOK is not set
981# CONFIG_HID_FF is not set
982CONFIG_USB_HIDDEV=y
983# CONFIG_USB_AIPTEK is not set
984# CONFIG_USB_WACOM is not set
985# CONFIG_USB_ACECAD is not set
986# CONFIG_USB_KBTAB is not set
987# CONFIG_USB_POWERMATE is not set
988# CONFIG_USB_MTOUCH is not set
989# CONFIG_USB_ITMTOUCH is not set
990# CONFIG_USB_EGALAX is not set
991# CONFIG_USB_YEALINK is not set
992# CONFIG_USB_XPAD is not set
993# CONFIG_USB_ATI_REMOTE is not set
994# CONFIG_USB_ATI_REMOTE2 is not set
995# CONFIG_USB_KEYSPAN_REMOTE is not set
996# CONFIG_USB_APPLETOUCH is not set
997
998#
999# USB Imaging devices 1003# USB Imaging devices
1000# 1004#
1001CONFIG_USB_MDC800=m 1005CONFIG_USB_MDC800=m
1002CONFIG_USB_MICROTEK=m 1006CONFIG_USB_MICROTEK=m
1003
1004#
1005# USB Multimedia devices
1006#
1007# CONFIG_USB_DABUSB is not set
1008
1009#
1010# Video4Linux support is needed for USB Multimedia device support
1011#
1012
1013#
1014# USB Network Adapters
1015#
1016# CONFIG_USB_CATC is not set
1017# CONFIG_USB_KAWETH is not set
1018# CONFIG_USB_PEGASUS is not set
1019# CONFIG_USB_RTL8150 is not set
1020# CONFIG_USB_USBNET is not set
1021# CONFIG_USB_MON is not set 1007# CONFIG_USB_MON is not set
1022 1008
1023# 1009#
@@ -1034,16 +1020,22 @@ CONFIG_USB_MICROTEK=m
1034# 1020#
1035# CONFIG_USB_EMI62 is not set 1021# CONFIG_USB_EMI62 is not set
1036# CONFIG_USB_EMI26 is not set 1022# CONFIG_USB_EMI26 is not set
1023# CONFIG_USB_ADUTUX is not set
1037# CONFIG_USB_AUERSWALD is not set 1024# CONFIG_USB_AUERSWALD is not set
1038# CONFIG_USB_RIO500 is not set 1025# CONFIG_USB_RIO500 is not set
1039CONFIG_USB_LEGOTOWER=m 1026CONFIG_USB_LEGOTOWER=m
1040# CONFIG_USB_LCD is not set 1027# CONFIG_USB_LCD is not set
1028# CONFIG_USB_BERRY_CHARGE is not set
1041# CONFIG_USB_LED is not set 1029# CONFIG_USB_LED is not set
1030# CONFIG_USB_CYPRESS_CY7C63 is not set
1042# CONFIG_USB_CYTHERM is not set 1031# CONFIG_USB_CYTHERM is not set
1043# CONFIG_USB_PHIDGETKIT is not set 1032# CONFIG_USB_PHIDGET is not set
1044# CONFIG_USB_PHIDGETSERVO is not set
1045# CONFIG_USB_IDMOUSE is not set 1033# CONFIG_USB_IDMOUSE is not set
1034# CONFIG_USB_FTDI_ELAN is not set
1035# CONFIG_USB_APPLEDISPLAY is not set
1046# CONFIG_USB_LD is not set 1036# CONFIG_USB_LD is not set
1037# CONFIG_USB_TRANCEVIBRATOR is not set
1038# CONFIG_USB_IOWARRIOR is not set
1047# CONFIG_USB_TEST is not set 1039# CONFIG_USB_TEST is not set
1048 1040
1049# 1041#
@@ -1054,22 +1046,30 @@ CONFIG_USB_LEGOTOWER=m
1054# USB Gadget Support 1046# USB Gadget Support
1055# 1047#
1056# CONFIG_USB_GADGET is not set 1048# CONFIG_USB_GADGET is not set
1049# CONFIG_MMC is not set
1050# CONFIG_NEW_LEDS is not set
1051# CONFIG_INFINIBAND is not set
1052# CONFIG_RTC_CLASS is not set
1057 1053
1058# 1054#
1059# MMC/SD Card support 1055# DMA Engine support
1060# 1056#
1061# CONFIG_MMC is not set 1057# CONFIG_DMA_ENGINE is not set
1062 1058
1063# 1059#
1064# InfiniBand support 1060# DMA Clients
1065# 1061#
1066# CONFIG_INFINIBAND is not set
1067 1062
1068# 1063#
1069# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 1064# DMA Devices
1070# 1065#
1071 1066
1072# 1067#
1068# Userspace I/O
1069#
1070# CONFIG_UIO is not set
1071
1072#
1073# File systems 1073# File systems
1074# 1074#
1075CONFIG_EXT2_FS=y 1075CONFIG_EXT2_FS=y
@@ -1077,21 +1077,23 @@ CONFIG_EXT2_FS=y
1077# CONFIG_EXT2_FS_XIP is not set 1077# CONFIG_EXT2_FS_XIP is not set
1078CONFIG_EXT3_FS=y 1078CONFIG_EXT3_FS=y
1079# CONFIG_EXT3_FS_XATTR is not set 1079# CONFIG_EXT3_FS_XATTR is not set
1080# CONFIG_EXT4DEV_FS is not set
1080CONFIG_JBD=y 1081CONFIG_JBD=y
1081# CONFIG_JBD_DEBUG is not set 1082# CONFIG_JBD_DEBUG is not set
1082# CONFIG_REISERFS_FS is not set 1083# CONFIG_REISERFS_FS is not set
1083# CONFIG_JFS_FS is not set 1084# CONFIG_JFS_FS is not set
1084# CONFIG_FS_POSIX_ACL is not set 1085# CONFIG_FS_POSIX_ACL is not set
1085CONFIG_XFS_FS=m 1086CONFIG_XFS_FS=m
1086CONFIG_XFS_EXPORT=y
1087# CONFIG_XFS_QUOTA is not set 1087# CONFIG_XFS_QUOTA is not set
1088# CONFIG_XFS_SECURITY is not set 1088# CONFIG_XFS_SECURITY is not set
1089# CONFIG_XFS_POSIX_ACL is not set 1089# CONFIG_XFS_POSIX_ACL is not set
1090# CONFIG_XFS_RT is not set 1090# CONFIG_XFS_RT is not set
1091# CONFIG_GFS2_FS is not set
1091# CONFIG_OCFS2_FS is not set 1092# CONFIG_OCFS2_FS is not set
1092# CONFIG_MINIX_FS is not set 1093# CONFIG_MINIX_FS is not set
1093# CONFIG_ROMFS_FS is not set 1094# CONFIG_ROMFS_FS is not set
1094CONFIG_INOTIFY=y 1095CONFIG_INOTIFY=y
1096CONFIG_INOTIFY_USER=y
1095# CONFIG_QUOTA is not set 1097# CONFIG_QUOTA is not set
1096CONFIG_DNOTIFY=y 1098CONFIG_DNOTIFY=y
1097# CONFIG_AUTOFS_FS is not set 1099# CONFIG_AUTOFS_FS is not set
@@ -1121,11 +1123,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1121# 1123#
1122CONFIG_PROC_FS=y 1124CONFIG_PROC_FS=y
1123CONFIG_PROC_KCORE=y 1125CONFIG_PROC_KCORE=y
1126CONFIG_PROC_SYSCTL=y
1124CONFIG_SYSFS=y 1127CONFIG_SYSFS=y
1125CONFIG_TMPFS=y 1128CONFIG_TMPFS=y
1129# CONFIG_TMPFS_POSIX_ACL is not set
1126# CONFIG_HUGETLB_PAGE is not set 1130# CONFIG_HUGETLB_PAGE is not set
1127CONFIG_RAMFS=y 1131CONFIG_RAMFS=y
1128# CONFIG_RELAYFS_FS is not set
1129# CONFIG_CONFIGFS_FS is not set 1132# CONFIG_CONFIGFS_FS is not set
1130 1133
1131# 1134#
@@ -1164,6 +1167,7 @@ CONFIG_LOCKD_V4=y
1164CONFIG_EXPORTFS=y 1167CONFIG_EXPORTFS=y
1165CONFIG_NFS_COMMON=y 1168CONFIG_NFS_COMMON=y
1166CONFIG_SUNRPC=y 1169CONFIG_SUNRPC=y
1170# CONFIG_SUNRPC_BIND34 is not set
1167# CONFIG_RPCSEC_GSS_KRB5 is not set 1171# CONFIG_RPCSEC_GSS_KRB5 is not set
1168# CONFIG_RPCSEC_GSS_SPKM3 is not set 1172# CONFIG_RPCSEC_GSS_SPKM3 is not set
1169# CONFIG_SMB_FS is not set 1173# CONFIG_SMB_FS is not set
@@ -1171,7 +1175,6 @@ CONFIG_SUNRPC=y
1171# CONFIG_NCP_FS is not set 1175# CONFIG_NCP_FS is not set
1172# CONFIG_CODA_FS is not set 1176# CONFIG_CODA_FS is not set
1173# CONFIG_AFS_FS is not set 1177# CONFIG_AFS_FS is not set
1174# CONFIG_9P_FS is not set
1175 1178
1176# 1179#
1177# Partition Types 1180# Partition Types
@@ -1224,6 +1227,11 @@ CONFIG_NLS_ISO8859_15=m
1224CONFIG_NLS_UTF8=m 1227CONFIG_NLS_UTF8=m
1225 1228
1226# 1229#
1230# Distributed Lock Manager
1231#
1232# CONFIG_DLM is not set
1233
1234#
1227# Profiling support 1235# Profiling support
1228# 1236#
1229CONFIG_PROFILING=y 1237CONFIG_PROFILING=y
@@ -1233,21 +1241,32 @@ CONFIG_OPROFILE=m
1233# Kernel hacking 1241# Kernel hacking
1234# 1242#
1235# CONFIG_PRINTK_TIME is not set 1243# CONFIG_PRINTK_TIME is not set
1244CONFIG_ENABLE_MUST_CHECK=y
1236CONFIG_MAGIC_SYSRQ=y 1245CONFIG_MAGIC_SYSRQ=y
1246# CONFIG_UNUSED_SYMBOLS is not set
1247# CONFIG_DEBUG_FS is not set
1248CONFIG_HEADERS_CHECK=y
1237CONFIG_DEBUG_KERNEL=y 1249CONFIG_DEBUG_KERNEL=y
1238CONFIG_LOG_BUF_SHIFT=16 1250# CONFIG_DEBUG_SHIRQ is not set
1239CONFIG_DETECT_SOFTLOCKUP=y 1251CONFIG_DETECT_SOFTLOCKUP=y
1252CONFIG_SCHED_DEBUG=y
1240# CONFIG_SCHEDSTATS is not set 1253# CONFIG_SCHEDSTATS is not set
1254# CONFIG_TIMER_STATS is not set
1241# CONFIG_DEBUG_SLAB is not set 1255# CONFIG_DEBUG_SLAB is not set
1242CONFIG_DEBUG_MUTEXES=y 1256# CONFIG_DEBUG_RT_MUTEXES is not set
1257# CONFIG_RT_MUTEX_TESTER is not set
1243# CONFIG_DEBUG_SPINLOCK is not set 1258# CONFIG_DEBUG_SPINLOCK is not set
1259CONFIG_DEBUG_MUTEXES=y
1244# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1260# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1261# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1245# CONFIG_DEBUG_KOBJECT is not set 1262# CONFIG_DEBUG_KOBJECT is not set
1263# CONFIG_DEBUG_BUGVERBOSE is not set
1246# CONFIG_DEBUG_INFO is not set 1264# CONFIG_DEBUG_INFO is not set
1247# CONFIG_DEBUG_FS is not set
1248# CONFIG_DEBUG_VM is not set 1265# CONFIG_DEBUG_VM is not set
1266# CONFIG_DEBUG_LIST is not set
1249CONFIG_FORCED_INLINING=y 1267CONFIG_FORCED_INLINING=y
1250# CONFIG_RCU_TORTURE_TEST is not set 1268# CONFIG_RCU_TORTURE_TEST is not set
1269# CONFIG_FAULT_INJECTION is not set
1251CONFIG_DEBUG_RODATA=y 1270CONFIG_DEBUG_RODATA=y
1252 1271
1253# 1272#
@@ -1255,12 +1274,12 @@ CONFIG_DEBUG_RODATA=y
1255# 1274#
1256# CONFIG_KEYS is not set 1275# CONFIG_KEYS is not set
1257# CONFIG_SECURITY is not set 1276# CONFIG_SECURITY is not set
1258
1259#
1260# Cryptographic options
1261#
1262CONFIG_CRYPTO=y 1277CONFIG_CRYPTO=y
1278CONFIG_CRYPTO_ALGAPI=m
1279CONFIG_CRYPTO_BLKCIPHER=m
1280CONFIG_CRYPTO_MANAGER=m
1263# CONFIG_CRYPTO_HMAC is not set 1281# CONFIG_CRYPTO_HMAC is not set
1282# CONFIG_CRYPTO_XCBC is not set
1264CONFIG_CRYPTO_NULL=m 1283CONFIG_CRYPTO_NULL=m
1265# CONFIG_CRYPTO_MD4 is not set 1284# CONFIG_CRYPTO_MD4 is not set
1266CONFIG_CRYPTO_MD5=m 1285CONFIG_CRYPTO_MD5=m
@@ -1269,7 +1288,15 @@ CONFIG_CRYPTO_MD5=m
1269# CONFIG_CRYPTO_SHA512 is not set 1288# CONFIG_CRYPTO_SHA512 is not set
1270# CONFIG_CRYPTO_WP512 is not set 1289# CONFIG_CRYPTO_WP512 is not set
1271# CONFIG_CRYPTO_TGR192 is not set 1290# CONFIG_CRYPTO_TGR192 is not set
1291# CONFIG_CRYPTO_GF128MUL is not set
1292# CONFIG_CRYPTO_ECB is not set
1293CONFIG_CRYPTO_CBC=m
1294# CONFIG_CRYPTO_PCBC is not set
1295# CONFIG_CRYPTO_LRW is not set
1296# CONFIG_CRYPTO_XTS is not set
1297# CONFIG_CRYPTO_CRYPTD is not set
1272CONFIG_CRYPTO_DES=m 1298CONFIG_CRYPTO_DES=m
1299# CONFIG_CRYPTO_FCRYPT is not set
1273CONFIG_CRYPTO_BLOWFISH=m 1300CONFIG_CRYPTO_BLOWFISH=m
1274# CONFIG_CRYPTO_TWOFISH is not set 1301# CONFIG_CRYPTO_TWOFISH is not set
1275# CONFIG_CRYPTO_SERPENT is not set 1302# CONFIG_CRYPTO_SERPENT is not set
@@ -1280,21 +1307,28 @@ CONFIG_CRYPTO_BLOWFISH=m
1280# CONFIG_CRYPTO_ARC4 is not set 1307# CONFIG_CRYPTO_ARC4 is not set
1281# CONFIG_CRYPTO_KHAZAD is not set 1308# CONFIG_CRYPTO_KHAZAD is not set
1282# CONFIG_CRYPTO_ANUBIS is not set 1309# CONFIG_CRYPTO_ANUBIS is not set
1310# CONFIG_CRYPTO_SEED is not set
1283CONFIG_CRYPTO_DEFLATE=m 1311CONFIG_CRYPTO_DEFLATE=m
1284# CONFIG_CRYPTO_MICHAEL_MIC is not set 1312# CONFIG_CRYPTO_MICHAEL_MIC is not set
1285CONFIG_CRYPTO_CRC32C=m 1313CONFIG_CRYPTO_CRC32C=m
1314# CONFIG_CRYPTO_CAMELLIA is not set
1286CONFIG_CRYPTO_TEST=m 1315CONFIG_CRYPTO_TEST=m
1287 1316# CONFIG_CRYPTO_AUTHENC is not set
1288# 1317# CONFIG_CRYPTO_HW is not set
1289# Hardware crypto devices
1290#
1291 1318
1292# 1319#
1293# Library routines 1320# Library routines
1294# 1321#
1322CONFIG_BITREVERSE=y
1295CONFIG_CRC_CCITT=m 1323CONFIG_CRC_CCITT=m
1296# CONFIG_CRC16 is not set 1324# CONFIG_CRC16 is not set
1325# CONFIG_CRC_ITU_T is not set
1297CONFIG_CRC32=y 1326CONFIG_CRC32=y
1327# CONFIG_CRC7 is not set
1298CONFIG_LIBCRC32C=m 1328CONFIG_LIBCRC32C=m
1299CONFIG_ZLIB_INFLATE=m 1329CONFIG_ZLIB_INFLATE=m
1300CONFIG_ZLIB_DEFLATE=m 1330CONFIG_ZLIB_DEFLATE=m
1331CONFIG_PLIST=y
1332CONFIG_HAS_IOMEM=y
1333CONFIG_HAS_IOPORT=y
1334CONFIG_HAS_DMA=y
diff --git a/arch/parisc/defconfig b/arch/parisc/defconfig
index b38b58eb9dc2..448a757b06c6 100644
--- a/arch/parisc/defconfig
+++ b/arch/parisc/defconfig
@@ -1,39 +1,51 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.16-pa10 3# Linux kernel version: 2.6.23
4# Sun Apr 2 15:26:38 2006 4# Fri Oct 12 20:54:57 2007
5# 5#
6CONFIG_PARISC=y 6CONFIG_PARISC=y
7CONFIG_MMU=y 7CONFIG_MMU=y
8CONFIG_STACK_GROWSUP=y 8CONFIG_STACK_GROWSUP=y
9CONFIG_RWSEM_GENERIC_SPINLOCK=y 9CONFIG_RWSEM_GENERIC_SPINLOCK=y
10# CONFIG_ARCH_HAS_ILOG2_U32 is not set
11# CONFIG_ARCH_HAS_ILOG2_U64 is not set
12CONFIG_GENERIC_FIND_NEXT_BIT=y
13CONFIG_GENERIC_BUG=y
14CONFIG_GENERIC_HWEIGHT=y
10CONFIG_GENERIC_CALIBRATE_DELAY=y 15CONFIG_GENERIC_CALIBRATE_DELAY=y
16CONFIG_GENERIC_TIME=y
11CONFIG_GENERIC_HARDIRQS=y 17CONFIG_GENERIC_HARDIRQS=y
12CONFIG_GENERIC_IRQ_PROBE=y 18CONFIG_GENERIC_IRQ_PROBE=y
19CONFIG_IRQ_PER_CPU=y
20CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
13 21
14# 22#
15# Code maturity level options 23# General setup
16# 24#
17CONFIG_EXPERIMENTAL=y 25CONFIG_EXPERIMENTAL=y
18CONFIG_BROKEN_ON_SMP=y 26CONFIG_BROKEN_ON_SMP=y
19CONFIG_INIT_ENV_ARG_LIMIT=32 27CONFIG_INIT_ENV_ARG_LIMIT=32
20
21#
22# General setup
23#
24CONFIG_LOCALVERSION="" 28CONFIG_LOCALVERSION=""
25# CONFIG_LOCALVERSION_AUTO is not set 29# CONFIG_LOCALVERSION_AUTO is not set
26CONFIG_SWAP=y 30CONFIG_SWAP=y
27CONFIG_SYSVIPC=y 31CONFIG_SYSVIPC=y
32CONFIG_SYSVIPC_SYSCTL=y
28CONFIG_POSIX_MQUEUE=y 33CONFIG_POSIX_MQUEUE=y
29# CONFIG_BSD_PROCESS_ACCT is not set 34# CONFIG_BSD_PROCESS_ACCT is not set
30CONFIG_SYSCTL=y 35# CONFIG_TASKSTATS is not set
36# CONFIG_USER_NS is not set
31# CONFIG_AUDIT is not set 37# CONFIG_AUDIT is not set
32CONFIG_IKCONFIG=y 38CONFIG_IKCONFIG=y
33CONFIG_IKCONFIG_PROC=y 39CONFIG_IKCONFIG_PROC=y
40CONFIG_LOG_BUF_SHIFT=16
41CONFIG_SYSFS_DEPRECATED=y
42# CONFIG_RELAY is not set
43CONFIG_BLK_DEV_INITRD=y
34CONFIG_INITRAMFS_SOURCE="" 44CONFIG_INITRAMFS_SOURCE=""
35CONFIG_CC_OPTIMIZE_FOR_SIZE=y 45CONFIG_CC_OPTIMIZE_FOR_SIZE=y
46CONFIG_SYSCTL=y
36# CONFIG_EMBEDDED is not set 47# CONFIG_EMBEDDED is not set
48CONFIG_SYSCTL_SYSCALL=y
37CONFIG_KALLSYMS=y 49CONFIG_KALLSYMS=y
38CONFIG_KALLSYMS_ALL=y 50CONFIG_KALLSYMS_ALL=y
39# CONFIG_KALLSYMS_EXTRA_PASS is not set 51# CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -43,31 +55,29 @@ CONFIG_BUG=y
43CONFIG_ELF_CORE=y 55CONFIG_ELF_CORE=y
44CONFIG_BASE_FULL=y 56CONFIG_BASE_FULL=y
45CONFIG_FUTEX=y 57CONFIG_FUTEX=y
58CONFIG_ANON_INODES=y
46CONFIG_EPOLL=y 59CONFIG_EPOLL=y
60CONFIG_SIGNALFD=y
61CONFIG_EVENTFD=y
47CONFIG_SHMEM=y 62CONFIG_SHMEM=y
48CONFIG_CC_ALIGN_FUNCTIONS=0 63CONFIG_VM_EVENT_COUNTERS=y
49CONFIG_CC_ALIGN_LABELS=0
50CONFIG_CC_ALIGN_LOOPS=0
51CONFIG_CC_ALIGN_JUMPS=0
52CONFIG_SLAB=y 64CONFIG_SLAB=y
65# CONFIG_SLUB is not set
66# CONFIG_SLOB is not set
67CONFIG_RT_MUTEXES=y
53# CONFIG_TINY_SHMEM is not set 68# CONFIG_TINY_SHMEM is not set
54CONFIG_BASE_SMALL=0 69CONFIG_BASE_SMALL=0
55# CONFIG_SLOB is not set
56
57#
58# Loadable module support
59#
60CONFIG_MODULES=y 70CONFIG_MODULES=y
61CONFIG_MODULE_UNLOAD=y 71CONFIG_MODULE_UNLOAD=y
62CONFIG_MODULE_FORCE_UNLOAD=y 72CONFIG_MODULE_FORCE_UNLOAD=y
63CONFIG_OBSOLETE_MODPARM=y
64# CONFIG_MODVERSIONS is not set 73# CONFIG_MODVERSIONS is not set
65# CONFIG_MODULE_SRCVERSION_ALL is not set 74# CONFIG_MODULE_SRCVERSION_ALL is not set
66CONFIG_KMOD=y 75CONFIG_KMOD=y
67 76CONFIG_BLOCK=y
68# 77# CONFIG_LBD is not set
69# Block layer 78# CONFIG_BLK_DEV_IO_TRACE is not set
70# 79# CONFIG_LSF is not set
80# CONFIG_BLK_DEV_BSG is not set
71 81
72# 82#
73# IO Schedulers 83# IO Schedulers
@@ -101,6 +111,7 @@ CONFIG_PREEMPT_VOLUNTARY=y
101# CONFIG_PREEMPT is not set 111# CONFIG_PREEMPT is not set
102# CONFIG_HZ_100 is not set 112# CONFIG_HZ_100 is not set
103CONFIG_HZ_250=y 113CONFIG_HZ_250=y
114# CONFIG_HZ_300 is not set
104# CONFIG_HZ_1000 is not set 115# CONFIG_HZ_1000 is not set
105CONFIG_HZ=250 116CONFIG_HZ=250
106CONFIG_SELECT_MEMORY_MODEL=y 117CONFIG_SELECT_MEMORY_MODEL=y
@@ -111,6 +122,9 @@ CONFIG_FLATMEM=y
111CONFIG_FLAT_NODE_MEM_MAP=y 122CONFIG_FLAT_NODE_MEM_MAP=y
112# CONFIG_SPARSEMEM_STATIC is not set 123# CONFIG_SPARSEMEM_STATIC is not set
113CONFIG_SPLIT_PTLOCK_CPUS=4096 124CONFIG_SPLIT_PTLOCK_CPUS=4096
125# CONFIG_RESOURCES_64BIT is not set
126CONFIG_ZONE_DMA_FLAG=0
127CONFIG_VIRT_TO_BUS=y
114# CONFIG_HPUX is not set 128# CONFIG_HPUX is not set
115 129
116# 130#
@@ -125,7 +139,7 @@ CONFIG_EISA=y
125CONFIG_EISA_NAMES=y 139CONFIG_EISA_NAMES=y
126# CONFIG_ISA is not set 140# CONFIG_ISA is not set
127CONFIG_PCI=y 141CONFIG_PCI=y
128CONFIG_PCI_LEGACY_PROC=y 142# CONFIG_ARCH_SUPPORTS_MSI is not set
129# CONFIG_PCI_DEBUG is not set 143# CONFIG_PCI_DEBUG is not set
130CONFIG_GSC_DINO=y 144CONFIG_GSC_DINO=y
131CONFIG_PCI_LBA=y 145CONFIG_PCI_LBA=y
@@ -154,10 +168,6 @@ CONFIG_YENTA_TOSHIBA=y
154CONFIG_PD6729=y 168CONFIG_PD6729=y
155CONFIG_I82092=y 169CONFIG_I82092=y
156CONFIG_PCCARD_NONSTATIC=y 170CONFIG_PCCARD_NONSTATIC=y
157
158#
159# PCI Hotplug Support
160#
161# CONFIG_HOTPLUG_PCI is not set 171# CONFIG_HOTPLUG_PCI is not set
162 172
163# 173#
@@ -166,6 +176,7 @@ CONFIG_PCCARD_NONSTATIC=y
166CONFIG_SUPERIO=y 176CONFIG_SUPERIO=y
167CONFIG_CHASSIS_LCD_LED=y 177CONFIG_CHASSIS_LCD_LED=y
168CONFIG_PDC_CHASSIS=y 178CONFIG_PDC_CHASSIS=y
179CONFIG_PDC_CHASSIS_WARN=y
169CONFIG_PDC_STABLE=y 180CONFIG_PDC_STABLE=y
170 181
171# 182#
@@ -182,13 +193,15 @@ CONFIG_NET=y
182# 193#
183# Networking options 194# Networking options
184# 195#
185# CONFIG_NETDEBUG is not set
186CONFIG_PACKET=y 196CONFIG_PACKET=y
187CONFIG_PACKET_MMAP=y 197CONFIG_PACKET_MMAP=y
188CONFIG_UNIX=y 198CONFIG_UNIX=y
189CONFIG_XFRM=y 199CONFIG_XFRM=y
190CONFIG_XFRM_USER=m 200CONFIG_XFRM_USER=m
201# CONFIG_XFRM_SUB_POLICY is not set
202# CONFIG_XFRM_MIGRATE is not set
191CONFIG_NET_KEY=m 203CONFIG_NET_KEY=m
204# CONFIG_NET_KEY_MIGRATE is not set
192CONFIG_INET=y 205CONFIG_INET=y
193CONFIG_IP_MULTICAST=y 206CONFIG_IP_MULTICAST=y
194# CONFIG_IP_ADVANCED_ROUTER is not set 207# CONFIG_IP_ADVANCED_ROUTER is not set
@@ -205,33 +218,39 @@ CONFIG_IP_PNP_BOOTP=y
205CONFIG_INET_AH=m 218CONFIG_INET_AH=m
206CONFIG_INET_ESP=m 219CONFIG_INET_ESP=m
207# CONFIG_INET_IPCOMP is not set 220# CONFIG_INET_IPCOMP is not set
208CONFIG_INET_TUNNEL=m 221# CONFIG_INET_XFRM_TUNNEL is not set
222CONFIG_INET_TUNNEL=y
223CONFIG_INET_XFRM_MODE_TRANSPORT=y
224CONFIG_INET_XFRM_MODE_TUNNEL=y
225CONFIG_INET_XFRM_MODE_BEET=y
226# CONFIG_INET_LRO is not set
209CONFIG_INET_DIAG=m 227CONFIG_INET_DIAG=m
210CONFIG_INET_TCP_DIAG=m 228CONFIG_INET_TCP_DIAG=m
211# CONFIG_TCP_CONG_ADVANCED is not set 229# CONFIG_TCP_CONG_ADVANCED is not set
212CONFIG_TCP_CONG_BIC=y 230CONFIG_TCP_CONG_CUBIC=y
231CONFIG_DEFAULT_TCP_CONG="cubic"
232# CONFIG_TCP_MD5SIG is not set
213CONFIG_IPV6=y 233CONFIG_IPV6=y
214# CONFIG_IPV6_PRIVACY is not set 234# CONFIG_IPV6_PRIVACY is not set
235# CONFIG_IPV6_ROUTER_PREF is not set
236# CONFIG_IPV6_OPTIMISTIC_DAD is not set
215CONFIG_INET6_AH=y 237CONFIG_INET6_AH=y
216CONFIG_INET6_ESP=y 238CONFIG_INET6_ESP=y
217CONFIG_INET6_IPCOMP=y 239CONFIG_INET6_IPCOMP=y
240# CONFIG_IPV6_MIP6 is not set
241CONFIG_INET6_XFRM_TUNNEL=y
218CONFIG_INET6_TUNNEL=y 242CONFIG_INET6_TUNNEL=y
243CONFIG_INET6_XFRM_MODE_TRANSPORT=y
244CONFIG_INET6_XFRM_MODE_TUNNEL=y
245CONFIG_INET6_XFRM_MODE_BEET=y
246# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
247CONFIG_IPV6_SIT=y
219# CONFIG_IPV6_TUNNEL is not set 248# CONFIG_IPV6_TUNNEL is not set
249# CONFIG_IPV6_MULTIPLE_TABLES is not set
250# CONFIG_NETWORK_SECMARK is not set
220# CONFIG_NETFILTER is not set 251# CONFIG_NETFILTER is not set
221
222#
223# DCCP Configuration (EXPERIMENTAL)
224#
225# CONFIG_IP_DCCP is not set 252# CONFIG_IP_DCCP is not set
226
227#
228# SCTP Configuration (EXPERIMENTAL)
229#
230# CONFIG_IP_SCTP is not set 253# CONFIG_IP_SCTP is not set
231
232#
233# TIPC Configuration (EXPERIMENTAL)
234#
235# CONFIG_TIPC is not set 254# CONFIG_TIPC is not set
236# CONFIG_ATM is not set 255# CONFIG_ATM is not set
237# CONFIG_BRIDGE is not set 256# CONFIG_BRIDGE is not set
@@ -243,7 +262,6 @@ CONFIG_LLC2=m
243# CONFIG_ATALK is not set 262# CONFIG_ATALK is not set
244# CONFIG_X25 is not set 263# CONFIG_X25 is not set
245# CONFIG_LAPB is not set 264# CONFIG_LAPB is not set
246# CONFIG_NET_DIVERT is not set
247# CONFIG_ECONET is not set 265# CONFIG_ECONET is not set
248# CONFIG_WAN_ROUTER is not set 266# CONFIG_WAN_ROUTER is not set
249 267
@@ -259,7 +277,17 @@ CONFIG_LLC2=m
259# CONFIG_HAMRADIO is not set 277# CONFIG_HAMRADIO is not set
260# CONFIG_IRDA is not set 278# CONFIG_IRDA is not set
261# CONFIG_BT is not set 279# CONFIG_BT is not set
280# CONFIG_AF_RXRPC is not set
281
282#
283# Wireless
284#
285# CONFIG_CFG80211 is not set
286# CONFIG_WIRELESS_EXT is not set
287# CONFIG_MAC80211 is not set
262# CONFIG_IEEE80211 is not set 288# CONFIG_IEEE80211 is not set
289# CONFIG_RFKILL is not set
290# CONFIG_NET_9P is not set
263 291
264# 292#
265# Device Drivers 293# Device Drivers
@@ -268,41 +296,26 @@ CONFIG_LLC2=m
268# 296#
269# Generic Driver Options 297# Generic Driver Options
270# 298#
299CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
271# CONFIG_STANDALONE is not set 300# CONFIG_STANDALONE is not set
272# CONFIG_PREVENT_FIRMWARE_BUILD is not set 301# CONFIG_PREVENT_FIRMWARE_BUILD is not set
273CONFIG_FW_LOADER=y 302CONFIG_FW_LOADER=y
274# CONFIG_DEBUG_DRIVER is not set 303# CONFIG_DEBUG_DRIVER is not set
275 304# CONFIG_DEBUG_DEVRES is not set
276# 305# CONFIG_SYS_HYPERVISOR is not set
277# Connector - unified userspace <-> kernelspace linker
278#
279# CONFIG_CONNECTOR is not set 306# CONFIG_CONNECTOR is not set
280
281#
282# Memory Technology Devices (MTD)
283#
284# CONFIG_MTD is not set 307# CONFIG_MTD is not set
285
286#
287# Parallel port support
288#
289CONFIG_PARPORT=y 308CONFIG_PARPORT=y
290CONFIG_PARPORT_PC=m 309CONFIG_PARPORT_PC=m
291# CONFIG_PARPORT_SERIAL is not set 310# CONFIG_PARPORT_SERIAL is not set
292# CONFIG_PARPORT_PC_FIFO is not set 311# CONFIG_PARPORT_PC_FIFO is not set
293# CONFIG_PARPORT_PC_SUPERIO is not set 312# CONFIG_PARPORT_PC_SUPERIO is not set
294CONFIG_PARPORT_PC_PCMCIA=m 313CONFIG_PARPORT_PC_PCMCIA=m
295CONFIG_PARPORT_NOT_PC=y
296CONFIG_PARPORT_GSC=y 314CONFIG_PARPORT_GSC=y
315# CONFIG_PARPORT_AX88796 is not set
297CONFIG_PARPORT_1284=y 316CONFIG_PARPORT_1284=y
298 317CONFIG_PARPORT_NOT_PC=y
299# 318CONFIG_BLK_DEV=y
300# Plug and Play support
301#
302
303#
304# Block devices
305#
306# CONFIG_PARIDE is not set 319# CONFIG_PARIDE is not set
307# CONFIG_BLK_CPQ_DA is not set 320# CONFIG_BLK_CPQ_DA is not set
308# CONFIG_BLK_CPQ_CISS_DA is not set 321# CONFIG_BLK_CPQ_CISS_DA is not set
@@ -317,13 +330,14 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y
317CONFIG_BLK_DEV_RAM=y 330CONFIG_BLK_DEV_RAM=y
318CONFIG_BLK_DEV_RAM_COUNT=16 331CONFIG_BLK_DEV_RAM_COUNT=16
319CONFIG_BLK_DEV_RAM_SIZE=6144 332CONFIG_BLK_DEV_RAM_SIZE=6144
320CONFIG_BLK_DEV_INITRD=y 333CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
321# CONFIG_CDROM_PKTCDVD is not set 334# CONFIG_CDROM_PKTCDVD is not set
322# CONFIG_ATA_OVER_ETH is not set 335# CONFIG_ATA_OVER_ETH is not set
323 336CONFIG_MISC_DEVICES=y
324# 337# CONFIG_PHANTOM is not set
325# ATA/ATAPI/MFM/RLL support 338# CONFIG_EEPROM_93CX6 is not set
326# 339# CONFIG_SGI_IOC4 is not set
340# CONFIG_TIFM_CORE is not set
327CONFIG_IDE=y 341CONFIG_IDE=y
328CONFIG_BLK_DEV_IDE=y 342CONFIG_BLK_DEV_IDE=y
329 343
@@ -334,24 +348,32 @@ CONFIG_BLK_DEV_IDE=y
334CONFIG_BLK_DEV_IDEDISK=y 348CONFIG_BLK_DEV_IDEDISK=y
335CONFIG_IDEDISK_MULTI_MODE=y 349CONFIG_IDEDISK_MULTI_MODE=y
336CONFIG_BLK_DEV_IDECS=y 350CONFIG_BLK_DEV_IDECS=y
351# CONFIG_BLK_DEV_DELKIN is not set
337CONFIG_BLK_DEV_IDECD=y 352CONFIG_BLK_DEV_IDECD=y
338# CONFIG_BLK_DEV_IDETAPE is not set 353# CONFIG_BLK_DEV_IDETAPE is not set
339# CONFIG_BLK_DEV_IDEFLOPPY is not set 354# CONFIG_BLK_DEV_IDEFLOPPY is not set
340CONFIG_BLK_DEV_IDESCSI=y 355CONFIG_BLK_DEV_IDESCSI=y
341# CONFIG_IDE_TASK_IOCTL is not set 356# CONFIG_IDE_TASK_IOCTL is not set
357CONFIG_IDE_PROC_FS=y
342 358
343# 359#
344# IDE chipset support/bugfixes 360# IDE chipset support/bugfixes
345# 361#
346CONFIG_IDE_GENERIC=y 362CONFIG_IDE_GENERIC=y
363# CONFIG_BLK_DEV_PLATFORM is not set
364
365#
366# PCI IDE chipsets support
367#
347CONFIG_BLK_DEV_IDEPCI=y 368CONFIG_BLK_DEV_IDEPCI=y
348CONFIG_IDEPCI_SHARE_IRQ=y 369CONFIG_IDEPCI_SHARE_IRQ=y
370CONFIG_IDEPCI_PCIBUS_ORDER=y
349# CONFIG_BLK_DEV_OFFBOARD is not set 371# CONFIG_BLK_DEV_OFFBOARD is not set
350CONFIG_BLK_DEV_GENERIC=y 372CONFIG_BLK_DEV_GENERIC=y
351# CONFIG_BLK_DEV_OPTI621 is not set 373# CONFIG_BLK_DEV_OPTI621 is not set
352CONFIG_BLK_DEV_IDEDMA_PCI=y 374CONFIG_BLK_DEV_IDEDMA_PCI=y
353# CONFIG_BLK_DEV_IDEDMA_FORCED is not set 375# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
354# CONFIG_IDEDMA_PCI_AUTO is not set 376CONFIG_IDEDMA_ONLYDISK=y
355# CONFIG_BLK_DEV_AEC62XX is not set 377# CONFIG_BLK_DEV_AEC62XX is not set
356# CONFIG_BLK_DEV_ALI15X3 is not set 378# CONFIG_BLK_DEV_ALI15X3 is not set
357# CONFIG_BLK_DEV_AMD74XX is not set 379# CONFIG_BLK_DEV_AMD74XX is not set
@@ -362,8 +384,10 @@ CONFIG_BLK_DEV_IDEDMA_PCI=y
362# CONFIG_BLK_DEV_CS5530 is not set 384# CONFIG_BLK_DEV_CS5530 is not set
363# CONFIG_BLK_DEV_HPT34X is not set 385# CONFIG_BLK_DEV_HPT34X is not set
364# CONFIG_BLK_DEV_HPT366 is not set 386# CONFIG_BLK_DEV_HPT366 is not set
387# CONFIG_BLK_DEV_JMICRON is not set
365# CONFIG_BLK_DEV_SC1200 is not set 388# CONFIG_BLK_DEV_SC1200 is not set
366# CONFIG_BLK_DEV_PIIX is not set 389# CONFIG_BLK_DEV_PIIX is not set
390# CONFIG_BLK_DEV_IT8213 is not set
367# CONFIG_BLK_DEV_IT821X is not set 391# CONFIG_BLK_DEV_IT821X is not set
368CONFIG_BLK_DEV_NS87415=y 392CONFIG_BLK_DEV_NS87415=y
369# CONFIG_BLK_DEV_PDC202XX_OLD is not set 393# CONFIG_BLK_DEV_PDC202XX_OLD is not set
@@ -373,10 +397,10 @@ CONFIG_BLK_DEV_NS87415=y
373# CONFIG_BLK_DEV_SLC90E66 is not set 397# CONFIG_BLK_DEV_SLC90E66 is not set
374# CONFIG_BLK_DEV_TRM290 is not set 398# CONFIG_BLK_DEV_TRM290 is not set
375# CONFIG_BLK_DEV_VIA82CXXX is not set 399# CONFIG_BLK_DEV_VIA82CXXX is not set
400# CONFIG_BLK_DEV_TC86C001 is not set
376# CONFIG_IDE_ARM is not set 401# CONFIG_IDE_ARM is not set
377CONFIG_BLK_DEV_IDEDMA=y 402CONFIG_BLK_DEV_IDEDMA=y
378# CONFIG_IDEDMA_IVB is not set 403# CONFIG_IDEDMA_IVB is not set
379# CONFIG_IDEDMA_AUTO is not set
380# CONFIG_BLK_DEV_HD is not set 404# CONFIG_BLK_DEV_HD is not set
381 405
382# 406#
@@ -384,6 +408,9 @@ CONFIG_BLK_DEV_IDEDMA=y
384# 408#
385# CONFIG_RAID_ATTRS is not set 409# CONFIG_RAID_ATTRS is not set
386CONFIG_SCSI=y 410CONFIG_SCSI=y
411CONFIG_SCSI_DMA=y
412# CONFIG_SCSI_TGT is not set
413# CONFIG_SCSI_NETLINK is not set
387CONFIG_SCSI_PROC_FS=y 414CONFIG_SCSI_PROC_FS=y
388 415
389# 416#
@@ -403,18 +430,17 @@ CONFIG_CHR_DEV_SG=y
403# CONFIG_SCSI_MULTI_LUN is not set 430# CONFIG_SCSI_MULTI_LUN is not set
404# CONFIG_SCSI_CONSTANTS is not set 431# CONFIG_SCSI_CONSTANTS is not set
405# CONFIG_SCSI_LOGGING is not set 432# CONFIG_SCSI_LOGGING is not set
433# CONFIG_SCSI_SCAN_ASYNC is not set
434CONFIG_SCSI_WAIT_SCAN=m
406 435
407# 436#
408# SCSI Transport Attributes 437# SCSI Transports
409# 438#
410CONFIG_SCSI_SPI_ATTRS=y 439CONFIG_SCSI_SPI_ATTRS=y
411# CONFIG_SCSI_FC_ATTRS is not set 440# CONFIG_SCSI_FC_ATTRS is not set
412# CONFIG_SCSI_ISCSI_ATTRS is not set 441# CONFIG_SCSI_ISCSI_ATTRS is not set
413# CONFIG_SCSI_SAS_ATTRS is not set 442# CONFIG_SCSI_SAS_LIBSAS is not set
414 443CONFIG_SCSI_LOWLEVEL=y
415#
416# SCSI low-level drivers
417#
418# CONFIG_ISCSI_TCP is not set 444# CONFIG_ISCSI_TCP is not set
419# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 445# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
420# CONFIG_SCSI_3W_9XXX is not set 446# CONFIG_SCSI_3W_9XXX is not set
@@ -424,11 +450,13 @@ CONFIG_SCSI_SPI_ATTRS=y
424# CONFIG_SCSI_AIC7XXX is not set 450# CONFIG_SCSI_AIC7XXX is not set
425# CONFIG_SCSI_AIC7XXX_OLD is not set 451# CONFIG_SCSI_AIC7XXX_OLD is not set
426# CONFIG_SCSI_AIC79XX is not set 452# CONFIG_SCSI_AIC79XX is not set
453# CONFIG_SCSI_AIC94XX is not set
427# CONFIG_SCSI_DPT_I2O is not set 454# CONFIG_SCSI_DPT_I2O is not set
455# CONFIG_SCSI_ARCMSR is not set
428# CONFIG_MEGARAID_NEWGEN is not set 456# CONFIG_MEGARAID_NEWGEN is not set
429# CONFIG_MEGARAID_LEGACY is not set 457# CONFIG_MEGARAID_LEGACY is not set
430# CONFIG_MEGARAID_SAS is not set 458# CONFIG_MEGARAID_SAS is not set
431# CONFIG_SCSI_SATA is not set 459# CONFIG_SCSI_HPTIOP is not set
432# CONFIG_SCSI_DMX3191D is not set 460# CONFIG_SCSI_DMX3191D is not set
433# CONFIG_SCSI_FUTURE_DOMAIN is not set 461# CONFIG_SCSI_FUTURE_DOMAIN is not set
434# CONFIG_SCSI_IPS is not set 462# CONFIG_SCSI_IPS is not set
@@ -438,55 +466,45 @@ CONFIG_SCSI_SPI_ATTRS=y
438# CONFIG_SCSI_IMM is not set 466# CONFIG_SCSI_IMM is not set
439CONFIG_SCSI_LASI700=y 467CONFIG_SCSI_LASI700=y
440CONFIG_53C700_LE_ON_BE=y 468CONFIG_53C700_LE_ON_BE=y
469# CONFIG_SCSI_STEX is not set
441CONFIG_SCSI_SYM53C8XX_2=y 470CONFIG_SCSI_SYM53C8XX_2=y
442CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1 471CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=1
443CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16 472CONFIG_SCSI_SYM53C8XX_DEFAULT_TAGS=16
444CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64 473CONFIG_SCSI_SYM53C8XX_MAX_TAGS=64
445CONFIG_SCSI_SYM53C8XX_MMIO=y 474CONFIG_SCSI_SYM53C8XX_MMIO=y
446# CONFIG_SCSI_IPR is not set
447CONFIG_SCSI_ZALON=y 475CONFIG_SCSI_ZALON=y
448CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8 476CONFIG_SCSI_NCR53C8XX_DEFAULT_TAGS=8
449CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32 477CONFIG_SCSI_NCR53C8XX_MAX_TAGS=32
450CONFIG_SCSI_NCR53C8XX_SYNC=20 478CONFIG_SCSI_NCR53C8XX_SYNC=20
451# CONFIG_SCSI_NCR53C8XX_PROFILE is not set
452# CONFIG_SCSI_QLOGIC_FC is not set
453# CONFIG_SCSI_QLOGIC_1280 is not set 479# CONFIG_SCSI_QLOGIC_1280 is not set
454# CONFIG_SCSI_QLA_FC is not set 480# CONFIG_SCSI_QLA_FC is not set
481# CONFIG_SCSI_QLA_ISCSI is not set
455# CONFIG_SCSI_LPFC is not set 482# CONFIG_SCSI_LPFC is not set
456# CONFIG_SCSI_SIM710 is not set 483# CONFIG_SCSI_SIM710 is not set
457# CONFIG_SCSI_DC395x is not set 484# CONFIG_SCSI_DC395x is not set
458# CONFIG_SCSI_DC390T is not set 485# CONFIG_SCSI_DC390T is not set
459# CONFIG_SCSI_NSP32 is not set 486# CONFIG_SCSI_NSP32 is not set
460# CONFIG_SCSI_DEBUG is not set 487# CONFIG_SCSI_DEBUG is not set
461 488# CONFIG_SCSI_SRP is not set
462# 489# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set
463# PCMCIA SCSI adapter support 490# CONFIG_ATA is not set
464#
465# CONFIG_PCMCIA_AHA152X is not set
466# CONFIG_PCMCIA_FDOMAIN is not set
467# CONFIG_PCMCIA_NINJA_SCSI is not set
468# CONFIG_PCMCIA_QLOGIC is not set
469# CONFIG_PCMCIA_SYM53C500 is not set
470
471#
472# Multi-device support (RAID and LVM)
473#
474CONFIG_MD=y 491CONFIG_MD=y
475CONFIG_BLK_DEV_MD=y 492CONFIG_BLK_DEV_MD=y
476CONFIG_MD_LINEAR=y 493CONFIG_MD_LINEAR=y
477CONFIG_MD_RAID0=y 494CONFIG_MD_RAID0=y
478CONFIG_MD_RAID1=y 495CONFIG_MD_RAID1=y
479CONFIG_MD_RAID10=y 496CONFIG_MD_RAID10=y
480CONFIG_MD_RAID5=y 497# CONFIG_MD_RAID456 is not set
481CONFIG_MD_RAID6=y
482# CONFIG_MD_MULTIPATH is not set 498# CONFIG_MD_MULTIPATH is not set
483# CONFIG_MD_FAULTY is not set 499# CONFIG_MD_FAULTY is not set
484CONFIG_BLK_DEV_DM=y 500CONFIG_BLK_DEV_DM=y
501# CONFIG_DM_DEBUG is not set
485# CONFIG_DM_CRYPT is not set 502# CONFIG_DM_CRYPT is not set
486# CONFIG_DM_SNAPSHOT is not set 503# CONFIG_DM_SNAPSHOT is not set
487# CONFIG_DM_MIRROR is not set 504# CONFIG_DM_MIRROR is not set
488# CONFIG_DM_ZERO is not set 505# CONFIG_DM_ZERO is not set
489# CONFIG_DM_MULTIPATH is not set 506# CONFIG_DM_MULTIPATH is not set
507# CONFIG_DM_DELAY is not set
490 508
491# 509#
492# Fusion MPT device support 510# Fusion MPT device support
@@ -499,35 +517,20 @@ CONFIG_BLK_DEV_DM=y
499# 517#
500# IEEE 1394 (FireWire) support 518# IEEE 1394 (FireWire) support
501# 519#
520# CONFIG_FIREWIRE is not set
502# CONFIG_IEEE1394 is not set 521# CONFIG_IEEE1394 is not set
503
504#
505# I2O device support
506#
507# CONFIG_I2O is not set 522# CONFIG_I2O is not set
508
509#
510# Network device support
511#
512CONFIG_NETDEVICES=y 523CONFIG_NETDEVICES=y
524# CONFIG_NETDEVICES_MULTIQUEUE is not set
513CONFIG_DUMMY=m 525CONFIG_DUMMY=m
514CONFIG_BONDING=m 526CONFIG_BONDING=m
527# CONFIG_MACVLAN is not set
515# CONFIG_EQUALIZER is not set 528# CONFIG_EQUALIZER is not set
516CONFIG_TUN=m 529CONFIG_TUN=m
517 530# CONFIG_VETH is not set
518# 531# CONFIG_IP1000 is not set
519# ARCnet devices
520#
521# CONFIG_ARCNET is not set 532# CONFIG_ARCNET is not set
522
523#
524# PHY device support
525#
526# CONFIG_PHYLIB is not set 533# CONFIG_PHYLIB is not set
527
528#
529# Ethernet (10 or 100Mbit)
530#
531CONFIG_NET_ETHERNET=y 534CONFIG_NET_ETHERNET=y
532CONFIG_MII=m 535CONFIG_MII=m
533CONFIG_LASI_82596=y 536CONFIG_LASI_82596=y
@@ -536,10 +539,6 @@ CONFIG_LASI_82596=y
536# CONFIG_CASSINI is not set 539# CONFIG_CASSINI is not set
537# CONFIG_NET_VENDOR_3COM is not set 540# CONFIG_NET_VENDOR_3COM is not set
538# CONFIG_NET_VENDOR_SMC is not set 541# CONFIG_NET_VENDOR_SMC is not set
539
540#
541# Tulip family network device support
542#
543CONFIG_NET_TULIP=y 542CONFIG_NET_TULIP=y
544# CONFIG_DE2104X is not set 543# CONFIG_DE2104X is not set
545CONFIG_TULIP=y 544CONFIG_TULIP=y
@@ -554,6 +553,10 @@ CONFIG_TULIP=y
554# CONFIG_PCMCIA_XIRTULIP is not set 553# CONFIG_PCMCIA_XIRTULIP is not set
555# CONFIG_DEPCA is not set 554# CONFIG_DEPCA is not set
556# CONFIG_HP100 is not set 555# CONFIG_HP100 is not set
556# CONFIG_IBM_NEW_EMAC_ZMII is not set
557# CONFIG_IBM_NEW_EMAC_RGMII is not set
558# CONFIG_IBM_NEW_EMAC_TAH is not set
559# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
557CONFIG_NET_PCI=y 560CONFIG_NET_PCI=y
558# CONFIG_PCNET32 is not set 561# CONFIG_PCNET32 is not set
559# CONFIG_AMD8111_ETH is not set 562# CONFIG_AMD8111_ETH is not set
@@ -561,7 +564,6 @@ CONFIG_NET_PCI=y
561# CONFIG_AC3200 is not set 564# CONFIG_AC3200 is not set
562# CONFIG_B44 is not set 565# CONFIG_B44 is not set
563# CONFIG_FORCEDETH is not set 566# CONFIG_FORCEDETH is not set
564# CONFIG_DGRS is not set
565# CONFIG_EEPRO100 is not set 567# CONFIG_EEPRO100 is not set
566# CONFIG_E100 is not set 568# CONFIG_E100 is not set
567# CONFIG_LNE390 is not set 569# CONFIG_LNE390 is not set
@@ -577,15 +579,14 @@ CONFIG_NET_PCI=y
577# CONFIG_SUNDANCE is not set 579# CONFIG_SUNDANCE is not set
578# CONFIG_TLAN is not set 580# CONFIG_TLAN is not set
579# CONFIG_VIA_RHINE is not set 581# CONFIG_VIA_RHINE is not set
582# CONFIG_SC92031 is not set
580# CONFIG_NET_POCKET is not set 583# CONFIG_NET_POCKET is not set
581 584CONFIG_NETDEV_1000=y
582#
583# Ethernet (1000 Mbit)
584#
585CONFIG_ACENIC=y 585CONFIG_ACENIC=y
586# CONFIG_ACENIC_OMIT_TIGON_I is not set 586# CONFIG_ACENIC_OMIT_TIGON_I is not set
587# CONFIG_DL2K is not set 587# CONFIG_DL2K is not set
588# CONFIG_E1000 is not set 588# CONFIG_E1000 is not set
589# CONFIG_E1000E is not set
589# CONFIG_NS83820 is not set 590# CONFIG_NS83820 is not set
590# CONFIG_HAMACHI is not set 591# CONFIG_HAMACHI is not set
591# CONFIG_YELLOWFIN is not set 592# CONFIG_YELLOWFIN is not set
@@ -597,64 +598,36 @@ CONFIG_ACENIC=y
597# CONFIG_VIA_VELOCITY is not set 598# CONFIG_VIA_VELOCITY is not set
598CONFIG_TIGON3=y 599CONFIG_TIGON3=y
599# CONFIG_BNX2 is not set 600# CONFIG_BNX2 is not set
600 601# CONFIG_QLA3XXX is not set
601# 602# CONFIG_ATL1 is not set
602# Ethernet (10000 Mbit) 603CONFIG_NETDEV_10000=y
603#
604# CONFIG_CHELSIO_T1 is not set 604# CONFIG_CHELSIO_T1 is not set
605# CONFIG_CHELSIO_T3 is not set
606# CONFIG_IXGBE is not set
605# CONFIG_IXGB is not set 607# CONFIG_IXGB is not set
606# CONFIG_S2IO is not set 608# CONFIG_S2IO is not set
607 609# CONFIG_MYRI10GE is not set
608# 610# CONFIG_NETXEN_NIC is not set
609# Token Ring devices 611# CONFIG_NIU is not set
610# 612# CONFIG_MLX4_CORE is not set
613# CONFIG_TEHUTI is not set
611# CONFIG_TR is not set 614# CONFIG_TR is not set
612 615
613# 616#
614# Wireless LAN (non-hamradio) 617# Wireless LAN
615#
616CONFIG_NET_RADIO=y
617
618#
619# Obsolete Wireless cards support (pre-802.11)
620#
621# CONFIG_STRIP is not set
622# CONFIG_PCMCIA_WAVELAN is not set
623# CONFIG_PCMCIA_NETWAVE is not set
624
625#
626# Wireless 802.11 Frequency Hopping cards support
627#
628# CONFIG_PCMCIA_RAYCS is not set
629
630#
631# Wireless 802.11b ISA/PCI cards support
632#
633CONFIG_HERMES=y
634# CONFIG_PLX_HERMES is not set
635# CONFIG_TMD_HERMES is not set
636# CONFIG_NORTEL_HERMES is not set
637# CONFIG_PCI_HERMES is not set
638# CONFIG_ATMEL is not set
639
640#
641# Wireless 802.11b Pcmcia/Cardbus cards support
642# 618#
643CONFIG_PCMCIA_HERMES=y 619# CONFIG_WLAN_PRE80211 is not set
644CONFIG_PCMCIA_SPECTRUM=y 620# CONFIG_WLAN_80211 is not set
645# CONFIG_AIRO_CS is not set
646# CONFIG_PCMCIA_WL3501 is not set
647 621
648# 622#
649# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support 623# USB Network Adapters
650#
651# CONFIG_PRISM54 is not set
652# CONFIG_HOSTAP is not set
653CONFIG_NET_WIRELESS=y
654
655#
656# PCMCIA network device support
657# 624#
625# CONFIG_USB_CATC is not set
626# CONFIG_USB_KAWETH is not set
627# CONFIG_USB_PEGASUS is not set
628# CONFIG_USB_RTL8150 is not set
629# CONFIG_USB_USBNET_MII is not set
630# CONFIG_USB_USBNET is not set
658CONFIG_NET_PCMCIA=y 631CONFIG_NET_PCMCIA=y
659# CONFIG_PCMCIA_3C589 is not set 632# CONFIG_PCMCIA_3C589 is not set
660# CONFIG_PCMCIA_3C574 is not set 633# CONFIG_PCMCIA_3C574 is not set
@@ -664,10 +637,6 @@ CONFIG_NET_PCMCIA=y
664# CONFIG_PCMCIA_SMC91C92 is not set 637# CONFIG_PCMCIA_SMC91C92 is not set
665# CONFIG_PCMCIA_XIRC2PS is not set 638# CONFIG_PCMCIA_XIRC2PS is not set
666# CONFIG_PCMCIA_AXNET is not set 639# CONFIG_PCMCIA_AXNET is not set
667
668#
669# Wan interfaces
670#
671# CONFIG_WAN is not set 640# CONFIG_WAN is not set
672# CONFIG_FDDI is not set 641# CONFIG_FDDI is not set
673# CONFIG_HIPPI is not set 642# CONFIG_HIPPI is not set
@@ -681,27 +650,23 @@ CONFIG_PPP_DEFLATE=m
681CONFIG_PPP_BSDCOMP=m 650CONFIG_PPP_BSDCOMP=m
682# CONFIG_PPP_MPPE is not set 651# CONFIG_PPP_MPPE is not set
683CONFIG_PPPOE=m 652CONFIG_PPPOE=m
653# CONFIG_PPPOL2TP is not set
684# CONFIG_SLIP is not set 654# CONFIG_SLIP is not set
655CONFIG_SLHC=m
685# CONFIG_NET_FC is not set 656# CONFIG_NET_FC is not set
686# CONFIG_SHAPER is not set 657# CONFIG_SHAPER is not set
687# CONFIG_NETCONSOLE is not set 658# CONFIG_NETCONSOLE is not set
688# CONFIG_NETPOLL is not set 659# CONFIG_NETPOLL is not set
689# CONFIG_NET_POLL_CONTROLLER is not set 660# CONFIG_NET_POLL_CONTROLLER is not set
690
691#
692# ISDN subsystem
693#
694# CONFIG_ISDN is not set 661# CONFIG_ISDN is not set
695
696#
697# Telephony Support
698#
699# CONFIG_PHONE is not set 662# CONFIG_PHONE is not set
700 663
701# 664#
702# Input device support 665# Input device support
703# 666#
704CONFIG_INPUT=y 667CONFIG_INPUT=y
668# CONFIG_INPUT_FF_MEMLESS is not set
669# CONFIG_INPUT_POLLDEV is not set
705 670
706# 671#
707# Userland interfaces 672# Userland interfaces
@@ -726,14 +691,23 @@ CONFIG_KEYBOARD_ATKBD_HP_KEYCODES=y
726# CONFIG_KEYBOARD_LKKBD is not set 691# CONFIG_KEYBOARD_LKKBD is not set
727# CONFIG_KEYBOARD_XTKBD is not set 692# CONFIG_KEYBOARD_XTKBD is not set
728# CONFIG_KEYBOARD_NEWTON is not set 693# CONFIG_KEYBOARD_NEWTON is not set
694# CONFIG_KEYBOARD_STOWAWAY is not set
729# CONFIG_KEYBOARD_HIL_OLD is not set 695# CONFIG_KEYBOARD_HIL_OLD is not set
730CONFIG_KEYBOARD_HIL=y 696CONFIG_KEYBOARD_HIL=y
731CONFIG_INPUT_MOUSE=y 697CONFIG_INPUT_MOUSE=y
732CONFIG_MOUSE_PS2=y 698CONFIG_MOUSE_PS2=y
699CONFIG_MOUSE_PS2_ALPS=y
700CONFIG_MOUSE_PS2_LOGIPS2PP=y
701CONFIG_MOUSE_PS2_SYNAPTICS=y
702CONFIG_MOUSE_PS2_LIFEBOOK=y
703CONFIG_MOUSE_PS2_TRACKPOINT=y
704# CONFIG_MOUSE_PS2_TOUCHKIT is not set
733CONFIG_MOUSE_SERIAL=y 705CONFIG_MOUSE_SERIAL=y
706# CONFIG_MOUSE_APPLETOUCH is not set
734# CONFIG_MOUSE_VSXXXAA is not set 707# CONFIG_MOUSE_VSXXXAA is not set
735CONFIG_MOUSE_HIL=y 708CONFIG_MOUSE_HIL=y
736# CONFIG_INPUT_JOYSTICK is not set 709# CONFIG_INPUT_JOYSTICK is not set
710# CONFIG_INPUT_TABLET is not set
737# CONFIG_INPUT_TOUCHSCREEN is not set 711# CONFIG_INPUT_TOUCHSCREEN is not set
738# CONFIG_INPUT_MISC is not set 712# CONFIG_INPUT_MISC is not set
739 713
@@ -757,6 +731,7 @@ CONFIG_SERIO_LIBPS2=y
757CONFIG_VT=y 731CONFIG_VT=y
758CONFIG_VT_CONSOLE=y 732CONFIG_VT_CONSOLE=y
759CONFIG_HW_CONSOLE=y 733CONFIG_HW_CONSOLE=y
734# CONFIG_VT_HW_CONSOLE_BINDING is not set
760# CONFIG_SERIAL_NONSTANDARD is not set 735# CONFIG_SERIAL_NONSTANDARD is not set
761 736
762# 737#
@@ -764,6 +739,8 @@ CONFIG_HW_CONSOLE=y
764# 739#
765CONFIG_SERIAL_8250=y 740CONFIG_SERIAL_8250=y
766CONFIG_SERIAL_8250_CONSOLE=y 741CONFIG_SERIAL_8250_CONSOLE=y
742CONFIG_SERIAL_8250_GSC=y
743CONFIG_SERIAL_8250_PCI=y
767CONFIG_SERIAL_8250_CS=y 744CONFIG_SERIAL_8250_CS=y
768CONFIG_SERIAL_8250_NR_UARTS=17 745CONFIG_SERIAL_8250_NR_UARTS=17
769CONFIG_SERIAL_8250_RUNTIME_UARTS=4 746CONFIG_SERIAL_8250_RUNTIME_UARTS=4
@@ -788,25 +765,14 @@ CONFIG_PRINTER=m
788# CONFIG_LP_CONSOLE is not set 765# CONFIG_LP_CONSOLE is not set
789CONFIG_PPDEV=m 766CONFIG_PPDEV=m
790# CONFIG_TIPAR is not set 767# CONFIG_TIPAR is not set
791
792#
793# IPMI
794#
795# CONFIG_IPMI_HANDLER is not set 768# CONFIG_IPMI_HANDLER is not set
796
797#
798# Watchdog Cards
799#
800# CONFIG_WATCHDOG is not set 769# CONFIG_WATCHDOG is not set
770# CONFIG_HW_RANDOM is not set
801CONFIG_GEN_RTC=y 771CONFIG_GEN_RTC=y
802CONFIG_GEN_RTC_X=y 772CONFIG_GEN_RTC_X=y
803# CONFIG_DTLK is not set
804# CONFIG_R3964 is not set 773# CONFIG_R3964 is not set
805# CONFIG_APPLICOM is not set 774# CONFIG_APPLICOM is not set
806 775# CONFIG_AGP is not set
807#
808# Ftape, the floppy tape device driver
809#
810# CONFIG_DRM is not set 776# CONFIG_DRM is not set
811 777
812# 778#
@@ -816,16 +782,8 @@ CONFIG_GEN_RTC_X=y
816# CONFIG_CARDMAN_4000 is not set 782# CONFIG_CARDMAN_4000 is not set
817# CONFIG_CARDMAN_4040 is not set 783# CONFIG_CARDMAN_4040 is not set
818# CONFIG_RAW_DRIVER is not set 784# CONFIG_RAW_DRIVER is not set
819
820#
821# TPM devices
822#
823# CONFIG_TCG_TPM is not set 785# CONFIG_TCG_TPM is not set
824# CONFIG_TELCLOCK is not set 786CONFIG_DEVPORT=y
825
826#
827# I2C support
828#
829# CONFIG_I2C is not set 787# CONFIG_I2C is not set
830 788
831# 789#
@@ -833,46 +791,59 @@ CONFIG_GEN_RTC_X=y
833# 791#
834# CONFIG_SPI is not set 792# CONFIG_SPI is not set
835# CONFIG_SPI_MASTER is not set 793# CONFIG_SPI_MASTER is not set
836
837#
838# Dallas's 1-wire bus
839#
840# CONFIG_W1 is not set 794# CONFIG_W1 is not set
841 795# CONFIG_POWER_SUPPLY is not set
842#
843# Hardware Monitoring support
844#
845# CONFIG_HWMON is not set 796# CONFIG_HWMON is not set
846# CONFIG_HWMON_VID is not set
847 797
848# 798#
849# Misc devices 799# Sonics Silicon Backplane
850# 800#
801CONFIG_SSB_POSSIBLE=y
802# CONFIG_SSB is not set
851 803
852# 804#
853# Multimedia Capabilities Port drivers 805# Multifunction device drivers
854# 806#
807# CONFIG_MFD_SM501 is not set
855 808
856# 809#
857# Multimedia devices 810# Multimedia devices
858# 811#
859# CONFIG_VIDEO_DEV is not set 812# CONFIG_VIDEO_DEV is not set
813# CONFIG_DVB_CORE is not set
814# CONFIG_DAB is not set
860 815
861# 816#
862# Digital Video Broadcasting Devices 817# Graphics support
863# 818#
864# CONFIG_DVB is not set 819# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
865 820
866# 821#
867# Graphics support 822# Display device support
868# 823#
824# CONFIG_DISPLAY_SUPPORT is not set
825# CONFIG_VGASTATE is not set
826CONFIG_VIDEO_OUTPUT_CONTROL=m
869CONFIG_FB=y 827CONFIG_FB=y
828# CONFIG_FIRMWARE_EDID is not set
829# CONFIG_FB_DDC is not set
870CONFIG_FB_CFB_FILLRECT=y 830CONFIG_FB_CFB_FILLRECT=y
871CONFIG_FB_CFB_COPYAREA=y 831CONFIG_FB_CFB_COPYAREA=y
872CONFIG_FB_CFB_IMAGEBLIT=y 832CONFIG_FB_CFB_IMAGEBLIT=y
833# CONFIG_FB_SYS_FILLRECT is not set
834# CONFIG_FB_SYS_COPYAREA is not set
835# CONFIG_FB_SYS_IMAGEBLIT is not set
836# CONFIG_FB_SYS_FOPS is not set
837CONFIG_FB_DEFERRED_IO=y
838# CONFIG_FB_SVGALIB is not set
873# CONFIG_FB_MACMODES is not set 839# CONFIG_FB_MACMODES is not set
840# CONFIG_FB_BACKLIGHT is not set
874CONFIG_FB_MODE_HELPERS=y 841CONFIG_FB_MODE_HELPERS=y
875CONFIG_FB_TILEBLITTING=y 842CONFIG_FB_TILEBLITTING=y
843
844#
845# Frame buffer hardware drivers
846#
876# CONFIG_FB_CIRRUS is not set 847# CONFIG_FB_CIRRUS is not set
877# CONFIG_FB_PM2 is not set 848# CONFIG_FB_PM2 is not set
878# CONFIG_FB_CYBER2000 is not set 849# CONFIG_FB_CYBER2000 is not set
@@ -883,17 +854,20 @@ CONFIG_FB_STI=y
883# CONFIG_FB_NVIDIA is not set 854# CONFIG_FB_NVIDIA is not set
884# CONFIG_FB_RIVA is not set 855# CONFIG_FB_RIVA is not set
885# CONFIG_FB_MATROX is not set 856# CONFIG_FB_MATROX is not set
886# CONFIG_FB_RADEON_OLD is not set
887# CONFIG_FB_RADEON is not set 857# CONFIG_FB_RADEON is not set
888# CONFIG_FB_ATY128 is not set 858# CONFIG_FB_ATY128 is not set
889# CONFIG_FB_ATY is not set 859# CONFIG_FB_ATY is not set
860# CONFIG_FB_S3 is not set
890# CONFIG_FB_SAVAGE is not set 861# CONFIG_FB_SAVAGE is not set
891# CONFIG_FB_SIS is not set 862# CONFIG_FB_SIS is not set
892# CONFIG_FB_NEOMAGIC is not set 863# CONFIG_FB_NEOMAGIC is not set
893# CONFIG_FB_KYRO is not set 864# CONFIG_FB_KYRO is not set
894# CONFIG_FB_3DFX is not set 865# CONFIG_FB_3DFX is not set
895# CONFIG_FB_VOODOO1 is not set 866# CONFIG_FB_VOODOO1 is not set
867# CONFIG_FB_VT8623 is not set
896# CONFIG_FB_TRIDENT is not set 868# CONFIG_FB_TRIDENT is not set
869# CONFIG_FB_ARK is not set
870# CONFIG_FB_PM3 is not set
897# CONFIG_FB_VIRTUAL is not set 871# CONFIG_FB_VIRTUAL is not set
898 872
899# 873#
@@ -903,6 +877,7 @@ CONFIG_DUMMY_CONSOLE=y
903CONFIG_DUMMY_CONSOLE_COLUMNS=128 877CONFIG_DUMMY_CONSOLE_COLUMNS=128
904CONFIG_DUMMY_CONSOLE_ROWS=48 878CONFIG_DUMMY_CONSOLE_ROWS=48
905CONFIG_FRAMEBUFFER_CONSOLE=y 879CONFIG_FRAMEBUFFER_CONSOLE=y
880# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
906# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set 881# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
907CONFIG_STI_CONSOLE=y 882CONFIG_STI_CONSOLE=y
908CONFIG_FONTS=y 883CONFIG_FONTS=y
@@ -916,16 +891,11 @@ CONFIG_FONT_8x16=y
916# CONFIG_FONT_SUN8x16 is not set 891# CONFIG_FONT_SUN8x16 is not set
917# CONFIG_FONT_SUN12x22 is not set 892# CONFIG_FONT_SUN12x22 is not set
918# CONFIG_FONT_10x18 is not set 893# CONFIG_FONT_10x18 is not set
919
920#
921# Logo configuration
922#
923CONFIG_LOGO=y 894CONFIG_LOGO=y
924# CONFIG_LOGO_LINUX_MONO is not set 895# CONFIG_LOGO_LINUX_MONO is not set
925# CONFIG_LOGO_LINUX_VGA16 is not set 896# CONFIG_LOGO_LINUX_VGA16 is not set
926# CONFIG_LOGO_LINUX_CLUT224 is not set 897# CONFIG_LOGO_LINUX_CLUT224 is not set
927CONFIG_LOGO_PARISC_CLUT224=y 898CONFIG_LOGO_PARISC_CLUT224=y
928# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
929 899
930# 900#
931# Sound 901# Sound
@@ -938,35 +908,36 @@ CONFIG_SOUND=y
938CONFIG_SND=y 908CONFIG_SND=y
939CONFIG_SND_TIMER=y 909CONFIG_SND_TIMER=y
940CONFIG_SND_PCM=y 910CONFIG_SND_PCM=y
941CONFIG_SND_HWDEP=y
942CONFIG_SND_SEQUENCER=y 911CONFIG_SND_SEQUENCER=y
943# CONFIG_SND_SEQ_DUMMY is not set 912# CONFIG_SND_SEQ_DUMMY is not set
944CONFIG_SND_OSSEMUL=y 913CONFIG_SND_OSSEMUL=y
945CONFIG_SND_MIXER_OSS=y 914CONFIG_SND_MIXER_OSS=y
946CONFIG_SND_PCM_OSS=y 915CONFIG_SND_PCM_OSS=y
916CONFIG_SND_PCM_OSS_PLUGINS=y
947CONFIG_SND_SEQUENCER_OSS=y 917CONFIG_SND_SEQUENCER_OSS=y
948CONFIG_SND_DYNAMIC_MINORS=y 918CONFIG_SND_DYNAMIC_MINORS=y
949CONFIG_SND_SUPPORT_OLD_API=y 919CONFIG_SND_SUPPORT_OLD_API=y
920CONFIG_SND_VERBOSE_PROCFS=y
950# CONFIG_SND_VERBOSE_PRINTK is not set 921# CONFIG_SND_VERBOSE_PRINTK is not set
951# CONFIG_SND_DEBUG is not set 922# CONFIG_SND_DEBUG is not set
952 923
953# 924#
954# Generic devices 925# Generic devices
955# 926#
956CONFIG_SND_OPL3_LIB=y
957CONFIG_SND_AC97_CODEC=y 927CONFIG_SND_AC97_CODEC=y
958CONFIG_SND_AC97_BUS=y
959# CONFIG_SND_DUMMY is not set 928# CONFIG_SND_DUMMY is not set
960# CONFIG_SND_VIRMIDI is not set 929# CONFIG_SND_VIRMIDI is not set
961# CONFIG_SND_MTPAV is not set 930# CONFIG_SND_MTPAV is not set
931# CONFIG_SND_MTS64 is not set
962# CONFIG_SND_SERIAL_U16550 is not set 932# CONFIG_SND_SERIAL_U16550 is not set
963# CONFIG_SND_MPU401 is not set 933# CONFIG_SND_MPU401 is not set
934# CONFIG_SND_PORTMAN2X4 is not set
964 935
965# 936#
966# PCI devices 937# PCI devices
967# 938#
968CONFIG_SND_AD1889=y 939CONFIG_SND_AD1889=y
969CONFIG_SND_AD1889_OPL3=y 940# CONFIG_SND_ALS300 is not set
970# CONFIG_SND_ALI5451 is not set 941# CONFIG_SND_ALI5451 is not set
971# CONFIG_SND_ATIIXP is not set 942# CONFIG_SND_ATIIXP is not set
972# CONFIG_SND_ATIIXP_MODEM is not set 943# CONFIG_SND_ATIIXP_MODEM is not set
@@ -979,6 +950,18 @@ CONFIG_SND_AD1889_OPL3=y
979# CONFIG_SND_CMIPCI is not set 950# CONFIG_SND_CMIPCI is not set
980# CONFIG_SND_CS4281 is not set 951# CONFIG_SND_CS4281 is not set
981# CONFIG_SND_CS46XX is not set 952# CONFIG_SND_CS46XX is not set
953# CONFIG_SND_DARLA20 is not set
954# CONFIG_SND_GINA20 is not set
955# CONFIG_SND_LAYLA20 is not set
956# CONFIG_SND_DARLA24 is not set
957# CONFIG_SND_GINA24 is not set
958# CONFIG_SND_LAYLA24 is not set
959# CONFIG_SND_MONA is not set
960# CONFIG_SND_MIA is not set
961# CONFIG_SND_ECHO3G is not set
962# CONFIG_SND_INDIGO is not set
963# CONFIG_SND_INDIGOIO is not set
964# CONFIG_SND_INDIGODJ is not set
982# CONFIG_SND_EMU10K1 is not set 965# CONFIG_SND_EMU10K1 is not set
983# CONFIG_SND_EMU10K1X is not set 966# CONFIG_SND_EMU10K1X is not set
984# CONFIG_SND_ENS1370 is not set 967# CONFIG_SND_ENS1370 is not set
@@ -998,6 +981,7 @@ CONFIG_SND_AD1889_OPL3=y
998# CONFIG_SND_MIXART is not set 981# CONFIG_SND_MIXART is not set
999# CONFIG_SND_NM256 is not set 982# CONFIG_SND_NM256 is not set
1000# CONFIG_SND_PCXHR is not set 983# CONFIG_SND_PCXHR is not set
984# CONFIG_SND_RIPTIDE is not set
1001# CONFIG_SND_RME32 is not set 985# CONFIG_SND_RME32 is not set
1002# CONFIG_SND_RME96 is not set 986# CONFIG_SND_RME96 is not set
1003# CONFIG_SND_RME9652 is not set 987# CONFIG_SND_RME9652 is not set
@@ -1007,15 +991,19 @@ CONFIG_SND_AD1889_OPL3=y
1007# CONFIG_SND_VIA82XX_MODEM is not set 991# CONFIG_SND_VIA82XX_MODEM is not set
1008# CONFIG_SND_VX222 is not set 992# CONFIG_SND_VX222 is not set
1009# CONFIG_SND_YMFPCI is not set 993# CONFIG_SND_YMFPCI is not set
994# CONFIG_SND_AC97_POWER_SAVE is not set
1010 995
1011# 996#
1012# USB devices 997# USB devices
1013# 998#
1014# CONFIG_SND_USB_AUDIO is not set 999# CONFIG_SND_USB_AUDIO is not set
1000# CONFIG_SND_USB_CAIAQ is not set
1015 1001
1016# 1002#
1017# PCMCIA devices 1003# PCMCIA devices
1018# 1004#
1005# CONFIG_SND_VXPOCKET is not set
1006# CONFIG_SND_PDAUDIOCF is not set
1019 1007
1020# 1008#
1021# GSC devices 1009# GSC devices
@@ -1023,15 +1011,34 @@ CONFIG_SND_AD1889_OPL3=y
1023CONFIG_SND_HARMONY=y 1011CONFIG_SND_HARMONY=y
1024 1012
1025# 1013#
1014# System on Chip audio support
1015#
1016# CONFIG_SND_SOC is not set
1017
1018#
1019# SoC Audio support for SuperH
1020#
1021
1022#
1026# Open Sound System 1023# Open Sound System
1027# 1024#
1028# CONFIG_SOUND_PRIME is not set 1025# CONFIG_SOUND_PRIME is not set
1026CONFIG_AC97_BUS=y
1027CONFIG_HID_SUPPORT=y
1028CONFIG_HID=y
1029CONFIG_HID_DEBUG=y
1029 1030
1030# 1031#
1031# USB support 1032# USB Input Devices
1032# 1033#
1034CONFIG_USB_HID=y
1035# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1036# CONFIG_HID_FF is not set
1037# CONFIG_USB_HIDDEV is not set
1038CONFIG_USB_SUPPORT=y
1033CONFIG_USB_ARCH_HAS_HCD=y 1039CONFIG_USB_ARCH_HAS_HCD=y
1034CONFIG_USB_ARCH_HAS_OHCI=y 1040CONFIG_USB_ARCH_HAS_OHCI=y
1041CONFIG_USB_ARCH_HAS_EHCI=y
1035CONFIG_USB=y 1042CONFIG_USB=y
1036# CONFIG_USB_DEBUG is not set 1043# CONFIG_USB_DEBUG is not set
1037 1044
@@ -1039,7 +1046,7 @@ CONFIG_USB=y
1039# Miscellaneous USB options 1046# Miscellaneous USB options
1040# 1047#
1041CONFIG_USB_DEVICEFS=y 1048CONFIG_USB_DEVICEFS=y
1042# CONFIG_USB_BANDWIDTH is not set 1049CONFIG_USB_DEVICE_CLASS=y
1043# CONFIG_USB_DYNAMIC_MINORS is not set 1050# CONFIG_USB_DYNAMIC_MINORS is not set
1044# CONFIG_USB_OTG is not set 1051# CONFIG_USB_OTG is not set
1045 1052
@@ -1049,15 +1056,16 @@ CONFIG_USB_DEVICEFS=y
1049# CONFIG_USB_EHCI_HCD is not set 1056# CONFIG_USB_EHCI_HCD is not set
1050# CONFIG_USB_ISP116X_HCD is not set 1057# CONFIG_USB_ISP116X_HCD is not set
1051CONFIG_USB_OHCI_HCD=y 1058CONFIG_USB_OHCI_HCD=y
1052# CONFIG_USB_OHCI_BIG_ENDIAN is not set 1059# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
1060# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
1053CONFIG_USB_OHCI_LITTLE_ENDIAN=y 1061CONFIG_USB_OHCI_LITTLE_ENDIAN=y
1054CONFIG_USB_UHCI_HCD=y 1062CONFIG_USB_UHCI_HCD=y
1055# CONFIG_USB_SL811_HCD is not set 1063# CONFIG_USB_SL811_HCD is not set
1064# CONFIG_USB_R8A66597_HCD is not set
1056 1065
1057# 1066#
1058# USB Device Class drivers 1067# USB Device Class drivers
1059# 1068#
1060# CONFIG_OBSOLETE_OSS_USB_DRIVER is not set
1061# CONFIG_USB_ACM is not set 1069# CONFIG_USB_ACM is not set
1062# CONFIG_USB_PRINTER is not set 1070# CONFIG_USB_PRINTER is not set
1063 1071
@@ -1072,52 +1080,10 @@ CONFIG_USB_UHCI_HCD=y
1072# CONFIG_USB_LIBUSUAL is not set 1080# CONFIG_USB_LIBUSUAL is not set
1073 1081
1074# 1082#
1075# USB Input Devices
1076#
1077CONFIG_USB_HID=y
1078CONFIG_USB_HIDINPUT=y
1079# CONFIG_USB_HIDINPUT_POWERBOOK is not set
1080# CONFIG_HID_FF is not set
1081# CONFIG_USB_HIDDEV is not set
1082# CONFIG_USB_AIPTEK is not set
1083# CONFIG_USB_WACOM is not set
1084# CONFIG_USB_ACECAD is not set
1085# CONFIG_USB_KBTAB is not set
1086# CONFIG_USB_POWERMATE is not set
1087# CONFIG_USB_MTOUCH is not set
1088# CONFIG_USB_ITMTOUCH is not set
1089# CONFIG_USB_EGALAX is not set
1090# CONFIG_USB_YEALINK is not set
1091# CONFIG_USB_XPAD is not set
1092# CONFIG_USB_ATI_REMOTE is not set
1093# CONFIG_USB_ATI_REMOTE2 is not set
1094# CONFIG_USB_KEYSPAN_REMOTE is not set
1095# CONFIG_USB_APPLETOUCH is not set
1096
1097#
1098# USB Imaging devices 1083# USB Imaging devices
1099# 1084#
1100# CONFIG_USB_MDC800 is not set 1085# CONFIG_USB_MDC800 is not set
1101# CONFIG_USB_MICROTEK is not set 1086# CONFIG_USB_MICROTEK is not set
1102
1103#
1104# USB Multimedia devices
1105#
1106# CONFIG_USB_DABUSB is not set
1107
1108#
1109# Video4Linux support is needed for USB Multimedia device support
1110#
1111
1112#
1113# USB Network Adapters
1114#
1115# CONFIG_USB_CATC is not set
1116# CONFIG_USB_KAWETH is not set
1117# CONFIG_USB_PEGASUS is not set
1118# CONFIG_USB_RTL8150 is not set
1119# CONFIG_USB_USBNET is not set
1120# CONFIG_USB_ZD1201 is not set
1121CONFIG_USB_MON=y 1087CONFIG_USB_MON=y
1122 1088
1123# 1089#
@@ -1135,16 +1101,22 @@ CONFIG_USB_MON=y
1135# 1101#
1136# CONFIG_USB_EMI62 is not set 1102# CONFIG_USB_EMI62 is not set
1137# CONFIG_USB_EMI26 is not set 1103# CONFIG_USB_EMI26 is not set
1104# CONFIG_USB_ADUTUX is not set
1138# CONFIG_USB_AUERSWALD is not set 1105# CONFIG_USB_AUERSWALD is not set
1139# CONFIG_USB_RIO500 is not set 1106# CONFIG_USB_RIO500 is not set
1140# CONFIG_USB_LEGOTOWER is not set 1107# CONFIG_USB_LEGOTOWER is not set
1141# CONFIG_USB_LCD is not set 1108# CONFIG_USB_LCD is not set
1109# CONFIG_USB_BERRY_CHARGE is not set
1142# CONFIG_USB_LED is not set 1110# CONFIG_USB_LED is not set
1111# CONFIG_USB_CYPRESS_CY7C63 is not set
1143# CONFIG_USB_CYTHERM is not set 1112# CONFIG_USB_CYTHERM is not set
1144# CONFIG_USB_PHIDGETKIT is not set 1113# CONFIG_USB_PHIDGET is not set
1145# CONFIG_USB_PHIDGETSERVO is not set
1146# CONFIG_USB_IDMOUSE is not set 1114# CONFIG_USB_IDMOUSE is not set
1115# CONFIG_USB_FTDI_ELAN is not set
1116# CONFIG_USB_APPLEDISPLAY is not set
1147# CONFIG_USB_LD is not set 1117# CONFIG_USB_LD is not set
1118# CONFIG_USB_TRANCEVIBRATOR is not set
1119# CONFIG_USB_IOWARRIOR is not set
1148# CONFIG_USB_TEST is not set 1120# CONFIG_USB_TEST is not set
1149 1121
1150# 1122#
@@ -1155,20 +1127,29 @@ CONFIG_USB_MON=y
1155# USB Gadget Support 1127# USB Gadget Support
1156# 1128#
1157# CONFIG_USB_GADGET is not set 1129# CONFIG_USB_GADGET is not set
1130# CONFIG_MMC is not set
1131# CONFIG_NEW_LEDS is not set
1132# CONFIG_INFINIBAND is not set
1133# CONFIG_RTC_CLASS is not set
1158 1134
1159# 1135#
1160# MMC/SD Card support 1136# DMA Engine support
1161# 1137#
1162# CONFIG_MMC is not set 1138# CONFIG_DMA_ENGINE is not set
1163 1139
1164# 1140#
1165# InfiniBand support 1141# DMA Clients
1166# 1142#
1167# CONFIG_INFINIBAND is not set
1168 1143
1169# 1144#
1170# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) 1145# DMA Devices
1146#
1147# CONFIG_AUXDISPLAY is not set
1148
1149#
1150# Userspace I/O
1171# 1151#
1152# CONFIG_UIO is not set
1172 1153
1173# 1154#
1174# File systems 1155# File systems
@@ -1178,16 +1159,19 @@ CONFIG_EXT2_FS=y
1178# CONFIG_EXT2_FS_XIP is not set 1159# CONFIG_EXT2_FS_XIP is not set
1179CONFIG_EXT3_FS=y 1160CONFIG_EXT3_FS=y
1180# CONFIG_EXT3_FS_XATTR is not set 1161# CONFIG_EXT3_FS_XATTR is not set
1162# CONFIG_EXT4DEV_FS is not set
1181CONFIG_JBD=y 1163CONFIG_JBD=y
1182# CONFIG_JBD_DEBUG is not set 1164# CONFIG_JBD_DEBUG is not set
1183# CONFIG_REISERFS_FS is not set 1165# CONFIG_REISERFS_FS is not set
1184# CONFIG_JFS_FS is not set 1166# CONFIG_JFS_FS is not set
1185CONFIG_FS_POSIX_ACL=y 1167CONFIG_FS_POSIX_ACL=y
1186# CONFIG_XFS_FS is not set 1168# CONFIG_XFS_FS is not set
1169# CONFIG_GFS2_FS is not set
1187# CONFIG_OCFS2_FS is not set 1170# CONFIG_OCFS2_FS is not set
1188# CONFIG_MINIX_FS is not set 1171# CONFIG_MINIX_FS is not set
1189# CONFIG_ROMFS_FS is not set 1172# CONFIG_ROMFS_FS is not set
1190CONFIG_INOTIFY=y 1173CONFIG_INOTIFY=y
1174CONFIG_INOTIFY_USER=y
1191# CONFIG_QUOTA is not set 1175# CONFIG_QUOTA is not set
1192CONFIG_DNOTIFY=y 1176CONFIG_DNOTIFY=y
1193CONFIG_AUTOFS_FS=y 1177CONFIG_AUTOFS_FS=y
@@ -1217,11 +1201,12 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
1217# 1201#
1218CONFIG_PROC_FS=y 1202CONFIG_PROC_FS=y
1219CONFIG_PROC_KCORE=y 1203CONFIG_PROC_KCORE=y
1204CONFIG_PROC_SYSCTL=y
1220CONFIG_SYSFS=y 1205CONFIG_SYSFS=y
1221CONFIG_TMPFS=y 1206CONFIG_TMPFS=y
1207# CONFIG_TMPFS_POSIX_ACL is not set
1222# CONFIG_HUGETLB_PAGE is not set 1208# CONFIG_HUGETLB_PAGE is not set
1223CONFIG_RAMFS=y 1209CONFIG_RAMFS=y
1224# CONFIG_RELAYFS_FS is not set
1225# CONFIG_CONFIGFS_FS is not set 1210# CONFIG_CONFIGFS_FS is not set
1226 1211
1227# 1212#
@@ -1229,6 +1214,7 @@ CONFIG_RAMFS=y
1229# 1214#
1230# CONFIG_ADFS_FS is not set 1215# CONFIG_ADFS_FS is not set
1231# CONFIG_AFFS_FS is not set 1216# CONFIG_AFFS_FS is not set
1217# CONFIG_ECRYPT_FS is not set
1232# CONFIG_HFS_FS is not set 1218# CONFIG_HFS_FS is not set
1233# CONFIG_HFSPLUS_FS is not set 1219# CONFIG_HFSPLUS_FS is not set
1234# CONFIG_BEFS_FS is not set 1220# CONFIG_BEFS_FS is not set
@@ -1261,6 +1247,7 @@ CONFIG_EXPORTFS=y
1261CONFIG_NFS_COMMON=y 1247CONFIG_NFS_COMMON=y
1262CONFIG_SUNRPC=y 1248CONFIG_SUNRPC=y
1263CONFIG_SUNRPC_GSS=y 1249CONFIG_SUNRPC_GSS=y
1250# CONFIG_SUNRPC_BIND34 is not set
1264CONFIG_RPCSEC_GSS_KRB5=y 1251CONFIG_RPCSEC_GSS_KRB5=y
1265CONFIG_RPCSEC_GSS_SPKM3=m 1252CONFIG_RPCSEC_GSS_SPKM3=m
1266CONFIG_SMB_FS=m 1253CONFIG_SMB_FS=m
@@ -1268,12 +1255,13 @@ CONFIG_SMB_NLS_DEFAULT=y
1268CONFIG_SMB_NLS_REMOTE="cp437" 1255CONFIG_SMB_NLS_REMOTE="cp437"
1269CONFIG_CIFS=m 1256CONFIG_CIFS=m
1270# CONFIG_CIFS_STATS is not set 1257# CONFIG_CIFS_STATS is not set
1258# CONFIG_CIFS_WEAK_PW_HASH is not set
1271# CONFIG_CIFS_XATTR is not set 1259# CONFIG_CIFS_XATTR is not set
1260# CONFIG_CIFS_DEBUG2 is not set
1272# CONFIG_CIFS_EXPERIMENTAL is not set 1261# CONFIG_CIFS_EXPERIMENTAL is not set
1273# CONFIG_NCP_FS is not set 1262# CONFIG_NCP_FS is not set
1274# CONFIG_CODA_FS is not set 1263# CONFIG_CODA_FS is not set
1275# CONFIG_AFS_FS is not set 1264# CONFIG_AFS_FS is not set
1276# CONFIG_9P_FS is not set
1277 1265
1278# 1266#
1279# Partition Types 1267# Partition Types
@@ -1326,6 +1314,11 @@ CONFIG_NLS_KOI8_U=m
1326CONFIG_NLS_UTF8=y 1314CONFIG_NLS_UTF8=y
1327 1315
1328# 1316#
1317# Distributed Lock Manager
1318#
1319# CONFIG_DLM is not set
1320
1321#
1329# Profiling support 1322# Profiling support
1330# 1323#
1331CONFIG_PROFILING=y 1324CONFIG_PROFILING=y
@@ -1335,21 +1328,32 @@ CONFIG_OPROFILE=m
1335# Kernel hacking 1328# Kernel hacking
1336# 1329#
1337# CONFIG_PRINTK_TIME is not set 1330# CONFIG_PRINTK_TIME is not set
1331CONFIG_ENABLE_MUST_CHECK=y
1338CONFIG_MAGIC_SYSRQ=y 1332CONFIG_MAGIC_SYSRQ=y
1333# CONFIG_UNUSED_SYMBOLS is not set
1334# CONFIG_DEBUG_FS is not set
1335CONFIG_HEADERS_CHECK=y
1339CONFIG_DEBUG_KERNEL=y 1336CONFIG_DEBUG_KERNEL=y
1340CONFIG_LOG_BUF_SHIFT=16 1337# CONFIG_DEBUG_SHIRQ is not set
1341CONFIG_DETECT_SOFTLOCKUP=y 1338CONFIG_DETECT_SOFTLOCKUP=y
1339CONFIG_SCHED_DEBUG=y
1342# CONFIG_SCHEDSTATS is not set 1340# CONFIG_SCHEDSTATS is not set
1341# CONFIG_TIMER_STATS is not set
1343# CONFIG_DEBUG_SLAB is not set 1342# CONFIG_DEBUG_SLAB is not set
1344CONFIG_DEBUG_MUTEXES=y 1343# CONFIG_DEBUG_RT_MUTEXES is not set
1344# CONFIG_RT_MUTEX_TESTER is not set
1345# CONFIG_DEBUG_SPINLOCK is not set 1345# CONFIG_DEBUG_SPINLOCK is not set
1346CONFIG_DEBUG_MUTEXES=y
1346# CONFIG_DEBUG_SPINLOCK_SLEEP is not set 1347# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
1348# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
1347# CONFIG_DEBUG_KOBJECT is not set 1349# CONFIG_DEBUG_KOBJECT is not set
1350CONFIG_DEBUG_BUGVERBOSE=y
1348# CONFIG_DEBUG_INFO is not set 1351# CONFIG_DEBUG_INFO is not set
1349# CONFIG_DEBUG_FS is not set
1350# CONFIG_DEBUG_VM is not set 1352# CONFIG_DEBUG_VM is not set
1353# CONFIG_DEBUG_LIST is not set
1351CONFIG_FORCED_INLINING=y 1354CONFIG_FORCED_INLINING=y
1352# CONFIG_RCU_TORTURE_TEST is not set 1355# CONFIG_RCU_TORTURE_TEST is not set
1356# CONFIG_FAULT_INJECTION is not set
1353# CONFIG_DEBUG_RODATA is not set 1357# CONFIG_DEBUG_RODATA is not set
1354 1358
1355# 1359#
@@ -1358,12 +1362,13 @@ CONFIG_FORCED_INLINING=y
1358CONFIG_KEYS=y 1362CONFIG_KEYS=y
1359CONFIG_KEYS_DEBUG_PROC_KEYS=y 1363CONFIG_KEYS_DEBUG_PROC_KEYS=y
1360# CONFIG_SECURITY is not set 1364# CONFIG_SECURITY is not set
1361
1362#
1363# Cryptographic options
1364#
1365CONFIG_CRYPTO=y 1365CONFIG_CRYPTO=y
1366CONFIG_CRYPTO_ALGAPI=y
1367CONFIG_CRYPTO_BLKCIPHER=y
1368CONFIG_CRYPTO_HASH=y
1369CONFIG_CRYPTO_MANAGER=y
1366CONFIG_CRYPTO_HMAC=y 1370CONFIG_CRYPTO_HMAC=y
1371# CONFIG_CRYPTO_XCBC is not set
1367CONFIG_CRYPTO_NULL=m 1372CONFIG_CRYPTO_NULL=m
1368CONFIG_CRYPTO_MD4=m 1373CONFIG_CRYPTO_MD4=m
1369CONFIG_CRYPTO_MD5=y 1374CONFIG_CRYPTO_MD5=y
@@ -1372,9 +1377,18 @@ CONFIG_CRYPTO_SHA256=m
1372CONFIG_CRYPTO_SHA512=m 1377CONFIG_CRYPTO_SHA512=m
1373CONFIG_CRYPTO_WP512=m 1378CONFIG_CRYPTO_WP512=m
1374CONFIG_CRYPTO_TGR192=m 1379CONFIG_CRYPTO_TGR192=m
1380# CONFIG_CRYPTO_GF128MUL is not set
1381# CONFIG_CRYPTO_ECB is not set
1382CONFIG_CRYPTO_CBC=y
1383# CONFIG_CRYPTO_PCBC is not set
1384# CONFIG_CRYPTO_LRW is not set
1385# CONFIG_CRYPTO_XTS is not set
1386# CONFIG_CRYPTO_CRYPTD is not set
1375CONFIG_CRYPTO_DES=y 1387CONFIG_CRYPTO_DES=y
1388# CONFIG_CRYPTO_FCRYPT is not set
1376CONFIG_CRYPTO_BLOWFISH=m 1389CONFIG_CRYPTO_BLOWFISH=m
1377CONFIG_CRYPTO_TWOFISH=m 1390CONFIG_CRYPTO_TWOFISH=m
1391CONFIG_CRYPTO_TWOFISH_COMMON=m
1378CONFIG_CRYPTO_SERPENT=m 1392CONFIG_CRYPTO_SERPENT=m
1379CONFIG_CRYPTO_AES=m 1393CONFIG_CRYPTO_AES=m
1380CONFIG_CRYPTO_CAST5=m 1394CONFIG_CRYPTO_CAST5=m
@@ -1383,21 +1397,28 @@ CONFIG_CRYPTO_TEA=m
1383CONFIG_CRYPTO_ARC4=m 1397CONFIG_CRYPTO_ARC4=m
1384CONFIG_CRYPTO_KHAZAD=m 1398CONFIG_CRYPTO_KHAZAD=m
1385CONFIG_CRYPTO_ANUBIS=m 1399CONFIG_CRYPTO_ANUBIS=m
1400# CONFIG_CRYPTO_SEED is not set
1386CONFIG_CRYPTO_DEFLATE=y 1401CONFIG_CRYPTO_DEFLATE=y
1387CONFIG_CRYPTO_MICHAEL_MIC=m 1402CONFIG_CRYPTO_MICHAEL_MIC=m
1388CONFIG_CRYPTO_CRC32C=m 1403CONFIG_CRYPTO_CRC32C=m
1404# CONFIG_CRYPTO_CAMELLIA is not set
1389CONFIG_CRYPTO_TEST=m 1405CONFIG_CRYPTO_TEST=m
1390 1406# CONFIG_CRYPTO_AUTHENC is not set
1391# 1407# CONFIG_CRYPTO_HW is not set
1392# Hardware crypto devices
1393#
1394 1408
1395# 1409#
1396# Library routines 1410# Library routines
1397# 1411#
1412CONFIG_BITREVERSE=y
1398CONFIG_CRC_CCITT=m 1413CONFIG_CRC_CCITT=m
1399# CONFIG_CRC16 is not set 1414# CONFIG_CRC16 is not set
1415# CONFIG_CRC_ITU_T is not set
1400CONFIG_CRC32=y 1416CONFIG_CRC32=y
1417# CONFIG_CRC7 is not set
1401CONFIG_LIBCRC32C=m 1418CONFIG_LIBCRC32C=m
1402CONFIG_ZLIB_INFLATE=y 1419CONFIG_ZLIB_INFLATE=y
1403CONFIG_ZLIB_DEFLATE=y 1420CONFIG_ZLIB_DEFLATE=y
1421CONFIG_PLIST=y
1422CONFIG_HAS_IOMEM=y
1423CONFIG_HAS_IOPORT=y
1424CONFIG_HAS_DMA=y
diff --git a/arch/parisc/hpux/gate.S b/arch/parisc/hpux/gate.S
index 0b9d5b1e4b37..38a1c1b8d4e8 100644
--- a/arch/parisc/hpux/gate.S
+++ b/arch/parisc/hpux/gate.S
@@ -20,7 +20,7 @@
20 .import hpux_call_table 20 .import hpux_call_table
21 .import hpux_syscall_exit,code 21 .import hpux_syscall_exit,code
22 22
23 .align 4096 23 .align PAGE_SIZE
24ENTRY(hpux_gateway_page) 24ENTRY(hpux_gateway_page)
25 nop 25 nop
26#ifdef CONFIG_64BIT 26#ifdef CONFIG_64BIT
@@ -103,5 +103,5 @@ syscall_nosys:
103 ldo -ENOSYS(%r0),%r28 103 ldo -ENOSYS(%r0),%r28
104ENDPROC(hpux_gateway_page) 104ENDPROC(hpux_gateway_page)
105 105
106 .align 4096 106 .align PAGE_SIZE
107ENTRY(end_hpux_gateway_page) 107ENTRY(end_hpux_gateway_page)
diff --git a/arch/parisc/kernel/asm-offsets.c b/arch/parisc/kernel/asm-offsets.c
index d3b7917a87cb..eaa79bc14d94 100644
--- a/arch/parisc/kernel/asm-offsets.c
+++ b/arch/parisc/kernel/asm-offsets.c
@@ -290,9 +290,6 @@ int main(void)
290 DEFINE(ASM_PTE_ENTRY_SIZE, PTE_ENTRY_SIZE); 290 DEFINE(ASM_PTE_ENTRY_SIZE, PTE_ENTRY_SIZE);
291 DEFINE(ASM_PFN_PTE_SHIFT, PFN_PTE_SHIFT); 291 DEFINE(ASM_PFN_PTE_SHIFT, PFN_PTE_SHIFT);
292 DEFINE(ASM_PT_INITIAL, PT_INITIAL); 292 DEFINE(ASM_PT_INITIAL, PT_INITIAL);
293 DEFINE(ASM_PAGE_SIZE, PAGE_SIZE);
294 DEFINE(ASM_PAGE_SIZE_DIV64, PAGE_SIZE/64);
295 DEFINE(ASM_PAGE_SIZE_DIV128, PAGE_SIZE/128);
296 BLANK(); 293 BLANK();
297 DEFINE(EXCDATA_IP, offsetof(struct exception_data, fault_ip)); 294 DEFINE(EXCDATA_IP, offsetof(struct exception_data, fault_ip));
298 DEFINE(EXCDATA_SPACE, offsetof(struct exception_data, fault_space)); 295 DEFINE(EXCDATA_SPACE, offsetof(struct exception_data, fault_space));
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S
index 42598abf4576..111d47284eac 100644
--- a/arch/parisc/kernel/entry.S
+++ b/arch/parisc/kernel/entry.S
@@ -98,7 +98,6 @@
98 * The "get_stack" macros are responsible for determining the 98 * The "get_stack" macros are responsible for determining the
99 * kernel stack value. 99 * kernel stack value.
100 * 100 *
101 * For Faults:
102 * If sr7 == 0 101 * If sr7 == 0
103 * Already using a kernel stack, so call the 102 * Already using a kernel stack, so call the
104 * get_stack_use_r30 macro to push a pt_regs structure 103 * get_stack_use_r30 macro to push a pt_regs structure
@@ -110,26 +109,6 @@
110 * task pointer pointed to by cr30. Set the stack 109 * task pointer pointed to by cr30. Set the stack
111 * pointer to point to the end of the task structure. 110 * pointer to point to the end of the task structure.
112 * 111 *
113 * For Interrupts:
114 * If sr7 == 0
115 * Already using a kernel stack, check to see if r30
116 * is already pointing to the per processor interrupt
117 * stack. If it is, call the get_stack_use_r30 macro
118 * to push a pt_regs structure on the stack, and store
119 * registers there. Otherwise, call get_stack_use_cr31
120 * to get a pointer to the base of the interrupt stack
121 * and push a pt_regs structure on that stack.
122 * else
123 * Need to set up a kernel stack, so call the
124 * get_stack_use_cr30 macro to set up a pointer
125 * to the pt_regs structure contained within the
126 * task pointer pointed to by cr30. Set the stack
127 * pointer to point to the end of the task structure.
128 * N.B: We don't use the interrupt stack for the
129 * first interrupt from userland, because signals/
130 * resched's are processed when returning to userland,
131 * and we can sleep in those cases.
132 *
133 * Note that we use shadowed registers for temps until 112 * Note that we use shadowed registers for temps until
134 * we can save %r26 and %r29. %r26 is used to preserve 113 * we can save %r26 and %r29. %r26 is used to preserve
135 * %r8 (a shadowed register) which temporarily contained 114 * %r8 (a shadowed register) which temporarily contained
@@ -652,7 +631,7 @@
652 631
653 .text 632 .text
654 633
655 .align 4096 634 .align PAGE_SIZE
656 635
657ENTRY(fault_vector_20) 636ENTRY(fault_vector_20)
658 /* First vector is invalid (0) */ 637 /* First vector is invalid (0) */
@@ -904,7 +883,7 @@ ENDPROC(_switch_to)
904 * 883 *
905 */ 884 */
906 885
907 .align 4096 886 .align PAGE_SIZE
908 887
909ENTRY(syscall_exit_rfi) 888ENTRY(syscall_exit_rfi)
910 mfctl %cr30,%r16 889 mfctl %cr30,%r16
@@ -1086,23 +1065,13 @@ intr_do_preempt:
1086 1065
1087intr_extint: 1066intr_extint:
1088 CMPIB=,n 0,%r16,1f 1067 CMPIB=,n 0,%r16,1f
1068
1089 get_stack_use_cr30 1069 get_stack_use_cr30
1090 b,n 3f 1070 b,n 2f
1091 1071
10921: 10721:
1093#if 0 /* Interrupt Stack support not working yet! */
1094 mfctl %cr31,%r1
1095 copy %r30,%r17
1096 /* FIXME! depi below has hardcoded idea of interrupt stack size (32k)*/
1097 DEPI 0,31,15,%r17
1098 CMPB=,n %r1,%r17,2f
1099 get_stack_use_cr31
1100 b,n 3f
1101#endif
11022:
1103 get_stack_use_r30 1073 get_stack_use_r30
1104 10742:
11053:
1106 save_specials %r29 1075 save_specials %r29
1107 virt_map 1076 virt_map
1108 save_general %r29 1077 save_general %r29
diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S
index 9676c486bb63..a7b8859488bb 100644
--- a/arch/parisc/kernel/head.S
+++ b/arch/parisc/kernel/head.S
@@ -95,7 +95,7 @@ $bss_loop:
95 95
961: 961:
97 stw %r3,0(%r4) 97 stw %r3,0(%r4)
98 ldo (ASM_PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3 98 ldo (PAGE_SIZE >> PxD_VALUE_SHIFT)(%r3),%r3
99 addib,> -1,%r1,1b 99 addib,> -1,%r1,1b
100#if PT_NLEVELS == 3 100#if PT_NLEVELS == 3
101 ldo ASM_PMD_ENTRY_SIZE(%r4),%r4 101 ldo ASM_PMD_ENTRY_SIZE(%r4),%r4
@@ -128,10 +128,6 @@ $pgt_fill_loop:
128 /* And the stack pointer too */ 128 /* And the stack pointer too */
129 ldo THREAD_SZ_ALGN(%r6),%sp 129 ldo THREAD_SZ_ALGN(%r6),%sp
130 130
131 /* And the interrupt stack */
132 load32 interrupt_stack,%r6
133 mtctl %r6,%cr31
134
135#ifdef CONFIG_SMP 131#ifdef CONFIG_SMP
136 /* Set the smp rendevous address into page zero. 132 /* Set the smp rendevous address into page zero.
137 ** It would be safer to do this in init_smp_config() but 133 ** It would be safer to do this in init_smp_config() but
diff --git a/arch/parisc/kernel/hpmc.S b/arch/parisc/kernel/hpmc.S
index 43b41df0b541..2cbf13b3ef11 100644
--- a/arch/parisc/kernel/hpmc.S
+++ b/arch/parisc/kernel/hpmc.S
@@ -55,13 +55,13 @@
55 * IODC requires 7K byte stack. That leaves 1K byte for os_hpmc. 55 * IODC requires 7K byte stack. That leaves 1K byte for os_hpmc.
56 */ 56 */
57 57
58 .align 4096 58 .align PAGE_SIZE
59hpmc_stack: 59hpmc_stack:
60 .block 16384 60 .block 16384
61 61
62#define HPMC_IODC_BUF_SIZE 0x8000 62#define HPMC_IODC_BUF_SIZE 0x8000
63 63
64 .align 4096 64 .align PAGE_SIZE
65hpmc_iodc_buf: 65hpmc_iodc_buf:
66 .block HPMC_IODC_BUF_SIZE 66 .block HPMC_IODC_BUF_SIZE
67 67
diff --git a/arch/parisc/kernel/init_task.c b/arch/parisc/kernel/init_task.c
index 446f98d3fd7b..26198a074d67 100644
--- a/arch/parisc/kernel/init_task.c
+++ b/arch/parisc/kernel/init_task.c
@@ -49,7 +49,6 @@ EXPORT_SYMBOL(init_mm);
49 * way process stacks are handled. This is done by having a special 49 * way process stacks are handled. This is done by having a special
50 * "init_task" linker map entry.. 50 * "init_task" linker map entry..
51 */ 51 */
52unsigned char interrupt_stack[ISTACK_SIZE] __attribute__ ((section("init_istack"), aligned(4096)));
53union thread_union init_thread_union 52union thread_union init_thread_union
54 __attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) = 53 __attribute__((aligned(128))) __attribute__((__section__(".data.init_task"))) =
55 { INIT_THREAD_INFO(init_task) }; 54 { INIT_THREAD_INFO(init_task) };
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S
index 90b240878520..5901092e0196 100644
--- a/arch/parisc/kernel/pacache.S
+++ b/arch/parisc/kernel/pacache.S
@@ -289,7 +289,7 @@ ENTRY(copy_user_page_asm)
289 */ 289 */
290 290
291 ldd 0(%r25), %r19 291 ldd 0(%r25), %r19
292 ldi ASM_PAGE_SIZE_DIV128, %r1 292 ldi (PAGE_SIZE / 128), %r1
293 293
294 ldw 64(%r25), %r0 /* prefetch 1 cacheline ahead */ 294 ldw 64(%r25), %r0 /* prefetch 1 cacheline ahead */
295 ldw 128(%r25), %r0 /* prefetch 2 */ 295 ldw 128(%r25), %r0 /* prefetch 2 */
@@ -355,7 +355,7 @@ ENTRY(copy_user_page_asm)
355 * use ldd/std on a 32 bit kernel. 355 * use ldd/std on a 32 bit kernel.
356 */ 356 */
357 ldw 0(%r25), %r19 357 ldw 0(%r25), %r19
358 ldi ASM_PAGE_SIZE_DIV64, %r1 358 ldi (PAGE_SIZE / 64), %r1
359 359
3601: 3601:
361 ldw 4(%r25), %r20 361 ldw 4(%r25), %r20
@@ -553,7 +553,7 @@ ENTRY(__clear_user_page_asm)
553 pdtlb 0(%r28) 553 pdtlb 0(%r28)
554 554
555#ifdef CONFIG_64BIT 555#ifdef CONFIG_64BIT
556 ldi ASM_PAGE_SIZE_DIV128, %r1 556 ldi (PAGE_SIZE / 128), %r1
557 557
558 /* PREFETCH (Write) has not (yet) been proven to help here */ 558 /* PREFETCH (Write) has not (yet) been proven to help here */
559 /* #define PREFETCHW_OP ldd 256(%0), %r0 */ 559 /* #define PREFETCHW_OP ldd 256(%0), %r0 */
@@ -578,7 +578,7 @@ ENTRY(__clear_user_page_asm)
578 ldo 128(%r28), %r28 578 ldo 128(%r28), %r28
579 579
580#else /* ! CONFIG_64BIT */ 580#else /* ! CONFIG_64BIT */
581 ldi ASM_PAGE_SIZE_DIV64, %r1 581 ldi (PAGE_SIZE / 64), %r1
582 582
5831: 5831:
584 stw %r0, 0(%r28) 584 stw %r0, 0(%r28)
diff --git a/arch/parisc/kernel/parisc_ksyms.c b/arch/parisc/kernel/parisc_ksyms.c
index 7aca704e96f0..671ee5b9950c 100644
--- a/arch/parisc/kernel/parisc_ksyms.c
+++ b/arch/parisc/kernel/parisc_ksyms.c
@@ -122,31 +122,9 @@ EXPORT_SYMBOL($$divI_12);
122EXPORT_SYMBOL($$divI_14); 122EXPORT_SYMBOL($$divI_14);
123EXPORT_SYMBOL($$divI_15); 123EXPORT_SYMBOL($$divI_15);
124 124
125extern void __ashrdi3(void);
126extern void __ashldi3(void);
127extern void __lshrdi3(void);
128extern void __muldi3(void);
129
130EXPORT_SYMBOL(__ashrdi3);
131EXPORT_SYMBOL(__ashldi3);
132EXPORT_SYMBOL(__lshrdi3);
133EXPORT_SYMBOL(__muldi3);
134
135asmlinkage void * __canonicalize_funcptr_for_compare(void *); 125asmlinkage void * __canonicalize_funcptr_for_compare(void *);
136EXPORT_SYMBOL(__canonicalize_funcptr_for_compare); 126EXPORT_SYMBOL(__canonicalize_funcptr_for_compare);
137 127
138#ifdef CONFIG_64BIT
139extern void __divdi3(void);
140extern void __udivdi3(void);
141extern void __umoddi3(void);
142extern void __moddi3(void);
143
144EXPORT_SYMBOL(__divdi3);
145EXPORT_SYMBOL(__udivdi3);
146EXPORT_SYMBOL(__umoddi3);
147EXPORT_SYMBOL(__moddi3);
148#endif
149
150#ifndef CONFIG_64BIT 128#ifndef CONFIG_64BIT
151extern void $$dyncall(void); 129extern void $$dyncall(void);
152EXPORT_SYMBOL($$dyncall); 130EXPORT_SYMBOL($$dyncall);
diff --git a/arch/parisc/kernel/pci-dma.c b/arch/parisc/kernel/pci-dma.c
index 23c1388df1f5..9448d4e91142 100644
--- a/arch/parisc/kernel/pci-dma.c
+++ b/arch/parisc/kernel/pci-dma.c
@@ -25,6 +25,7 @@
25#include <linux/slab.h> 25#include <linux/slab.h>
26#include <linux/string.h> 26#include <linux/string.h>
27#include <linux/types.h> 27#include <linux/types.h>
28#include <linux/scatterlist.h>
28 29
29#include <asm/cacheflush.h> 30#include <asm/cacheflush.h>
30#include <asm/dma.h> /* for DMA_CHUNK_SIZE */ 31#include <asm/dma.h> /* for DMA_CHUNK_SIZE */
@@ -569,11 +570,10 @@ static void *fail_alloc_consistent(struct device *dev, size_t size,
569static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size, 570static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size,
570 dma_addr_t *dma_handle, gfp_t flag) 571 dma_addr_t *dma_handle, gfp_t flag)
571{ 572{
572 void *addr = NULL; 573 void *addr;
573 574
574 /* rely on kmalloc to be cacheline aligned */ 575 addr = (void *)__get_free_pages(flag, get_order(size));
575 addr = kmalloc(size, flag); 576 if (addr)
576 if(addr)
577 *dma_handle = (dma_addr_t)virt_to_phys(addr); 577 *dma_handle = (dma_addr_t)virt_to_phys(addr);
578 578
579 return addr; 579 return addr;
@@ -582,7 +582,7 @@ static void *pa11_dma_alloc_noncoherent(struct device *dev, size_t size,
582static void pa11_dma_free_noncoherent(struct device *dev, size_t size, 582static void pa11_dma_free_noncoherent(struct device *dev, size_t size,
583 void *vaddr, dma_addr_t iova) 583 void *vaddr, dma_addr_t iova)
584{ 584{
585 kfree(vaddr); 585 free_pages((unsigned long)vaddr, get_order(size));
586 return; 586 return;
587} 587}
588 588
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c
index 563df0072dee..507d0ac99f66 100644
--- a/arch/parisc/kernel/pci.c
+++ b/arch/parisc/kernel/pci.c
@@ -194,37 +194,13 @@ void __init pcibios_init_bus(struct pci_bus *bus)
194 pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bridge_ctl); 194 pci_write_config_word(dev, PCI_BRIDGE_CONTROL, bridge_ctl);
195} 195}
196 196
197
198/* KLUGE: Link the child and parent resources - generic PCI didn't */
199static void
200pcibios_link_hba_resources( struct resource *hba_res, struct resource *r)
201{
202 if (!r->parent) {
203 printk(KERN_EMERG "PCI: resource not parented! [%p-%p]\n",
204 (void*) r->start, (void*) r->end);
205 r->parent = hba_res;
206
207 /* reverse link is harder *sigh* */
208 if (r->parent->child) {
209 if (r->parent->sibling) {
210 struct resource *next = r->parent->sibling;
211 while (next->sibling)
212 next = next->sibling;
213 next->sibling = r;
214 } else {
215 r->parent->sibling = r;
216 }
217 } else
218 r->parent->child = r;
219 }
220}
221
222/* called by drivers/pci/setup-bus.c:pci_setup_bridge(). */ 197/* called by drivers/pci/setup-bus.c:pci_setup_bridge(). */
223void __devinit pcibios_resource_to_bus(struct pci_dev *dev, 198void __devinit pcibios_resource_to_bus(struct pci_dev *dev,
224 struct pci_bus_region *region, struct resource *res) 199 struct pci_bus_region *region, struct resource *res)
225{ 200{
226 struct pci_bus *bus = dev->bus; 201#ifdef CONFIG_64BIT
227 struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data); 202 struct pci_hba_data *hba = HBA_DATA(dev->bus->bridge->platform_data);
203#endif
228 204
229 if (res->flags & IORESOURCE_IO) { 205 if (res->flags & IORESOURCE_IO) {
230 /* 206 /*
@@ -243,23 +219,15 @@ void __devinit pcibios_resource_to_bus(struct pci_dev *dev,
243 } 219 }
244 220
245 DBG_RES("pcibios_resource_to_bus(%02x %s [%lx,%lx])\n", 221 DBG_RES("pcibios_resource_to_bus(%02x %s [%lx,%lx])\n",
246 bus->number, res->flags & IORESOURCE_IO ? "IO" : "MEM", 222 dev->bus->number, res->flags & IORESOURCE_IO ? "IO" : "MEM",
247 region->start, region->end); 223 region->start, region->end);
248
249 /* KLUGE ALERT
250 ** if this resource isn't linked to a "parent", then it seems
251 ** to be a child of the HBA - lets link it in.
252 */
253 pcibios_link_hba_resources(&hba->io_space, bus->resource[0]);
254 pcibios_link_hba_resources(&hba->lmmio_space, bus->resource[1]);
255} 224}
256 225
257void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res, 226void pcibios_bus_to_resource(struct pci_dev *dev, struct resource *res,
258 struct pci_bus_region *region) 227 struct pci_bus_region *region)
259{ 228{
260#ifdef CONFIG_64BIT 229#ifdef CONFIG_64BIT
261 struct pci_bus *bus = dev->bus; 230 struct pci_hba_data *hba = HBA_DATA(dev->bus->bridge->platform_data);
262 struct pci_hba_data *hba = HBA_DATA(bus->bridge->platform_data);
263#endif 231#endif
264 232
265 if (res->flags & IORESOURCE_MEM) { 233 if (res->flags & IORESOURCE_MEM) {
diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c
index 549f5484342c..370086fb8333 100644
--- a/arch/parisc/kernel/processor.c
+++ b/arch/parisc/kernel/processor.c
@@ -82,7 +82,12 @@ static int __cpuinit processor_probe(struct parisc_device *dev)
82 unsigned long cpuid; 82 unsigned long cpuid;
83 struct cpuinfo_parisc *p; 83 struct cpuinfo_parisc *p;
84 84
85#ifndef CONFIG_SMP 85#ifdef CONFIG_SMP
86 if (num_online_cpus() >= NR_CPUS) {
87 printk(KERN_INFO "num_online_cpus() >= NR_CPUS\n");
88 return 1;
89 }
90#else
86 if (boot_cpu_data.cpu_count > 0) { 91 if (boot_cpu_data.cpu_count > 0) {
87 printk(KERN_INFO "CONFIG_SMP=n ignoring additional CPUs\n"); 92 printk(KERN_INFO "CONFIG_SMP=n ignoring additional CPUs\n");
88 return 1; 93 return 1;
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index d7bc7bb42c94..85fc7754ec25 100644
--- a/arch/parisc/kernel/smp.c
+++ b/arch/parisc/kernel/smp.c
@@ -432,22 +432,10 @@ smp_cpu_init(int cpunum)
432void __init smp_callin(void) 432void __init smp_callin(void)
433{ 433{
434 int slave_id = cpu_now_booting; 434 int slave_id = cpu_now_booting;
435#if 0
436 void *istack;
437#endif
438 435
439 smp_cpu_init(slave_id); 436 smp_cpu_init(slave_id);
440 preempt_disable(); 437 preempt_disable();
441 438
442#if 0 /* NOT WORKING YET - see entry.S */
443 istack = (void *)__get_free_pages(GFP_KERNEL,ISTACK_ORDER);
444 if (istack == NULL) {
445 printk(KERN_CRIT "Failed to allocate interrupt stack for cpu %d\n",slave_id);
446 BUG();
447 }
448 mtctl(istack,31);
449#endif
450
451 flush_cache_all_local(); /* start with known state */ 439 flush_cache_all_local(); /* start with known state */
452 flush_tlb_all_local(NULL); 440 flush_tlb_all_local(NULL);
453 441
diff --git a/arch/parisc/kernel/sys_parisc32.c b/arch/parisc/kernel/sys_parisc32.c
index 2989c6682bf6..50bbf33ee00c 100644
--- a/arch/parisc/kernel/sys_parisc32.c
+++ b/arch/parisc/kernel/sys_parisc32.c
@@ -473,3 +473,10 @@ long sys32_lookup_dcookie(u32 cookie_high, u32 cookie_low, char __user *buf,
473 return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low, 473 return sys_lookup_dcookie((u64)cookie_high << 32 | cookie_low,
474 buf, len); 474 buf, len);
475} 475}
476
477asmlinkage long compat_sys_fallocate(int fd, int mode, u32 offhi, u32 offlo,
478 u32 lenhi, u32 lenlo)
479{
480 return sys_fallocate(fd, mode, ((loff_t)offhi << 32) | offlo,
481 ((loff_t)lenhi << 32) | lenlo);
482}
diff --git a/arch/parisc/kernel/syscall.S b/arch/parisc/kernel/syscall.S
index 56f6231cb863..69b6eebc466e 100644
--- a/arch/parisc/kernel/syscall.S
+++ b/arch/parisc/kernel/syscall.S
@@ -10,6 +10,7 @@
10#include <asm/asm-offsets.h> 10#include <asm/asm-offsets.h>
11#include <asm/unistd.h> 11#include <asm/unistd.h>
12#include <asm/errno.h> 12#include <asm/errno.h>
13#include <asm/page.h>
13#include <asm/psw.h> 14#include <asm/psw.h>
14#include <asm/thread_info.h> 15#include <asm/thread_info.h>
15#include <asm/assembly.h> 16#include <asm/assembly.h>
@@ -38,7 +39,7 @@
38 * pointers. 39 * pointers.
39 */ 40 */
40 41
41 .align ASM_PAGE_SIZE 42 .align PAGE_SIZE
42ENTRY(linux_gateway_page) 43ENTRY(linux_gateway_page)
43 44
44 /* ADDRESS 0x00 to 0xb0 = 176 bytes / 4 bytes per insn = 44 insns */ 45 /* ADDRESS 0x00 to 0xb0 = 176 bytes / 4 bytes per insn = 44 insns */
@@ -597,7 +598,7 @@ cas_action:
597 598
598 599
599 /* Make sure nothing else is placed on this page */ 600 /* Make sure nothing else is placed on this page */
600 .align ASM_PAGE_SIZE 601 .align PAGE_SIZE
601END(linux_gateway_page) 602END(linux_gateway_page)
602ENTRY(end_linux_gateway_page) 603ENTRY(end_linux_gateway_page)
603 604
@@ -608,7 +609,7 @@ ENTRY(end_linux_gateway_page)
608 609
609 .section .rodata,"a" 610 .section .rodata,"a"
610 611
611 .align ASM_PAGE_SIZE 612 .align PAGE_SIZE
612 /* Light-weight-syscall table */ 613 /* Light-weight-syscall table */
613 /* Start of lws table. */ 614 /* Start of lws table. */
614ENTRY(lws_table) 615ENTRY(lws_table)
@@ -617,13 +618,13 @@ ENTRY(lws_table)
617END(lws_table) 618END(lws_table)
618 /* End of lws table */ 619 /* End of lws table */
619 620
620 .align ASM_PAGE_SIZE 621 .align PAGE_SIZE
621ENTRY(sys_call_table) 622ENTRY(sys_call_table)
622#include "syscall_table.S" 623#include "syscall_table.S"
623END(sys_call_table) 624END(sys_call_table)
624 625
625#ifdef CONFIG_64BIT 626#ifdef CONFIG_64BIT
626 .align ASM_PAGE_SIZE 627 .align PAGE_SIZE
627ENTRY(sys_call_table64) 628ENTRY(sys_call_table64)
628#define SYSCALL_TABLE_64BIT 629#define SYSCALL_TABLE_64BIT
629#include "syscall_table.S" 630#include "syscall_table.S"
@@ -636,7 +637,7 @@ END(sys_call_table64)
636 will use this set of locks 637 will use this set of locks
637 */ 638 */
638 .section .data 639 .section .data
639 .align 4096 640 .align PAGE_SIZE
640ENTRY(lws_lock_start) 641ENTRY(lws_lock_start)
641 /* lws locks */ 642 /* lws locks */
642 .align 16 643 .align 16
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
index 2540786a970f..117438e9eb2a 100644
--- a/arch/parisc/kernel/syscall_table.S
+++ b/arch/parisc/kernel/syscall_table.S
@@ -403,6 +403,7 @@
403 ENTRY_COMP(signalfd) 403 ENTRY_COMP(signalfd)
404 ENTRY_COMP(timerfd) 404 ENTRY_COMP(timerfd)
405 ENTRY_SAME(eventfd) 405 ENTRY_SAME(eventfd)
406 ENTRY_COMP(fallocate) /* 305 */
406 407
407 /* Nothing yet */ 408 /* Nothing yet */
408 409
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index 8b3062a5c812..24be86bba94d 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -189,16 +189,14 @@ static struct clocksource clocksource_cr16 = {
189#ifdef CONFIG_SMP 189#ifdef CONFIG_SMP
190int update_cr16_clocksource(void) 190int update_cr16_clocksource(void)
191{ 191{
192 int change = 0;
193
194 /* since the cr16 cycle counters are not synchronized across CPUs, 192 /* since the cr16 cycle counters are not synchronized across CPUs,
195 we'll check if we should switch to a safe clocksource: */ 193 we'll check if we should switch to a safe clocksource: */
196 if (clocksource_cr16.rating != 0 && num_online_cpus() > 1) { 194 if (clocksource_cr16.rating != 0 && num_online_cpus() > 1) {
197 clocksource_change_rating(&clocksource_cr16, 0); 195 clocksource_change_rating(&clocksource_cr16, 0);
198 change = 1; 196 return 1;
199 } 197 }
200 198
201 return change; 199 return 0;
202} 200}
203#else 201#else
204int update_cr16_clocksource(void) 202int update_cr16_clocksource(void)
diff --git a/arch/parisc/kernel/unwind.c b/arch/parisc/kernel/unwind.c
index cf780cb3b916..701b2d2d8882 100644
--- a/arch/parisc/kernel/unwind.c
+++ b/arch/parisc/kernel/unwind.c
@@ -209,8 +209,8 @@ static int unwind_init(void)
209 209
210static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int frame_size) 210static int unwind_special(struct unwind_frame_info *info, unsigned long pc, int frame_size)
211{ 211{
212 void handle_interruption(int, struct pt_regs *); 212 extern void handle_interruption(int, struct pt_regs *);
213 static unsigned long *hi = (unsigned long)&handle_interruption; 213 static unsigned long *hi = (unsigned long *)&handle_interruption;
214 214
215 if (pc == get_func_addr(hi)) { 215 if (pc == get_func_addr(hi)) {
216 struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN); 216 struct pt_regs *regs = (struct pt_regs *)(info->sp - frame_size - PT_SZ_ALGN);
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S
index ee7a16eb6fdd..40d0ff9b81ab 100644
--- a/arch/parisc/kernel/vmlinux.lds.S
+++ b/arch/parisc/kernel/vmlinux.lds.S
@@ -46,168 +46,211 @@ jiffies = jiffies_64;
46#endif 46#endif
47SECTIONS 47SECTIONS
48{ 48{
49 . = KERNEL_BINARY_TEXT_START;
49 50
50 . = KERNEL_BINARY_TEXT_START; 51 _text = .; /* Text and read-only data */
51 52 .text ALIGN(16) : {
52 _text = .; /* Text and read-only data */ 53 TEXT_TEXT
53 .text ALIGN(16) : { 54 SCHED_TEXT
54 TEXT_TEXT 55 LOCK_TEXT
55 SCHED_TEXT 56 *(.text.do_softirq)
56 LOCK_TEXT 57 *(.text.sys_exit)
57 *(.text.do_softirq) 58 *(.text.do_sigaltstack)
58 *(.text.sys_exit) 59 *(.text.do_fork)
59 *(.text.do_sigaltstack) 60 *(.text.*)
60 *(.text.do_fork) 61 *(.fixup)
61 *(.text.*) 62 *(.lock.text) /* out-of-line lock text */
62 *(.fixup) 63 *(.gnu.warning)
63 *(.lock.text) /* out-of-line lock text */
64 *(.gnu.warning)
65 } = 0 64 } = 0
65 /* End of text section */
66 _etext = .;
66 67
67 _etext = .; /* End of text section */ 68 RODATA
69 BUG_TABLE
68 70
69 RODATA 71 /* writeable */
70 72 /* Make sure this is page aligned so
71 BUG_TABLE 73 * that we can properly leave these
72 74 * as writable
73 /* writeable */ 75 */
74 . = ALIGN(ASM_PAGE_SIZE); /* Make sure this is page aligned so 76 . = ALIGN(PAGE_SIZE);
75 that we can properly leave these 77 data_start = .;
76 as writable */ 78 . = ALIGN(16);
77 data_start = .; 79 /* Exception table */
78 80 __ex_table : {
79 . = ALIGN(16); /* Exception table */ 81 __start___ex_table = .;
80 __start___ex_table = .; 82 *(__ex_table)
81 __ex_table : { *(__ex_table) } 83 __stop___ex_table = .;
82 __stop___ex_table = .; 84 }
83 85
84 NOTES 86 NOTES
85 87
86 __start___unwind = .; /* unwind info */ 88 /* unwind info */
87 .PARISC.unwind : { *(.PARISC.unwind) } 89 .PARISC.unwind : {
88 __stop___unwind = .; 90 __start___unwind = .;
91 *(.PARISC.unwind)
92 __stop___unwind = .;
93 }
89 94
90 /* rarely changed data like cpu maps */ 95 /* rarely changed data like cpu maps */
91 . = ALIGN(16); 96 . = ALIGN(16);
92 .data.read_mostly : { *(.data.read_mostly) } 97 .data.read_mostly : {
98 *(.data.read_mostly)
99 }
93 100
94 . = ALIGN(L1_CACHE_BYTES); 101 . = ALIGN(L1_CACHE_BYTES);
95 .data : { /* Data */ 102 /* Data */
96 DATA_DATA 103 .data : {
97 CONSTRUCTORS 104 DATA_DATA
105 CONSTRUCTORS
98 } 106 }
99 107
100 . = ALIGN(L1_CACHE_BYTES); 108 . = ALIGN(L1_CACHE_BYTES);
101 .data.cacheline_aligned : { *(.data.cacheline_aligned) } 109 .data.cacheline_aligned : {
110 *(.data.cacheline_aligned)
111 }
102 112
103 /* PA-RISC locks requires 16-byte alignment */ 113 /* PA-RISC locks requires 16-byte alignment */
104 . = ALIGN(16); 114 . = ALIGN(16);
105 .data.lock_aligned : { *(.data.lock_aligned) } 115 .data.lock_aligned : {
116 *(.data.lock_aligned)
117 }
106 118
107 . = ALIGN(ASM_PAGE_SIZE); 119 /* nosave data is really only used for software suspend...it's here
108 /* nosave data is really only used for software suspend...it's here 120 * just in case we ever implement it
109 * just in case we ever implement it */ 121 */
110 __nosave_begin = .; 122 . = ALIGN(PAGE_SIZE);
111 .data_nosave : { *(.data.nosave) } 123 __nosave_begin = .;
112 . = ALIGN(ASM_PAGE_SIZE); 124 .data_nosave : {
113 __nosave_end = .; 125 *(.data.nosave)
126 }
127 . = ALIGN(PAGE_SIZE);
128 __nosave_end = .;
114 129
115 _edata = .; /* End of data section */ 130 /* End of data section */
131 _edata = .;
116 132
117 __bss_start = .; /* BSS */ 133 /* BSS */
118 /* page table entries need to be PAGE_SIZE aligned */ 134 __bss_start = .;
119 . = ALIGN(ASM_PAGE_SIZE); 135 /* page table entries need to be PAGE_SIZE aligned */
120 .data.vmpages : { 136 . = ALIGN(PAGE_SIZE);
121 *(.data.vm0.pmd) 137 .data.vmpages : {
122 *(.data.vm0.pgd) 138 *(.data.vm0.pmd)
123 *(.data.vm0.pte) 139 *(.data.vm0.pgd)
140 *(.data.vm0.pte)
124 } 141 }
125 .bss : { *(.bss) *(COMMON) } 142 .bss : {
126 __bss_stop = .; 143 *(.bss)
127 144 *(COMMON)
145 }
146 __bss_stop = .;
128 147
129 /* assembler code expects init_task to be 16k aligned */
130 . = ALIGN(16384); /* init_task */
131 .data.init_task : { *(.data.init_task) }
132 148
133 /* The interrupt stack is currently partially coded, but not yet 149 /* assembler code expects init_task to be 16k aligned */
134 * implemented */ 150 . = ALIGN(16384);
135 . = ALIGN(16384); 151 /* init_task */
136 init_istack : { *(init_istack) } 152 .data.init_task : {
153 *(.data.init_task)
154 }
137 155
138#ifdef CONFIG_64BIT 156#ifdef CONFIG_64BIT
139 . = ALIGN(16); /* Linkage tables */ 157 . = ALIGN(16);
140 .opd : { *(.opd) } PROVIDE (__gp = .); 158 /* Linkage tables */
141 .plt : { *(.plt) } 159 .opd : {
142 .dlt : { *(.dlt) } 160 *(.opd)
161 } PROVIDE (__gp = .);
162 .plt : {
163 *(.plt)
164 }
165 .dlt : {
166 *(.dlt)
167 }
143#endif 168#endif
144 169
145 /* reserve space for interrupt stack by aligning __init* to 16k */ 170 /* reserve space for interrupt stack by aligning __init* to 16k */
146 . = ALIGN(16384); 171 . = ALIGN(16384);
147 __init_begin = .; 172 __init_begin = .;
148 .init.text : { 173 .init.text : {
149 _sinittext = .; 174 _sinittext = .;
150 *(.init.text) 175 *(.init.text)
151 _einittext = .; 176 _einittext = .;
152 } 177 }
153 .init.data : { *(.init.data) } 178 .init.data : {
154 . = ALIGN(16); 179 *(.init.data)
155 __setup_start = .; 180 }
156 .init.setup : { *(.init.setup) } 181 . = ALIGN(16);
157 __setup_end = .; 182 .init.setup : {
158 __initcall_start = .; 183 __setup_start = .;
159 .initcall.init : { 184 *(.init.setup)
160 INITCALLS 185 __setup_end = .;
161 } 186 }
162 __initcall_end = .; 187 .initcall.init : {
163 __con_initcall_start = .; 188 __initcall_start = .;
164 .con_initcall.init : { *(.con_initcall.init) } 189 INITCALLS
165 __con_initcall_end = .; 190 __initcall_end = .;
166 SECURITY_INIT 191 }
167 /* alternate instruction replacement. This is a mechanism x86 uses 192 .con_initcall.init : {
168 * to detect the CPU type and replace generic instruction sequences 193 __con_initcall_start = .;
169 * with CPU specific ones. We don't currently do this in PA, but 194 *(.con_initcall.init)
170 * it seems like a good idea... */ 195 __con_initcall_end = .;
171 . = ALIGN(4); 196 }
172 __alt_instructions = .; 197 SECURITY_INIT
173 .altinstructions : { *(.altinstructions) } 198
174 __alt_instructions_end = .; 199 /* alternate instruction replacement. This is a mechanism x86 uses
175 .altinstr_replacement : { *(.altinstr_replacement) } 200 * to detect the CPU type and replace generic instruction sequences
176 /* .exit.text is discard at runtime, not link time, to deal with references 201 * with CPU specific ones. We don't currently do this in PA, but
177 from .altinstructions and .eh_frame */ 202 * it seems like a good idea...
178 .exit.text : { *(.exit.text) } 203 */
179 .exit.data : { *(.exit.data) } 204 . = ALIGN(4);
205 .altinstructions : {
206 __alt_instructions = .;
207 *(.altinstructions)
208 __alt_instructions_end = .;
209 }
210 .altinstr_replacement : {
211 *(.altinstr_replacement)
212 }
213
214 /* .exit.text is discard at runtime, not link time, to deal with references
215 * from .altinstructions and .eh_frame
216 */
217 .exit.text : {
218 *(.exit.text)
219 }
220 .exit.data : {
221 *(.exit.data)
222 }
180#ifdef CONFIG_BLK_DEV_INITRD 223#ifdef CONFIG_BLK_DEV_INITRD
181 . = ALIGN(ASM_PAGE_SIZE); 224 . = ALIGN(PAGE_SIZE);
182 __initramfs_start = .; 225 .init.ramfs : {
183 .init.ramfs : { *(.init.ramfs) } 226 __initramfs_start = .;
184 __initramfs_end = .; 227 *(.init.ramfs)
228 __initramfs_end = .;
229 }
185#endif 230#endif
186 231
187 PERCPU(ASM_PAGE_SIZE) 232 PERCPU(PAGE_SIZE)
233 . = ALIGN(PAGE_SIZE);
234 __init_end = .;
235 /* freed after init ends here */
236 _end = . ;
188 237
189 . = ALIGN(ASM_PAGE_SIZE); 238 /* Sections to be discarded */
190 __init_end = .; 239 /DISCARD/ : {
191 /* freed after init ends here */ 240 *(.exitcall.exit)
192
193 _end = . ;
194
195 /* Sections to be discarded */
196 /DISCARD/ : {
197 *(.exitcall.exit)
198#ifdef CONFIG_64BIT 241#ifdef CONFIG_64BIT
199 /* temporary hack until binutils is fixed to not emit these 242 /* temporary hack until binutils is fixed to not emit these
200 for static binaries */ 243 * for static binaries
201 *(.interp) 244 */
202 *(.dynsym) 245 *(.interp)
203 *(.dynstr) 246 *(.dynsym)
204 *(.dynamic) 247 *(.dynstr)
205 *(.hash) 248 *(.dynamic)
206 *(.gnu.hash) 249 *(.hash)
250 *(.gnu.hash)
207#endif 251#endif
208 } 252 }
209 253
210 STABS_DEBUG 254 STABS_DEBUG
211 .note 0 : { *(.note) } 255 .note 0 : { *(.note) }
212
213} 256}
diff --git a/arch/parisc/lib/Makefile b/arch/parisc/lib/Makefile
index 5f2e6904d14a..7ce406c7daf5 100644
--- a/arch/parisc/lib/Makefile
+++ b/arch/parisc/lib/Makefile
@@ -4,4 +4,4 @@
4 4
5lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o 5lib-y := lusercopy.o bitops.o checksum.o io.o memset.o fixup.o memcpy.o
6 6
7obj-y := iomap.o 7obj-y := libgcc/ milli/ iomap.o
diff --git a/arch/parisc/lib/libgcc/Makefile b/arch/parisc/lib/libgcc/Makefile
new file mode 100644
index 000000000000..b67a85ad9c87
--- /dev/null
+++ b/arch/parisc/lib/libgcc/Makefile
@@ -0,0 +1,4 @@
1obj-y := __ashldi3.o __ashrdi3.o __clzsi2.o __divdi3.o __divsi3.o \
2 __lshrdi3.o __moddi3.o __modsi3.o __udivdi3.o \
3 __udivmoddi4.o __udivmodsi4.o __udivsi3.o \
4 __umoddi3.o __umodsi3.o __muldi3.o __umulsidi3.o
diff --git a/arch/parisc/lib/libgcc/__ashldi3.c b/arch/parisc/lib/libgcc/__ashldi3.c
new file mode 100644
index 000000000000..a14a257abb2b
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__ashldi3.c
@@ -0,0 +1,19 @@
1#include "libgcc.h"
2
3u64 __ashldi3(u64 v, int cnt)
4{
5 int c = cnt & 31;
6 u32 vl = (u32) v;
7 u32 vh = (u32) (v >> 32);
8
9 if (cnt & 32) {
10 vh = (vl << c);
11 vl = 0;
12 } else {
13 vh = (vh << c) + (vl >> (32 - c));
14 vl = (vl << c);
15 }
16
17 return ((u64) vh << 32) + vl;
18}
19EXPORT_SYMBOL(__ashldi3);
diff --git a/arch/parisc/lib/libgcc/__ashrdi3.c b/arch/parisc/lib/libgcc/__ashrdi3.c
new file mode 100644
index 000000000000..8636a5aa4f77
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__ashrdi3.c
@@ -0,0 +1,19 @@
1#include "libgcc.h"
2
3u64 __ashrdi3(u64 v, int cnt)
4{
5 int c = cnt & 31;
6 u32 vl = (u32) v;
7 u32 vh = (u32) (v >> 32);
8
9 if (cnt & 32) {
10 vl = ((s32) vh >> c);
11 vh = (s32) vh >> 31;
12 } else {
13 vl = (vl >> c) + (vh << (32 - c));
14 vh = ((s32) vh >> c);
15 }
16
17 return ((u64) vh << 32) + vl;
18}
19EXPORT_SYMBOL(__ashrdi3);
diff --git a/arch/parisc/lib/libgcc/__clzsi2.c b/arch/parisc/lib/libgcc/__clzsi2.c
new file mode 100644
index 000000000000..a7aa2f55a9c6
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__clzsi2.c
@@ -0,0 +1,30 @@
1#include "libgcc.h"
2
3u32 __clzsi2(u32 v)
4{
5 int p = 31;
6
7 if (v & 0xffff0000) {
8 p -= 16;
9 v >>= 16;
10 }
11 if (v & 0xff00) {
12 p -= 8;
13 v >>= 8;
14 }
15 if (v & 0xf0) {
16 p -= 4;
17 v >>= 4;
18 }
19 if (v & 0xc) {
20 p -= 2;
21 v >>= 2;
22 }
23 if (v & 0x2) {
24 p -= 1;
25 v >>= 1;
26 }
27
28 return p;
29}
30EXPORT_SYMBOL(__clzsi2);
diff --git a/arch/parisc/lib/libgcc/__divdi3.c b/arch/parisc/lib/libgcc/__divdi3.c
new file mode 100644
index 000000000000..f23c6fe2838b
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__divdi3.c
@@ -0,0 +1,23 @@
1#include "libgcc.h"
2
3s64 __divdi3(s64 num, s64 den)
4{
5 int minus = 0;
6 s64 v;
7
8 if (num < 0) {
9 num = -num;
10 minus = 1;
11 }
12 if (den < 0) {
13 den = -den;
14 minus ^= 1;
15 }
16
17 v = __udivmoddi4(num, den, NULL);
18 if (minus)
19 v = -v;
20
21 return v;
22}
23EXPORT_SYMBOL(__divdi3);
diff --git a/arch/parisc/lib/libgcc/__divsi3.c b/arch/parisc/lib/libgcc/__divsi3.c
new file mode 100644
index 000000000000..730fb530680d
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__divsi3.c
@@ -0,0 +1,23 @@
1#include "libgcc.h"
2
3s32 __divsi3(s32 num, s32 den)
4{
5 int minus = 0;
6 s32 v;
7
8 if (num < 0) {
9 num = -num;
10 minus = 1;
11 }
12 if (den < 0) {
13 den = -den;
14 minus ^= 1;
15 }
16
17 v = __udivmodsi4(num, den, NULL);
18 if (minus)
19 v = -v;
20
21 return v;
22}
23EXPORT_SYMBOL(__divsi3);
diff --git a/arch/parisc/lib/libgcc/__lshrdi3.c b/arch/parisc/lib/libgcc/__lshrdi3.c
new file mode 100644
index 000000000000..4a820708ec57
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__lshrdi3.c
@@ -0,0 +1,19 @@
1#include "libgcc.h"
2
3u64 __lshrdi3(u64 v, int cnt)
4{
5 int c = cnt & 31;
6 u32 vl = (u32) v;
7 u32 vh = (u32) (v >> 32);
8
9 if (cnt & 32) {
10 vl = (vh >> c);
11 vh = 0;
12 } else {
13 vl = (vl >> c) + (vh << (32 - c));
14 vh = (vh >> c);
15 }
16
17 return ((u64) vh << 32) + vl;
18}
19EXPORT_SYMBOL(__lshrdi3);
diff --git a/arch/parisc/lib/libgcc/__moddi3.c b/arch/parisc/lib/libgcc/__moddi3.c
new file mode 100644
index 000000000000..ed64bbafc989
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__moddi3.c
@@ -0,0 +1,23 @@
1#include "libgcc.h"
2
3s64 __moddi3(s64 num, s64 den)
4{
5 int minus = 0;
6 s64 v;
7
8 if (num < 0) {
9 num = -num;
10 minus = 1;
11 }
12 if (den < 0) {
13 den = -den;
14 minus ^= 1;
15 }
16
17 (void)__udivmoddi4(num, den, (u64 *) & v);
18 if (minus)
19 v = -v;
20
21 return v;
22}
23EXPORT_SYMBOL(__moddi3);
diff --git a/arch/parisc/lib/libgcc/__modsi3.c b/arch/parisc/lib/libgcc/__modsi3.c
new file mode 100644
index 000000000000..62f773efaeea
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__modsi3.c
@@ -0,0 +1,23 @@
1#include "libgcc.h"
2
3s32 __modsi3(s32 num, s32 den)
4{
5 int minus = 0;
6 s32 v;
7
8 if (num < 0) {
9 num = -num;
10 minus = 1;
11 }
12 if (den < 0) {
13 den = -den;
14 minus ^= 1;
15 }
16
17 (void)__udivmodsi4(num, den, (u32 *) & v);
18 if (minus)
19 v = -v;
20
21 return v;
22}
23EXPORT_SYMBOL(__modsi3);
diff --git a/arch/parisc/lib/libgcc/__muldi3.c b/arch/parisc/lib/libgcc/__muldi3.c
new file mode 100644
index 000000000000..3308abdd5580
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__muldi3.c
@@ -0,0 +1,22 @@
1#include "libgcc.h"
2
3union DWunion {
4 struct {
5 s32 high;
6 s32 low;
7 } s;
8 s64 ll;
9};
10
11s64 __muldi3(s64 u, s64 v)
12{
13 const union DWunion uu = { .ll = u };
14 const union DWunion vv = { .ll = v };
15 union DWunion w = { .ll = __umulsidi3(uu.s.low, vv.s.low) };
16
17 w.s.high += ((u32)uu.s.low * (u32)vv.s.high
18 + (u32)uu.s.high * (u32)vv.s.low);
19
20 return w.ll;
21}
22EXPORT_SYMBOL(__muldi3);
diff --git a/arch/parisc/lib/libgcc/__udivdi3.c b/arch/parisc/lib/libgcc/__udivdi3.c
new file mode 100644
index 000000000000..740023d690f5
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__udivdi3.c
@@ -0,0 +1,7 @@
1#include "libgcc.h"
2
3u64 __udivdi3(u64 num, u64 den)
4{
5 return __udivmoddi4(num, den, NULL);
6}
7EXPORT_SYMBOL(__udivdi3);
diff --git a/arch/parisc/lib/libgcc/__udivmoddi4.c b/arch/parisc/lib/libgcc/__udivmoddi4.c
new file mode 100644
index 000000000000..2df0caa5a7d8
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__udivmoddi4.c
@@ -0,0 +1,31 @@
1#include "libgcc.h"
2
3u64 __udivmoddi4(u64 num, u64 den, u64 * rem_p)
4{
5 u64 quot = 0, qbit = 1;
6
7 if (den == 0) {
8 BUG();
9 }
10
11 /* Left-justify denominator and count shift */
12 while ((s64) den >= 0) {
13 den <<= 1;
14 qbit <<= 1;
15 }
16
17 while (qbit) {
18 if (den <= num) {
19 num -= den;
20 quot += qbit;
21 }
22 den >>= 1;
23 qbit >>= 1;
24 }
25
26 if (rem_p)
27 *rem_p = num;
28
29 return quot;
30}
31EXPORT_SYMBOL(__udivmoddi4);
diff --git a/arch/parisc/lib/libgcc/__udivmodsi4.c b/arch/parisc/lib/libgcc/__udivmodsi4.c
new file mode 100644
index 000000000000..2a2fc28b2026
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__udivmodsi4.c
@@ -0,0 +1,31 @@
1#include "libgcc.h"
2
3u32 __udivmodsi4(u32 num, u32 den, u32 * rem_p)
4{
5 u32 quot = 0, qbit = 1;
6
7 if (den == 0) {
8 BUG();
9 }
10
11 /* Left-justify denominator and count shift */
12 while ((s32) den >= 0) {
13 den <<= 1;
14 qbit <<= 1;
15 }
16
17 while (qbit) {
18 if (den <= num) {
19 num -= den;
20 quot += qbit;
21 }
22 den >>= 1;
23 qbit >>= 1;
24 }
25
26 if (rem_p)
27 *rem_p = num;
28
29 return quot;
30}
31EXPORT_SYMBOL(__udivmodsi4);
diff --git a/arch/parisc/lib/libgcc/__udivsi3.c b/arch/parisc/lib/libgcc/__udivsi3.c
new file mode 100644
index 000000000000..756a44164e90
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__udivsi3.c
@@ -0,0 +1,7 @@
1#include "libgcc.h"
2
3u32 __udivsi3(u32 num, u32 den)
4{
5 return __udivmodsi4(num, den, NULL);
6}
7EXPORT_SYMBOL(__udivsi3);
diff --git a/arch/parisc/lib/libgcc/__umoddi3.c b/arch/parisc/lib/libgcc/__umoddi3.c
new file mode 100644
index 000000000000..ac744e948bc1
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__umoddi3.c
@@ -0,0 +1,10 @@
1#include "libgcc.h"
2
3u64 __umoddi3(u64 num, u64 den)
4{
5 u64 v;
6
7 (void)__udivmoddi4(num, den, &v);
8 return v;
9}
10EXPORT_SYMBOL(__umoddi3);
diff --git a/arch/parisc/lib/libgcc/__umodsi3.c b/arch/parisc/lib/libgcc/__umodsi3.c
new file mode 100644
index 000000000000..51f55aa89f9a
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__umodsi3.c
@@ -0,0 +1,10 @@
1#include "libgcc.h"
2
3u32 __umodsi3(u32 num, u32 den)
4{
5 u32 v;
6
7 (void)__udivmodsi4(num, den, &v);
8 return v;
9}
10EXPORT_SYMBOL(__umodsi3);
diff --git a/arch/parisc/lib/libgcc/__umulsidi3.c b/arch/parisc/lib/libgcc/__umulsidi3.c
new file mode 100644
index 000000000000..396f669164d4
--- /dev/null
+++ b/arch/parisc/lib/libgcc/__umulsidi3.c
@@ -0,0 +1,46 @@
1#include "libgcc.h"
2
3#define __ll_B ((u32) 1 << (32 / 2))
4#define __ll_lowpart(t) ((u32) (t) & (__ll_B - 1))
5#define __ll_highpart(t) ((u32) (t) >> 16)
6
7#define umul_ppmm(w1, w0, u, v) \
8 do { \
9 u32 __x0, __x1, __x2, __x3; \
10 u16 __ul, __vl, __uh, __vh; \
11 \
12 __ul = __ll_lowpart (u); \
13 __uh = __ll_highpart (u); \
14 __vl = __ll_lowpart (v); \
15 __vh = __ll_highpart (v); \
16 \
17 __x0 = (u32) __ul * __vl; \
18 __x1 = (u32) __ul * __vh; \
19 __x2 = (u32) __uh * __vl; \
20 __x3 = (u32) __uh * __vh; \
21 \
22 __x1 += __ll_highpart (__x0);/* this can't give carry */ \
23 __x1 += __x2; /* but this indeed can */ \
24 if (__x1 < __x2) /* did we get it? */ \
25 __x3 += __ll_B; /* yes, add it in the proper pos. */ \
26 \
27 (w1) = __x3 + __ll_highpart (__x1); \
28 (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \
29 } while (0)
30
31union DWunion {
32 struct {
33 s32 high;
34 s32 low;
35 } s;
36 s64 ll;
37};
38
39u64 __umulsidi3(u32 u, u32 v)
40{
41 union DWunion __w;
42
43 umul_ppmm(__w.s.high, __w.s.low, u, v);
44
45 return __w.ll;
46}
diff --git a/arch/parisc/lib/libgcc/libgcc.h b/arch/parisc/lib/libgcc/libgcc.h
new file mode 100644
index 000000000000..5a6f7a510fbd
--- /dev/null
+++ b/arch/parisc/lib/libgcc/libgcc.h
@@ -0,0 +1,32 @@
1#ifndef _PA_LIBGCC_H_
2#define _PA_LIBGCC_H_
3
4#include <linux/types.h>
5#include <linux/module.h>
6
7/* Cribbed from klibc/libgcc/ */
8u64 __ashldi3(u64 v, int cnt);
9u64 __ashrdi3(u64 v, int cnt);
10
11u32 __clzsi2(u32 v);
12
13s64 __divdi3(s64 num, s64 den);
14s32 __divsi3(s32 num, s32 den);
15
16u64 __lshrdi3(u64 v, int cnt);
17
18s64 __moddi3(s64 num, s64 den);
19s32 __modsi3(s32 num, s32 den);
20
21u64 __udivdi3(u64 num, u64 den);
22u32 __udivsi3(u32 num, u32 den);
23
24u64 __udivmoddi4(u64 num, u64 den, u64 * rem_p);
25u32 __udivmodsi4(u32 num, u32 den, u32 * rem_p);
26
27u64 __umulsidi3(u32 u, u32 v);
28
29u64 __umoddi3(u64 num, u64 den);
30u32 __umodsi3(u32 num, u32 den);
31
32#endif /*_PA_LIBGCC_H_*/
diff --git a/arch/parisc/lib/memcpy.c b/arch/parisc/lib/memcpy.c
index 2c43ebe99a9c..d22042d33100 100644
--- a/arch/parisc/lib/memcpy.c
+++ b/arch/parisc/lib/memcpy.c
@@ -139,12 +139,12 @@ DECLARE_PER_CPU(struct exception_data, exception_data);
139#define stw(_s,_t,_o,_a,_e) def_store_insn(stw,"r",_s,_t,_o,_a,_e) 139#define stw(_s,_t,_o,_a,_e) def_store_insn(stw,"r",_s,_t,_o,_a,_e)
140 140
141#ifdef CONFIG_PREFETCH 141#ifdef CONFIG_PREFETCH
142extern inline void prefetch_src(const void *addr) 142static inline void prefetch_src(const void *addr)
143{ 143{
144 __asm__("ldw 0(" s_space ",%0), %%r0" : : "r" (addr)); 144 __asm__("ldw 0(" s_space ",%0), %%r0" : : "r" (addr));
145} 145}
146 146
147extern inline void prefetch_dst(const void *addr) 147static inline void prefetch_dst(const void *addr)
148{ 148{
149 __asm__("ldd 0(" d_space ",%0), %%r0" : : "r" (addr)); 149 __asm__("ldd 0(" d_space ",%0), %%r0" : : "r" (addr));
150} 150}
diff --git a/arch/parisc/lib/milli/Makefile b/arch/parisc/lib/milli/Makefile
new file mode 100644
index 000000000000..9b24e9b1f3cb
--- /dev/null
+++ b/arch/parisc/lib/milli/Makefile
@@ -0,0 +1 @@
obj-y := dyncall.o divI.o divU.o remI.o remU.o div_const.o mulI.o
diff --git a/arch/parisc/lib/milli/divI.S b/arch/parisc/lib/milli/divI.S
new file mode 100644
index 000000000000..ac106b7b6f24
--- /dev/null
+++ b/arch/parisc/lib/milli/divI.S
@@ -0,0 +1,254 @@
1/* 32 and 64-bit millicode, original author Hewlett-Packard
2 adapted for gcc by Paul Bame <bame@debian.org>
3 and Alan Modra <alan@linuxcare.com.au>.
4
5 Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of GCC and is released under the terms of
8 of the GNU General Public License as published by the Free Software
9 Foundation; either version 2, or (at your option) any later version.
10 See the file COPYING in the top-level GCC source directory for a copy
11 of the license. */
12
13#include "milli.h"
14
15#ifdef L_divI
16/* ROUTINES: $$divI, $$divoI
17
18 Single precision divide for signed binary integers.
19
20 The quotient is truncated towards zero.
21 The sign of the quotient is the XOR of the signs of the dividend and
22 divisor.
23 Divide by zero is trapped.
24 Divide of -2**31 by -1 is trapped for $$divoI but not for $$divI.
25
26 INPUT REGISTERS:
27 . arg0 == dividend
28 . arg1 == divisor
29 . mrp == return pc
30 . sr0 == return space when called externally
31
32 OUTPUT REGISTERS:
33 . arg0 = undefined
34 . arg1 = undefined
35 . ret1 = quotient
36
37 OTHER REGISTERS AFFECTED:
38 . r1 = undefined
39
40 SIDE EFFECTS:
41 . Causes a trap under the following conditions:
42 . divisor is zero (traps with ADDIT,= 0,25,0)
43 . dividend==-2**31 and divisor==-1 and routine is $$divoI
44 . (traps with ADDO 26,25,0)
45 . Changes memory at the following places:
46 . NONE
47
48 PERMISSIBLE CONTEXT:
49 . Unwindable.
50 . Suitable for internal or external millicode.
51 . Assumes the special millicode register conventions.
52
53 DISCUSSION:
54 . Branchs to other millicode routines using BE
55 . $$div_# for # being 2,3,4,5,6,7,8,9,10,12,14,15
56 .
57 . For selected divisors, calls a divide by constant routine written by
58 . Karl Pettis. Eligible divisors are 1..15 excluding 11 and 13.
59 .
60 . The only overflow case is -2**31 divided by -1.
61 . Both routines return -2**31 but only $$divoI traps. */
62
63RDEFINE(temp,r1)
64RDEFINE(retreg,ret1) /* r29 */
65RDEFINE(temp1,arg0)
66 SUBSPA_MILLI_DIV
67 ATTR_MILLI
68 .import $$divI_2,millicode
69 .import $$divI_3,millicode
70 .import $$divI_4,millicode
71 .import $$divI_5,millicode
72 .import $$divI_6,millicode
73 .import $$divI_7,millicode
74 .import $$divI_8,millicode
75 .import $$divI_9,millicode
76 .import $$divI_10,millicode
77 .import $$divI_12,millicode
78 .import $$divI_14,millicode
79 .import $$divI_15,millicode
80 .export $$divI,millicode
81 .export $$divoI,millicode
82 .proc
83 .callinfo millicode
84 .entry
85GSYM($$divoI)
86 comib,=,n -1,arg1,LREF(negative1) /* when divisor == -1 */
87GSYM($$divI)
88 ldo -1(arg1),temp /* is there at most one bit set ? */
89 and,<> arg1,temp,r0 /* if not, don't use power of 2 divide */
90 addi,> 0,arg1,r0 /* if divisor > 0, use power of 2 divide */
91 b,n LREF(neg_denom)
92LSYM(pow2)
93 addi,>= 0,arg0,retreg /* if numerator is negative, add the */
94 add arg0,temp,retreg /* (denominaotr -1) to correct for shifts */
95 extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */
96 extrs retreg,15,16,retreg /* retreg = retreg >> 16 */
97 or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */
98 ldi 0xcc,temp1 /* setup 0xcc in temp1 */
99 extru,= arg1,23,8,temp /* test denominator with 0xff00 */
100 extrs retreg,23,24,retreg /* retreg = retreg >> 8 */
101 or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */
102 ldi 0xaa,temp /* setup 0xaa in temp */
103 extru,= arg1,27,4,r0 /* test denominator with 0xf0 */
104 extrs retreg,27,28,retreg /* retreg = retreg >> 4 */
105 and,= arg1,temp1,r0 /* test denominator with 0xcc */
106 extrs retreg,29,30,retreg /* retreg = retreg >> 2 */
107 and,= arg1,temp,r0 /* test denominator with 0xaa */
108 extrs retreg,30,31,retreg /* retreg = retreg >> 1 */
109 MILLIRETN
110LSYM(neg_denom)
111 addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power of 2 */
112 b,n LREF(regular_seq)
113 sub r0,arg1,temp /* make denominator positive */
114 comb,=,n arg1,temp,LREF(regular_seq) /* test against 0x80000000 and 0 */
115 ldo -1(temp),retreg /* is there at most one bit set ? */
116 and,= temp,retreg,r0 /* if so, the denominator is power of 2 */
117 b,n LREF(regular_seq)
118 sub r0,arg0,retreg /* negate numerator */
119 comb,=,n arg0,retreg,LREF(regular_seq) /* test against 0x80000000 */
120 copy retreg,arg0 /* set up arg0, arg1 and temp */
121 copy temp,arg1 /* before branching to pow2 */
122 b LREF(pow2)
123 ldo -1(arg1),temp
124LSYM(regular_seq)
125 comib,>>=,n 15,arg1,LREF(small_divisor)
126 add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */
127LSYM(normal)
128 subi 0,retreg,retreg /* make it positive */
129 sub 0,arg1,temp /* clear carry, */
130 /* negate the divisor */
131 ds 0,temp,0 /* set V-bit to the comple- */
132 /* ment of the divisor sign */
133 add retreg,retreg,retreg /* shift msb bit into carry */
134 ds r0,arg1,temp /* 1st divide step, if no carry */
135 addc retreg,retreg,retreg /* shift retreg with/into carry */
136 ds temp,arg1,temp /* 2nd divide step */
137 addc retreg,retreg,retreg /* shift retreg with/into carry */
138 ds temp,arg1,temp /* 3rd divide step */
139 addc retreg,retreg,retreg /* shift retreg with/into carry */
140 ds temp,arg1,temp /* 4th divide step */
141 addc retreg,retreg,retreg /* shift retreg with/into carry */
142 ds temp,arg1,temp /* 5th divide step */
143 addc retreg,retreg,retreg /* shift retreg with/into carry */
144 ds temp,arg1,temp /* 6th divide step */
145 addc retreg,retreg,retreg /* shift retreg with/into carry */
146 ds temp,arg1,temp /* 7th divide step */
147 addc retreg,retreg,retreg /* shift retreg with/into carry */
148 ds temp,arg1,temp /* 8th divide step */
149 addc retreg,retreg,retreg /* shift retreg with/into carry */
150 ds temp,arg1,temp /* 9th divide step */
151 addc retreg,retreg,retreg /* shift retreg with/into carry */
152 ds temp,arg1,temp /* 10th divide step */
153 addc retreg,retreg,retreg /* shift retreg with/into carry */
154 ds temp,arg1,temp /* 11th divide step */
155 addc retreg,retreg,retreg /* shift retreg with/into carry */
156 ds temp,arg1,temp /* 12th divide step */
157 addc retreg,retreg,retreg /* shift retreg with/into carry */
158 ds temp,arg1,temp /* 13th divide step */
159 addc retreg,retreg,retreg /* shift retreg with/into carry */
160 ds temp,arg1,temp /* 14th divide step */
161 addc retreg,retreg,retreg /* shift retreg with/into carry */
162 ds temp,arg1,temp /* 15th divide step */
163 addc retreg,retreg,retreg /* shift retreg with/into carry */
164 ds temp,arg1,temp /* 16th divide step */
165 addc retreg,retreg,retreg /* shift retreg with/into carry */
166 ds temp,arg1,temp /* 17th divide step */
167 addc retreg,retreg,retreg /* shift retreg with/into carry */
168 ds temp,arg1,temp /* 18th divide step */
169 addc retreg,retreg,retreg /* shift retreg with/into carry */
170 ds temp,arg1,temp /* 19th divide step */
171 addc retreg,retreg,retreg /* shift retreg with/into carry */
172 ds temp,arg1,temp /* 20th divide step */
173 addc retreg,retreg,retreg /* shift retreg with/into carry */
174 ds temp,arg1,temp /* 21st divide step */
175 addc retreg,retreg,retreg /* shift retreg with/into carry */
176 ds temp,arg1,temp /* 22nd divide step */
177 addc retreg,retreg,retreg /* shift retreg with/into carry */
178 ds temp,arg1,temp /* 23rd divide step */
179 addc retreg,retreg,retreg /* shift retreg with/into carry */
180 ds temp,arg1,temp /* 24th divide step */
181 addc retreg,retreg,retreg /* shift retreg with/into carry */
182 ds temp,arg1,temp /* 25th divide step */
183 addc retreg,retreg,retreg /* shift retreg with/into carry */
184 ds temp,arg1,temp /* 26th divide step */
185 addc retreg,retreg,retreg /* shift retreg with/into carry */
186 ds temp,arg1,temp /* 27th divide step */
187 addc retreg,retreg,retreg /* shift retreg with/into carry */
188 ds temp,arg1,temp /* 28th divide step */
189 addc retreg,retreg,retreg /* shift retreg with/into carry */
190 ds temp,arg1,temp /* 29th divide step */
191 addc retreg,retreg,retreg /* shift retreg with/into carry */
192 ds temp,arg1,temp /* 30th divide step */
193 addc retreg,retreg,retreg /* shift retreg with/into carry */
194 ds temp,arg1,temp /* 31st divide step */
195 addc retreg,retreg,retreg /* shift retreg with/into carry */
196 ds temp,arg1,temp /* 32nd divide step, */
197 addc retreg,retreg,retreg /* shift last retreg bit into retreg */
198 xor,>= arg0,arg1,0 /* get correct sign of quotient */
199 sub 0,retreg,retreg /* based on operand signs */
200 MILLIRETN
201 nop
202
203LSYM(small_divisor)
204
205#if defined(CONFIG_64BIT)
206/* Clear the upper 32 bits of the arg1 register. We are working with */
207/* small divisors (and 32-bit integers) We must not be mislead */
208/* by "1" bits left in the upper 32 bits. */
209 depd %r0,31,32,%r25
210#endif
211 blr,n arg1,r0
212 nop
213/* table for divisor == 0,1, ... ,15 */
214 addit,= 0,arg1,r0 /* trap if divisor == 0 */
215 nop
216 MILLIRET /* divisor == 1 */
217 copy arg0,retreg
218 MILLI_BEN($$divI_2) /* divisor == 2 */
219 nop
220 MILLI_BEN($$divI_3) /* divisor == 3 */
221 nop
222 MILLI_BEN($$divI_4) /* divisor == 4 */
223 nop
224 MILLI_BEN($$divI_5) /* divisor == 5 */
225 nop
226 MILLI_BEN($$divI_6) /* divisor == 6 */
227 nop
228 MILLI_BEN($$divI_7) /* divisor == 7 */
229 nop
230 MILLI_BEN($$divI_8) /* divisor == 8 */
231 nop
232 MILLI_BEN($$divI_9) /* divisor == 9 */
233 nop
234 MILLI_BEN($$divI_10) /* divisor == 10 */
235 nop
236 b LREF(normal) /* divisor == 11 */
237 add,>= 0,arg0,retreg
238 MILLI_BEN($$divI_12) /* divisor == 12 */
239 nop
240 b LREF(normal) /* divisor == 13 */
241 add,>= 0,arg0,retreg
242 MILLI_BEN($$divI_14) /* divisor == 14 */
243 nop
244 MILLI_BEN($$divI_15) /* divisor == 15 */
245 nop
246
247LSYM(negative1)
248 sub 0,arg0,retreg /* result is negation of dividend */
249 MILLIRET
250 addo arg0,arg1,r0 /* trap iff dividend==0x80000000 && divisor==-1 */
251 .exit
252 .procend
253 .end
254#endif
diff --git a/arch/parisc/lib/milli/divU.S b/arch/parisc/lib/milli/divU.S
new file mode 100644
index 000000000000..9287fe2546fa
--- /dev/null
+++ b/arch/parisc/lib/milli/divU.S
@@ -0,0 +1,235 @@
1/* 32 and 64-bit millicode, original author Hewlett-Packard
2 adapted for gcc by Paul Bame <bame@debian.org>
3 and Alan Modra <alan@linuxcare.com.au>.
4
5 Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of GCC and is released under the terms of
8 of the GNU General Public License as published by the Free Software
9 Foundation; either version 2, or (at your option) any later version.
10 See the file COPYING in the top-level GCC source directory for a copy
11 of the license. */
12
13#include "milli.h"
14
15#ifdef L_divU
16/* ROUTINE: $$divU
17 .
18 . Single precision divide for unsigned integers.
19 .
20 . Quotient is truncated towards zero.
21 . Traps on divide by zero.
22
23 INPUT REGISTERS:
24 . arg0 == dividend
25 . arg1 == divisor
26 . mrp == return pc
27 . sr0 == return space when called externally
28
29 OUTPUT REGISTERS:
30 . arg0 = undefined
31 . arg1 = undefined
32 . ret1 = quotient
33
34 OTHER REGISTERS AFFECTED:
35 . r1 = undefined
36
37 SIDE EFFECTS:
38 . Causes a trap under the following conditions:
39 . divisor is zero
40 . Changes memory at the following places:
41 . NONE
42
43 PERMISSIBLE CONTEXT:
44 . Unwindable.
45 . Does not create a stack frame.
46 . Suitable for internal or external millicode.
47 . Assumes the special millicode register conventions.
48
49 DISCUSSION:
50 . Branchs to other millicode routines using BE:
51 . $$divU_# for 3,5,6,7,9,10,12,14,15
52 .
53 . For selected small divisors calls the special divide by constant
54 . routines written by Karl Pettis. These are: 3,5,6,7,9,10,12,14,15. */
55
56RDEFINE(temp,r1)
57RDEFINE(retreg,ret1) /* r29 */
58RDEFINE(temp1,arg0)
59 SUBSPA_MILLI_DIV
60 ATTR_MILLI
61 .export $$divU,millicode
62 .import $$divU_3,millicode
63 .import $$divU_5,millicode
64 .import $$divU_6,millicode
65 .import $$divU_7,millicode
66 .import $$divU_9,millicode
67 .import $$divU_10,millicode
68 .import $$divU_12,millicode
69 .import $$divU_14,millicode
70 .import $$divU_15,millicode
71 .proc
72 .callinfo millicode
73 .entry
74GSYM($$divU)
75/* The subtract is not nullified since it does no harm and can be used
76 by the two cases that branch back to "normal". */
77 ldo -1(arg1),temp /* is there at most one bit set ? */
78 and,= arg1,temp,r0 /* if so, denominator is power of 2 */
79 b LREF(regular_seq)
80 addit,= 0,arg1,0 /* trap for zero dvr */
81 copy arg0,retreg
82 extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */
83 extru retreg,15,16,retreg /* retreg = retreg >> 16 */
84 or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */
85 ldi 0xcc,temp1 /* setup 0xcc in temp1 */
86 extru,= arg1,23,8,temp /* test denominator with 0xff00 */
87 extru retreg,23,24,retreg /* retreg = retreg >> 8 */
88 or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */
89 ldi 0xaa,temp /* setup 0xaa in temp */
90 extru,= arg1,27,4,r0 /* test denominator with 0xf0 */
91 extru retreg,27,28,retreg /* retreg = retreg >> 4 */
92 and,= arg1,temp1,r0 /* test denominator with 0xcc */
93 extru retreg,29,30,retreg /* retreg = retreg >> 2 */
94 and,= arg1,temp,r0 /* test denominator with 0xaa */
95 extru retreg,30,31,retreg /* retreg = retreg >> 1 */
96 MILLIRETN
97 nop
98LSYM(regular_seq)
99 comib,>= 15,arg1,LREF(special_divisor)
100 subi 0,arg1,temp /* clear carry, negate the divisor */
101 ds r0,temp,r0 /* set V-bit to 1 */
102LSYM(normal)
103 add arg0,arg0,retreg /* shift msb bit into carry */
104 ds r0,arg1,temp /* 1st divide step, if no carry */
105 addc retreg,retreg,retreg /* shift retreg with/into carry */
106 ds temp,arg1,temp /* 2nd divide step */
107 addc retreg,retreg,retreg /* shift retreg with/into carry */
108 ds temp,arg1,temp /* 3rd divide step */
109 addc retreg,retreg,retreg /* shift retreg with/into carry */
110 ds temp,arg1,temp /* 4th divide step */
111 addc retreg,retreg,retreg /* shift retreg with/into carry */
112 ds temp,arg1,temp /* 5th divide step */
113 addc retreg,retreg,retreg /* shift retreg with/into carry */
114 ds temp,arg1,temp /* 6th divide step */
115 addc retreg,retreg,retreg /* shift retreg with/into carry */
116 ds temp,arg1,temp /* 7th divide step */
117 addc retreg,retreg,retreg /* shift retreg with/into carry */
118 ds temp,arg1,temp /* 8th divide step */
119 addc retreg,retreg,retreg /* shift retreg with/into carry */
120 ds temp,arg1,temp /* 9th divide step */
121 addc retreg,retreg,retreg /* shift retreg with/into carry */
122 ds temp,arg1,temp /* 10th divide step */
123 addc retreg,retreg,retreg /* shift retreg with/into carry */
124 ds temp,arg1,temp /* 11th divide step */
125 addc retreg,retreg,retreg /* shift retreg with/into carry */
126 ds temp,arg1,temp /* 12th divide step */
127 addc retreg,retreg,retreg /* shift retreg with/into carry */
128 ds temp,arg1,temp /* 13th divide step */
129 addc retreg,retreg,retreg /* shift retreg with/into carry */
130 ds temp,arg1,temp /* 14th divide step */
131 addc retreg,retreg,retreg /* shift retreg with/into carry */
132 ds temp,arg1,temp /* 15th divide step */
133 addc retreg,retreg,retreg /* shift retreg with/into carry */
134 ds temp,arg1,temp /* 16th divide step */
135 addc retreg,retreg,retreg /* shift retreg with/into carry */
136 ds temp,arg1,temp /* 17th divide step */
137 addc retreg,retreg,retreg /* shift retreg with/into carry */
138 ds temp,arg1,temp /* 18th divide step */
139 addc retreg,retreg,retreg /* shift retreg with/into carry */
140 ds temp,arg1,temp /* 19th divide step */
141 addc retreg,retreg,retreg /* shift retreg with/into carry */
142 ds temp,arg1,temp /* 20th divide step */
143 addc retreg,retreg,retreg /* shift retreg with/into carry */
144 ds temp,arg1,temp /* 21st divide step */
145 addc retreg,retreg,retreg /* shift retreg with/into carry */
146 ds temp,arg1,temp /* 22nd divide step */
147 addc retreg,retreg,retreg /* shift retreg with/into carry */
148 ds temp,arg1,temp /* 23rd divide step */
149 addc retreg,retreg,retreg /* shift retreg with/into carry */
150 ds temp,arg1,temp /* 24th divide step */
151 addc retreg,retreg,retreg /* shift retreg with/into carry */
152 ds temp,arg1,temp /* 25th divide step */
153 addc retreg,retreg,retreg /* shift retreg with/into carry */
154 ds temp,arg1,temp /* 26th divide step */
155 addc retreg,retreg,retreg /* shift retreg with/into carry */
156 ds temp,arg1,temp /* 27th divide step */
157 addc retreg,retreg,retreg /* shift retreg with/into carry */
158 ds temp,arg1,temp /* 28th divide step */
159 addc retreg,retreg,retreg /* shift retreg with/into carry */
160 ds temp,arg1,temp /* 29th divide step */
161 addc retreg,retreg,retreg /* shift retreg with/into carry */
162 ds temp,arg1,temp /* 30th divide step */
163 addc retreg,retreg,retreg /* shift retreg with/into carry */
164 ds temp,arg1,temp /* 31st divide step */
165 addc retreg,retreg,retreg /* shift retreg with/into carry */
166 ds temp,arg1,temp /* 32nd divide step, */
167 MILLIRET
168 addc retreg,retreg,retreg /* shift last retreg bit into retreg */
169
170/* Handle the cases where divisor is a small constant or has high bit on. */
171LSYM(special_divisor)
172/* blr arg1,r0 */
173/* comib,>,n 0,arg1,LREF(big_divisor) ; nullify previous instruction */
174
175/* Pratap 8/13/90. The 815 Stirling chip set has a bug that prevents us from
176 generating such a blr, comib sequence. A problem in nullification. So I
177 rewrote this code. */
178
179#if defined(CONFIG_64BIT)
180/* Clear the upper 32 bits of the arg1 register. We are working with
181 small divisors (and 32-bit unsigned integers) We must not be mislead
182 by "1" bits left in the upper 32 bits. */
183 depd %r0,31,32,%r25
184#endif
185 comib,> 0,arg1,LREF(big_divisor)
186 nop
187 blr arg1,r0
188 nop
189
190LSYM(zero_divisor) /* this label is here to provide external visibility */
191 addit,= 0,arg1,0 /* trap for zero dvr */
192 nop
193 MILLIRET /* divisor == 1 */
194 copy arg0,retreg
195 MILLIRET /* divisor == 2 */
196 extru arg0,30,31,retreg
197 MILLI_BEN($$divU_3) /* divisor == 3 */
198 nop
199 MILLIRET /* divisor == 4 */
200 extru arg0,29,30,retreg
201 MILLI_BEN($$divU_5) /* divisor == 5 */
202 nop
203 MILLI_BEN($$divU_6) /* divisor == 6 */
204 nop
205 MILLI_BEN($$divU_7) /* divisor == 7 */
206 nop
207 MILLIRET /* divisor == 8 */
208 extru arg0,28,29,retreg
209 MILLI_BEN($$divU_9) /* divisor == 9 */
210 nop
211 MILLI_BEN($$divU_10) /* divisor == 10 */
212 nop
213 b LREF(normal) /* divisor == 11 */
214 ds r0,temp,r0 /* set V-bit to 1 */
215 MILLI_BEN($$divU_12) /* divisor == 12 */
216 nop
217 b LREF(normal) /* divisor == 13 */
218 ds r0,temp,r0 /* set V-bit to 1 */
219 MILLI_BEN($$divU_14) /* divisor == 14 */
220 nop
221 MILLI_BEN($$divU_15) /* divisor == 15 */
222 nop
223
224/* Handle the case where the high bit is on in the divisor.
225 Compute: if( dividend>=divisor) quotient=1; else quotient=0;
226 Note: dividend>==divisor iff dividend-divisor does not borrow
227 and not borrow iff carry. */
228LSYM(big_divisor)
229 sub arg0,arg1,r0
230 MILLIRET
231 addc r0,r0,retreg
232 .exit
233 .procend
234 .end
235#endif
diff --git a/arch/parisc/lib/milli/div_const.S b/arch/parisc/lib/milli/div_const.S
new file mode 100644
index 000000000000..dd660076e944
--- /dev/null
+++ b/arch/parisc/lib/milli/div_const.S
@@ -0,0 +1,682 @@
1/* 32 and 64-bit millicode, original author Hewlett-Packard
2 adapted for gcc by Paul Bame <bame@debian.org>
3 and Alan Modra <alan@linuxcare.com.au>.
4
5 Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of GCC and is released under the terms of
8 of the GNU General Public License as published by the Free Software
9 Foundation; either version 2, or (at your option) any later version.
10 See the file COPYING in the top-level GCC source directory for a copy
11 of the license. */
12
13#include "milli.h"
14
15#ifdef L_div_const
16/* ROUTINE: $$divI_2
17 . $$divI_3 $$divU_3
18 . $$divI_4
19 . $$divI_5 $$divU_5
20 . $$divI_6 $$divU_6
21 . $$divI_7 $$divU_7
22 . $$divI_8
23 . $$divI_9 $$divU_9
24 . $$divI_10 $$divU_10
25 .
26 . $$divI_12 $$divU_12
27 .
28 . $$divI_14 $$divU_14
29 . $$divI_15 $$divU_15
30 . $$divI_16
31 . $$divI_17 $$divU_17
32 .
33 . Divide by selected constants for single precision binary integers.
34
35 INPUT REGISTERS:
36 . arg0 == dividend
37 . mrp == return pc
38 . sr0 == return space when called externally
39
40 OUTPUT REGISTERS:
41 . arg0 = undefined
42 . arg1 = undefined
43 . ret1 = quotient
44
45 OTHER REGISTERS AFFECTED:
46 . r1 = undefined
47
48 SIDE EFFECTS:
49 . Causes a trap under the following conditions: NONE
50 . Changes memory at the following places: NONE
51
52 PERMISSIBLE CONTEXT:
53 . Unwindable.
54 . Does not create a stack frame.
55 . Suitable for internal or external millicode.
56 . Assumes the special millicode register conventions.
57
58 DISCUSSION:
59 . Calls other millicode routines using mrp: NONE
60 . Calls other millicode routines: NONE */
61
62
63/* TRUNCATED DIVISION BY SMALL INTEGERS
64
65 We are interested in q(x) = floor(x/y), where x >= 0 and y > 0
66 (with y fixed).
67
68 Let a = floor(z/y), for some choice of z. Note that z will be
69 chosen so that division by z is cheap.
70
71 Let r be the remainder(z/y). In other words, r = z - ay.
72
73 Now, our method is to choose a value for b such that
74
75 q'(x) = floor((ax+b)/z)
76
77 is equal to q(x) over as large a range of x as possible. If the
78 two are equal over a sufficiently large range, and if it is easy to
79 form the product (ax), and it is easy to divide by z, then we can
80 perform the division much faster than the general division algorithm.
81
82 So, we want the following to be true:
83
84 . For x in the following range:
85 .
86 . ky <= x < (k+1)y
87 .
88 . implies that
89 .
90 . k <= (ax+b)/z < (k+1)
91
92 We want to determine b such that this is true for all k in the
93 range {0..K} for some maximum K.
94
95 Since (ax+b) is an increasing function of x, we can take each
96 bound separately to determine the "best" value for b.
97
98 (ax+b)/z < (k+1) implies
99
100 (a((k+1)y-1)+b < (k+1)z implies
101
102 b < a + (k+1)(z-ay) implies
103
104 b < a + (k+1)r
105
106 This needs to be true for all k in the range {0..K}. In
107 particular, it is true for k = 0 and this leads to a maximum
108 acceptable value for b.
109
110 b < a+r or b <= a+r-1
111
112 Taking the other bound, we have
113
114 k <= (ax+b)/z implies
115
116 k <= (aky+b)/z implies
117
118 k(z-ay) <= b implies
119
120 kr <= b
121
122 Clearly, the largest range for k will be achieved by maximizing b,
123 when r is not zero. When r is zero, then the simplest choice for b
124 is 0. When r is not 0, set
125
126 . b = a+r-1
127
128 Now, by construction, q'(x) = floor((ax+b)/z) = q(x) = floor(x/y)
129 for all x in the range:
130
131 . 0 <= x < (K+1)y
132
133 We need to determine what K is. Of our two bounds,
134
135 . b < a+(k+1)r is satisfied for all k >= 0, by construction.
136
137 The other bound is
138
139 . kr <= b
140
141 This is always true if r = 0. If r is not 0 (the usual case), then
142 K = floor((a+r-1)/r), is the maximum value for k.
143
144 Therefore, the formula q'(x) = floor((ax+b)/z) yields the correct
145 answer for q(x) = floor(x/y) when x is in the range
146
147 (0,(K+1)y-1) K = floor((a+r-1)/r)
148
149 To be most useful, we want (K+1)y-1 = (max x) >= 2**32-1 so that
150 the formula for q'(x) yields the correct value of q(x) for all x
151 representable by a single word in HPPA.
152
153 We are also constrained in that computing the product (ax), adding
154 b, and dividing by z must all be done quickly, otherwise we will be
155 better off going through the general algorithm using the DS
156 instruction, which uses approximately 70 cycles.
157
158 For each y, there is a choice of z which satisfies the constraints
159 for (K+1)y >= 2**32. We may not, however, be able to satisfy the
160 timing constraints for arbitrary y. It seems that z being equal to
161 a power of 2 or a power of 2 minus 1 is as good as we can do, since
162 it minimizes the time to do division by z. We want the choice of z
163 to also result in a value for (a) that minimizes the computation of
164 the product (ax). This is best achieved if (a) has a regular bit
165 pattern (so the multiplication can be done with shifts and adds).
166 The value of (a) also needs to be less than 2**32 so the product is
167 always guaranteed to fit in 2 words.
168
169 In actual practice, the following should be done:
170
171 1) For negative x, you should take the absolute value and remember
172 . the fact so that the result can be negated. This obviously does
173 . not apply in the unsigned case.
174 2) For even y, you should factor out the power of 2 that divides y
175 . and divide x by it. You can then proceed by dividing by the
176 . odd factor of y.
177
178 Here is a table of some odd values of y, and corresponding choices
179 for z which are "good".
180
181 y z r a (hex) max x (hex)
182
183 3 2**32 1 55555555 100000001
184 5 2**32 1 33333333 100000003
185 7 2**24-1 0 249249 (infinite)
186 9 2**24-1 0 1c71c7 (infinite)
187 11 2**20-1 0 1745d (infinite)
188 13 2**24-1 0 13b13b (infinite)
189 15 2**32 1 11111111 10000000d
190 17 2**32 1 f0f0f0f 10000000f
191
192 If r is 1, then b = a+r-1 = a. This simplifies the computation
193 of (ax+b), since you can compute (x+1)(a) instead. If r is 0,
194 then b = 0 is ok to use which simplifies (ax+b).
195
196 The bit patterns for 55555555, 33333333, and 11111111 are obviously
197 very regular. The bit patterns for the other values of a above are:
198
199 y (hex) (binary)
200
201 7 249249 001001001001001001001001 << regular >>
202 9 1c71c7 000111000111000111000111 << regular >>
203 11 1745d 000000010111010001011101 << irregular >>
204 13 13b13b 000100111011000100111011 << irregular >>
205
206 The bit patterns for (a) corresponding to (y) of 11 and 13 may be
207 too irregular to warrant using this method.
208
209 When z is a power of 2 minus 1, then the division by z is slightly
210 more complicated, involving an iterative solution.
211
212 The code presented here solves division by 1 through 17, except for
213 11 and 13. There are algorithms for both signed and unsigned
214 quantities given.
215
216 TIMINGS (cycles)
217
218 divisor positive negative unsigned
219
220 . 1 2 2 2
221 . 2 4 4 2
222 . 3 19 21 19
223 . 4 4 4 2
224 . 5 18 22 19
225 . 6 19 22 19
226 . 8 4 4 2
227 . 10 18 19 17
228 . 12 18 20 18
229 . 15 16 18 16
230 . 16 4 4 2
231 . 17 16 18 16
232
233 Now, the algorithm for 7, 9, and 14 is an iterative one. That is,
234 a loop body is executed until the tentative quotient is 0. The
235 number of times the loop body is executed varies depending on the
236 dividend, but is never more than two times. If the dividend is
237 less than the divisor, then the loop body is not executed at all.
238 Each iteration adds 4 cycles to the timings.
239
240 divisor positive negative unsigned
241
242 . 7 19+4n 20+4n 20+4n n = number of iterations
243 . 9 21+4n 22+4n 21+4n
244 . 14 21+4n 22+4n 20+4n
245
246 To give an idea of how the number of iterations varies, here is a
247 table of dividend versus number of iterations when dividing by 7.
248
249 smallest largest required
250 dividend dividend iterations
251
252 . 0 6 0
253 . 7 0x6ffffff 1
254 0x1000006 0xffffffff 2
255
256 There is some overlap in the range of numbers requiring 1 and 2
257 iterations. */
258
259RDEFINE(t2,r1)
260RDEFINE(x2,arg0) /* r26 */
261RDEFINE(t1,arg1) /* r25 */
262RDEFINE(x1,ret1) /* r29 */
263
264 SUBSPA_MILLI_DIV
265 ATTR_MILLI
266
267 .proc
268 .callinfo millicode
269 .entry
270/* NONE of these routines require a stack frame
271 ALL of these routines are unwindable from millicode */
272
273GSYM($$divide_by_constant)
274 .export $$divide_by_constant,millicode
275/* Provides a "nice" label for the code covered by the unwind descriptor
276 for things like gprof. */
277
278/* DIVISION BY 2 (shift by 1) */
279GSYM($$divI_2)
280 .export $$divI_2,millicode
281 comclr,>= arg0,0,0
282 addi 1,arg0,arg0
283 MILLIRET
284 extrs arg0,30,31,ret1
285
286
287/* DIVISION BY 4 (shift by 2) */
288GSYM($$divI_4)
289 .export $$divI_4,millicode
290 comclr,>= arg0,0,0
291 addi 3,arg0,arg0
292 MILLIRET
293 extrs arg0,29,30,ret1
294
295
296/* DIVISION BY 8 (shift by 3) */
297GSYM($$divI_8)
298 .export $$divI_8,millicode
299 comclr,>= arg0,0,0
300 addi 7,arg0,arg0
301 MILLIRET
302 extrs arg0,28,29,ret1
303
304/* DIVISION BY 16 (shift by 4) */
305GSYM($$divI_16)
306 .export $$divI_16,millicode
307 comclr,>= arg0,0,0
308 addi 15,arg0,arg0
309 MILLIRET
310 extrs arg0,27,28,ret1
311
312/****************************************************************************
313*
314* DIVISION BY DIVISORS OF FFFFFFFF, and powers of 2 times these
315*
316* includes 3,5,15,17 and also 6,10,12
317*
318****************************************************************************/
319
320/* DIVISION BY 3 (use z = 2**32; a = 55555555) */
321
322GSYM($$divI_3)
323 .export $$divI_3,millicode
324 comb,<,N x2,0,LREF(neg3)
325
326 addi 1,x2,x2 /* this cannot overflow */
327 extru x2,1,2,x1 /* multiply by 5 to get started */
328 sh2add x2,x2,x2
329 b LREF(pos)
330 addc x1,0,x1
331
332LSYM(neg3)
333 subi 1,x2,x2 /* this cannot overflow */
334 extru x2,1,2,x1 /* multiply by 5 to get started */
335 sh2add x2,x2,x2
336 b LREF(neg)
337 addc x1,0,x1
338
339GSYM($$divU_3)
340 .export $$divU_3,millicode
341 addi 1,x2,x2 /* this CAN overflow */
342 addc 0,0,x1
343 shd x1,x2,30,t1 /* multiply by 5 to get started */
344 sh2add x2,x2,x2
345 b LREF(pos)
346 addc x1,t1,x1
347
348/* DIVISION BY 5 (use z = 2**32; a = 33333333) */
349
350GSYM($$divI_5)
351 .export $$divI_5,millicode
352 comb,<,N x2,0,LREF(neg5)
353
354 addi 3,x2,t1 /* this cannot overflow */
355 sh1add x2,t1,x2 /* multiply by 3 to get started */
356 b LREF(pos)
357 addc 0,0,x1
358
359LSYM(neg5)
360 sub 0,x2,x2 /* negate x2 */
361 addi 1,x2,x2 /* this cannot overflow */
362 shd 0,x2,31,x1 /* get top bit (can be 1) */
363 sh1add x2,x2,x2 /* multiply by 3 to get started */
364 b LREF(neg)
365 addc x1,0,x1
366
367GSYM($$divU_5)
368 .export $$divU_5,millicode
369 addi 1,x2,x2 /* this CAN overflow */
370 addc 0,0,x1
371 shd x1,x2,31,t1 /* multiply by 3 to get started */
372 sh1add x2,x2,x2
373 b LREF(pos)
374 addc t1,x1,x1
375
376/* DIVISION BY 6 (shift to divide by 2 then divide by 3) */
377GSYM($$divI_6)
378 .export $$divI_6,millicode
379 comb,<,N x2,0,LREF(neg6)
380 extru x2,30,31,x2 /* divide by 2 */
381 addi 5,x2,t1 /* compute 5*(x2+1) = 5*x2+5 */
382 sh2add x2,t1,x2 /* multiply by 5 to get started */
383 b LREF(pos)
384 addc 0,0,x1
385
386LSYM(neg6)
387 subi 2,x2,x2 /* negate, divide by 2, and add 1 */
388 /* negation and adding 1 are done */
389 /* at the same time by the SUBI */
390 extru x2,30,31,x2
391 shd 0,x2,30,x1
392 sh2add x2,x2,x2 /* multiply by 5 to get started */
393 b LREF(neg)
394 addc x1,0,x1
395
396GSYM($$divU_6)
397 .export $$divU_6,millicode
398 extru x2,30,31,x2 /* divide by 2 */
399 addi 1,x2,x2 /* cannot carry */
400 shd 0,x2,30,x1 /* multiply by 5 to get started */
401 sh2add x2,x2,x2
402 b LREF(pos)
403 addc x1,0,x1
404
405/* DIVISION BY 10 (shift to divide by 2 then divide by 5) */
406GSYM($$divU_10)
407 .export $$divU_10,millicode
408 extru x2,30,31,x2 /* divide by 2 */
409 addi 3,x2,t1 /* compute 3*(x2+1) = (3*x2)+3 */
410 sh1add x2,t1,x2 /* multiply by 3 to get started */
411 addc 0,0,x1
412LSYM(pos)
413 shd x1,x2,28,t1 /* multiply by 0x11 */
414 shd x2,0,28,t2
415 add x2,t2,x2
416 addc x1,t1,x1
417LSYM(pos_for_17)
418 shd x1,x2,24,t1 /* multiply by 0x101 */
419 shd x2,0,24,t2
420 add x2,t2,x2
421 addc x1,t1,x1
422
423 shd x1,x2,16,t1 /* multiply by 0x10001 */
424 shd x2,0,16,t2
425 add x2,t2,x2
426 MILLIRET
427 addc x1,t1,x1
428
429GSYM($$divI_10)
430 .export $$divI_10,millicode
431 comb,< x2,0,LREF(neg10)
432 copy 0,x1
433 extru x2,30,31,x2 /* divide by 2 */
434 addib,TR 1,x2,LREF(pos) /* add 1 (cannot overflow) */
435 sh1add x2,x2,x2 /* multiply by 3 to get started */
436
437LSYM(neg10)
438 subi 2,x2,x2 /* negate, divide by 2, and add 1 */
439 /* negation and adding 1 are done */
440 /* at the same time by the SUBI */
441 extru x2,30,31,x2
442 sh1add x2,x2,x2 /* multiply by 3 to get started */
443LSYM(neg)
444 shd x1,x2,28,t1 /* multiply by 0x11 */
445 shd x2,0,28,t2
446 add x2,t2,x2
447 addc x1,t1,x1
448LSYM(neg_for_17)
449 shd x1,x2,24,t1 /* multiply by 0x101 */
450 shd x2,0,24,t2
451 add x2,t2,x2
452 addc x1,t1,x1
453
454 shd x1,x2,16,t1 /* multiply by 0x10001 */
455 shd x2,0,16,t2
456 add x2,t2,x2
457 addc x1,t1,x1
458 MILLIRET
459 sub 0,x1,x1
460
461/* DIVISION BY 12 (shift to divide by 4 then divide by 3) */
462GSYM($$divI_12)
463 .export $$divI_12,millicode
464 comb,< x2,0,LREF(neg12)
465 copy 0,x1
466 extru x2,29,30,x2 /* divide by 4 */
467 addib,tr 1,x2,LREF(pos) /* compute 5*(x2+1) = 5*x2+5 */
468 sh2add x2,x2,x2 /* multiply by 5 to get started */
469
470LSYM(neg12)
471 subi 4,x2,x2 /* negate, divide by 4, and add 1 */
472 /* negation and adding 1 are done */
473 /* at the same time by the SUBI */
474 extru x2,29,30,x2
475 b LREF(neg)
476 sh2add x2,x2,x2 /* multiply by 5 to get started */
477
478GSYM($$divU_12)
479 .export $$divU_12,millicode
480 extru x2,29,30,x2 /* divide by 4 */
481 addi 5,x2,t1 /* cannot carry */
482 sh2add x2,t1,x2 /* multiply by 5 to get started */
483 b LREF(pos)
484 addc 0,0,x1
485
486/* DIVISION BY 15 (use z = 2**32; a = 11111111) */
487GSYM($$divI_15)
488 .export $$divI_15,millicode
489 comb,< x2,0,LREF(neg15)
490 copy 0,x1
491 addib,tr 1,x2,LREF(pos)+4
492 shd x1,x2,28,t1
493
494LSYM(neg15)
495 b LREF(neg)
496 subi 1,x2,x2
497
498GSYM($$divU_15)
499 .export $$divU_15,millicode
500 addi 1,x2,x2 /* this CAN overflow */
501 b LREF(pos)
502 addc 0,0,x1
503
504/* DIVISION BY 17 (use z = 2**32; a = f0f0f0f) */
505GSYM($$divI_17)
506 .export $$divI_17,millicode
507 comb,<,n x2,0,LREF(neg17)
508 addi 1,x2,x2 /* this cannot overflow */
509 shd 0,x2,28,t1 /* multiply by 0xf to get started */
510 shd x2,0,28,t2
511 sub t2,x2,x2
512 b LREF(pos_for_17)
513 subb t1,0,x1
514
515LSYM(neg17)
516 subi 1,x2,x2 /* this cannot overflow */
517 shd 0,x2,28,t1 /* multiply by 0xf to get started */
518 shd x2,0,28,t2
519 sub t2,x2,x2
520 b LREF(neg_for_17)
521 subb t1,0,x1
522
523GSYM($$divU_17)
524 .export $$divU_17,millicode
525 addi 1,x2,x2 /* this CAN overflow */
526 addc 0,0,x1
527 shd x1,x2,28,t1 /* multiply by 0xf to get started */
528LSYM(u17)
529 shd x2,0,28,t2
530 sub t2,x2,x2
531 b LREF(pos_for_17)
532 subb t1,x1,x1
533
534
535/* DIVISION BY DIVISORS OF FFFFFF, and powers of 2 times these
536 includes 7,9 and also 14
537
538
539 z = 2**24-1
540 r = z mod x = 0
541
542 so choose b = 0
543
544 Also, in order to divide by z = 2**24-1, we approximate by dividing
545 by (z+1) = 2**24 (which is easy), and then correcting.
546
547 (ax) = (z+1)q' + r
548 . = zq' + (q'+r)
549
550 So to compute (ax)/z, compute q' = (ax)/(z+1) and r = (ax) mod (z+1)
551 Then the true remainder of (ax)/z is (q'+r). Repeat the process
552 with this new remainder, adding the tentative quotients together,
553 until a tentative quotient is 0 (and then we are done). There is
554 one last correction to be done. It is possible that (q'+r) = z.
555 If so, then (q'+r)/(z+1) = 0 and it looks like we are done. But,
556 in fact, we need to add 1 more to the quotient. Now, it turns
557 out that this happens if and only if the original value x is
558 an exact multiple of y. So, to avoid a three instruction test at
559 the end, instead use 1 instruction to add 1 to x at the beginning. */
560
561/* DIVISION BY 7 (use z = 2**24-1; a = 249249) */
562GSYM($$divI_7)
563 .export $$divI_7,millicode
564 comb,<,n x2,0,LREF(neg7)
565LSYM(7)
566 addi 1,x2,x2 /* cannot overflow */
567 shd 0,x2,29,x1
568 sh3add x2,x2,x2
569 addc x1,0,x1
570LSYM(pos7)
571 shd x1,x2,26,t1
572 shd x2,0,26,t2
573 add x2,t2,x2
574 addc x1,t1,x1
575
576 shd x1,x2,20,t1
577 shd x2,0,20,t2
578 add x2,t2,x2
579 addc x1,t1,t1
580
581 /* computed <t1,x2>. Now divide it by (2**24 - 1) */
582
583 copy 0,x1
584 shd,= t1,x2,24,t1 /* tentative quotient */
585LSYM(1)
586 addb,tr t1,x1,LREF(2) /* add to previous quotient */
587 extru x2,31,24,x2 /* new remainder (unadjusted) */
588
589 MILLIRETN
590
591LSYM(2)
592 addb,tr t1,x2,LREF(1) /* adjust remainder */
593 extru,= x2,7,8,t1 /* new quotient */
594
595LSYM(neg7)
596 subi 1,x2,x2 /* negate x2 and add 1 */
597LSYM(8)
598 shd 0,x2,29,x1
599 sh3add x2,x2,x2
600 addc x1,0,x1
601
602LSYM(neg7_shift)
603 shd x1,x2,26,t1
604 shd x2,0,26,t2
605 add x2,t2,x2
606 addc x1,t1,x1
607
608 shd x1,x2,20,t1
609 shd x2,0,20,t2
610 add x2,t2,x2
611 addc x1,t1,t1
612
613 /* computed <t1,x2>. Now divide it by (2**24 - 1) */
614
615 copy 0,x1
616 shd,= t1,x2,24,t1 /* tentative quotient */
617LSYM(3)
618 addb,tr t1,x1,LREF(4) /* add to previous quotient */
619 extru x2,31,24,x2 /* new remainder (unadjusted) */
620
621 MILLIRET
622 sub 0,x1,x1 /* negate result */
623
624LSYM(4)
625 addb,tr t1,x2,LREF(3) /* adjust remainder */
626 extru,= x2,7,8,t1 /* new quotient */
627
628GSYM($$divU_7)
629 .export $$divU_7,millicode
630 addi 1,x2,x2 /* can carry */
631 addc 0,0,x1
632 shd x1,x2,29,t1
633 sh3add x2,x2,x2
634 b LREF(pos7)
635 addc t1,x1,x1
636
637/* DIVISION BY 9 (use z = 2**24-1; a = 1c71c7) */
638GSYM($$divI_9)
639 .export $$divI_9,millicode
640 comb,<,n x2,0,LREF(neg9)
641 addi 1,x2,x2 /* cannot overflow */
642 shd 0,x2,29,t1
643 shd x2,0,29,t2
644 sub t2,x2,x2
645 b LREF(pos7)
646 subb t1,0,x1
647
648LSYM(neg9)
649 subi 1,x2,x2 /* negate and add 1 */
650 shd 0,x2,29,t1
651 shd x2,0,29,t2
652 sub t2,x2,x2
653 b LREF(neg7_shift)
654 subb t1,0,x1
655
656GSYM($$divU_9)
657 .export $$divU_9,millicode
658 addi 1,x2,x2 /* can carry */
659 addc 0,0,x1
660 shd x1,x2,29,t1
661 shd x2,0,29,t2
662 sub t2,x2,x2
663 b LREF(pos7)
664 subb t1,x1,x1
665
666/* DIVISION BY 14 (shift to divide by 2 then divide by 7) */
667GSYM($$divI_14)
668 .export $$divI_14,millicode
669 comb,<,n x2,0,LREF(neg14)
670GSYM($$divU_14)
671 .export $$divU_14,millicode
672 b LREF(7) /* go to 7 case */
673 extru x2,30,31,x2 /* divide by 2 */
674
675LSYM(neg14)
676 subi 2,x2,x2 /* negate (and add 2) */
677 b LREF(8)
678 extru x2,30,31,x2 /* divide by 2 */
679 .exit
680 .procend
681 .end
682#endif
diff --git a/arch/parisc/lib/milli/dyncall.S b/arch/parisc/lib/milli/dyncall.S
new file mode 100644
index 000000000000..27f9ca558d0a
--- /dev/null
+++ b/arch/parisc/lib/milli/dyncall.S
@@ -0,0 +1,32 @@
1/* 32 and 64-bit millicode, original author Hewlett-Packard
2 adapted for gcc by Paul Bame <bame@debian.org>
3 and Alan Modra <alan@linuxcare.com.au>.
4
5 Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of GCC and is released under the terms of
8 of the GNU General Public License as published by the Free Software
9 Foundation; either version 2, or (at your option) any later version.
10 See the file COPYING in the top-level GCC source directory for a copy
11 of the license. */
12
13#include "milli.h"
14
15#ifdef L_dyncall
16 SUBSPA_MILLI
17 ATTR_DATA
18GSYM($$dyncall)
19 .export $$dyncall,millicode
20 .proc
21 .callinfo millicode
22 .entry
23 bb,>=,n %r22,30,LREF(1) ; branch if not plabel address
24 depi 0,31,2,%r22 ; clear the two least significant bits
25 ldw 4(%r22),%r19 ; load new LTP value
26 ldw 0(%r22),%r22 ; load address of target
27LSYM(1)
28 bv %r0(%r22) ; branch to the real target
29 stw %r2,-24(%r30) ; save return address into frame marker
30 .exit
31 .procend
32#endif
diff --git a/arch/parisc/lib/milli/milli.S b/arch/parisc/lib/milli/milli.S
new file mode 100644
index 000000000000..47c6cde712e3
--- /dev/null
+++ b/arch/parisc/lib/milli/milli.S
@@ -0,0 +1,2071 @@
1/* 32 and 64-bit millicode, original author Hewlett-Packard
2 adapted for gcc by Paul Bame <bame@debian.org>
3 and Alan Modra <alan@linuxcare.com.au>.
4
5 Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of GCC and is released under the terms of
8 of the GNU General Public License as published by the Free Software
9 Foundation; either version 2, or (at your option) any later version.
10 See the file COPYING in the top-level GCC source directory for a copy
11 of the license. */
12
13#ifdef CONFIG_64BIT
14 .level 2.0w
15#endif
16
17/* Hardware General Registers. */
18r0: .reg %r0
19r1: .reg %r1
20r2: .reg %r2
21r3: .reg %r3
22r4: .reg %r4
23r5: .reg %r5
24r6: .reg %r6
25r7: .reg %r7
26r8: .reg %r8
27r9: .reg %r9
28r10: .reg %r10
29r11: .reg %r11
30r12: .reg %r12
31r13: .reg %r13
32r14: .reg %r14
33r15: .reg %r15
34r16: .reg %r16
35r17: .reg %r17
36r18: .reg %r18
37r19: .reg %r19
38r20: .reg %r20
39r21: .reg %r21
40r22: .reg %r22
41r23: .reg %r23
42r24: .reg %r24
43r25: .reg %r25
44r26: .reg %r26
45r27: .reg %r27
46r28: .reg %r28
47r29: .reg %r29
48r30: .reg %r30
49r31: .reg %r31
50
51/* Hardware Space Registers. */
52sr0: .reg %sr0
53sr1: .reg %sr1
54sr2: .reg %sr2
55sr3: .reg %sr3
56sr4: .reg %sr4
57sr5: .reg %sr5
58sr6: .reg %sr6
59sr7: .reg %sr7
60
61/* Hardware Floating Point Registers. */
62fr0: .reg %fr0
63fr1: .reg %fr1
64fr2: .reg %fr2
65fr3: .reg %fr3
66fr4: .reg %fr4
67fr5: .reg %fr5
68fr6: .reg %fr6
69fr7: .reg %fr7
70fr8: .reg %fr8
71fr9: .reg %fr9
72fr10: .reg %fr10
73fr11: .reg %fr11
74fr12: .reg %fr12
75fr13: .reg %fr13
76fr14: .reg %fr14
77fr15: .reg %fr15
78
79/* Hardware Control Registers. */
80cr11: .reg %cr11
81sar: .reg %cr11 /* Shift Amount Register */
82
83/* Software Architecture General Registers. */
84rp: .reg r2 /* return pointer */
85#ifdef CONFIG_64BIT
86mrp: .reg r2 /* millicode return pointer */
87#else
88mrp: .reg r31 /* millicode return pointer */
89#endif
90ret0: .reg r28 /* return value */
91ret1: .reg r29 /* return value (high part of double) */
92sp: .reg r30 /* stack pointer */
93dp: .reg r27 /* data pointer */
94arg0: .reg r26 /* argument */
95arg1: .reg r25 /* argument or high part of double argument */
96arg2: .reg r24 /* argument */
97arg3: .reg r23 /* argument or high part of double argument */
98
99/* Software Architecture Space Registers. */
100/* sr0 ; return link from BLE */
101sret: .reg sr1 /* return value */
102sarg: .reg sr1 /* argument */
103/* sr4 ; PC SPACE tracker */
104/* sr5 ; process private data */
105
106/* Frame Offsets (millicode convention!) Used when calling other
107 millicode routines. Stack unwinding is dependent upon these
108 definitions. */
109r31_slot: .equ -20 /* "current RP" slot */
110sr0_slot: .equ -16 /* "static link" slot */
111#if defined(CONFIG_64BIT)
112mrp_slot: .equ -16 /* "current RP" slot */
113psp_slot: .equ -8 /* "previous SP" slot */
114#else
115mrp_slot: .equ -20 /* "current RP" slot (replacing "r31_slot") */
116#endif
117
118
119#define DEFINE(name,value)name: .EQU value
120#define RDEFINE(name,value)name: .REG value
121#ifdef milliext
122#define MILLI_BE(lbl) BE lbl(sr7,r0)
123#define MILLI_BEN(lbl) BE,n lbl(sr7,r0)
124#define MILLI_BLE(lbl) BLE lbl(sr7,r0)
125#define MILLI_BLEN(lbl) BLE,n lbl(sr7,r0)
126#define MILLIRETN BE,n 0(sr0,mrp)
127#define MILLIRET BE 0(sr0,mrp)
128#define MILLI_RETN BE,n 0(sr0,mrp)
129#define MILLI_RET BE 0(sr0,mrp)
130#else
131#define MILLI_BE(lbl) B lbl
132#define MILLI_BEN(lbl) B,n lbl
133#define MILLI_BLE(lbl) BL lbl,mrp
134#define MILLI_BLEN(lbl) BL,n lbl,mrp
135#define MILLIRETN BV,n 0(mrp)
136#define MILLIRET BV 0(mrp)
137#define MILLI_RETN BV,n 0(mrp)
138#define MILLI_RET BV 0(mrp)
139#endif
140
141#define CAT(a,b) a##b
142
143#define SUBSPA_MILLI .section .text
144#define SUBSPA_MILLI_DIV .section .text.div,"ax",@progbits! .align 16
145#define SUBSPA_MILLI_MUL .section .text.mul,"ax",@progbits! .align 16
146#define ATTR_MILLI
147#define SUBSPA_DATA .section .data
148#define ATTR_DATA
149#define GLOBAL $global$
150#define GSYM(sym) !sym:
151#define LSYM(sym) !CAT(.L,sym:)
152#define LREF(sym) CAT(.L,sym)
153
154#ifdef L_dyncall
155 SUBSPA_MILLI
156 ATTR_DATA
157GSYM($$dyncall)
158 .export $$dyncall,millicode
159 .proc
160 .callinfo millicode
161 .entry
162 bb,>=,n %r22,30,LREF(1) ; branch if not plabel address
163 depi 0,31,2,%r22 ; clear the two least significant bits
164 ldw 4(%r22),%r19 ; load new LTP value
165 ldw 0(%r22),%r22 ; load address of target
166LSYM(1)
167 bv %r0(%r22) ; branch to the real target
168 stw %r2,-24(%r30) ; save return address into frame marker
169 .exit
170 .procend
171#endif
172
173#ifdef L_divI
174/* ROUTINES: $$divI, $$divoI
175
176 Single precision divide for signed binary integers.
177
178 The quotient is truncated towards zero.
179 The sign of the quotient is the XOR of the signs of the dividend and
180 divisor.
181 Divide by zero is trapped.
182 Divide of -2**31 by -1 is trapped for $$divoI but not for $$divI.
183
184 INPUT REGISTERS:
185 . arg0 == dividend
186 . arg1 == divisor
187 . mrp == return pc
188 . sr0 == return space when called externally
189
190 OUTPUT REGISTERS:
191 . arg0 = undefined
192 . arg1 = undefined
193 . ret1 = quotient
194
195 OTHER REGISTERS AFFECTED:
196 . r1 = undefined
197
198 SIDE EFFECTS:
199 . Causes a trap under the following conditions:
200 . divisor is zero (traps with ADDIT,= 0,25,0)
201 . dividend==-2**31 and divisor==-1 and routine is $$divoI
202 . (traps with ADDO 26,25,0)
203 . Changes memory at the following places:
204 . NONE
205
206 PERMISSIBLE CONTEXT:
207 . Unwindable.
208 . Suitable for internal or external millicode.
209 . Assumes the special millicode register conventions.
210
211 DISCUSSION:
212 . Branchs to other millicode routines using BE
213 . $$div_# for # being 2,3,4,5,6,7,8,9,10,12,14,15
214 .
215 . For selected divisors, calls a divide by constant routine written by
216 . Karl Pettis. Eligible divisors are 1..15 excluding 11 and 13.
217 .
218 . The only overflow case is -2**31 divided by -1.
219 . Both routines return -2**31 but only $$divoI traps. */
220
221RDEFINE(temp,r1)
222RDEFINE(retreg,ret1) /* r29 */
223RDEFINE(temp1,arg0)
224 SUBSPA_MILLI_DIV
225 ATTR_MILLI
226 .import $$divI_2,millicode
227 .import $$divI_3,millicode
228 .import $$divI_4,millicode
229 .import $$divI_5,millicode
230 .import $$divI_6,millicode
231 .import $$divI_7,millicode
232 .import $$divI_8,millicode
233 .import $$divI_9,millicode
234 .import $$divI_10,millicode
235 .import $$divI_12,millicode
236 .import $$divI_14,millicode
237 .import $$divI_15,millicode
238 .export $$divI,millicode
239 .export $$divoI,millicode
240 .proc
241 .callinfo millicode
242 .entry
243GSYM($$divoI)
244 comib,=,n -1,arg1,LREF(negative1) /* when divisor == -1 */
245GSYM($$divI)
246 ldo -1(arg1),temp /* is there at most one bit set ? */
247 and,<> arg1,temp,r0 /* if not, don't use power of 2 divide */
248 addi,> 0,arg1,r0 /* if divisor > 0, use power of 2 divide */
249 b,n LREF(neg_denom)
250LSYM(pow2)
251 addi,>= 0,arg0,retreg /* if numerator is negative, add the */
252 add arg0,temp,retreg /* (denominaotr -1) to correct for shifts */
253 extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */
254 extrs retreg,15,16,retreg /* retreg = retreg >> 16 */
255 or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */
256 ldi 0xcc,temp1 /* setup 0xcc in temp1 */
257 extru,= arg1,23,8,temp /* test denominator with 0xff00 */
258 extrs retreg,23,24,retreg /* retreg = retreg >> 8 */
259 or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */
260 ldi 0xaa,temp /* setup 0xaa in temp */
261 extru,= arg1,27,4,r0 /* test denominator with 0xf0 */
262 extrs retreg,27,28,retreg /* retreg = retreg >> 4 */
263 and,= arg1,temp1,r0 /* test denominator with 0xcc */
264 extrs retreg,29,30,retreg /* retreg = retreg >> 2 */
265 and,= arg1,temp,r0 /* test denominator with 0xaa */
266 extrs retreg,30,31,retreg /* retreg = retreg >> 1 */
267 MILLIRETN
268LSYM(neg_denom)
269 addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power of 2 */
270 b,n LREF(regular_seq)
271 sub r0,arg1,temp /* make denominator positive */
272 comb,=,n arg1,temp,LREF(regular_seq) /* test against 0x80000000 and 0 */
273 ldo -1(temp),retreg /* is there at most one bit set ? */
274 and,= temp,retreg,r0 /* if so, the denominator is power of 2 */
275 b,n LREF(regular_seq)
276 sub r0,arg0,retreg /* negate numerator */
277 comb,=,n arg0,retreg,LREF(regular_seq) /* test against 0x80000000 */
278 copy retreg,arg0 /* set up arg0, arg1 and temp */
279 copy temp,arg1 /* before branching to pow2 */
280 b LREF(pow2)
281 ldo -1(arg1),temp
282LSYM(regular_seq)
283 comib,>>=,n 15,arg1,LREF(small_divisor)
284 add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */
285LSYM(normal)
286 subi 0,retreg,retreg /* make it positive */
287 sub 0,arg1,temp /* clear carry, */
288 /* negate the divisor */
289 ds 0,temp,0 /* set V-bit to the comple- */
290 /* ment of the divisor sign */
291 add retreg,retreg,retreg /* shift msb bit into carry */
292 ds r0,arg1,temp /* 1st divide step, if no carry */
293 addc retreg,retreg,retreg /* shift retreg with/into carry */
294 ds temp,arg1,temp /* 2nd divide step */
295 addc retreg,retreg,retreg /* shift retreg with/into carry */
296 ds temp,arg1,temp /* 3rd divide step */
297 addc retreg,retreg,retreg /* shift retreg with/into carry */
298 ds temp,arg1,temp /* 4th divide step */
299 addc retreg,retreg,retreg /* shift retreg with/into carry */
300 ds temp,arg1,temp /* 5th divide step */
301 addc retreg,retreg,retreg /* shift retreg with/into carry */
302 ds temp,arg1,temp /* 6th divide step */
303 addc retreg,retreg,retreg /* shift retreg with/into carry */
304 ds temp,arg1,temp /* 7th divide step */
305 addc retreg,retreg,retreg /* shift retreg with/into carry */
306 ds temp,arg1,temp /* 8th divide step */
307 addc retreg,retreg,retreg /* shift retreg with/into carry */
308 ds temp,arg1,temp /* 9th divide step */
309 addc retreg,retreg,retreg /* shift retreg with/into carry */
310 ds temp,arg1,temp /* 10th divide step */
311 addc retreg,retreg,retreg /* shift retreg with/into carry */
312 ds temp,arg1,temp /* 11th divide step */
313 addc retreg,retreg,retreg /* shift retreg with/into carry */
314 ds temp,arg1,temp /* 12th divide step */
315 addc retreg,retreg,retreg /* shift retreg with/into carry */
316 ds temp,arg1,temp /* 13th divide step */
317 addc retreg,retreg,retreg /* shift retreg with/into carry */
318 ds temp,arg1,temp /* 14th divide step */
319 addc retreg,retreg,retreg /* shift retreg with/into carry */
320 ds temp,arg1,temp /* 15th divide step */
321 addc retreg,retreg,retreg /* shift retreg with/into carry */
322 ds temp,arg1,temp /* 16th divide step */
323 addc retreg,retreg,retreg /* shift retreg with/into carry */
324 ds temp,arg1,temp /* 17th divide step */
325 addc retreg,retreg,retreg /* shift retreg with/into carry */
326 ds temp,arg1,temp /* 18th divide step */
327 addc retreg,retreg,retreg /* shift retreg with/into carry */
328 ds temp,arg1,temp /* 19th divide step */
329 addc retreg,retreg,retreg /* shift retreg with/into carry */
330 ds temp,arg1,temp /* 20th divide step */
331 addc retreg,retreg,retreg /* shift retreg with/into carry */
332 ds temp,arg1,temp /* 21st divide step */
333 addc retreg,retreg,retreg /* shift retreg with/into carry */
334 ds temp,arg1,temp /* 22nd divide step */
335 addc retreg,retreg,retreg /* shift retreg with/into carry */
336 ds temp,arg1,temp /* 23rd divide step */
337 addc retreg,retreg,retreg /* shift retreg with/into carry */
338 ds temp,arg1,temp /* 24th divide step */
339 addc retreg,retreg,retreg /* shift retreg with/into carry */
340 ds temp,arg1,temp /* 25th divide step */
341 addc retreg,retreg,retreg /* shift retreg with/into carry */
342 ds temp,arg1,temp /* 26th divide step */
343 addc retreg,retreg,retreg /* shift retreg with/into carry */
344 ds temp,arg1,temp /* 27th divide step */
345 addc retreg,retreg,retreg /* shift retreg with/into carry */
346 ds temp,arg1,temp /* 28th divide step */
347 addc retreg,retreg,retreg /* shift retreg with/into carry */
348 ds temp,arg1,temp /* 29th divide step */
349 addc retreg,retreg,retreg /* shift retreg with/into carry */
350 ds temp,arg1,temp /* 30th divide step */
351 addc retreg,retreg,retreg /* shift retreg with/into carry */
352 ds temp,arg1,temp /* 31st divide step */
353 addc retreg,retreg,retreg /* shift retreg with/into carry */
354 ds temp,arg1,temp /* 32nd divide step, */
355 addc retreg,retreg,retreg /* shift last retreg bit into retreg */
356 xor,>= arg0,arg1,0 /* get correct sign of quotient */
357 sub 0,retreg,retreg /* based on operand signs */
358 MILLIRETN
359 nop
360
361LSYM(small_divisor)
362
363#if defined(CONFIG_64BIT)
364/* Clear the upper 32 bits of the arg1 register. We are working with */
365/* small divisors (and 32-bit integers) We must not be mislead */
366/* by "1" bits left in the upper 32 bits. */
367 depd %r0,31,32,%r25
368#endif
369 blr,n arg1,r0
370 nop
371/* table for divisor == 0,1, ... ,15 */
372 addit,= 0,arg1,r0 /* trap if divisor == 0 */
373 nop
374 MILLIRET /* divisor == 1 */
375 copy arg0,retreg
376 MILLI_BEN($$divI_2) /* divisor == 2 */
377 nop
378 MILLI_BEN($$divI_3) /* divisor == 3 */
379 nop
380 MILLI_BEN($$divI_4) /* divisor == 4 */
381 nop
382 MILLI_BEN($$divI_5) /* divisor == 5 */
383 nop
384 MILLI_BEN($$divI_6) /* divisor == 6 */
385 nop
386 MILLI_BEN($$divI_7) /* divisor == 7 */
387 nop
388 MILLI_BEN($$divI_8) /* divisor == 8 */
389 nop
390 MILLI_BEN($$divI_9) /* divisor == 9 */
391 nop
392 MILLI_BEN($$divI_10) /* divisor == 10 */
393 nop
394 b LREF(normal) /* divisor == 11 */
395 add,>= 0,arg0,retreg
396 MILLI_BEN($$divI_12) /* divisor == 12 */
397 nop
398 b LREF(normal) /* divisor == 13 */
399 add,>= 0,arg0,retreg
400 MILLI_BEN($$divI_14) /* divisor == 14 */
401 nop
402 MILLI_BEN($$divI_15) /* divisor == 15 */
403 nop
404
405LSYM(negative1)
406 sub 0,arg0,retreg /* result is negation of dividend */
407 MILLIRET
408 addo arg0,arg1,r0 /* trap iff dividend==0x80000000 && divisor==-1 */
409 .exit
410 .procend
411 .end
412#endif
413
414#ifdef L_divU
415/* ROUTINE: $$divU
416 .
417 . Single precision divide for unsigned integers.
418 .
419 . Quotient is truncated towards zero.
420 . Traps on divide by zero.
421
422 INPUT REGISTERS:
423 . arg0 == dividend
424 . arg1 == divisor
425 . mrp == return pc
426 . sr0 == return space when called externally
427
428 OUTPUT REGISTERS:
429 . arg0 = undefined
430 . arg1 = undefined
431 . ret1 = quotient
432
433 OTHER REGISTERS AFFECTED:
434 . r1 = undefined
435
436 SIDE EFFECTS:
437 . Causes a trap under the following conditions:
438 . divisor is zero
439 . Changes memory at the following places:
440 . NONE
441
442 PERMISSIBLE CONTEXT:
443 . Unwindable.
444 . Does not create a stack frame.
445 . Suitable for internal or external millicode.
446 . Assumes the special millicode register conventions.
447
448 DISCUSSION:
449 . Branchs to other millicode routines using BE:
450 . $$divU_# for 3,5,6,7,9,10,12,14,15
451 .
452 . For selected small divisors calls the special divide by constant
453 . routines written by Karl Pettis. These are: 3,5,6,7,9,10,12,14,15. */
454
455RDEFINE(temp,r1)
456RDEFINE(retreg,ret1) /* r29 */
457RDEFINE(temp1,arg0)
458 SUBSPA_MILLI_DIV
459 ATTR_MILLI
460 .export $$divU,millicode
461 .import $$divU_3,millicode
462 .import $$divU_5,millicode
463 .import $$divU_6,millicode
464 .import $$divU_7,millicode
465 .import $$divU_9,millicode
466 .import $$divU_10,millicode
467 .import $$divU_12,millicode
468 .import $$divU_14,millicode
469 .import $$divU_15,millicode
470 .proc
471 .callinfo millicode
472 .entry
473GSYM($$divU)
474/* The subtract is not nullified since it does no harm and can be used
475 by the two cases that branch back to "normal". */
476 ldo -1(arg1),temp /* is there at most one bit set ? */
477 and,= arg1,temp,r0 /* if so, denominator is power of 2 */
478 b LREF(regular_seq)
479 addit,= 0,arg1,0 /* trap for zero dvr */
480 copy arg0,retreg
481 extru,= arg1,15,16,temp /* test denominator with 0xffff0000 */
482 extru retreg,15,16,retreg /* retreg = retreg >> 16 */
483 or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 16) */
484 ldi 0xcc,temp1 /* setup 0xcc in temp1 */
485 extru,= arg1,23,8,temp /* test denominator with 0xff00 */
486 extru retreg,23,24,retreg /* retreg = retreg >> 8 */
487 or arg1,temp,arg1 /* arg1 = arg1 | (arg1 >> 8) */
488 ldi 0xaa,temp /* setup 0xaa in temp */
489 extru,= arg1,27,4,r0 /* test denominator with 0xf0 */
490 extru retreg,27,28,retreg /* retreg = retreg >> 4 */
491 and,= arg1,temp1,r0 /* test denominator with 0xcc */
492 extru retreg,29,30,retreg /* retreg = retreg >> 2 */
493 and,= arg1,temp,r0 /* test denominator with 0xaa */
494 extru retreg,30,31,retreg /* retreg = retreg >> 1 */
495 MILLIRETN
496 nop
497LSYM(regular_seq)
498 comib,>= 15,arg1,LREF(special_divisor)
499 subi 0,arg1,temp /* clear carry, negate the divisor */
500 ds r0,temp,r0 /* set V-bit to 1 */
501LSYM(normal)
502 add arg0,arg0,retreg /* shift msb bit into carry */
503 ds r0,arg1,temp /* 1st divide step, if no carry */
504 addc retreg,retreg,retreg /* shift retreg with/into carry */
505 ds temp,arg1,temp /* 2nd divide step */
506 addc retreg,retreg,retreg /* shift retreg with/into carry */
507 ds temp,arg1,temp /* 3rd divide step */
508 addc retreg,retreg,retreg /* shift retreg with/into carry */
509 ds temp,arg1,temp /* 4th divide step */
510 addc retreg,retreg,retreg /* shift retreg with/into carry */
511 ds temp,arg1,temp /* 5th divide step */
512 addc retreg,retreg,retreg /* shift retreg with/into carry */
513 ds temp,arg1,temp /* 6th divide step */
514 addc retreg,retreg,retreg /* shift retreg with/into carry */
515 ds temp,arg1,temp /* 7th divide step */
516 addc retreg,retreg,retreg /* shift retreg with/into carry */
517 ds temp,arg1,temp /* 8th divide step */
518 addc retreg,retreg,retreg /* shift retreg with/into carry */
519 ds temp,arg1,temp /* 9th divide step */
520 addc retreg,retreg,retreg /* shift retreg with/into carry */
521 ds temp,arg1,temp /* 10th divide step */
522 addc retreg,retreg,retreg /* shift retreg with/into carry */
523 ds temp,arg1,temp /* 11th divide step */
524 addc retreg,retreg,retreg /* shift retreg with/into carry */
525 ds temp,arg1,temp /* 12th divide step */
526 addc retreg,retreg,retreg /* shift retreg with/into carry */
527 ds temp,arg1,temp /* 13th divide step */
528 addc retreg,retreg,retreg /* shift retreg with/into carry */
529 ds temp,arg1,temp /* 14th divide step */
530 addc retreg,retreg,retreg /* shift retreg with/into carry */
531 ds temp,arg1,temp /* 15th divide step */
532 addc retreg,retreg,retreg /* shift retreg with/into carry */
533 ds temp,arg1,temp /* 16th divide step */
534 addc retreg,retreg,retreg /* shift retreg with/into carry */
535 ds temp,arg1,temp /* 17th divide step */
536 addc retreg,retreg,retreg /* shift retreg with/into carry */
537 ds temp,arg1,temp /* 18th divide step */
538 addc retreg,retreg,retreg /* shift retreg with/into carry */
539 ds temp,arg1,temp /* 19th divide step */
540 addc retreg,retreg,retreg /* shift retreg with/into carry */
541 ds temp,arg1,temp /* 20th divide step */
542 addc retreg,retreg,retreg /* shift retreg with/into carry */
543 ds temp,arg1,temp /* 21st divide step */
544 addc retreg,retreg,retreg /* shift retreg with/into carry */
545 ds temp,arg1,temp /* 22nd divide step */
546 addc retreg,retreg,retreg /* shift retreg with/into carry */
547 ds temp,arg1,temp /* 23rd divide step */
548 addc retreg,retreg,retreg /* shift retreg with/into carry */
549 ds temp,arg1,temp /* 24th divide step */
550 addc retreg,retreg,retreg /* shift retreg with/into carry */
551 ds temp,arg1,temp /* 25th divide step */
552 addc retreg,retreg,retreg /* shift retreg with/into carry */
553 ds temp,arg1,temp /* 26th divide step */
554 addc retreg,retreg,retreg /* shift retreg with/into carry */
555 ds temp,arg1,temp /* 27th divide step */
556 addc retreg,retreg,retreg /* shift retreg with/into carry */
557 ds temp,arg1,temp /* 28th divide step */
558 addc retreg,retreg,retreg /* shift retreg with/into carry */
559 ds temp,arg1,temp /* 29th divide step */
560 addc retreg,retreg,retreg /* shift retreg with/into carry */
561 ds temp,arg1,temp /* 30th divide step */
562 addc retreg,retreg,retreg /* shift retreg with/into carry */
563 ds temp,arg1,temp /* 31st divide step */
564 addc retreg,retreg,retreg /* shift retreg with/into carry */
565 ds temp,arg1,temp /* 32nd divide step, */
566 MILLIRET
567 addc retreg,retreg,retreg /* shift last retreg bit into retreg */
568
569/* Handle the cases where divisor is a small constant or has high bit on. */
570LSYM(special_divisor)
571/* blr arg1,r0 */
572/* comib,>,n 0,arg1,LREF(big_divisor) ; nullify previous instruction */
573
574/* Pratap 8/13/90. The 815 Stirling chip set has a bug that prevents us from
575 generating such a blr, comib sequence. A problem in nullification. So I
576 rewrote this code. */
577
578#if defined(CONFIG_64BIT)
579/* Clear the upper 32 bits of the arg1 register. We are working with
580 small divisors (and 32-bit unsigned integers) We must not be mislead
581 by "1" bits left in the upper 32 bits. */
582 depd %r0,31,32,%r25
583#endif
584 comib,> 0,arg1,LREF(big_divisor)
585 nop
586 blr arg1,r0
587 nop
588
589LSYM(zero_divisor) /* this label is here to provide external visibility */
590 addit,= 0,arg1,0 /* trap for zero dvr */
591 nop
592 MILLIRET /* divisor == 1 */
593 copy arg0,retreg
594 MILLIRET /* divisor == 2 */
595 extru arg0,30,31,retreg
596 MILLI_BEN($$divU_3) /* divisor == 3 */
597 nop
598 MILLIRET /* divisor == 4 */
599 extru arg0,29,30,retreg
600 MILLI_BEN($$divU_5) /* divisor == 5 */
601 nop
602 MILLI_BEN($$divU_6) /* divisor == 6 */
603 nop
604 MILLI_BEN($$divU_7) /* divisor == 7 */
605 nop
606 MILLIRET /* divisor == 8 */
607 extru arg0,28,29,retreg
608 MILLI_BEN($$divU_9) /* divisor == 9 */
609 nop
610 MILLI_BEN($$divU_10) /* divisor == 10 */
611 nop
612 b LREF(normal) /* divisor == 11 */
613 ds r0,temp,r0 /* set V-bit to 1 */
614 MILLI_BEN($$divU_12) /* divisor == 12 */
615 nop
616 b LREF(normal) /* divisor == 13 */
617 ds r0,temp,r0 /* set V-bit to 1 */
618 MILLI_BEN($$divU_14) /* divisor == 14 */
619 nop
620 MILLI_BEN($$divU_15) /* divisor == 15 */
621 nop
622
623/* Handle the case where the high bit is on in the divisor.
624 Compute: if( dividend>=divisor) quotient=1; else quotient=0;
625 Note: dividend>==divisor iff dividend-divisor does not borrow
626 and not borrow iff carry. */
627LSYM(big_divisor)
628 sub arg0,arg1,r0
629 MILLIRET
630 addc r0,r0,retreg
631 .exit
632 .procend
633 .end
634#endif
635
636#ifdef L_remI
637/* ROUTINE: $$remI
638
639 DESCRIPTION:
640 . $$remI returns the remainder of the division of two signed 32-bit
641 . integers. The sign of the remainder is the same as the sign of
642 . the dividend.
643
644
645 INPUT REGISTERS:
646 . arg0 == dividend
647 . arg1 == divisor
648 . mrp == return pc
649 . sr0 == return space when called externally
650
651 OUTPUT REGISTERS:
652 . arg0 = destroyed
653 . arg1 = destroyed
654 . ret1 = remainder
655
656 OTHER REGISTERS AFFECTED:
657 . r1 = undefined
658
659 SIDE EFFECTS:
660 . Causes a trap under the following conditions: DIVIDE BY ZERO
661 . Changes memory at the following places: NONE
662
663 PERMISSIBLE CONTEXT:
664 . Unwindable
665 . Does not create a stack frame
666 . Is usable for internal or external microcode
667
668 DISCUSSION:
669 . Calls other millicode routines via mrp: NONE
670 . Calls other millicode routines: NONE */
671
672RDEFINE(tmp,r1)
673RDEFINE(retreg,ret1)
674
675 SUBSPA_MILLI
676 ATTR_MILLI
677 .proc
678 .callinfo millicode
679 .entry
680GSYM($$remI)
681GSYM($$remoI)
682 .export $$remI,MILLICODE
683 .export $$remoI,MILLICODE
684 ldo -1(arg1),tmp /* is there at most one bit set ? */
685 and,<> arg1,tmp,r0 /* if not, don't use power of 2 */
686 addi,> 0,arg1,r0 /* if denominator > 0, use power */
687 /* of 2 */
688 b,n LREF(neg_denom)
689LSYM(pow2)
690 comb,>,n 0,arg0,LREF(neg_num) /* is numerator < 0 ? */
691 and arg0,tmp,retreg /* get the result */
692 MILLIRETN
693LSYM(neg_num)
694 subi 0,arg0,arg0 /* negate numerator */
695 and arg0,tmp,retreg /* get the result */
696 subi 0,retreg,retreg /* negate result */
697 MILLIRETN
698LSYM(neg_denom)
699 addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power */
700 /* of 2 */
701 b,n LREF(regular_seq)
702 sub r0,arg1,tmp /* make denominator positive */
703 comb,=,n arg1,tmp,LREF(regular_seq) /* test against 0x80000000 and 0 */
704 ldo -1(tmp),retreg /* is there at most one bit set ? */
705 and,= tmp,retreg,r0 /* if not, go to regular_seq */
706 b,n LREF(regular_seq)
707 comb,>,n 0,arg0,LREF(neg_num_2) /* if arg0 < 0, negate it */
708 and arg0,retreg,retreg
709 MILLIRETN
710LSYM(neg_num_2)
711 subi 0,arg0,tmp /* test against 0x80000000 */
712 and tmp,retreg,retreg
713 subi 0,retreg,retreg
714 MILLIRETN
715LSYM(regular_seq)
716 addit,= 0,arg1,0 /* trap if div by zero */
717 add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */
718 sub 0,retreg,retreg /* make it positive */
719 sub 0,arg1, tmp /* clear carry, */
720 /* negate the divisor */
721 ds 0, tmp,0 /* set V-bit to the comple- */
722 /* ment of the divisor sign */
723 or 0,0, tmp /* clear tmp */
724 add retreg,retreg,retreg /* shift msb bit into carry */
725 ds tmp,arg1, tmp /* 1st divide step, if no carry */
726 /* out, msb of quotient = 0 */
727 addc retreg,retreg,retreg /* shift retreg with/into carry */
728LSYM(t1)
729 ds tmp,arg1, tmp /* 2nd divide step */
730 addc retreg,retreg,retreg /* shift retreg with/into carry */
731 ds tmp,arg1, tmp /* 3rd divide step */
732 addc retreg,retreg,retreg /* shift retreg with/into carry */
733 ds tmp,arg1, tmp /* 4th divide step */
734 addc retreg,retreg,retreg /* shift retreg with/into carry */
735 ds tmp,arg1, tmp /* 5th divide step */
736 addc retreg,retreg,retreg /* shift retreg with/into carry */
737 ds tmp,arg1, tmp /* 6th divide step */
738 addc retreg,retreg,retreg /* shift retreg with/into carry */
739 ds tmp,arg1, tmp /* 7th divide step */
740 addc retreg,retreg,retreg /* shift retreg with/into carry */
741 ds tmp,arg1, tmp /* 8th divide step */
742 addc retreg,retreg,retreg /* shift retreg with/into carry */
743 ds tmp,arg1, tmp /* 9th divide step */
744 addc retreg,retreg,retreg /* shift retreg with/into carry */
745 ds tmp,arg1, tmp /* 10th divide step */
746 addc retreg,retreg,retreg /* shift retreg with/into carry */
747 ds tmp,arg1, tmp /* 11th divide step */
748 addc retreg,retreg,retreg /* shift retreg with/into carry */
749 ds tmp,arg1, tmp /* 12th divide step */
750 addc retreg,retreg,retreg /* shift retreg with/into carry */
751 ds tmp,arg1, tmp /* 13th divide step */
752 addc retreg,retreg,retreg /* shift retreg with/into carry */
753 ds tmp,arg1, tmp /* 14th divide step */
754 addc retreg,retreg,retreg /* shift retreg with/into carry */
755 ds tmp,arg1, tmp /* 15th divide step */
756 addc retreg,retreg,retreg /* shift retreg with/into carry */
757 ds tmp,arg1, tmp /* 16th divide step */
758 addc retreg,retreg,retreg /* shift retreg with/into carry */
759 ds tmp,arg1, tmp /* 17th divide step */
760 addc retreg,retreg,retreg /* shift retreg with/into carry */
761 ds tmp,arg1, tmp /* 18th divide step */
762 addc retreg,retreg,retreg /* shift retreg with/into carry */
763 ds tmp,arg1, tmp /* 19th divide step */
764 addc retreg,retreg,retreg /* shift retreg with/into carry */
765 ds tmp,arg1, tmp /* 20th divide step */
766 addc retreg,retreg,retreg /* shift retreg with/into carry */
767 ds tmp,arg1, tmp /* 21st divide step */
768 addc retreg,retreg,retreg /* shift retreg with/into carry */
769 ds tmp,arg1, tmp /* 22nd divide step */
770 addc retreg,retreg,retreg /* shift retreg with/into carry */
771 ds tmp,arg1, tmp /* 23rd divide step */
772 addc retreg,retreg,retreg /* shift retreg with/into carry */
773 ds tmp,arg1, tmp /* 24th divide step */
774 addc retreg,retreg,retreg /* shift retreg with/into carry */
775 ds tmp,arg1, tmp /* 25th divide step */
776 addc retreg,retreg,retreg /* shift retreg with/into carry */
777 ds tmp,arg1, tmp /* 26th divide step */
778 addc retreg,retreg,retreg /* shift retreg with/into carry */
779 ds tmp,arg1, tmp /* 27th divide step */
780 addc retreg,retreg,retreg /* shift retreg with/into carry */
781 ds tmp,arg1, tmp /* 28th divide step */
782 addc retreg,retreg,retreg /* shift retreg with/into carry */
783 ds tmp,arg1, tmp /* 29th divide step */
784 addc retreg,retreg,retreg /* shift retreg with/into carry */
785 ds tmp,arg1, tmp /* 30th divide step */
786 addc retreg,retreg,retreg /* shift retreg with/into carry */
787 ds tmp,arg1, tmp /* 31st divide step */
788 addc retreg,retreg,retreg /* shift retreg with/into carry */
789 ds tmp,arg1, tmp /* 32nd divide step, */
790 addc retreg,retreg,retreg /* shift last bit into retreg */
791 movb,>=,n tmp,retreg,LREF(finish) /* branch if pos. tmp */
792 add,< arg1,0,0 /* if arg1 > 0, add arg1 */
793 add,tr tmp,arg1,retreg /* for correcting remainder tmp */
794 sub tmp,arg1,retreg /* else add absolute value arg1 */
795LSYM(finish)
796 add,>= arg0,0,0 /* set sign of remainder */
797 sub 0,retreg,retreg /* to sign of dividend */
798 MILLIRET
799 nop
800 .exit
801 .procend
802#ifdef milliext
803 .origin 0x00000200
804#endif
805 .end
806#endif
807
808#ifdef L_remU
809/* ROUTINE: $$remU
810 . Single precision divide for remainder with unsigned binary integers.
811 .
812 . The remainder must be dividend-(dividend/divisor)*divisor.
813 . Divide by zero is trapped.
814
815 INPUT REGISTERS:
816 . arg0 == dividend
817 . arg1 == divisor
818 . mrp == return pc
819 . sr0 == return space when called externally
820
821 OUTPUT REGISTERS:
822 . arg0 = undefined
823 . arg1 = undefined
824 . ret1 = remainder
825
826 OTHER REGISTERS AFFECTED:
827 . r1 = undefined
828
829 SIDE EFFECTS:
830 . Causes a trap under the following conditions: DIVIDE BY ZERO
831 . Changes memory at the following places: NONE
832
833 PERMISSIBLE CONTEXT:
834 . Unwindable.
835 . Does not create a stack frame.
836 . Suitable for internal or external millicode.
837 . Assumes the special millicode register conventions.
838
839 DISCUSSION:
840 . Calls other millicode routines using mrp: NONE
841 . Calls other millicode routines: NONE */
842
843
844RDEFINE(temp,r1)
845RDEFINE(rmndr,ret1) /* r29 */
846 SUBSPA_MILLI
847 ATTR_MILLI
848 .export $$remU,millicode
849 .proc
850 .callinfo millicode
851 .entry
852GSYM($$remU)
853 ldo -1(arg1),temp /* is there at most one bit set ? */
854 and,= arg1,temp,r0 /* if not, don't use power of 2 */
855 b LREF(regular_seq)
856 addit,= 0,arg1,r0 /* trap on div by zero */
857 and arg0,temp,rmndr /* get the result for power of 2 */
858 MILLIRETN
859LSYM(regular_seq)
860 comib,>=,n 0,arg1,LREF(special_case)
861 subi 0,arg1,rmndr /* clear carry, negate the divisor */
862 ds r0,rmndr,r0 /* set V-bit to 1 */
863 add arg0,arg0,temp /* shift msb bit into carry */
864 ds r0,arg1,rmndr /* 1st divide step, if no carry */
865 addc temp,temp,temp /* shift temp with/into carry */
866 ds rmndr,arg1,rmndr /* 2nd divide step */
867 addc temp,temp,temp /* shift temp with/into carry */
868 ds rmndr,arg1,rmndr /* 3rd divide step */
869 addc temp,temp,temp /* shift temp with/into carry */
870 ds rmndr,arg1,rmndr /* 4th divide step */
871 addc temp,temp,temp /* shift temp with/into carry */
872 ds rmndr,arg1,rmndr /* 5th divide step */
873 addc temp,temp,temp /* shift temp with/into carry */
874 ds rmndr,arg1,rmndr /* 6th divide step */
875 addc temp,temp,temp /* shift temp with/into carry */
876 ds rmndr,arg1,rmndr /* 7th divide step */
877 addc temp,temp,temp /* shift temp with/into carry */
878 ds rmndr,arg1,rmndr /* 8th divide step */
879 addc temp,temp,temp /* shift temp with/into carry */
880 ds rmndr,arg1,rmndr /* 9th divide step */
881 addc temp,temp,temp /* shift temp with/into carry */
882 ds rmndr,arg1,rmndr /* 10th divide step */
883 addc temp,temp,temp /* shift temp with/into carry */
884 ds rmndr,arg1,rmndr /* 11th divide step */
885 addc temp,temp,temp /* shift temp with/into carry */
886 ds rmndr,arg1,rmndr /* 12th divide step */
887 addc temp,temp,temp /* shift temp with/into carry */
888 ds rmndr,arg1,rmndr /* 13th divide step */
889 addc temp,temp,temp /* shift temp with/into carry */
890 ds rmndr,arg1,rmndr /* 14th divide step */
891 addc temp,temp,temp /* shift temp with/into carry */
892 ds rmndr,arg1,rmndr /* 15th divide step */
893 addc temp,temp,temp /* shift temp with/into carry */
894 ds rmndr,arg1,rmndr /* 16th divide step */
895 addc temp,temp,temp /* shift temp with/into carry */
896 ds rmndr,arg1,rmndr /* 17th divide step */
897 addc temp,temp,temp /* shift temp with/into carry */
898 ds rmndr,arg1,rmndr /* 18th divide step */
899 addc temp,temp,temp /* shift temp with/into carry */
900 ds rmndr,arg1,rmndr /* 19th divide step */
901 addc temp,temp,temp /* shift temp with/into carry */
902 ds rmndr,arg1,rmndr /* 20th divide step */
903 addc temp,temp,temp /* shift temp with/into carry */
904 ds rmndr,arg1,rmndr /* 21st divide step */
905 addc temp,temp,temp /* shift temp with/into carry */
906 ds rmndr,arg1,rmndr /* 22nd divide step */
907 addc temp,temp,temp /* shift temp with/into carry */
908 ds rmndr,arg1,rmndr /* 23rd divide step */
909 addc temp,temp,temp /* shift temp with/into carry */
910 ds rmndr,arg1,rmndr /* 24th divide step */
911 addc temp,temp,temp /* shift temp with/into carry */
912 ds rmndr,arg1,rmndr /* 25th divide step */
913 addc temp,temp,temp /* shift temp with/into carry */
914 ds rmndr,arg1,rmndr /* 26th divide step */
915 addc temp,temp,temp /* shift temp with/into carry */
916 ds rmndr,arg1,rmndr /* 27th divide step */
917 addc temp,temp,temp /* shift temp with/into carry */
918 ds rmndr,arg1,rmndr /* 28th divide step */
919 addc temp,temp,temp /* shift temp with/into carry */
920 ds rmndr,arg1,rmndr /* 29th divide step */
921 addc temp,temp,temp /* shift temp with/into carry */
922 ds rmndr,arg1,rmndr /* 30th divide step */
923 addc temp,temp,temp /* shift temp with/into carry */
924 ds rmndr,arg1,rmndr /* 31st divide step */
925 addc temp,temp,temp /* shift temp with/into carry */
926 ds rmndr,arg1,rmndr /* 32nd divide step, */
927 comiclr,<= 0,rmndr,r0
928 add rmndr,arg1,rmndr /* correction */
929 MILLIRETN
930 nop
931
932/* Putting >= on the last DS and deleting COMICLR does not work! */
933LSYM(special_case)
934 sub,>>= arg0,arg1,rmndr
935 copy arg0,rmndr
936 MILLIRETN
937 nop
938 .exit
939 .procend
940 .end
941#endif
942
943#ifdef L_div_const
944/* ROUTINE: $$divI_2
945 . $$divI_3 $$divU_3
946 . $$divI_4
947 . $$divI_5 $$divU_5
948 . $$divI_6 $$divU_6
949 . $$divI_7 $$divU_7
950 . $$divI_8
951 . $$divI_9 $$divU_9
952 . $$divI_10 $$divU_10
953 .
954 . $$divI_12 $$divU_12
955 .
956 . $$divI_14 $$divU_14
957 . $$divI_15 $$divU_15
958 . $$divI_16
959 . $$divI_17 $$divU_17
960 .
961 . Divide by selected constants for single precision binary integers.
962
963 INPUT REGISTERS:
964 . arg0 == dividend
965 . mrp == return pc
966 . sr0 == return space when called externally
967
968 OUTPUT REGISTERS:
969 . arg0 = undefined
970 . arg1 = undefined
971 . ret1 = quotient
972
973 OTHER REGISTERS AFFECTED:
974 . r1 = undefined
975
976 SIDE EFFECTS:
977 . Causes a trap under the following conditions: NONE
978 . Changes memory at the following places: NONE
979
980 PERMISSIBLE CONTEXT:
981 . Unwindable.
982 . Does not create a stack frame.
983 . Suitable for internal or external millicode.
984 . Assumes the special millicode register conventions.
985
986 DISCUSSION:
987 . Calls other millicode routines using mrp: NONE
988 . Calls other millicode routines: NONE */
989
990
991/* TRUNCATED DIVISION BY SMALL INTEGERS
992
993 We are interested in q(x) = floor(x/y), where x >= 0 and y > 0
994 (with y fixed).
995
996 Let a = floor(z/y), for some choice of z. Note that z will be
997 chosen so that division by z is cheap.
998
999 Let r be the remainder(z/y). In other words, r = z - ay.
1000
1001 Now, our method is to choose a value for b such that
1002
1003 q'(x) = floor((ax+b)/z)
1004
1005 is equal to q(x) over as large a range of x as possible. If the
1006 two are equal over a sufficiently large range, and if it is easy to
1007 form the product (ax), and it is easy to divide by z, then we can
1008 perform the division much faster than the general division algorithm.
1009
1010 So, we want the following to be true:
1011
1012 . For x in the following range:
1013 .
1014 . ky <= x < (k+1)y
1015 .
1016 . implies that
1017 .
1018 . k <= (ax+b)/z < (k+1)
1019
1020 We want to determine b such that this is true for all k in the
1021 range {0..K} for some maximum K.
1022
1023 Since (ax+b) is an increasing function of x, we can take each
1024 bound separately to determine the "best" value for b.
1025
1026 (ax+b)/z < (k+1) implies
1027
1028 (a((k+1)y-1)+b < (k+1)z implies
1029
1030 b < a + (k+1)(z-ay) implies
1031
1032 b < a + (k+1)r
1033
1034 This needs to be true for all k in the range {0..K}. In
1035 particular, it is true for k = 0 and this leads to a maximum
1036 acceptable value for b.
1037
1038 b < a+r or b <= a+r-1
1039
1040 Taking the other bound, we have
1041
1042 k <= (ax+b)/z implies
1043
1044 k <= (aky+b)/z implies
1045
1046 k(z-ay) <= b implies
1047
1048 kr <= b
1049
1050 Clearly, the largest range for k will be achieved by maximizing b,
1051 when r is not zero. When r is zero, then the simplest choice for b
1052 is 0. When r is not 0, set
1053
1054 . b = a+r-1
1055
1056 Now, by construction, q'(x) = floor((ax+b)/z) = q(x) = floor(x/y)
1057 for all x in the range:
1058
1059 . 0 <= x < (K+1)y
1060
1061 We need to determine what K is. Of our two bounds,
1062
1063 . b < a+(k+1)r is satisfied for all k >= 0, by construction.
1064
1065 The other bound is
1066
1067 . kr <= b
1068
1069 This is always true if r = 0. If r is not 0 (the usual case), then
1070 K = floor((a+r-1)/r), is the maximum value for k.
1071
1072 Therefore, the formula q'(x) = floor((ax+b)/z) yields the correct
1073 answer for q(x) = floor(x/y) when x is in the range
1074
1075 (0,(K+1)y-1) K = floor((a+r-1)/r)
1076
1077 To be most useful, we want (K+1)y-1 = (max x) >= 2**32-1 so that
1078 the formula for q'(x) yields the correct value of q(x) for all x
1079 representable by a single word in HPPA.
1080
1081 We are also constrained in that computing the product (ax), adding
1082 b, and dividing by z must all be done quickly, otherwise we will be
1083 better off going through the general algorithm using the DS
1084 instruction, which uses approximately 70 cycles.
1085
1086 For each y, there is a choice of z which satisfies the constraints
1087 for (K+1)y >= 2**32. We may not, however, be able to satisfy the
1088 timing constraints for arbitrary y. It seems that z being equal to
1089 a power of 2 or a power of 2 minus 1 is as good as we can do, since
1090 it minimizes the time to do division by z. We want the choice of z
1091 to also result in a value for (a) that minimizes the computation of
1092 the product (ax). This is best achieved if (a) has a regular bit
1093 pattern (so the multiplication can be done with shifts and adds).
1094 The value of (a) also needs to be less than 2**32 so the product is
1095 always guaranteed to fit in 2 words.
1096
1097 In actual practice, the following should be done:
1098
1099 1) For negative x, you should take the absolute value and remember
1100 . the fact so that the result can be negated. This obviously does
1101 . not apply in the unsigned case.
1102 2) For even y, you should factor out the power of 2 that divides y
1103 . and divide x by it. You can then proceed by dividing by the
1104 . odd factor of y.
1105
1106 Here is a table of some odd values of y, and corresponding choices
1107 for z which are "good".
1108
1109 y z r a (hex) max x (hex)
1110
1111 3 2**32 1 55555555 100000001
1112 5 2**32 1 33333333 100000003
1113 7 2**24-1 0 249249 (infinite)
1114 9 2**24-1 0 1c71c7 (infinite)
1115 11 2**20-1 0 1745d (infinite)
1116 13 2**24-1 0 13b13b (infinite)
1117 15 2**32 1 11111111 10000000d
1118 17 2**32 1 f0f0f0f 10000000f
1119
1120 If r is 1, then b = a+r-1 = a. This simplifies the computation
1121 of (ax+b), since you can compute (x+1)(a) instead. If r is 0,
1122 then b = 0 is ok to use which simplifies (ax+b).
1123
1124 The bit patterns for 55555555, 33333333, and 11111111 are obviously
1125 very regular. The bit patterns for the other values of a above are:
1126
1127 y (hex) (binary)
1128
1129 7 249249 001001001001001001001001 << regular >>
1130 9 1c71c7 000111000111000111000111 << regular >>
1131 11 1745d 000000010111010001011101 << irregular >>
1132 13 13b13b 000100111011000100111011 << irregular >>
1133
1134 The bit patterns for (a) corresponding to (y) of 11 and 13 may be
1135 too irregular to warrant using this method.
1136
1137 When z is a power of 2 minus 1, then the division by z is slightly
1138 more complicated, involving an iterative solution.
1139
1140 The code presented here solves division by 1 through 17, except for
1141 11 and 13. There are algorithms for both signed and unsigned
1142 quantities given.
1143
1144 TIMINGS (cycles)
1145
1146 divisor positive negative unsigned
1147
1148 . 1 2 2 2
1149 . 2 4 4 2
1150 . 3 19 21 19
1151 . 4 4 4 2
1152 . 5 18 22 19
1153 . 6 19 22 19
1154 . 8 4 4 2
1155 . 10 18 19 17
1156 . 12 18 20 18
1157 . 15 16 18 16
1158 . 16 4 4 2
1159 . 17 16 18 16
1160
1161 Now, the algorithm for 7, 9, and 14 is an iterative one. That is,
1162 a loop body is executed until the tentative quotient is 0. The
1163 number of times the loop body is executed varies depending on the
1164 dividend, but is never more than two times. If the dividend is
1165 less than the divisor, then the loop body is not executed at all.
1166 Each iteration adds 4 cycles to the timings.
1167
1168 divisor positive negative unsigned
1169
1170 . 7 19+4n 20+4n 20+4n n = number of iterations
1171 . 9 21+4n 22+4n 21+4n
1172 . 14 21+4n 22+4n 20+4n
1173
1174 To give an idea of how the number of iterations varies, here is a
1175 table of dividend versus number of iterations when dividing by 7.
1176
1177 smallest largest required
1178 dividend dividend iterations
1179
1180 . 0 6 0
1181 . 7 0x6ffffff 1
1182 0x1000006 0xffffffff 2
1183
1184 There is some overlap in the range of numbers requiring 1 and 2
1185 iterations. */
1186
1187RDEFINE(t2,r1)
1188RDEFINE(x2,arg0) /* r26 */
1189RDEFINE(t1,arg1) /* r25 */
1190RDEFINE(x1,ret1) /* r29 */
1191
1192 SUBSPA_MILLI_DIV
1193 ATTR_MILLI
1194
1195 .proc
1196 .callinfo millicode
1197 .entry
1198/* NONE of these routines require a stack frame
1199 ALL of these routines are unwindable from millicode */
1200
1201GSYM($$divide_by_constant)
1202 .export $$divide_by_constant,millicode
1203/* Provides a "nice" label for the code covered by the unwind descriptor
1204 for things like gprof. */
1205
1206/* DIVISION BY 2 (shift by 1) */
1207GSYM($$divI_2)
1208 .export $$divI_2,millicode
1209 comclr,>= arg0,0,0
1210 addi 1,arg0,arg0
1211 MILLIRET
1212 extrs arg0,30,31,ret1
1213
1214
1215/* DIVISION BY 4 (shift by 2) */
1216GSYM($$divI_4)
1217 .export $$divI_4,millicode
1218 comclr,>= arg0,0,0
1219 addi 3,arg0,arg0
1220 MILLIRET
1221 extrs arg0,29,30,ret1
1222
1223
1224/* DIVISION BY 8 (shift by 3) */
1225GSYM($$divI_8)
1226 .export $$divI_8,millicode
1227 comclr,>= arg0,0,0
1228 addi 7,arg0,arg0
1229 MILLIRET
1230 extrs arg0,28,29,ret1
1231
1232/* DIVISION BY 16 (shift by 4) */
1233GSYM($$divI_16)
1234 .export $$divI_16,millicode
1235 comclr,>= arg0,0,0
1236 addi 15,arg0,arg0
1237 MILLIRET
1238 extrs arg0,27,28,ret1
1239
1240/****************************************************************************
1241*
1242* DIVISION BY DIVISORS OF FFFFFFFF, and powers of 2 times these
1243*
1244* includes 3,5,15,17 and also 6,10,12
1245*
1246****************************************************************************/
1247
1248/* DIVISION BY 3 (use z = 2**32; a = 55555555) */
1249
1250GSYM($$divI_3)
1251 .export $$divI_3,millicode
1252 comb,<,N x2,0,LREF(neg3)
1253
1254 addi 1,x2,x2 /* this cannot overflow */
1255 extru x2,1,2,x1 /* multiply by 5 to get started */
1256 sh2add x2,x2,x2
1257 b LREF(pos)
1258 addc x1,0,x1
1259
1260LSYM(neg3)
1261 subi 1,x2,x2 /* this cannot overflow */
1262 extru x2,1,2,x1 /* multiply by 5 to get started */
1263 sh2add x2,x2,x2
1264 b LREF(neg)
1265 addc x1,0,x1
1266
1267GSYM($$divU_3)
1268 .export $$divU_3,millicode
1269 addi 1,x2,x2 /* this CAN overflow */
1270 addc 0,0,x1
1271 shd x1,x2,30,t1 /* multiply by 5 to get started */
1272 sh2add x2,x2,x2
1273 b LREF(pos)
1274 addc x1,t1,x1
1275
1276/* DIVISION BY 5 (use z = 2**32; a = 33333333) */
1277
1278GSYM($$divI_5)
1279 .export $$divI_5,millicode
1280 comb,<,N x2,0,LREF(neg5)
1281
1282 addi 3,x2,t1 /* this cannot overflow */
1283 sh1add x2,t1,x2 /* multiply by 3 to get started */
1284 b LREF(pos)
1285 addc 0,0,x1
1286
1287LSYM(neg5)
1288 sub 0,x2,x2 /* negate x2 */
1289 addi 1,x2,x2 /* this cannot overflow */
1290 shd 0,x2,31,x1 /* get top bit (can be 1) */
1291 sh1add x2,x2,x2 /* multiply by 3 to get started */
1292 b LREF(neg)
1293 addc x1,0,x1
1294
1295GSYM($$divU_5)
1296 .export $$divU_5,millicode
1297 addi 1,x2,x2 /* this CAN overflow */
1298 addc 0,0,x1
1299 shd x1,x2,31,t1 /* multiply by 3 to get started */
1300 sh1add x2,x2,x2
1301 b LREF(pos)
1302 addc t1,x1,x1
1303
1304/* DIVISION BY 6 (shift to divide by 2 then divide by 3) */
1305GSYM($$divI_6)
1306 .export $$divI_6,millicode
1307 comb,<,N x2,0,LREF(neg6)
1308 extru x2,30,31,x2 /* divide by 2 */
1309 addi 5,x2,t1 /* compute 5*(x2+1) = 5*x2+5 */
1310 sh2add x2,t1,x2 /* multiply by 5 to get started */
1311 b LREF(pos)
1312 addc 0,0,x1
1313
1314LSYM(neg6)
1315 subi 2,x2,x2 /* negate, divide by 2, and add 1 */
1316 /* negation and adding 1 are done */
1317 /* at the same time by the SUBI */
1318 extru x2,30,31,x2
1319 shd 0,x2,30,x1
1320 sh2add x2,x2,x2 /* multiply by 5 to get started */
1321 b LREF(neg)
1322 addc x1,0,x1
1323
1324GSYM($$divU_6)
1325 .export $$divU_6,millicode
1326 extru x2,30,31,x2 /* divide by 2 */
1327 addi 1,x2,x2 /* cannot carry */
1328 shd 0,x2,30,x1 /* multiply by 5 to get started */
1329 sh2add x2,x2,x2
1330 b LREF(pos)
1331 addc x1,0,x1
1332
1333/* DIVISION BY 10 (shift to divide by 2 then divide by 5) */
1334GSYM($$divU_10)
1335 .export $$divU_10,millicode
1336 extru x2,30,31,x2 /* divide by 2 */
1337 addi 3,x2,t1 /* compute 3*(x2+1) = (3*x2)+3 */
1338 sh1add x2,t1,x2 /* multiply by 3 to get started */
1339 addc 0,0,x1
1340LSYM(pos)
1341 shd x1,x2,28,t1 /* multiply by 0x11 */
1342 shd x2,0,28,t2
1343 add x2,t2,x2
1344 addc x1,t1,x1
1345LSYM(pos_for_17)
1346 shd x1,x2,24,t1 /* multiply by 0x101 */
1347 shd x2,0,24,t2
1348 add x2,t2,x2
1349 addc x1,t1,x1
1350
1351 shd x1,x2,16,t1 /* multiply by 0x10001 */
1352 shd x2,0,16,t2
1353 add x2,t2,x2
1354 MILLIRET
1355 addc x1,t1,x1
1356
1357GSYM($$divI_10)
1358 .export $$divI_10,millicode
1359 comb,< x2,0,LREF(neg10)
1360 copy 0,x1
1361 extru x2,30,31,x2 /* divide by 2 */
1362 addib,TR 1,x2,LREF(pos) /* add 1 (cannot overflow) */
1363 sh1add x2,x2,x2 /* multiply by 3 to get started */
1364
1365LSYM(neg10)
1366 subi 2,x2,x2 /* negate, divide by 2, and add 1 */
1367 /* negation and adding 1 are done */
1368 /* at the same time by the SUBI */
1369 extru x2,30,31,x2
1370 sh1add x2,x2,x2 /* multiply by 3 to get started */
1371LSYM(neg)
1372 shd x1,x2,28,t1 /* multiply by 0x11 */
1373 shd x2,0,28,t2
1374 add x2,t2,x2
1375 addc x1,t1,x1
1376LSYM(neg_for_17)
1377 shd x1,x2,24,t1 /* multiply by 0x101 */
1378 shd x2,0,24,t2
1379 add x2,t2,x2
1380 addc x1,t1,x1
1381
1382 shd x1,x2,16,t1 /* multiply by 0x10001 */
1383 shd x2,0,16,t2
1384 add x2,t2,x2
1385 addc x1,t1,x1
1386 MILLIRET
1387 sub 0,x1,x1
1388
1389/* DIVISION BY 12 (shift to divide by 4 then divide by 3) */
1390GSYM($$divI_12)
1391 .export $$divI_12,millicode
1392 comb,< x2,0,LREF(neg12)
1393 copy 0,x1
1394 extru x2,29,30,x2 /* divide by 4 */
1395 addib,tr 1,x2,LREF(pos) /* compute 5*(x2+1) = 5*x2+5 */
1396 sh2add x2,x2,x2 /* multiply by 5 to get started */
1397
1398LSYM(neg12)
1399 subi 4,x2,x2 /* negate, divide by 4, and add 1 */
1400 /* negation and adding 1 are done */
1401 /* at the same time by the SUBI */
1402 extru x2,29,30,x2
1403 b LREF(neg)
1404 sh2add x2,x2,x2 /* multiply by 5 to get started */
1405
1406GSYM($$divU_12)
1407 .export $$divU_12,millicode
1408 extru x2,29,30,x2 /* divide by 4 */
1409 addi 5,x2,t1 /* cannot carry */
1410 sh2add x2,t1,x2 /* multiply by 5 to get started */
1411 b LREF(pos)
1412 addc 0,0,x1
1413
1414/* DIVISION BY 15 (use z = 2**32; a = 11111111) */
1415GSYM($$divI_15)
1416 .export $$divI_15,millicode
1417 comb,< x2,0,LREF(neg15)
1418 copy 0,x1
1419 addib,tr 1,x2,LREF(pos)+4
1420 shd x1,x2,28,t1
1421
1422LSYM(neg15)
1423 b LREF(neg)
1424 subi 1,x2,x2
1425
1426GSYM($$divU_15)
1427 .export $$divU_15,millicode
1428 addi 1,x2,x2 /* this CAN overflow */
1429 b LREF(pos)
1430 addc 0,0,x1
1431
1432/* DIVISION BY 17 (use z = 2**32; a = f0f0f0f) */
1433GSYM($$divI_17)
1434 .export $$divI_17,millicode
1435 comb,<,n x2,0,LREF(neg17)
1436 addi 1,x2,x2 /* this cannot overflow */
1437 shd 0,x2,28,t1 /* multiply by 0xf to get started */
1438 shd x2,0,28,t2
1439 sub t2,x2,x2
1440 b LREF(pos_for_17)
1441 subb t1,0,x1
1442
1443LSYM(neg17)
1444 subi 1,x2,x2 /* this cannot overflow */
1445 shd 0,x2,28,t1 /* multiply by 0xf to get started */
1446 shd x2,0,28,t2
1447 sub t2,x2,x2
1448 b LREF(neg_for_17)
1449 subb t1,0,x1
1450
1451GSYM($$divU_17)
1452 .export $$divU_17,millicode
1453 addi 1,x2,x2 /* this CAN overflow */
1454 addc 0,0,x1
1455 shd x1,x2,28,t1 /* multiply by 0xf to get started */
1456LSYM(u17)
1457 shd x2,0,28,t2
1458 sub t2,x2,x2
1459 b LREF(pos_for_17)
1460 subb t1,x1,x1
1461
1462
1463/* DIVISION BY DIVISORS OF FFFFFF, and powers of 2 times these
1464 includes 7,9 and also 14
1465
1466
1467 z = 2**24-1
1468 r = z mod x = 0
1469
1470 so choose b = 0
1471
1472 Also, in order to divide by z = 2**24-1, we approximate by dividing
1473 by (z+1) = 2**24 (which is easy), and then correcting.
1474
1475 (ax) = (z+1)q' + r
1476 . = zq' + (q'+r)
1477
1478 So to compute (ax)/z, compute q' = (ax)/(z+1) and r = (ax) mod (z+1)
1479 Then the true remainder of (ax)/z is (q'+r). Repeat the process
1480 with this new remainder, adding the tentative quotients together,
1481 until a tentative quotient is 0 (and then we are done). There is
1482 one last correction to be done. It is possible that (q'+r) = z.
1483 If so, then (q'+r)/(z+1) = 0 and it looks like we are done. But,
1484 in fact, we need to add 1 more to the quotient. Now, it turns
1485 out that this happens if and only if the original value x is
1486 an exact multiple of y. So, to avoid a three instruction test at
1487 the end, instead use 1 instruction to add 1 to x at the beginning. */
1488
1489/* DIVISION BY 7 (use z = 2**24-1; a = 249249) */
1490GSYM($$divI_7)
1491 .export $$divI_7,millicode
1492 comb,<,n x2,0,LREF(neg7)
1493LSYM(7)
1494 addi 1,x2,x2 /* cannot overflow */
1495 shd 0,x2,29,x1
1496 sh3add x2,x2,x2
1497 addc x1,0,x1
1498LSYM(pos7)
1499 shd x1,x2,26,t1
1500 shd x2,0,26,t2
1501 add x2,t2,x2
1502 addc x1,t1,x1
1503
1504 shd x1,x2,20,t1
1505 shd x2,0,20,t2
1506 add x2,t2,x2
1507 addc x1,t1,t1
1508
1509 /* computed <t1,x2>. Now divide it by (2**24 - 1) */
1510
1511 copy 0,x1
1512 shd,= t1,x2,24,t1 /* tentative quotient */
1513LSYM(1)
1514 addb,tr t1,x1,LREF(2) /* add to previous quotient */
1515 extru x2,31,24,x2 /* new remainder (unadjusted) */
1516
1517 MILLIRETN
1518
1519LSYM(2)
1520 addb,tr t1,x2,LREF(1) /* adjust remainder */
1521 extru,= x2,7,8,t1 /* new quotient */
1522
1523LSYM(neg7)
1524 subi 1,x2,x2 /* negate x2 and add 1 */
1525LSYM(8)
1526 shd 0,x2,29,x1
1527 sh3add x2,x2,x2
1528 addc x1,0,x1
1529
1530LSYM(neg7_shift)
1531 shd x1,x2,26,t1
1532 shd x2,0,26,t2
1533 add x2,t2,x2
1534 addc x1,t1,x1
1535
1536 shd x1,x2,20,t1
1537 shd x2,0,20,t2
1538 add x2,t2,x2
1539 addc x1,t1,t1
1540
1541 /* computed <t1,x2>. Now divide it by (2**24 - 1) */
1542
1543 copy 0,x1
1544 shd,= t1,x2,24,t1 /* tentative quotient */
1545LSYM(3)
1546 addb,tr t1,x1,LREF(4) /* add to previous quotient */
1547 extru x2,31,24,x2 /* new remainder (unadjusted) */
1548
1549 MILLIRET
1550 sub 0,x1,x1 /* negate result */
1551
1552LSYM(4)
1553 addb,tr t1,x2,LREF(3) /* adjust remainder */
1554 extru,= x2,7,8,t1 /* new quotient */
1555
1556GSYM($$divU_7)
1557 .export $$divU_7,millicode
1558 addi 1,x2,x2 /* can carry */
1559 addc 0,0,x1
1560 shd x1,x2,29,t1
1561 sh3add x2,x2,x2
1562 b LREF(pos7)
1563 addc t1,x1,x1
1564
1565/* DIVISION BY 9 (use z = 2**24-1; a = 1c71c7) */
1566GSYM($$divI_9)
1567 .export $$divI_9,millicode
1568 comb,<,n x2,0,LREF(neg9)
1569 addi 1,x2,x2 /* cannot overflow */
1570 shd 0,x2,29,t1
1571 shd x2,0,29,t2
1572 sub t2,x2,x2
1573 b LREF(pos7)
1574 subb t1,0,x1
1575
1576LSYM(neg9)
1577 subi 1,x2,x2 /* negate and add 1 */
1578 shd 0,x2,29,t1
1579 shd x2,0,29,t2
1580 sub t2,x2,x2
1581 b LREF(neg7_shift)
1582 subb t1,0,x1
1583
1584GSYM($$divU_9)
1585 .export $$divU_9,millicode
1586 addi 1,x2,x2 /* can carry */
1587 addc 0,0,x1
1588 shd x1,x2,29,t1
1589 shd x2,0,29,t2
1590 sub t2,x2,x2
1591 b LREF(pos7)
1592 subb t1,x1,x1
1593
1594/* DIVISION BY 14 (shift to divide by 2 then divide by 7) */
1595GSYM($$divI_14)
1596 .export $$divI_14,millicode
1597 comb,<,n x2,0,LREF(neg14)
1598GSYM($$divU_14)
1599 .export $$divU_14,millicode
1600 b LREF(7) /* go to 7 case */
1601 extru x2,30,31,x2 /* divide by 2 */
1602
1603LSYM(neg14)
1604 subi 2,x2,x2 /* negate (and add 2) */
1605 b LREF(8)
1606 extru x2,30,31,x2 /* divide by 2 */
1607 .exit
1608 .procend
1609 .end
1610#endif
1611
1612#ifdef L_mulI
1613/* VERSION "@(#)$$mulI $ Revision: 12.4 $ $ Date: 94/03/17 17:18:51 $" */
1614/******************************************************************************
1615This routine is used on PA2.0 processors when gcc -mno-fpregs is used
1616
1617ROUTINE: $$mulI
1618
1619
1620DESCRIPTION:
1621
1622 $$mulI multiplies two single word integers, giving a single
1623 word result.
1624
1625
1626INPUT REGISTERS:
1627
1628 arg0 = Operand 1
1629 arg1 = Operand 2
1630 r31 == return pc
1631 sr0 == return space when called externally
1632
1633
1634OUTPUT REGISTERS:
1635
1636 arg0 = undefined
1637 arg1 = undefined
1638 ret1 = result
1639
1640OTHER REGISTERS AFFECTED:
1641
1642 r1 = undefined
1643
1644SIDE EFFECTS:
1645
1646 Causes a trap under the following conditions: NONE
1647 Changes memory at the following places: NONE
1648
1649PERMISSIBLE CONTEXT:
1650
1651 Unwindable
1652 Does not create a stack frame
1653 Is usable for internal or external microcode
1654
1655DISCUSSION:
1656
1657 Calls other millicode routines via mrp: NONE
1658 Calls other millicode routines: NONE
1659
1660***************************************************************************/
1661
1662
1663#define a0 %arg0
1664#define a1 %arg1
1665#define t0 %r1
1666#define r %ret1
1667
1668#define a0__128a0 zdep a0,24,25,a0
1669#define a0__256a0 zdep a0,23,24,a0
1670#define a1_ne_0_b_l0 comb,<> a1,0,LREF(l0)
1671#define a1_ne_0_b_l1 comb,<> a1,0,LREF(l1)
1672#define a1_ne_0_b_l2 comb,<> a1,0,LREF(l2)
1673#define b_n_ret_t0 b,n LREF(ret_t0)
1674#define b_e_shift b LREF(e_shift)
1675#define b_e_t0ma0 b LREF(e_t0ma0)
1676#define b_e_t0 b LREF(e_t0)
1677#define b_e_t0a0 b LREF(e_t0a0)
1678#define b_e_t02a0 b LREF(e_t02a0)
1679#define b_e_t04a0 b LREF(e_t04a0)
1680#define b_e_2t0 b LREF(e_2t0)
1681#define b_e_2t0a0 b LREF(e_2t0a0)
1682#define b_e_2t04a0 b LREF(e2t04a0)
1683#define b_e_3t0 b LREF(e_3t0)
1684#define b_e_4t0 b LREF(e_4t0)
1685#define b_e_4t0a0 b LREF(e_4t0a0)
1686#define b_e_4t08a0 b LREF(e4t08a0)
1687#define b_e_5t0 b LREF(e_5t0)
1688#define b_e_8t0 b LREF(e_8t0)
1689#define b_e_8t0a0 b LREF(e_8t0a0)
1690#define r__r_a0 add r,a0,r
1691#define r__r_2a0 sh1add a0,r,r
1692#define r__r_4a0 sh2add a0,r,r
1693#define r__r_8a0 sh3add a0,r,r
1694#define r__r_t0 add r,t0,r
1695#define r__r_2t0 sh1add t0,r,r
1696#define r__r_4t0 sh2add t0,r,r
1697#define r__r_8t0 sh3add t0,r,r
1698#define t0__3a0 sh1add a0,a0,t0
1699#define t0__4a0 sh2add a0,0,t0
1700#define t0__5a0 sh2add a0,a0,t0
1701#define t0__8a0 sh3add a0,0,t0
1702#define t0__9a0 sh3add a0,a0,t0
1703#define t0__16a0 zdep a0,27,28,t0
1704#define t0__32a0 zdep a0,26,27,t0
1705#define t0__64a0 zdep a0,25,26,t0
1706#define t0__128a0 zdep a0,24,25,t0
1707#define t0__t0ma0 sub t0,a0,t0
1708#define t0__t0_a0 add t0,a0,t0
1709#define t0__t0_2a0 sh1add a0,t0,t0
1710#define t0__t0_4a0 sh2add a0,t0,t0
1711#define t0__t0_8a0 sh3add a0,t0,t0
1712#define t0__2t0_a0 sh1add t0,a0,t0
1713#define t0__3t0 sh1add t0,t0,t0
1714#define t0__4t0 sh2add t0,0,t0
1715#define t0__4t0_a0 sh2add t0,a0,t0
1716#define t0__5t0 sh2add t0,t0,t0
1717#define t0__8t0 sh3add t0,0,t0
1718#define t0__8t0_a0 sh3add t0,a0,t0
1719#define t0__9t0 sh3add t0,t0,t0
1720#define t0__16t0 zdep t0,27,28,t0
1721#define t0__32t0 zdep t0,26,27,t0
1722#define t0__256a0 zdep a0,23,24,t0
1723
1724
1725 SUBSPA_MILLI
1726 ATTR_MILLI
1727 .align 16
1728 .proc
1729 .callinfo millicode
1730 .export $$mulI,millicode
1731GSYM($$mulI)
1732 combt,<<= a1,a0,LREF(l4) /* swap args if unsigned a1>a0 */
1733 copy 0,r /* zero out the result */
1734 xor a0,a1,a0 /* swap a0 & a1 using the */
1735 xor a0,a1,a1 /* old xor trick */
1736 xor a0,a1,a0
1737LSYM(l4)
1738 combt,<= 0,a0,LREF(l3) /* if a0>=0 then proceed like unsigned */
1739 zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */
1740 sub,> 0,a1,t0 /* otherwise negate both and */
1741 combt,<=,n a0,t0,LREF(l2) /* swap back if |a0|<|a1| */
1742 sub 0,a0,a1
1743 movb,tr,n t0,a0,LREF(l2) /* 10th inst. */
1744
1745LSYM(l0) r__r_t0 /* add in this partial product */
1746LSYM(l1) a0__256a0 /* a0 <<= 8 ****************** */
1747LSYM(l2) zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */
1748LSYM(l3) blr t0,0 /* case on these 8 bits ****** */
1749 extru a1,23,24,a1 /* a1 >>= 8 ****************** */
1750
1751/*16 insts before this. */
1752/* a0 <<= 8 ************************** */
1753LSYM(x0) a1_ne_0_b_l2 ! a0__256a0 ! MILLIRETN ! nop
1754LSYM(x1) a1_ne_0_b_l1 ! r__r_a0 ! MILLIRETN ! nop
1755LSYM(x2) a1_ne_0_b_l1 ! r__r_2a0 ! MILLIRETN ! nop
1756LSYM(x3) a1_ne_0_b_l0 ! t0__3a0 ! MILLIRET ! r__r_t0
1757LSYM(x4) a1_ne_0_b_l1 ! r__r_4a0 ! MILLIRETN ! nop
1758LSYM(x5) a1_ne_0_b_l0 ! t0__5a0 ! MILLIRET ! r__r_t0
1759LSYM(x6) t0__3a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN
1760LSYM(x7) t0__3a0 ! a1_ne_0_b_l0 ! r__r_4a0 ! b_n_ret_t0
1761LSYM(x8) a1_ne_0_b_l1 ! r__r_8a0 ! MILLIRETN ! nop
1762LSYM(x9) a1_ne_0_b_l0 ! t0__9a0 ! MILLIRET ! r__r_t0
1763LSYM(x10) t0__5a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN
1764LSYM(x11) t0__3a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0
1765LSYM(x12) t0__3a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN
1766LSYM(x13) t0__5a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0
1767LSYM(x14) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0
1768LSYM(x15) t0__5a0 ! a1_ne_0_b_l0 ! t0__3t0 ! b_n_ret_t0
1769LSYM(x16) t0__16a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN
1770LSYM(x17) t0__9a0 ! a1_ne_0_b_l0 ! t0__t0_8a0 ! b_n_ret_t0
1771LSYM(x18) t0__9a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN
1772LSYM(x19) t0__9a0 ! a1_ne_0_b_l0 ! t0__2t0_a0 ! b_n_ret_t0
1773LSYM(x20) t0__5a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN
1774LSYM(x21) t0__5a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0
1775LSYM(x22) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0
1776LSYM(x23) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0
1777LSYM(x24) t0__3a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN
1778LSYM(x25) t0__5a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0
1779LSYM(x26) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0
1780LSYM(x27) t0__3a0 ! a1_ne_0_b_l0 ! t0__9t0 ! b_n_ret_t0
1781LSYM(x28) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0
1782LSYM(x29) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0
1783LSYM(x30) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_2t0
1784LSYM(x31) t0__32a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0
1785LSYM(x32) t0__32a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN
1786LSYM(x33) t0__8a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0
1787LSYM(x34) t0__16a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0
1788LSYM(x35) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__t0_8a0
1789LSYM(x36) t0__9a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN
1790LSYM(x37) t0__9a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0
1791LSYM(x38) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0
1792LSYM(x39) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0
1793LSYM(x40) t0__5a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN
1794LSYM(x41) t0__5a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0
1795LSYM(x42) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0
1796LSYM(x43) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0
1797LSYM(x44) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0
1798LSYM(x45) t0__9a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0
1799LSYM(x46) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_a0
1800LSYM(x47) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_2a0
1801LSYM(x48) t0__3a0 ! a1_ne_0_b_l0 ! t0__16t0 ! b_n_ret_t0
1802LSYM(x49) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_4a0
1803LSYM(x50) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_2t0
1804LSYM(x51) t0__9a0 ! t0__t0_8a0 ! b_e_t0 ! t0__3t0
1805LSYM(x52) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0
1806LSYM(x53) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0
1807LSYM(x54) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_2t0
1808LSYM(x55) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__2t0_a0
1809LSYM(x56) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0
1810LSYM(x57) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__3t0
1811LSYM(x58) t0__3a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0
1812LSYM(x59) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__3t0
1813LSYM(x60) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_4t0
1814LSYM(x61) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0
1815LSYM(x62) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0
1816LSYM(x63) t0__64a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0
1817LSYM(x64) t0__64a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN
1818LSYM(x65) t0__8a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0
1819LSYM(x66) t0__32a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0
1820LSYM(x67) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0
1821LSYM(x68) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0
1822LSYM(x69) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0
1823LSYM(x70) t0__64a0 ! t0__t0_4a0 ! b_e_t0 ! t0__t0_2a0
1824LSYM(x71) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__t0ma0
1825LSYM(x72) t0__9a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN
1826LSYM(x73) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_t0
1827LSYM(x74) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0
1828LSYM(x75) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0
1829LSYM(x76) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0
1830LSYM(x77) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0
1831LSYM(x78) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__2t0_a0
1832LSYM(x79) t0__16a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0
1833LSYM(x80) t0__16a0 ! t0__5t0 ! b_e_shift ! r__r_t0
1834LSYM(x81) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_t0
1835LSYM(x82) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0
1836LSYM(x83) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0
1837LSYM(x84) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0
1838LSYM(x85) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0
1839LSYM(x86) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0
1840LSYM(x87) t0__9a0 ! t0__9t0 ! b_e_t02a0 ! t0__t0_4a0
1841LSYM(x88) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0
1842LSYM(x89) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0
1843LSYM(x90) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_2t0
1844LSYM(x91) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__2t0_a0
1845LSYM(x92) t0__5a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0
1846LSYM(x93) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__3t0
1847LSYM(x94) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__t0_2a0
1848LSYM(x95) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0
1849LSYM(x96) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_4t0
1850LSYM(x97) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0
1851LSYM(x98) t0__32a0 ! t0__3t0 ! b_e_t0 ! t0__t0_2a0
1852LSYM(x99) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0
1853LSYM(x100) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_4t0
1854LSYM(x101) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0
1855LSYM(x102) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0
1856LSYM(x103) t0__5a0 ! t0__5t0 ! b_e_t02a0 ! t0__4t0_a0
1857LSYM(x104) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0
1858LSYM(x105) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0
1859LSYM(x106) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__4t0_a0
1860LSYM(x107) t0__9a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__8t0_a0
1861LSYM(x108) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_4t0
1862LSYM(x109) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0
1863LSYM(x110) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__2t0_a0
1864LSYM(x111) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0
1865LSYM(x112) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__16t0
1866LSYM(x113) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__3t0
1867LSYM(x114) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__3t0
1868LSYM(x115) t0__9a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__3t0
1869LSYM(x116) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__4t0_a0
1870LSYM(x117) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0
1871LSYM(x118) t0__3a0 ! t0__4t0_a0 ! b_e_t0a0 ! t0__9t0
1872LSYM(x119) t0__3a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__9t0
1873LSYM(x120) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_8t0
1874LSYM(x121) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0
1875LSYM(x122) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0
1876LSYM(x123) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0
1877LSYM(x124) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0
1878LSYM(x125) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__5t0
1879LSYM(x126) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0
1880LSYM(x127) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0
1881LSYM(x128) t0__128a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN
1882LSYM(x129) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0_a0 ! b_n_ret_t0
1883LSYM(x130) t0__64a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0
1884LSYM(x131) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0
1885LSYM(x132) t0__8a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0
1886LSYM(x133) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0
1887LSYM(x134) t0__8a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0
1888LSYM(x135) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__3t0
1889LSYM(x136) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0
1890LSYM(x137) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0
1891LSYM(x138) t0__8a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0
1892LSYM(x139) t0__8a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__4t0_a0
1893LSYM(x140) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__5t0
1894LSYM(x141) t0__8a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__2t0_a0
1895LSYM(x142) t0__9a0 ! t0__8t0 ! b_e_2t0 ! t0__t0ma0
1896LSYM(x143) t0__16a0 ! t0__9t0 ! b_e_t0 ! t0__t0ma0
1897LSYM(x144) t0__9a0 ! t0__8t0 ! b_e_shift ! r__r_2t0
1898LSYM(x145) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__2t0_a0
1899LSYM(x146) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0
1900LSYM(x147) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0
1901LSYM(x148) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0
1902LSYM(x149) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0
1903LSYM(x150) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0
1904LSYM(x151) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__2t0_a0
1905LSYM(x152) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0
1906LSYM(x153) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0
1907LSYM(x154) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0
1908LSYM(x155) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__5t0
1909LSYM(x156) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0
1910LSYM(x157) t0__32a0 ! t0__t0ma0 ! b_e_t02a0 ! t0__5t0
1911LSYM(x158) t0__16a0 ! t0__5t0 ! b_e_2t0 ! t0__t0ma0
1912LSYM(x159) t0__32a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0
1913LSYM(x160) t0__5a0 ! t0__4t0 ! b_e_shift ! r__r_8t0
1914LSYM(x161) t0__8a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0
1915LSYM(x162) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_2t0
1916LSYM(x163) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__2t0_a0
1917LSYM(x164) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_4t0
1918LSYM(x165) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0
1919LSYM(x166) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__2t0_a0
1920LSYM(x167) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__2t0_a0
1921LSYM(x168) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0
1922LSYM(x169) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__8t0_a0
1923LSYM(x170) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__5t0
1924LSYM(x171) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__9t0
1925LSYM(x172) t0__5a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__2t0_a0
1926LSYM(x173) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__9t0
1927LSYM(x174) t0__32a0 ! t0__t0_2a0 ! b_e_t04a0 ! t0__5t0
1928LSYM(x175) t0__8a0 ! t0__2t0_a0 ! b_e_5t0 ! t0__2t0_a0
1929LSYM(x176) t0__5a0 ! t0__4t0_a0 ! b_e_8t0 ! t0__t0_a0
1930LSYM(x177) t0__5a0 ! t0__4t0_a0 ! b_e_8t0a0 ! t0__t0_a0
1931LSYM(x178) t0__5a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__8t0_a0
1932LSYM(x179) t0__5a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__8t0_a0
1933LSYM(x180) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_4t0
1934LSYM(x181) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0
1935LSYM(x182) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__2t0_a0
1936LSYM(x183) t0__9a0 ! t0__5t0 ! b_e_2t0a0 ! t0__2t0_a0
1937LSYM(x184) t0__5a0 ! t0__9t0 ! b_e_4t0 ! t0__t0_a0
1938LSYM(x185) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0
1939LSYM(x186) t0__32a0 ! t0__t0ma0 ! b_e_2t0 ! t0__3t0
1940LSYM(x187) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__5t0
1941LSYM(x188) t0__9a0 ! t0__5t0 ! b_e_4t0 ! t0__t0_2a0
1942LSYM(x189) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0
1943LSYM(x190) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__5t0
1944LSYM(x191) t0__64a0 ! t0__3t0 ! b_e_t0 ! t0__t0ma0
1945LSYM(x192) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_8t0
1946LSYM(x193) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0
1947LSYM(x194) t0__8a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0
1948LSYM(x195) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0
1949LSYM(x196) t0__8a0 ! t0__3t0 ! b_e_4t0 ! t0__2t0_a0
1950LSYM(x197) t0__8a0 ! t0__3t0 ! b_e_4t0a0 ! t0__2t0_a0
1951LSYM(x198) t0__64a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0
1952LSYM(x199) t0__8a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0
1953LSYM(x200) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_8t0
1954LSYM(x201) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__8t0_a0
1955LSYM(x202) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__4t0_a0
1956LSYM(x203) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__4t0_a0
1957LSYM(x204) t0__8a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0
1958LSYM(x205) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__5t0
1959LSYM(x206) t0__64a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__3t0
1960LSYM(x207) t0__8a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0
1961LSYM(x208) t0__5a0 ! t0__5t0 ! b_e_8t0 ! t0__t0_a0
1962LSYM(x209) t0__5a0 ! t0__5t0 ! b_e_8t0a0 ! t0__t0_a0
1963LSYM(x210) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__5t0
1964LSYM(x211) t0__5a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__5t0
1965LSYM(x212) t0__3a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__4t0_a0
1966LSYM(x213) t0__3a0 ! t0__4t0_a0 ! b_e_4t0a0 ! t0__4t0_a0
1967LSYM(x214) t0__9a0 ! t0__t0_4a0 ! b_e_2t04a0 ! t0__8t0_a0
1968LSYM(x215) t0__5a0 ! t0__4t0_a0 ! b_e_5t0 ! t0__2t0_a0
1969LSYM(x216) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_8t0
1970LSYM(x217) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0
1971LSYM(x218) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0
1972LSYM(x219) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0
1973LSYM(x220) t0__3a0 ! t0__9t0 ! b_e_4t0 ! t0__2t0_a0
1974LSYM(x221) t0__3a0 ! t0__9t0 ! b_e_4t0a0 ! t0__2t0_a0
1975LSYM(x222) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__3t0
1976LSYM(x223) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0
1977LSYM(x224) t0__9a0 ! t0__3t0 ! b_e_8t0 ! t0__t0_a0
1978LSYM(x225) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__5t0
1979LSYM(x226) t0__3a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__32t0
1980LSYM(x227) t0__9a0 ! t0__5t0 ! b_e_t02a0 ! t0__5t0
1981LSYM(x228) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0
1982LSYM(x229) t0__9a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__3t0
1983LSYM(x230) t0__9a0 ! t0__5t0 ! b_e_5t0 ! t0__t0_a0
1984LSYM(x231) t0__9a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0
1985LSYM(x232) t0__3a0 ! t0__2t0_a0 ! b_e_8t0 ! t0__4t0_a0
1986LSYM(x233) t0__3a0 ! t0__2t0_a0 ! b_e_8t0a0 ! t0__4t0_a0
1987LSYM(x234) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__9t0
1988LSYM(x235) t0__3a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__9t0
1989LSYM(x236) t0__9a0 ! t0__2t0_a0 ! b_e_4t08a0 ! t0__3t0
1990LSYM(x237) t0__16a0 ! t0__5t0 ! b_e_3t0 ! t0__t0ma0
1991LSYM(x238) t0__3a0 ! t0__4t0_a0 ! b_e_2t04a0 ! t0__9t0
1992LSYM(x239) t0__16a0 ! t0__5t0 ! b_e_t0ma0 ! t0__3t0
1993LSYM(x240) t0__9a0 ! t0__t0_a0 ! b_e_8t0 ! t0__3t0
1994LSYM(x241) t0__9a0 ! t0__t0_a0 ! b_e_8t0a0 ! t0__3t0
1995LSYM(x242) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__8t0_a0
1996LSYM(x243) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__3t0
1997LSYM(x244) t0__5a0 ! t0__3t0 ! b_e_4t0 ! t0__4t0_a0
1998LSYM(x245) t0__8a0 ! t0__3t0 ! b_e_5t0 ! t0__2t0_a0
1999LSYM(x246) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__3t0
2000LSYM(x247) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__3t0
2001LSYM(x248) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_8t0
2002LSYM(x249) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__8t0_a0
2003LSYM(x250) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__5t0
2004LSYM(x251) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__5t0
2005LSYM(x252) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0
2006LSYM(x253) t0__64a0 ! t0__t0ma0 ! b_e_t0 ! t0__4t0_a0
2007LSYM(x254) t0__128a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0
2008LSYM(x255) t0__256a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0
2009/*1040 insts before this. */
2010LSYM(ret_t0) MILLIRET
2011LSYM(e_t0) r__r_t0
2012LSYM(e_shift) a1_ne_0_b_l2
2013 a0__256a0 /* a0 <<= 8 *********** */
2014 MILLIRETN
2015LSYM(e_t0ma0) a1_ne_0_b_l0
2016 t0__t0ma0
2017 MILLIRET
2018 r__r_t0
2019LSYM(e_t0a0) a1_ne_0_b_l0
2020 t0__t0_a0
2021 MILLIRET
2022 r__r_t0
2023LSYM(e_t02a0) a1_ne_0_b_l0
2024 t0__t0_2a0
2025 MILLIRET
2026 r__r_t0
2027LSYM(e_t04a0) a1_ne_0_b_l0
2028 t0__t0_4a0
2029 MILLIRET
2030 r__r_t0
2031LSYM(e_2t0) a1_ne_0_b_l1
2032 r__r_2t0
2033 MILLIRETN
2034LSYM(e_2t0a0) a1_ne_0_b_l0
2035 t0__2t0_a0
2036 MILLIRET
2037 r__r_t0
2038LSYM(e2t04a0) t0__t0_2a0
2039 a1_ne_0_b_l1
2040 r__r_2t0
2041 MILLIRETN
2042LSYM(e_3t0) a1_ne_0_b_l0
2043 t0__3t0
2044 MILLIRET
2045 r__r_t0
2046LSYM(e_4t0) a1_ne_0_b_l1
2047 r__r_4t0
2048 MILLIRETN
2049LSYM(e_4t0a0) a1_ne_0_b_l0
2050 t0__4t0_a0
2051 MILLIRET
2052 r__r_t0
2053LSYM(e4t08a0) t0__t0_2a0
2054 a1_ne_0_b_l1
2055 r__r_4t0
2056 MILLIRETN
2057LSYM(e_5t0) a1_ne_0_b_l0
2058 t0__5t0
2059 MILLIRET
2060 r__r_t0
2061LSYM(e_8t0) a1_ne_0_b_l1
2062 r__r_8t0
2063 MILLIRETN
2064LSYM(e_8t0a0) a1_ne_0_b_l0
2065 t0__8t0_a0
2066 MILLIRET
2067 r__r_t0
2068
2069 .procend
2070 .end
2071#endif
diff --git a/arch/parisc/lib/milli/milli.h b/arch/parisc/lib/milli/milli.h
new file mode 100644
index 000000000000..19ac79f336de
--- /dev/null
+++ b/arch/parisc/lib/milli/milli.h
@@ -0,0 +1,165 @@
1/* 32 and 64-bit millicode, original author Hewlett-Packard
2 adapted for gcc by Paul Bame <bame@debian.org>
3 and Alan Modra <alan@linuxcare.com.au>.
4
5 Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of GCC and is released under the terms of
8 of the GNU General Public License as published by the Free Software
9 Foundation; either version 2, or (at your option) any later version.
10 See the file COPYING in the top-level GCC source directory for a copy
11 of the license. */
12
13#ifndef _PA_MILLI_H_
14#define _PA_MILLI_H_
15
16#define L_dyncall
17#define L_divI
18#define L_divU
19#define L_remI
20#define L_remU
21#define L_div_const
22#define L_mulI
23
24#ifdef CONFIG_64BIT
25 .level 2.0w
26#endif
27
28/* Hardware General Registers. */
29r0: .reg %r0
30r1: .reg %r1
31r2: .reg %r2
32r3: .reg %r3
33r4: .reg %r4
34r5: .reg %r5
35r6: .reg %r6
36r7: .reg %r7
37r8: .reg %r8
38r9: .reg %r9
39r10: .reg %r10
40r11: .reg %r11
41r12: .reg %r12
42r13: .reg %r13
43r14: .reg %r14
44r15: .reg %r15
45r16: .reg %r16
46r17: .reg %r17
47r18: .reg %r18
48r19: .reg %r19
49r20: .reg %r20
50r21: .reg %r21
51r22: .reg %r22
52r23: .reg %r23
53r24: .reg %r24
54r25: .reg %r25
55r26: .reg %r26
56r27: .reg %r27
57r28: .reg %r28
58r29: .reg %r29
59r30: .reg %r30
60r31: .reg %r31
61
62/* Hardware Space Registers. */
63sr0: .reg %sr0
64sr1: .reg %sr1
65sr2: .reg %sr2
66sr3: .reg %sr3
67sr4: .reg %sr4
68sr5: .reg %sr5
69sr6: .reg %sr6
70sr7: .reg %sr7
71
72/* Hardware Floating Point Registers. */
73fr0: .reg %fr0
74fr1: .reg %fr1
75fr2: .reg %fr2
76fr3: .reg %fr3
77fr4: .reg %fr4
78fr5: .reg %fr5
79fr6: .reg %fr6
80fr7: .reg %fr7
81fr8: .reg %fr8
82fr9: .reg %fr9
83fr10: .reg %fr10
84fr11: .reg %fr11
85fr12: .reg %fr12
86fr13: .reg %fr13
87fr14: .reg %fr14
88fr15: .reg %fr15
89
90/* Hardware Control Registers. */
91cr11: .reg %cr11
92sar: .reg %cr11 /* Shift Amount Register */
93
94/* Software Architecture General Registers. */
95rp: .reg r2 /* return pointer */
96#ifdef CONFIG_64BIT
97mrp: .reg r2 /* millicode return pointer */
98#else
99mrp: .reg r31 /* millicode return pointer */
100#endif
101ret0: .reg r28 /* return value */
102ret1: .reg r29 /* return value (high part of double) */
103sp: .reg r30 /* stack pointer */
104dp: .reg r27 /* data pointer */
105arg0: .reg r26 /* argument */
106arg1: .reg r25 /* argument or high part of double argument */
107arg2: .reg r24 /* argument */
108arg3: .reg r23 /* argument or high part of double argument */
109
110/* Software Architecture Space Registers. */
111/* sr0 ; return link from BLE */
112sret: .reg sr1 /* return value */
113sarg: .reg sr1 /* argument */
114/* sr4 ; PC SPACE tracker */
115/* sr5 ; process private data */
116
117/* Frame Offsets (millicode convention!) Used when calling other
118 millicode routines. Stack unwinding is dependent upon these
119 definitions. */
120r31_slot: .equ -20 /* "current RP" slot */
121sr0_slot: .equ -16 /* "static link" slot */
122#if defined(CONFIG_64BIT)
123mrp_slot: .equ -16 /* "current RP" slot */
124psp_slot: .equ -8 /* "previous SP" slot */
125#else
126mrp_slot: .equ -20 /* "current RP" slot (replacing "r31_slot") */
127#endif
128
129
130#define DEFINE(name,value)name: .EQU value
131#define RDEFINE(name,value)name: .REG value
132#ifdef milliext
133#define MILLI_BE(lbl) BE lbl(sr7,r0)
134#define MILLI_BEN(lbl) BE,n lbl(sr7,r0)
135#define MILLI_BLE(lbl) BLE lbl(sr7,r0)
136#define MILLI_BLEN(lbl) BLE,n lbl(sr7,r0)
137#define MILLIRETN BE,n 0(sr0,mrp)
138#define MILLIRET BE 0(sr0,mrp)
139#define MILLI_RETN BE,n 0(sr0,mrp)
140#define MILLI_RET BE 0(sr0,mrp)
141#else
142#define MILLI_BE(lbl) B lbl
143#define MILLI_BEN(lbl) B,n lbl
144#define MILLI_BLE(lbl) BL lbl,mrp
145#define MILLI_BLEN(lbl) BL,n lbl,mrp
146#define MILLIRETN BV,n 0(mrp)
147#define MILLIRET BV 0(mrp)
148#define MILLI_RETN BV,n 0(mrp)
149#define MILLI_RET BV 0(mrp)
150#endif
151
152#define CAT(a,b) a##b
153
154#define SUBSPA_MILLI .section .text
155#define SUBSPA_MILLI_DIV .section .text.div,"ax",@progbits! .align 16
156#define SUBSPA_MILLI_MUL .section .text.mul,"ax",@progbits! .align 16
157#define ATTR_MILLI
158#define SUBSPA_DATA .section .data
159#define ATTR_DATA
160#define GLOBAL $global$
161#define GSYM(sym) !sym:
162#define LSYM(sym) !CAT(.L,sym:)
163#define LREF(sym) CAT(.L,sym)
164
165#endif /*_PA_MILLI_H_*/
diff --git a/arch/parisc/lib/milli/mulI.S b/arch/parisc/lib/milli/mulI.S
new file mode 100644
index 000000000000..4c7e0c36d15e
--- /dev/null
+++ b/arch/parisc/lib/milli/mulI.S
@@ -0,0 +1,474 @@
1/* 32 and 64-bit millicode, original author Hewlett-Packard
2 adapted for gcc by Paul Bame <bame@debian.org>
3 and Alan Modra <alan@linuxcare.com.au>.
4
5 Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of GCC and is released under the terms of
8 of the GNU General Public License as published by the Free Software
9 Foundation; either version 2, or (at your option) any later version.
10 See the file COPYING in the top-level GCC source directory for a copy
11 of the license. */
12
13#include "milli.h"
14
15#ifdef L_mulI
16/* VERSION "@(#)$$mulI $ Revision: 12.4 $ $ Date: 94/03/17 17:18:51 $" */
17/******************************************************************************
18This routine is used on PA2.0 processors when gcc -mno-fpregs is used
19
20ROUTINE: $$mulI
21
22
23DESCRIPTION:
24
25 $$mulI multiplies two single word integers, giving a single
26 word result.
27
28
29INPUT REGISTERS:
30
31 arg0 = Operand 1
32 arg1 = Operand 2
33 r31 == return pc
34 sr0 == return space when called externally
35
36
37OUTPUT REGISTERS:
38
39 arg0 = undefined
40 arg1 = undefined
41 ret1 = result
42
43OTHER REGISTERS AFFECTED:
44
45 r1 = undefined
46
47SIDE EFFECTS:
48
49 Causes a trap under the following conditions: NONE
50 Changes memory at the following places: NONE
51
52PERMISSIBLE CONTEXT:
53
54 Unwindable
55 Does not create a stack frame
56 Is usable for internal or external microcode
57
58DISCUSSION:
59
60 Calls other millicode routines via mrp: NONE
61 Calls other millicode routines: NONE
62
63***************************************************************************/
64
65
66#define a0 %arg0
67#define a1 %arg1
68#define t0 %r1
69#define r %ret1
70
71#define a0__128a0 zdep a0,24,25,a0
72#define a0__256a0 zdep a0,23,24,a0
73#define a1_ne_0_b_l0 comb,<> a1,0,LREF(l0)
74#define a1_ne_0_b_l1 comb,<> a1,0,LREF(l1)
75#define a1_ne_0_b_l2 comb,<> a1,0,LREF(l2)
76#define b_n_ret_t0 b,n LREF(ret_t0)
77#define b_e_shift b LREF(e_shift)
78#define b_e_t0ma0 b LREF(e_t0ma0)
79#define b_e_t0 b LREF(e_t0)
80#define b_e_t0a0 b LREF(e_t0a0)
81#define b_e_t02a0 b LREF(e_t02a0)
82#define b_e_t04a0 b LREF(e_t04a0)
83#define b_e_2t0 b LREF(e_2t0)
84#define b_e_2t0a0 b LREF(e_2t0a0)
85#define b_e_2t04a0 b LREF(e2t04a0)
86#define b_e_3t0 b LREF(e_3t0)
87#define b_e_4t0 b LREF(e_4t0)
88#define b_e_4t0a0 b LREF(e_4t0a0)
89#define b_e_4t08a0 b LREF(e4t08a0)
90#define b_e_5t0 b LREF(e_5t0)
91#define b_e_8t0 b LREF(e_8t0)
92#define b_e_8t0a0 b LREF(e_8t0a0)
93#define r__r_a0 add r,a0,r
94#define r__r_2a0 sh1add a0,r,r
95#define r__r_4a0 sh2add a0,r,r
96#define r__r_8a0 sh3add a0,r,r
97#define r__r_t0 add r,t0,r
98#define r__r_2t0 sh1add t0,r,r
99#define r__r_4t0 sh2add t0,r,r
100#define r__r_8t0 sh3add t0,r,r
101#define t0__3a0 sh1add a0,a0,t0
102#define t0__4a0 sh2add a0,0,t0
103#define t0__5a0 sh2add a0,a0,t0
104#define t0__8a0 sh3add a0,0,t0
105#define t0__9a0 sh3add a0,a0,t0
106#define t0__16a0 zdep a0,27,28,t0
107#define t0__32a0 zdep a0,26,27,t0
108#define t0__64a0 zdep a0,25,26,t0
109#define t0__128a0 zdep a0,24,25,t0
110#define t0__t0ma0 sub t0,a0,t0
111#define t0__t0_a0 add t0,a0,t0
112#define t0__t0_2a0 sh1add a0,t0,t0
113#define t0__t0_4a0 sh2add a0,t0,t0
114#define t0__t0_8a0 sh3add a0,t0,t0
115#define t0__2t0_a0 sh1add t0,a0,t0
116#define t0__3t0 sh1add t0,t0,t0
117#define t0__4t0 sh2add t0,0,t0
118#define t0__4t0_a0 sh2add t0,a0,t0
119#define t0__5t0 sh2add t0,t0,t0
120#define t0__8t0 sh3add t0,0,t0
121#define t0__8t0_a0 sh3add t0,a0,t0
122#define t0__9t0 sh3add t0,t0,t0
123#define t0__16t0 zdep t0,27,28,t0
124#define t0__32t0 zdep t0,26,27,t0
125#define t0__256a0 zdep a0,23,24,t0
126
127
128 SUBSPA_MILLI
129 ATTR_MILLI
130 .align 16
131 .proc
132 .callinfo millicode
133 .export $$mulI,millicode
134GSYM($$mulI)
135 combt,<<= a1,a0,LREF(l4) /* swap args if unsigned a1>a0 */
136 copy 0,r /* zero out the result */
137 xor a0,a1,a0 /* swap a0 & a1 using the */
138 xor a0,a1,a1 /* old xor trick */
139 xor a0,a1,a0
140LSYM(l4)
141 combt,<= 0,a0,LREF(l3) /* if a0>=0 then proceed like unsigned */
142 zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */
143 sub,> 0,a1,t0 /* otherwise negate both and */
144 combt,<=,n a0,t0,LREF(l2) /* swap back if |a0|<|a1| */
145 sub 0,a0,a1
146 movb,tr,n t0,a0,LREF(l2) /* 10th inst. */
147
148LSYM(l0) r__r_t0 /* add in this partial product */
149LSYM(l1) a0__256a0 /* a0 <<= 8 ****************** */
150LSYM(l2) zdep a1,30,8,t0 /* t0 = (a1&0xff)<<1 ********* */
151LSYM(l3) blr t0,0 /* case on these 8 bits ****** */
152 extru a1,23,24,a1 /* a1 >>= 8 ****************** */
153
154/*16 insts before this. */
155/* a0 <<= 8 ************************** */
156LSYM(x0) a1_ne_0_b_l2 ! a0__256a0 ! MILLIRETN ! nop
157LSYM(x1) a1_ne_0_b_l1 ! r__r_a0 ! MILLIRETN ! nop
158LSYM(x2) a1_ne_0_b_l1 ! r__r_2a0 ! MILLIRETN ! nop
159LSYM(x3) a1_ne_0_b_l0 ! t0__3a0 ! MILLIRET ! r__r_t0
160LSYM(x4) a1_ne_0_b_l1 ! r__r_4a0 ! MILLIRETN ! nop
161LSYM(x5) a1_ne_0_b_l0 ! t0__5a0 ! MILLIRET ! r__r_t0
162LSYM(x6) t0__3a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN
163LSYM(x7) t0__3a0 ! a1_ne_0_b_l0 ! r__r_4a0 ! b_n_ret_t0
164LSYM(x8) a1_ne_0_b_l1 ! r__r_8a0 ! MILLIRETN ! nop
165LSYM(x9) a1_ne_0_b_l0 ! t0__9a0 ! MILLIRET ! r__r_t0
166LSYM(x10) t0__5a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN
167LSYM(x11) t0__3a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0
168LSYM(x12) t0__3a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN
169LSYM(x13) t0__5a0 ! a1_ne_0_b_l0 ! r__r_8a0 ! b_n_ret_t0
170LSYM(x14) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0
171LSYM(x15) t0__5a0 ! a1_ne_0_b_l0 ! t0__3t0 ! b_n_ret_t0
172LSYM(x16) t0__16a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN
173LSYM(x17) t0__9a0 ! a1_ne_0_b_l0 ! t0__t0_8a0 ! b_n_ret_t0
174LSYM(x18) t0__9a0 ! a1_ne_0_b_l1 ! r__r_2t0 ! MILLIRETN
175LSYM(x19) t0__9a0 ! a1_ne_0_b_l0 ! t0__2t0_a0 ! b_n_ret_t0
176LSYM(x20) t0__5a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN
177LSYM(x21) t0__5a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0
178LSYM(x22) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0
179LSYM(x23) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0
180LSYM(x24) t0__3a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN
181LSYM(x25) t0__5a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0
182LSYM(x26) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0
183LSYM(x27) t0__3a0 ! a1_ne_0_b_l0 ! t0__9t0 ! b_n_ret_t0
184LSYM(x28) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0
185LSYM(x29) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0
186LSYM(x30) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_2t0
187LSYM(x31) t0__32a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0
188LSYM(x32) t0__32a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN
189LSYM(x33) t0__8a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0
190LSYM(x34) t0__16a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0
191LSYM(x35) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__t0_8a0
192LSYM(x36) t0__9a0 ! a1_ne_0_b_l1 ! r__r_4t0 ! MILLIRETN
193LSYM(x37) t0__9a0 ! a1_ne_0_b_l0 ! t0__4t0_a0 ! b_n_ret_t0
194LSYM(x38) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_2t0
195LSYM(x39) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__2t0_a0
196LSYM(x40) t0__5a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN
197LSYM(x41) t0__5a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0
198LSYM(x42) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0
199LSYM(x43) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0
200LSYM(x44) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0
201LSYM(x45) t0__9a0 ! a1_ne_0_b_l0 ! t0__5t0 ! b_n_ret_t0
202LSYM(x46) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_a0
203LSYM(x47) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_2a0
204LSYM(x48) t0__3a0 ! a1_ne_0_b_l0 ! t0__16t0 ! b_n_ret_t0
205LSYM(x49) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__t0_4a0
206LSYM(x50) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_2t0
207LSYM(x51) t0__9a0 ! t0__t0_8a0 ! b_e_t0 ! t0__3t0
208LSYM(x52) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0
209LSYM(x53) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0
210LSYM(x54) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_2t0
211LSYM(x55) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__2t0_a0
212LSYM(x56) t0__3a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0
213LSYM(x57) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__3t0
214LSYM(x58) t0__3a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0
215LSYM(x59) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__3t0
216LSYM(x60) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_4t0
217LSYM(x61) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0
218LSYM(x62) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0
219LSYM(x63) t0__64a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0
220LSYM(x64) t0__64a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN
221LSYM(x65) t0__8a0 ! a1_ne_0_b_l0 ! t0__8t0_a0 ! b_n_ret_t0
222LSYM(x66) t0__32a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0
223LSYM(x67) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0
224LSYM(x68) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0
225LSYM(x69) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0
226LSYM(x70) t0__64a0 ! t0__t0_4a0 ! b_e_t0 ! t0__t0_2a0
227LSYM(x71) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__t0ma0
228LSYM(x72) t0__9a0 ! a1_ne_0_b_l1 ! r__r_8t0 ! MILLIRETN
229LSYM(x73) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_t0
230LSYM(x74) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_2t0
231LSYM(x75) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__2t0_a0
232LSYM(x76) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_4t0
233LSYM(x77) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__4t0_a0
234LSYM(x78) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__2t0_a0
235LSYM(x79) t0__16a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0
236LSYM(x80) t0__16a0 ! t0__5t0 ! b_e_shift ! r__r_t0
237LSYM(x81) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_t0
238LSYM(x82) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0
239LSYM(x83) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0
240LSYM(x84) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0
241LSYM(x85) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0
242LSYM(x86) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0
243LSYM(x87) t0__9a0 ! t0__9t0 ! b_e_t02a0 ! t0__t0_4a0
244LSYM(x88) t0__5a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0
245LSYM(x89) t0__5a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0
246LSYM(x90) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_2t0
247LSYM(x91) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__2t0_a0
248LSYM(x92) t0__5a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0
249LSYM(x93) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__3t0
250LSYM(x94) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__t0_2a0
251LSYM(x95) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__5t0
252LSYM(x96) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_4t0
253LSYM(x97) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0
254LSYM(x98) t0__32a0 ! t0__3t0 ! b_e_t0 ! t0__t0_2a0
255LSYM(x99) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0
256LSYM(x100) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_4t0
257LSYM(x101) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0
258LSYM(x102) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0
259LSYM(x103) t0__5a0 ! t0__5t0 ! b_e_t02a0 ! t0__4t0_a0
260LSYM(x104) t0__3a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0
261LSYM(x105) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0
262LSYM(x106) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__4t0_a0
263LSYM(x107) t0__9a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__8t0_a0
264LSYM(x108) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_4t0
265LSYM(x109) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__4t0_a0
266LSYM(x110) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__2t0_a0
267LSYM(x111) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__3t0
268LSYM(x112) t0__3a0 ! t0__2t0_a0 ! b_e_t0 ! t0__16t0
269LSYM(x113) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__3t0
270LSYM(x114) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__3t0
271LSYM(x115) t0__9a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__3t0
272LSYM(x116) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__4t0_a0
273LSYM(x117) t0__3a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0
274LSYM(x118) t0__3a0 ! t0__4t0_a0 ! b_e_t0a0 ! t0__9t0
275LSYM(x119) t0__3a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__9t0
276LSYM(x120) t0__5a0 ! t0__3t0 ! b_e_shift ! r__r_8t0
277LSYM(x121) t0__5a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0
278LSYM(x122) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0
279LSYM(x123) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0
280LSYM(x124) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0
281LSYM(x125) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__5t0
282LSYM(x126) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0
283LSYM(x127) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0
284LSYM(x128) t0__128a0 ! a1_ne_0_b_l1 ! r__r_t0 ! MILLIRETN
285LSYM(x129) t0__128a0 ! a1_ne_0_b_l0 ! t0__t0_a0 ! b_n_ret_t0
286LSYM(x130) t0__64a0 ! t0__t0_a0 ! b_e_shift ! r__r_2t0
287LSYM(x131) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0
288LSYM(x132) t0__8a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0
289LSYM(x133) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0
290LSYM(x134) t0__8a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0
291LSYM(x135) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__3t0
292LSYM(x136) t0__8a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0
293LSYM(x137) t0__8a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0
294LSYM(x138) t0__8a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0
295LSYM(x139) t0__8a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__4t0_a0
296LSYM(x140) t0__3a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__5t0
297LSYM(x141) t0__8a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__2t0_a0
298LSYM(x142) t0__9a0 ! t0__8t0 ! b_e_2t0 ! t0__t0ma0
299LSYM(x143) t0__16a0 ! t0__9t0 ! b_e_t0 ! t0__t0ma0
300LSYM(x144) t0__9a0 ! t0__8t0 ! b_e_shift ! r__r_2t0
301LSYM(x145) t0__9a0 ! t0__8t0 ! b_e_t0 ! t0__2t0_a0
302LSYM(x146) t0__9a0 ! t0__8t0_a0 ! b_e_shift ! r__r_2t0
303LSYM(x147) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__2t0_a0
304LSYM(x148) t0__9a0 ! t0__4t0_a0 ! b_e_shift ! r__r_4t0
305LSYM(x149) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__4t0_a0
306LSYM(x150) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__2t0_a0
307LSYM(x151) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__2t0_a0
308LSYM(x152) t0__9a0 ! t0__2t0_a0 ! b_e_shift ! r__r_8t0
309LSYM(x153) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__8t0_a0
310LSYM(x154) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__4t0_a0
311LSYM(x155) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__5t0
312LSYM(x156) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__2t0_a0
313LSYM(x157) t0__32a0 ! t0__t0ma0 ! b_e_t02a0 ! t0__5t0
314LSYM(x158) t0__16a0 ! t0__5t0 ! b_e_2t0 ! t0__t0ma0
315LSYM(x159) t0__32a0 ! t0__5t0 ! b_e_t0 ! t0__t0ma0
316LSYM(x160) t0__5a0 ! t0__4t0 ! b_e_shift ! r__r_8t0
317LSYM(x161) t0__8a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0
318LSYM(x162) t0__9a0 ! t0__9t0 ! b_e_shift ! r__r_2t0
319LSYM(x163) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__2t0_a0
320LSYM(x164) t0__5a0 ! t0__8t0_a0 ! b_e_shift ! r__r_4t0
321LSYM(x165) t0__8a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0
322LSYM(x166) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__2t0_a0
323LSYM(x167) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__2t0_a0
324LSYM(x168) t0__5a0 ! t0__4t0_a0 ! b_e_shift ! r__r_8t0
325LSYM(x169) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__8t0_a0
326LSYM(x170) t0__32a0 ! t0__t0_2a0 ! b_e_t0 ! t0__5t0
327LSYM(x171) t0__9a0 ! t0__2t0_a0 ! b_e_t0 ! t0__9t0
328LSYM(x172) t0__5a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__2t0_a0
329LSYM(x173) t0__9a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__9t0
330LSYM(x174) t0__32a0 ! t0__t0_2a0 ! b_e_t04a0 ! t0__5t0
331LSYM(x175) t0__8a0 ! t0__2t0_a0 ! b_e_5t0 ! t0__2t0_a0
332LSYM(x176) t0__5a0 ! t0__4t0_a0 ! b_e_8t0 ! t0__t0_a0
333LSYM(x177) t0__5a0 ! t0__4t0_a0 ! b_e_8t0a0 ! t0__t0_a0
334LSYM(x178) t0__5a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__8t0_a0
335LSYM(x179) t0__5a0 ! t0__2t0_a0 ! b_e_2t0a0 ! t0__8t0_a0
336LSYM(x180) t0__9a0 ! t0__5t0 ! b_e_shift ! r__r_4t0
337LSYM(x181) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__4t0_a0
338LSYM(x182) t0__9a0 ! t0__5t0 ! b_e_2t0 ! t0__2t0_a0
339LSYM(x183) t0__9a0 ! t0__5t0 ! b_e_2t0a0 ! t0__2t0_a0
340LSYM(x184) t0__5a0 ! t0__9t0 ! b_e_4t0 ! t0__t0_a0
341LSYM(x185) t0__9a0 ! t0__4t0_a0 ! b_e_t0 ! t0__5t0
342LSYM(x186) t0__32a0 ! t0__t0ma0 ! b_e_2t0 ! t0__3t0
343LSYM(x187) t0__9a0 ! t0__4t0_a0 ! b_e_t02a0 ! t0__5t0
344LSYM(x188) t0__9a0 ! t0__5t0 ! b_e_4t0 ! t0__t0_2a0
345LSYM(x189) t0__5a0 ! t0__4t0_a0 ! b_e_t0 ! t0__9t0
346LSYM(x190) t0__9a0 ! t0__2t0_a0 ! b_e_2t0 ! t0__5t0
347LSYM(x191) t0__64a0 ! t0__3t0 ! b_e_t0 ! t0__t0ma0
348LSYM(x192) t0__8a0 ! t0__3t0 ! b_e_shift ! r__r_8t0
349LSYM(x193) t0__8a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0
350LSYM(x194) t0__8a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0
351LSYM(x195) t0__8a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0
352LSYM(x196) t0__8a0 ! t0__3t0 ! b_e_4t0 ! t0__2t0_a0
353LSYM(x197) t0__8a0 ! t0__3t0 ! b_e_4t0a0 ! t0__2t0_a0
354LSYM(x198) t0__64a0 ! t0__t0_2a0 ! b_e_t0 ! t0__3t0
355LSYM(x199) t0__8a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0
356LSYM(x200) t0__5a0 ! t0__5t0 ! b_e_shift ! r__r_8t0
357LSYM(x201) t0__5a0 ! t0__5t0 ! b_e_t0 ! t0__8t0_a0
358LSYM(x202) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__4t0_a0
359LSYM(x203) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__4t0_a0
360LSYM(x204) t0__8a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0
361LSYM(x205) t0__5a0 ! t0__8t0_a0 ! b_e_t0 ! t0__5t0
362LSYM(x206) t0__64a0 ! t0__t0_4a0 ! b_e_t02a0 ! t0__3t0
363LSYM(x207) t0__8a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0
364LSYM(x208) t0__5a0 ! t0__5t0 ! b_e_8t0 ! t0__t0_a0
365LSYM(x209) t0__5a0 ! t0__5t0 ! b_e_8t0a0 ! t0__t0_a0
366LSYM(x210) t0__5a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__5t0
367LSYM(x211) t0__5a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__5t0
368LSYM(x212) t0__3a0 ! t0__4t0_a0 ! b_e_4t0 ! t0__4t0_a0
369LSYM(x213) t0__3a0 ! t0__4t0_a0 ! b_e_4t0a0 ! t0__4t0_a0
370LSYM(x214) t0__9a0 ! t0__t0_4a0 ! b_e_2t04a0 ! t0__8t0_a0
371LSYM(x215) t0__5a0 ! t0__4t0_a0 ! b_e_5t0 ! t0__2t0_a0
372LSYM(x216) t0__9a0 ! t0__3t0 ! b_e_shift ! r__r_8t0
373LSYM(x217) t0__9a0 ! t0__3t0 ! b_e_t0 ! t0__8t0_a0
374LSYM(x218) t0__9a0 ! t0__3t0 ! b_e_2t0 ! t0__4t0_a0
375LSYM(x219) t0__9a0 ! t0__8t0_a0 ! b_e_t0 ! t0__3t0
376LSYM(x220) t0__3a0 ! t0__9t0 ! b_e_4t0 ! t0__2t0_a0
377LSYM(x221) t0__3a0 ! t0__9t0 ! b_e_4t0a0 ! t0__2t0_a0
378LSYM(x222) t0__9a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__3t0
379LSYM(x223) t0__9a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__3t0
380LSYM(x224) t0__9a0 ! t0__3t0 ! b_e_8t0 ! t0__t0_a0
381LSYM(x225) t0__9a0 ! t0__5t0 ! b_e_t0 ! t0__5t0
382LSYM(x226) t0__3a0 ! t0__2t0_a0 ! b_e_t02a0 ! t0__32t0
383LSYM(x227) t0__9a0 ! t0__5t0 ! b_e_t02a0 ! t0__5t0
384LSYM(x228) t0__9a0 ! t0__2t0_a0 ! b_e_4t0 ! t0__3t0
385LSYM(x229) t0__9a0 ! t0__2t0_a0 ! b_e_4t0a0 ! t0__3t0
386LSYM(x230) t0__9a0 ! t0__5t0 ! b_e_5t0 ! t0__t0_a0
387LSYM(x231) t0__9a0 ! t0__2t0_a0 ! b_e_3t0 ! t0__4t0_a0
388LSYM(x232) t0__3a0 ! t0__2t0_a0 ! b_e_8t0 ! t0__4t0_a0
389LSYM(x233) t0__3a0 ! t0__2t0_a0 ! b_e_8t0a0 ! t0__4t0_a0
390LSYM(x234) t0__3a0 ! t0__4t0_a0 ! b_e_2t0 ! t0__9t0
391LSYM(x235) t0__3a0 ! t0__4t0_a0 ! b_e_2t0a0 ! t0__9t0
392LSYM(x236) t0__9a0 ! t0__2t0_a0 ! b_e_4t08a0 ! t0__3t0
393LSYM(x237) t0__16a0 ! t0__5t0 ! b_e_3t0 ! t0__t0ma0
394LSYM(x238) t0__3a0 ! t0__4t0_a0 ! b_e_2t04a0 ! t0__9t0
395LSYM(x239) t0__16a0 ! t0__5t0 ! b_e_t0ma0 ! t0__3t0
396LSYM(x240) t0__9a0 ! t0__t0_a0 ! b_e_8t0 ! t0__3t0
397LSYM(x241) t0__9a0 ! t0__t0_a0 ! b_e_8t0a0 ! t0__3t0
398LSYM(x242) t0__5a0 ! t0__3t0 ! b_e_2t0 ! t0__8t0_a0
399LSYM(x243) t0__9a0 ! t0__9t0 ! b_e_t0 ! t0__3t0
400LSYM(x244) t0__5a0 ! t0__3t0 ! b_e_4t0 ! t0__4t0_a0
401LSYM(x245) t0__8a0 ! t0__3t0 ! b_e_5t0 ! t0__2t0_a0
402LSYM(x246) t0__5a0 ! t0__8t0_a0 ! b_e_2t0 ! t0__3t0
403LSYM(x247) t0__5a0 ! t0__8t0_a0 ! b_e_2t0a0 ! t0__3t0
404LSYM(x248) t0__32a0 ! t0__t0ma0 ! b_e_shift ! r__r_8t0
405LSYM(x249) t0__32a0 ! t0__t0ma0 ! b_e_t0 ! t0__8t0_a0
406LSYM(x250) t0__5a0 ! t0__5t0 ! b_e_2t0 ! t0__5t0
407LSYM(x251) t0__5a0 ! t0__5t0 ! b_e_2t0a0 ! t0__5t0
408LSYM(x252) t0__64a0 ! t0__t0ma0 ! b_e_shift ! r__r_4t0
409LSYM(x253) t0__64a0 ! t0__t0ma0 ! b_e_t0 ! t0__4t0_a0
410LSYM(x254) t0__128a0 ! t0__t0ma0 ! b_e_shift ! r__r_2t0
411LSYM(x255) t0__256a0 ! a1_ne_0_b_l0 ! t0__t0ma0 ! b_n_ret_t0
412/*1040 insts before this. */
413LSYM(ret_t0) MILLIRET
414LSYM(e_t0) r__r_t0
415LSYM(e_shift) a1_ne_0_b_l2
416 a0__256a0 /* a0 <<= 8 *********** */
417 MILLIRETN
418LSYM(e_t0ma0) a1_ne_0_b_l0
419 t0__t0ma0
420 MILLIRET
421 r__r_t0
422LSYM(e_t0a0) a1_ne_0_b_l0
423 t0__t0_a0
424 MILLIRET
425 r__r_t0
426LSYM(e_t02a0) a1_ne_0_b_l0
427 t0__t0_2a0
428 MILLIRET
429 r__r_t0
430LSYM(e_t04a0) a1_ne_0_b_l0
431 t0__t0_4a0
432 MILLIRET
433 r__r_t0
434LSYM(e_2t0) a1_ne_0_b_l1
435 r__r_2t0
436 MILLIRETN
437LSYM(e_2t0a0) a1_ne_0_b_l0
438 t0__2t0_a0
439 MILLIRET
440 r__r_t0
441LSYM(e2t04a0) t0__t0_2a0
442 a1_ne_0_b_l1
443 r__r_2t0
444 MILLIRETN
445LSYM(e_3t0) a1_ne_0_b_l0
446 t0__3t0
447 MILLIRET
448 r__r_t0
449LSYM(e_4t0) a1_ne_0_b_l1
450 r__r_4t0
451 MILLIRETN
452LSYM(e_4t0a0) a1_ne_0_b_l0
453 t0__4t0_a0
454 MILLIRET
455 r__r_t0
456LSYM(e4t08a0) t0__t0_2a0
457 a1_ne_0_b_l1
458 r__r_4t0
459 MILLIRETN
460LSYM(e_5t0) a1_ne_0_b_l0
461 t0__5t0
462 MILLIRET
463 r__r_t0
464LSYM(e_8t0) a1_ne_0_b_l1
465 r__r_8t0
466 MILLIRETN
467LSYM(e_8t0a0) a1_ne_0_b_l0
468 t0__8t0_a0
469 MILLIRET
470 r__r_t0
471
472 .procend
473 .end
474#endif
diff --git a/arch/parisc/lib/milli/remI.S b/arch/parisc/lib/milli/remI.S
new file mode 100644
index 000000000000..63bc094471e2
--- /dev/null
+++ b/arch/parisc/lib/milli/remI.S
@@ -0,0 +1,185 @@
1/* 32 and 64-bit millicode, original author Hewlett-Packard
2 adapted for gcc by Paul Bame <bame@debian.org>
3 and Alan Modra <alan@linuxcare.com.au>.
4
5 Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of GCC and is released under the terms of
8 of the GNU General Public License as published by the Free Software
9 Foundation; either version 2, or (at your option) any later version.
10 See the file COPYING in the top-level GCC source directory for a copy
11 of the license. */
12
13#include "milli.h"
14
15#ifdef L_remI
16/* ROUTINE: $$remI
17
18 DESCRIPTION:
19 . $$remI returns the remainder of the division of two signed 32-bit
20 . integers. The sign of the remainder is the same as the sign of
21 . the dividend.
22
23
24 INPUT REGISTERS:
25 . arg0 == dividend
26 . arg1 == divisor
27 . mrp == return pc
28 . sr0 == return space when called externally
29
30 OUTPUT REGISTERS:
31 . arg0 = destroyed
32 . arg1 = destroyed
33 . ret1 = remainder
34
35 OTHER REGISTERS AFFECTED:
36 . r1 = undefined
37
38 SIDE EFFECTS:
39 . Causes a trap under the following conditions: DIVIDE BY ZERO
40 . Changes memory at the following places: NONE
41
42 PERMISSIBLE CONTEXT:
43 . Unwindable
44 . Does not create a stack frame
45 . Is usable for internal or external microcode
46
47 DISCUSSION:
48 . Calls other millicode routines via mrp: NONE
49 . Calls other millicode routines: NONE */
50
51RDEFINE(tmp,r1)
52RDEFINE(retreg,ret1)
53
54 SUBSPA_MILLI
55 ATTR_MILLI
56 .proc
57 .callinfo millicode
58 .entry
59GSYM($$remI)
60GSYM($$remoI)
61 .export $$remI,MILLICODE
62 .export $$remoI,MILLICODE
63 ldo -1(arg1),tmp /* is there at most one bit set ? */
64 and,<> arg1,tmp,r0 /* if not, don't use power of 2 */
65 addi,> 0,arg1,r0 /* if denominator > 0, use power */
66 /* of 2 */
67 b,n LREF(neg_denom)
68LSYM(pow2)
69 comb,>,n 0,arg0,LREF(neg_num) /* is numerator < 0 ? */
70 and arg0,tmp,retreg /* get the result */
71 MILLIRETN
72LSYM(neg_num)
73 subi 0,arg0,arg0 /* negate numerator */
74 and arg0,tmp,retreg /* get the result */
75 subi 0,retreg,retreg /* negate result */
76 MILLIRETN
77LSYM(neg_denom)
78 addi,< 0,arg1,r0 /* if arg1 >= 0, it's not power */
79 /* of 2 */
80 b,n LREF(regular_seq)
81 sub r0,arg1,tmp /* make denominator positive */
82 comb,=,n arg1,tmp,LREF(regular_seq) /* test against 0x80000000 and 0 */
83 ldo -1(tmp),retreg /* is there at most one bit set ? */
84 and,= tmp,retreg,r0 /* if not, go to regular_seq */
85 b,n LREF(regular_seq)
86 comb,>,n 0,arg0,LREF(neg_num_2) /* if arg0 < 0, negate it */
87 and arg0,retreg,retreg
88 MILLIRETN
89LSYM(neg_num_2)
90 subi 0,arg0,tmp /* test against 0x80000000 */
91 and tmp,retreg,retreg
92 subi 0,retreg,retreg
93 MILLIRETN
94LSYM(regular_seq)
95 addit,= 0,arg1,0 /* trap if div by zero */
96 add,>= 0,arg0,retreg /* move dividend, if retreg < 0, */
97 sub 0,retreg,retreg /* make it positive */
98 sub 0,arg1, tmp /* clear carry, */
99 /* negate the divisor */
100 ds 0, tmp,0 /* set V-bit to the comple- */
101 /* ment of the divisor sign */
102 or 0,0, tmp /* clear tmp */
103 add retreg,retreg,retreg /* shift msb bit into carry */
104 ds tmp,arg1, tmp /* 1st divide step, if no carry */
105 /* out, msb of quotient = 0 */
106 addc retreg,retreg,retreg /* shift retreg with/into carry */
107LSYM(t1)
108 ds tmp,arg1, tmp /* 2nd divide step */
109 addc retreg,retreg,retreg /* shift retreg with/into carry */
110 ds tmp,arg1, tmp /* 3rd divide step */
111 addc retreg,retreg,retreg /* shift retreg with/into carry */
112 ds tmp,arg1, tmp /* 4th divide step */
113 addc retreg,retreg,retreg /* shift retreg with/into carry */
114 ds tmp,arg1, tmp /* 5th divide step */
115 addc retreg,retreg,retreg /* shift retreg with/into carry */
116 ds tmp,arg1, tmp /* 6th divide step */
117 addc retreg,retreg,retreg /* shift retreg with/into carry */
118 ds tmp,arg1, tmp /* 7th divide step */
119 addc retreg,retreg,retreg /* shift retreg with/into carry */
120 ds tmp,arg1, tmp /* 8th divide step */
121 addc retreg,retreg,retreg /* shift retreg with/into carry */
122 ds tmp,arg1, tmp /* 9th divide step */
123 addc retreg,retreg,retreg /* shift retreg with/into carry */
124 ds tmp,arg1, tmp /* 10th divide step */
125 addc retreg,retreg,retreg /* shift retreg with/into carry */
126 ds tmp,arg1, tmp /* 11th divide step */
127 addc retreg,retreg,retreg /* shift retreg with/into carry */
128 ds tmp,arg1, tmp /* 12th divide step */
129 addc retreg,retreg,retreg /* shift retreg with/into carry */
130 ds tmp,arg1, tmp /* 13th divide step */
131 addc retreg,retreg,retreg /* shift retreg with/into carry */
132 ds tmp,arg1, tmp /* 14th divide step */
133 addc retreg,retreg,retreg /* shift retreg with/into carry */
134 ds tmp,arg1, tmp /* 15th divide step */
135 addc retreg,retreg,retreg /* shift retreg with/into carry */
136 ds tmp,arg1, tmp /* 16th divide step */
137 addc retreg,retreg,retreg /* shift retreg with/into carry */
138 ds tmp,arg1, tmp /* 17th divide step */
139 addc retreg,retreg,retreg /* shift retreg with/into carry */
140 ds tmp,arg1, tmp /* 18th divide step */
141 addc retreg,retreg,retreg /* shift retreg with/into carry */
142 ds tmp,arg1, tmp /* 19th divide step */
143 addc retreg,retreg,retreg /* shift retreg with/into carry */
144 ds tmp,arg1, tmp /* 20th divide step */
145 addc retreg,retreg,retreg /* shift retreg with/into carry */
146 ds tmp,arg1, tmp /* 21st divide step */
147 addc retreg,retreg,retreg /* shift retreg with/into carry */
148 ds tmp,arg1, tmp /* 22nd divide step */
149 addc retreg,retreg,retreg /* shift retreg with/into carry */
150 ds tmp,arg1, tmp /* 23rd divide step */
151 addc retreg,retreg,retreg /* shift retreg with/into carry */
152 ds tmp,arg1, tmp /* 24th divide step */
153 addc retreg,retreg,retreg /* shift retreg with/into carry */
154 ds tmp,arg1, tmp /* 25th divide step */
155 addc retreg,retreg,retreg /* shift retreg with/into carry */
156 ds tmp,arg1, tmp /* 26th divide step */
157 addc retreg,retreg,retreg /* shift retreg with/into carry */
158 ds tmp,arg1, tmp /* 27th divide step */
159 addc retreg,retreg,retreg /* shift retreg with/into carry */
160 ds tmp,arg1, tmp /* 28th divide step */
161 addc retreg,retreg,retreg /* shift retreg with/into carry */
162 ds tmp,arg1, tmp /* 29th divide step */
163 addc retreg,retreg,retreg /* shift retreg with/into carry */
164 ds tmp,arg1, tmp /* 30th divide step */
165 addc retreg,retreg,retreg /* shift retreg with/into carry */
166 ds tmp,arg1, tmp /* 31st divide step */
167 addc retreg,retreg,retreg /* shift retreg with/into carry */
168 ds tmp,arg1, tmp /* 32nd divide step, */
169 addc retreg,retreg,retreg /* shift last bit into retreg */
170 movb,>=,n tmp,retreg,LREF(finish) /* branch if pos. tmp */
171 add,< arg1,0,0 /* if arg1 > 0, add arg1 */
172 add,tr tmp,arg1,retreg /* for correcting remainder tmp */
173 sub tmp,arg1,retreg /* else add absolute value arg1 */
174LSYM(finish)
175 add,>= arg0,0,0 /* set sign of remainder */
176 sub 0,retreg,retreg /* to sign of dividend */
177 MILLIRET
178 nop
179 .exit
180 .procend
181#ifdef milliext
182 .origin 0x00000200
183#endif
184 .end
185#endif
diff --git a/arch/parisc/lib/milli/remU.S b/arch/parisc/lib/milli/remU.S
new file mode 100644
index 000000000000..c0a2d6e247c3
--- /dev/null
+++ b/arch/parisc/lib/milli/remU.S
@@ -0,0 +1,148 @@
1/* 32 and 64-bit millicode, original author Hewlett-Packard
2 adapted for gcc by Paul Bame <bame@debian.org>
3 and Alan Modra <alan@linuxcare.com.au>.
4
5 Copyright 2001, 2002, 2003 Free Software Foundation, Inc.
6
7 This file is part of GCC and is released under the terms of
8 of the GNU General Public License as published by the Free Software
9 Foundation; either version 2, or (at your option) any later version.
10 See the file COPYING in the top-level GCC source directory for a copy
11 of the license. */
12
13#include "milli.h"
14
15#ifdef L_remU
16/* ROUTINE: $$remU
17 . Single precision divide for remainder with unsigned binary integers.
18 .
19 . The remainder must be dividend-(dividend/divisor)*divisor.
20 . Divide by zero is trapped.
21
22 INPUT REGISTERS:
23 . arg0 == dividend
24 . arg1 == divisor
25 . mrp == return pc
26 . sr0 == return space when called externally
27
28 OUTPUT REGISTERS:
29 . arg0 = undefined
30 . arg1 = undefined
31 . ret1 = remainder
32
33 OTHER REGISTERS AFFECTED:
34 . r1 = undefined
35
36 SIDE EFFECTS:
37 . Causes a trap under the following conditions: DIVIDE BY ZERO
38 . Changes memory at the following places: NONE
39
40 PERMISSIBLE CONTEXT:
41 . Unwindable.
42 . Does not create a stack frame.
43 . Suitable for internal or external millicode.
44 . Assumes the special millicode register conventions.
45
46 DISCUSSION:
47 . Calls other millicode routines using mrp: NONE
48 . Calls other millicode routines: NONE */
49
50
51RDEFINE(temp,r1)
52RDEFINE(rmndr,ret1) /* r29 */
53 SUBSPA_MILLI
54 ATTR_MILLI
55 .export $$remU,millicode
56 .proc
57 .callinfo millicode
58 .entry
59GSYM($$remU)
60 ldo -1(arg1),temp /* is there at most one bit set ? */
61 and,= arg1,temp,r0 /* if not, don't use power of 2 */
62 b LREF(regular_seq)
63 addit,= 0,arg1,r0 /* trap on div by zero */
64 and arg0,temp,rmndr /* get the result for power of 2 */
65 MILLIRETN
66LSYM(regular_seq)
67 comib,>=,n 0,arg1,LREF(special_case)
68 subi 0,arg1,rmndr /* clear carry, negate the divisor */
69 ds r0,rmndr,r0 /* set V-bit to 1 */
70 add arg0,arg0,temp /* shift msb bit into carry */
71 ds r0,arg1,rmndr /* 1st divide step, if no carry */
72 addc temp,temp,temp /* shift temp with/into carry */
73 ds rmndr,arg1,rmndr /* 2nd divide step */
74 addc temp,temp,temp /* shift temp with/into carry */
75 ds rmndr,arg1,rmndr /* 3rd divide step */
76 addc temp,temp,temp /* shift temp with/into carry */
77 ds rmndr,arg1,rmndr /* 4th divide step */
78 addc temp,temp,temp /* shift temp with/into carry */
79 ds rmndr,arg1,rmndr /* 5th divide step */
80 addc temp,temp,temp /* shift temp with/into carry */
81 ds rmndr,arg1,rmndr /* 6th divide step */
82 addc temp,temp,temp /* shift temp with/into carry */
83 ds rmndr,arg1,rmndr /* 7th divide step */
84 addc temp,temp,temp /* shift temp with/into carry */
85 ds rmndr,arg1,rmndr /* 8th divide step */
86 addc temp,temp,temp /* shift temp with/into carry */
87 ds rmndr,arg1,rmndr /* 9th divide step */
88 addc temp,temp,temp /* shift temp with/into carry */
89 ds rmndr,arg1,rmndr /* 10th divide step */
90 addc temp,temp,temp /* shift temp with/into carry */
91 ds rmndr,arg1,rmndr /* 11th divide step */
92 addc temp,temp,temp /* shift temp with/into carry */
93 ds rmndr,arg1,rmndr /* 12th divide step */
94 addc temp,temp,temp /* shift temp with/into carry */
95 ds rmndr,arg1,rmndr /* 13th divide step */
96 addc temp,temp,temp /* shift temp with/into carry */
97 ds rmndr,arg1,rmndr /* 14th divide step */
98 addc temp,temp,temp /* shift temp with/into carry */
99 ds rmndr,arg1,rmndr /* 15th divide step */
100 addc temp,temp,temp /* shift temp with/into carry */
101 ds rmndr,arg1,rmndr /* 16th divide step */
102 addc temp,temp,temp /* shift temp with/into carry */
103 ds rmndr,arg1,rmndr /* 17th divide step */
104 addc temp,temp,temp /* shift temp with/into carry */
105 ds rmndr,arg1,rmndr /* 18th divide step */
106 addc temp,temp,temp /* shift temp with/into carry */
107 ds rmndr,arg1,rmndr /* 19th divide step */
108 addc temp,temp,temp /* shift temp with/into carry */
109 ds rmndr,arg1,rmndr /* 20th divide step */
110 addc temp,temp,temp /* shift temp with/into carry */
111 ds rmndr,arg1,rmndr /* 21st divide step */
112 addc temp,temp,temp /* shift temp with/into carry */
113 ds rmndr,arg1,rmndr /* 22nd divide step */
114 addc temp,temp,temp /* shift temp with/into carry */
115 ds rmndr,arg1,rmndr /* 23rd divide step */
116 addc temp,temp,temp /* shift temp with/into carry */
117 ds rmndr,arg1,rmndr /* 24th divide step */
118 addc temp,temp,temp /* shift temp with/into carry */
119 ds rmndr,arg1,rmndr /* 25th divide step */
120 addc temp,temp,temp /* shift temp with/into carry */
121 ds rmndr,arg1,rmndr /* 26th divide step */
122 addc temp,temp,temp /* shift temp with/into carry */
123 ds rmndr,arg1,rmndr /* 27th divide step */
124 addc temp,temp,temp /* shift temp with/into carry */
125 ds rmndr,arg1,rmndr /* 28th divide step */
126 addc temp,temp,temp /* shift temp with/into carry */
127 ds rmndr,arg1,rmndr /* 29th divide step */
128 addc temp,temp,temp /* shift temp with/into carry */
129 ds rmndr,arg1,rmndr /* 30th divide step */
130 addc temp,temp,temp /* shift temp with/into carry */
131 ds rmndr,arg1,rmndr /* 31st divide step */
132 addc temp,temp,temp /* shift temp with/into carry */
133 ds rmndr,arg1,rmndr /* 32nd divide step, */
134 comiclr,<= 0,rmndr,r0
135 add rmndr,arg1,rmndr /* correction */
136 MILLIRETN
137 nop
138
139/* Putting >= on the last DS and deleting COMICLR does not work! */
140LSYM(special_case)
141 sub,>>= arg0,arg1,rmndr
142 copy arg0,rmndr
143 MILLIRETN
144 nop
145 .exit
146 .procend
147 .end
148#endif
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
index e724b362c49a..aa875fa43488 100644
--- a/arch/parisc/mm/init.c
+++ b/arch/parisc/mm/init.c
@@ -607,7 +607,7 @@ void show_mem(void)
607 607
608 printk("Zone list for zone %d on node %d: ", j, i); 608 printk("Zone list for zone %d on node %d: ", j, i);
609 for (k = 0; zl->zones[k] != NULL; k++) 609 for (k = 0; zl->zones[k] != NULL; k++)
610 printk("[%ld/%s] ", zone_to_nid(zl->zones[k]), zl->zones[k]->name); 610 printk("[%d/%s] ", zone_to_nid(zl->zones[k]), zl->zones[k]->name);
611 printk("\n"); 611 printk("\n");
612 } 612 }
613 } 613 }
diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
index c939fe86a9e0..6a79fe43e229 100644
--- a/arch/powerpc/Kconfig.debug
+++ b/arch/powerpc/Kconfig.debug
@@ -216,7 +216,6 @@ config PPC_EARLY_DEBUG_BEAT
216config PPC_EARLY_DEBUG_44x 216config PPC_EARLY_DEBUG_44x
217 bool "Early serial debugging for IBM/AMCC 44x CPUs" 217 bool "Early serial debugging for IBM/AMCC 44x CPUs"
218 depends on 44x 218 depends on 44x
219 select PPC_UDBG_16550
220 help 219 help
221 Select this to enable early debugging for IBM 44x chips via the 220 Select this to enable early debugging for IBM 44x chips via the
222 inbuilt serial port. 221 inbuilt serial port.
diff --git a/arch/powerpc/boot/dts/bamboo.dts b/arch/powerpc/boot/dts/bamboo.dts
index a88ae3d218a5..cb2fb50a281c 100644
--- a/arch/powerpc/boot/dts/bamboo.dts
+++ b/arch/powerpc/boot/dts/bamboo.dts
@@ -98,11 +98,13 @@
98 interrupt-parent = <&MAL0>; 98 interrupt-parent = <&MAL0>;
99 interrupts = <0 1 2 3 4>; 99 interrupts = <0 1 2 3 4>;
100 #interrupt-cells = <1>; 100 #interrupt-cells = <1>;
101 #address-cells = <0>;
102 #size-cells = <0>;
101 interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 103 interrupt-map = </*TXEOB*/ 0 &UIC0 a 4
102 /*RXEOB*/ 1 &UIC0 b 4 104 /*RXEOB*/ 1 &UIC0 b 4
103 /*SERR*/ 2 &UIC1 0 4 105 /*SERR*/ 2 &UIC1 0 4
104 /*TXDE*/ 3 &UIC1 1 4 106 /*TXDE*/ 3 &UIC1 1 4
105 /*RXDE*/ 4 &UIC1 3 4>; 107 /*RXDE*/ 4 &UIC1 2 4>;
106 }; 108 };
107 109
108 POB0: opb { 110 POB0: opb {
@@ -196,6 +198,7 @@
196 }; 198 };
197 199
198 EMAC0: ethernet@ef600e00 { 200 EMAC0: ethernet@ef600e00 {
201 linux,network-index = <0>;
199 device_type = "network"; 202 device_type = "network";
200 compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; 203 compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
201 interrupt-parent = <&UIC1>; 204 interrupt-parent = <&UIC1>;
@@ -210,12 +213,13 @@
210 rx-fifo-size = <1000>; 213 rx-fifo-size = <1000>;
211 tx-fifo-size = <800>; 214 tx-fifo-size = <800>;
212 phy-mode = "rmii"; 215 phy-mode = "rmii";
213 phy-map = <00000001>; 216 phy-map = <00000000>;
214 zmii-device = <&ZMII0>; 217 zmii-device = <&ZMII0>;
215 zmii-channel = <0>; 218 zmii-channel = <0>;
216 }; 219 };
217 220
218 EMAC1: ethernet@ef600f00 { 221 EMAC1: ethernet@ef600f00 {
222 linux,network-index = <1>;
219 device_type = "network"; 223 device_type = "network";
220 compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac"; 224 compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
221 interrupt-parent = <&UIC1>; 225 interrupt-parent = <&UIC1>;
@@ -230,7 +234,7 @@
230 rx-fifo-size = <1000>; 234 rx-fifo-size = <1000>;
231 tx-fifo-size = <800>; 235 tx-fifo-size = <800>;
232 phy-mode = "rmii"; 236 phy-mode = "rmii";
233 phy-map = <00000001>; 237 phy-map = <00000000>;
234 zmii-device = <&ZMII0>; 238 zmii-device = <&ZMII0>;
235 zmii-channel = <1>; 239 zmii-channel = <1>;
236 }; 240 };
diff --git a/arch/powerpc/boot/dts/lite5200.dts b/arch/powerpc/boot/dts/lite5200.dts
index bc45f5fbb060..6731763f0282 100644
--- a/arch/powerpc/boot/dts/lite5200.dts
+++ b/arch/powerpc/boot/dts/lite5200.dts
@@ -70,18 +70,16 @@
70 }; 70 };
71 71
72 gpt@600 { // General Purpose Timer 72 gpt@600 { // General Purpose Timer
73 compatible = "mpc5200-gpt"; 73 compatible = "fsl,mpc5200-gpt";
74 device_type = "gpt";
75 cell-index = <0>; 74 cell-index = <0>;
76 reg = <600 10>; 75 reg = <600 10>;
77 interrupts = <1 9 0>; 76 interrupts = <1 9 0>;
78 interrupt-parent = <&mpc5200_pic>; 77 interrupt-parent = <&mpc5200_pic>;
79 has-wdt; 78 fsl,has-wdt;
80 }; 79 };
81 80
82 gpt@610 { // General Purpose Timer 81 gpt@610 { // General Purpose Timer
83 compatible = "mpc5200-gpt"; 82 compatible = "fsl,mpc5200-gpt";
84 device_type = "gpt";
85 cell-index = <1>; 83 cell-index = <1>;
86 reg = <610 10>; 84 reg = <610 10>;
87 interrupts = <1 a 0>; 85 interrupts = <1 a 0>;
@@ -89,8 +87,7 @@
89 }; 87 };
90 88
91 gpt@620 { // General Purpose Timer 89 gpt@620 { // General Purpose Timer
92 compatible = "mpc5200-gpt"; 90 compatible = "fsl,mpc5200-gpt";
93 device_type = "gpt";
94 cell-index = <2>; 91 cell-index = <2>;
95 reg = <620 10>; 92 reg = <620 10>;
96 interrupts = <1 b 0>; 93 interrupts = <1 b 0>;
@@ -98,8 +95,7 @@
98 }; 95 };
99 96
100 gpt@630 { // General Purpose Timer 97 gpt@630 { // General Purpose Timer
101 compatible = "mpc5200-gpt"; 98 compatible = "fsl,mpc5200-gpt";
102 device_type = "gpt";
103 cell-index = <3>; 99 cell-index = <3>;
104 reg = <630 10>; 100 reg = <630 10>;
105 interrupts = <1 c 0>; 101 interrupts = <1 c 0>;
@@ -107,8 +103,7 @@
107 }; 103 };
108 104
109 gpt@640 { // General Purpose Timer 105 gpt@640 { // General Purpose Timer
110 compatible = "mpc5200-gpt"; 106 compatible = "fsl,mpc5200-gpt";
111 device_type = "gpt";
112 cell-index = <4>; 107 cell-index = <4>;
113 reg = <640 10>; 108 reg = <640 10>;
114 interrupts = <1 d 0>; 109 interrupts = <1 d 0>;
@@ -116,8 +111,7 @@
116 }; 111 };
117 112
118 gpt@650 { // General Purpose Timer 113 gpt@650 { // General Purpose Timer
119 compatible = "mpc5200-gpt"; 114 compatible = "fsl,mpc5200-gpt";
120 device_type = "gpt";
121 cell-index = <5>; 115 cell-index = <5>;
122 reg = <650 10>; 116 reg = <650 10>;
123 interrupts = <1 e 0>; 117 interrupts = <1 e 0>;
@@ -125,8 +119,7 @@
125 }; 119 };
126 120
127 gpt@660 { // General Purpose Timer 121 gpt@660 { // General Purpose Timer
128 compatible = "mpc5200-gpt"; 122 compatible = "fsl,mpc5200-gpt";
129 device_type = "gpt";
130 cell-index = <6>; 123 cell-index = <6>;
131 reg = <660 10>; 124 reg = <660 10>;
132 interrupts = <1 f 0>; 125 interrupts = <1 f 0>;
@@ -134,8 +127,7 @@
134 }; 127 };
135 128
136 gpt@670 { // General Purpose Timer 129 gpt@670 { // General Purpose Timer
137 compatible = "mpc5200-gpt"; 130 compatible = "fsl,mpc5200-gpt";
138 device_type = "gpt";
139 cell-index = <7>; 131 cell-index = <7>;
140 reg = <670 10>; 132 reg = <670 10>;
141 interrupts = <1 10 0>; 133 interrupts = <1 10 0>;
diff --git a/arch/powerpc/boot/dts/lite5200b.dts b/arch/powerpc/boot/dts/lite5200b.dts
index 6582c9a39b27..b540388c608c 100644
--- a/arch/powerpc/boot/dts/lite5200b.dts
+++ b/arch/powerpc/boot/dts/lite5200b.dts
@@ -70,18 +70,16 @@
70 }; 70 };
71 71
72 gpt@600 { // General Purpose Timer 72 gpt@600 { // General Purpose Timer
73 compatible = "mpc5200b-gpt","mpc5200-gpt"; 73 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
74 device_type = "gpt";
75 cell-index = <0>; 74 cell-index = <0>;
76 reg = <600 10>; 75 reg = <600 10>;
77 interrupts = <1 9 0>; 76 interrupts = <1 9 0>;
78 interrupt-parent = <&mpc5200_pic>; 77 interrupt-parent = <&mpc5200_pic>;
79 has-wdt; 78 fsl,has-wdt;
80 }; 79 };
81 80
82 gpt@610 { // General Purpose Timer 81 gpt@610 { // General Purpose Timer
83 compatible = "mpc5200b-gpt","mpc5200-gpt"; 82 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
84 device_type = "gpt";
85 cell-index = <1>; 83 cell-index = <1>;
86 reg = <610 10>; 84 reg = <610 10>;
87 interrupts = <1 a 0>; 85 interrupts = <1 a 0>;
@@ -89,8 +87,7 @@
89 }; 87 };
90 88
91 gpt@620 { // General Purpose Timer 89 gpt@620 { // General Purpose Timer
92 compatible = "mpc5200b-gpt","mpc5200-gpt"; 90 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
93 device_type = "gpt";
94 cell-index = <2>; 91 cell-index = <2>;
95 reg = <620 10>; 92 reg = <620 10>;
96 interrupts = <1 b 0>; 93 interrupts = <1 b 0>;
@@ -98,8 +95,7 @@
98 }; 95 };
99 96
100 gpt@630 { // General Purpose Timer 97 gpt@630 { // General Purpose Timer
101 compatible = "mpc5200b-gpt","mpc5200-gpt"; 98 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
102 device_type = "gpt";
103 cell-index = <3>; 99 cell-index = <3>;
104 reg = <630 10>; 100 reg = <630 10>;
105 interrupts = <1 c 0>; 101 interrupts = <1 c 0>;
@@ -107,8 +103,7 @@
107 }; 103 };
108 104
109 gpt@640 { // General Purpose Timer 105 gpt@640 { // General Purpose Timer
110 compatible = "mpc5200b-gpt","mpc5200-gpt"; 106 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
111 device_type = "gpt";
112 cell-index = <4>; 107 cell-index = <4>;
113 reg = <640 10>; 108 reg = <640 10>;
114 interrupts = <1 d 0>; 109 interrupts = <1 d 0>;
@@ -116,8 +111,7 @@
116 }; 111 };
117 112
118 gpt@650 { // General Purpose Timer 113 gpt@650 { // General Purpose Timer
119 compatible = "mpc5200b-gpt","mpc5200-gpt"; 114 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
120 device_type = "gpt";
121 cell-index = <5>; 115 cell-index = <5>;
122 reg = <650 10>; 116 reg = <650 10>;
123 interrupts = <1 e 0>; 117 interrupts = <1 e 0>;
@@ -125,8 +119,7 @@
125 }; 119 };
126 120
127 gpt@660 { // General Purpose Timer 121 gpt@660 { // General Purpose Timer
128 compatible = "mpc5200b-gpt","mpc5200-gpt"; 122 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
129 device_type = "gpt";
130 cell-index = <6>; 123 cell-index = <6>;
131 reg = <660 10>; 124 reg = <660 10>;
132 interrupts = <1 f 0>; 125 interrupts = <1 f 0>;
@@ -134,8 +127,7 @@
134 }; 127 };
135 128
136 gpt@670 { // General Purpose Timer 129 gpt@670 { // General Purpose Timer
137 compatible = "mpc5200b-gpt","mpc5200-gpt"; 130 compatible = "fsl,mpc5200b-gpt","fsl,mpc5200-gpt";
138 device_type = "gpt";
139 cell-index = <7>; 131 cell-index = <7>;
140 reg = <670 10>; 132 reg = <670 10>;
141 interrupts = <1 10 0>; 133 interrupts = <1 10 0>;
diff --git a/arch/powerpc/boot/dts/sequoia.dts b/arch/powerpc/boot/dts/sequoia.dts
index 36be75b04de1..8833dfe2e8b4 100644
--- a/arch/powerpc/boot/dts/sequoia.dts
+++ b/arch/powerpc/boot/dts/sequoia.dts
@@ -241,6 +241,12 @@
241 reg = <ef600d00 c>; 241 reg = <ef600d00 c>;
242 }; 242 };
243 243
244 RGMII0: emac-rgmii@ef601000 {
245 device_type = "rgmii-interface";
246 compatible = "ibm,rgmii-440epx", "ibm,rgmii";
247 reg = <ef601000 8>;
248 };
249
244 EMAC0: ethernet@ef600e00 { 250 EMAC0: ethernet@ef600e00 {
245 linux,network-index = <0>; 251 linux,network-index = <0>;
246 device_type = "network"; 252 device_type = "network";
@@ -261,10 +267,12 @@
261 max-frame-size = <5dc>; 267 max-frame-size = <5dc>;
262 rx-fifo-size = <1000>; 268 rx-fifo-size = <1000>;
263 tx-fifo-size = <800>; 269 tx-fifo-size = <800>;
264 phy-mode = "rmii"; 270 phy-mode = "rgmii";
265 phy-map = <00000000>; 271 phy-map = <00000000>;
266 zmii-device = <&ZMII0>; 272 zmii-device = <&ZMII0>;
267 zmii-channel = <0>; 273 zmii-channel = <0>;
274 rgmii-device = <&RGMII0>;
275 rgmii-channel = <0>;
268 }; 276 };
269 277
270 EMAC1: ethernet@ef600f00 { 278 EMAC1: ethernet@ef600f00 {
@@ -287,10 +295,12 @@
287 max-frame-size = <5dc>; 295 max-frame-size = <5dc>;
288 rx-fifo-size = <1000>; 296 rx-fifo-size = <1000>;
289 tx-fifo-size = <800>; 297 tx-fifo-size = <800>;
290 phy-mode = "rmii"; 298 phy-mode = "rgmii";
291 phy-map = <00000000>; 299 phy-map = <00000000>;
292 zmii-device = <&ZMII0>; 300 zmii-device = <&ZMII0>;
293 zmii-channel = <1>; 301 zmii-channel = <1>;
302 rgmii-device = <&RGMII0>;
303 rgmii-channel = <1>;
294 }; 304 };
295 }; 305 };
296 }; 306 };
diff --git a/arch/powerpc/boot/dts/walnut.dts b/arch/powerpc/boot/dts/walnut.dts
index ec54f4e04ad6..fa681f5343fe 100644
--- a/arch/powerpc/boot/dts/walnut.dts
+++ b/arch/powerpc/boot/dts/walnut.dts
@@ -64,10 +64,15 @@
64 MAL: mcmal { 64 MAL: mcmal {
65 compatible = "ibm,mcmal-405gp", "ibm,mcmal"; 65 compatible = "ibm,mcmal-405gp", "ibm,mcmal";
66 dcr-reg = <180 62>; 66 dcr-reg = <180 62>;
67 num-tx-chans = <2>; 67 num-tx-chans = <1>;
68 num-rx-chans = <1>; 68 num-rx-chans = <1>;
69 interrupt-parent = <&UIC0>; 69 interrupt-parent = <&UIC0>;
70 interrupts = <a 4 b 4 c 4 d 4 e 4>; 70 interrupts = <
71 b 4 /* TXEOB */
72 c 4 /* RXEOB */
73 a 4 /* SERR */
74 d 4 /* TXDE */
75 e 4 /* RXDE */>;
71 }; 76 };
72 77
73 POB0: opb { 78 POB0: opb {
@@ -118,9 +123,10 @@
118 compatible = "ibm,emac-405gp", "ibm,emac"; 123 compatible = "ibm,emac-405gp", "ibm,emac";
119 interrupt-parent = <&UIC0>; 124 interrupt-parent = <&UIC0>;
120 interrupts = <9 4 f 4>; 125 interrupts = <9 4 f 4>;
126 local-mac-address = [000000000000]; /* Filled in by zImage */
121 reg = <ef600800 70>; 127 reg = <ef600800 70>;
122 mal-device = <&MAL>; 128 mal-device = <&MAL>;
123 mal-tx-channel = <0 1>; 129 mal-tx-channel = <0>;
124 mal-rx-channel = <0>; 130 mal-rx-channel = <0>;
125 cell-index = <0>; 131 cell-index = <0>;
126 max-frame-size = <5dc>; 132 max-frame-size = <5dc>;
diff --git a/arch/powerpc/boot/treeboot-walnut.c b/arch/powerpc/boot/treeboot-walnut.c
index 3adf2d08a230..bb2c309d70fc 100644
--- a/arch/powerpc/boot/treeboot-walnut.c
+++ b/arch/powerpc/boot/treeboot-walnut.c
@@ -57,8 +57,8 @@ void ibm405gp_fixup_clocks(unsigned int sysclk, unsigned int ser_clk)
57 } 57 }
58 58
59 /* setup the timebase clock to tick at the cpu frequency */ 59 /* setup the timebase clock to tick at the cpu frequency */
60 cpc0_cr1 = cpc0_cr1 & ~ 0x00800000; 60 cpc0_cr1 = cpc0_cr1 & ~0x00800000;
61 mtdcr(DCRN_CPC0_CR1, cpc0_cr1); 61 mtdcr(DCRN_405_CPC0_CR1, cpc0_cr1);
62 tb = cpu; 62 tb = cpu;
63 63
64 dt_fixup_cpu_clocks(cpu, tb, 0); 64 dt_fixup_cpu_clocks(cpu, tb, 0);
@@ -109,6 +109,7 @@ static void walnut_flashsel_fixup(void)
109 setprop(sram, "reg", reg_sram, sizeof(reg_sram)); 109 setprop(sram, "reg", reg_sram, sizeof(reg_sram));
110} 110}
111 111
112#define WALNUT_OPENBIOS_MAC_OFF 0xfffffe0b
112static void walnut_fixups(void) 113static void walnut_fixups(void)
113{ 114{
114 ibm4xx_fixup_memsize(); 115 ibm4xx_fixup_memsize();
@@ -116,6 +117,7 @@ static void walnut_fixups(void)
116 ibm4xx_quiesce_eth((u32 *)0xef600800, NULL); 117 ibm4xx_quiesce_eth((u32 *)0xef600800, NULL);
117 ibm4xx_fixup_ebc_ranges("/plb/ebc"); 118 ibm4xx_fixup_ebc_ranges("/plb/ebc");
118 walnut_flashsel_fixup(); 119 walnut_flashsel_fixup();
120 dt_fixup_mac_addresses((u8 *) WALNUT_OPENBIOS_MAC_OFF);
119} 121}
120 122
121void platform_init(void) 123void platform_init(void)
diff --git a/arch/powerpc/configs/bamboo_defconfig b/arch/powerpc/configs/bamboo_defconfig
index d22fed6d2cd9..844808ebf245 100644
--- a/arch/powerpc/configs/bamboo_defconfig
+++ b/arch/powerpc/configs/bamboo_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc1 3# Linux kernel version: 2.6.23
4# Fri Aug 3 10:46:53 2007 4# Fri Oct 19 09:01:11 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -22,8 +22,13 @@ CONFIG_PHYS_64BIT=y
22# CONFIG_PPC_MM_SLICES is not set 22# CONFIG_PPC_MM_SLICES is not set
23CONFIG_NOT_COHERENT_CACHE=y 23CONFIG_NOT_COHERENT_CACHE=y
24CONFIG_PPC32=y 24CONFIG_PPC32=y
25CONFIG_WORD_SIZE=32
25CONFIG_PPC_MERGE=y 26CONFIG_PPC_MERGE=y
26CONFIG_MMU=y 27CONFIG_MMU=y
28CONFIG_GENERIC_CMOS_UPDATE=y
29CONFIG_GENERIC_TIME=y
30CONFIG_GENERIC_TIME_VSYSCALL=y
31CONFIG_GENERIC_CLOCKEVENTS=y
27CONFIG_GENERIC_HARDIRQS=y 32CONFIG_GENERIC_HARDIRQS=y
28CONFIG_IRQ_PER_CPU=y 33CONFIG_IRQ_PER_CPU=y
29CONFIG_RWSEM_XCHGADD_ALGORITHM=y 34CONFIG_RWSEM_XCHGADD_ALGORITHM=y
@@ -67,6 +72,8 @@ CONFIG_POSIX_MQUEUE=y
67# CONFIG_AUDIT is not set 72# CONFIG_AUDIT is not set
68# CONFIG_IKCONFIG is not set 73# CONFIG_IKCONFIG is not set
69CONFIG_LOG_BUF_SHIFT=14 74CONFIG_LOG_BUF_SHIFT=14
75CONFIG_FAIR_GROUP_SCHED=y
76CONFIG_FAIR_USER_SCHED=y
70CONFIG_SYSFS_DEPRECATED=y 77CONFIG_SYSFS_DEPRECATED=y
71# CONFIG_RELAY is not set 78# CONFIG_RELAY is not set
72CONFIG_BLK_DEV_INITRD=y 79CONFIG_BLK_DEV_INITRD=y
@@ -87,7 +94,6 @@ CONFIG_FUTEX=y
87CONFIG_ANON_INODES=y 94CONFIG_ANON_INODES=y
88CONFIG_EPOLL=y 95CONFIG_EPOLL=y
89CONFIG_SIGNALFD=y 96CONFIG_SIGNALFD=y
90CONFIG_TIMERFD=y
91CONFIG_EVENTFD=y 97CONFIG_EVENTFD=y
92CONFIG_SHMEM=y 98CONFIG_SHMEM=y
93CONFIG_VM_EVENT_COUNTERS=y 99CONFIG_VM_EVENT_COUNTERS=y
@@ -133,6 +139,7 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
133# CONFIG_PQ2ADS is not set 139# CONFIG_PQ2ADS is not set
134CONFIG_BAMBOO=y 140CONFIG_BAMBOO=y
135# CONFIG_EBONY is not set 141# CONFIG_EBONY is not set
142# CONFIG_SEQUOIA is not set
136CONFIG_440EP=y 143CONFIG_440EP=y
137CONFIG_IBM440EP_ERR42=y 144CONFIG_IBM440EP_ERR42=y
138# CONFIG_MPIC is not set 145# CONFIG_MPIC is not set
@@ -146,11 +153,16 @@ CONFIG_IBM440EP_ERR42=y
146# CONFIG_GENERIC_IOMAP is not set 153# CONFIG_GENERIC_IOMAP is not set
147# CONFIG_CPU_FREQ is not set 154# CONFIG_CPU_FREQ is not set
148# CONFIG_CPM2 is not set 155# CONFIG_CPM2 is not set
156# CONFIG_FSL_ULI1575 is not set
149 157
150# 158#
151# Kernel options 159# Kernel options
152# 160#
153# CONFIG_HIGHMEM is not set 161# CONFIG_HIGHMEM is not set
162# CONFIG_TICK_ONESHOT is not set
163# CONFIG_NO_HZ is not set
164# CONFIG_HIGH_RES_TIMERS is not set
165CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
154# CONFIG_HZ_100 is not set 166# CONFIG_HZ_100 is not set
155CONFIG_HZ_250=y 167CONFIG_HZ_250=y
156# CONFIG_HZ_300 is not set 168# CONFIG_HZ_300 is not set
@@ -172,6 +184,7 @@ CONFIG_FLATMEM_MANUAL=y
172CONFIG_FLATMEM=y 184CONFIG_FLATMEM=y
173CONFIG_FLAT_NODE_MEM_MAP=y 185CONFIG_FLAT_NODE_MEM_MAP=y
174# CONFIG_SPARSEMEM_STATIC is not set 186# CONFIG_SPARSEMEM_STATIC is not set
187# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
175CONFIG_SPLIT_PTLOCK_CPUS=4 188CONFIG_SPLIT_PTLOCK_CPUS=4
176CONFIG_RESOURCES_64BIT=y 189CONFIG_RESOURCES_64BIT=y
177CONFIG_ZONE_DMA_FLAG=1 190CONFIG_ZONE_DMA_FLAG=1
@@ -197,10 +210,6 @@ CONFIG_PCI_SYSCALL=y
197CONFIG_ARCH_SUPPORTS_MSI=y 210CONFIG_ARCH_SUPPORTS_MSI=y
198# CONFIG_PCI_MSI is not set 211# CONFIG_PCI_MSI is not set
199# CONFIG_PCI_DEBUG is not set 212# CONFIG_PCI_DEBUG is not set
200
201#
202# PCCARD (PCMCIA/CardBus) support
203#
204# CONFIG_PCCARD is not set 213# CONFIG_PCCARD is not set
205# CONFIG_HOTPLUG_PCI is not set 214# CONFIG_HOTPLUG_PCI is not set
206 215
@@ -215,7 +224,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
215CONFIG_HIGHMEM_START=0xfe000000 224CONFIG_HIGHMEM_START=0xfe000000
216CONFIG_LOWMEM_SIZE=0x30000000 225CONFIG_LOWMEM_SIZE=0x30000000
217CONFIG_KERNEL_START=0xc0000000 226CONFIG_KERNEL_START=0xc0000000
218CONFIG_TASK_SIZE=0x80000000 227CONFIG_TASK_SIZE=0xc0000000
219CONFIG_CONSISTENT_START=0xff100000 228CONFIG_CONSISTENT_START=0xff100000
220CONFIG_CONSISTENT_SIZE=0x00200000 229CONFIG_CONSISTENT_SIZE=0x00200000
221CONFIG_BOOT_LOAD=0x01000000 230CONFIG_BOOT_LOAD=0x01000000
@@ -252,6 +261,7 @@ CONFIG_IP_PNP_BOOTP=y
252# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 261# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
253# CONFIG_INET_XFRM_MODE_TUNNEL is not set 262# CONFIG_INET_XFRM_MODE_TUNNEL is not set
254# CONFIG_INET_XFRM_MODE_BEET is not set 263# CONFIG_INET_XFRM_MODE_BEET is not set
264# CONFIG_INET_LRO is not set
255CONFIG_INET_DIAG=y 265CONFIG_INET_DIAG=y
256CONFIG_INET_TCP_DIAG=y 266CONFIG_INET_TCP_DIAG=y
257# CONFIG_TCP_CONG_ADVANCED is not set 267# CONFIG_TCP_CONG_ADVANCED is not set
@@ -309,6 +319,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
309# 319#
310# Generic Driver Options 320# Generic Driver Options
311# 321#
322CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
312CONFIG_STANDALONE=y 323CONFIG_STANDALONE=y
313CONFIG_PREVENT_FIRMWARE_BUILD=y 324CONFIG_PREVENT_FIRMWARE_BUILD=y
314CONFIG_FW_LOADER=y 325CONFIG_FW_LOADER=y
@@ -353,10 +364,6 @@ CONFIG_MISC_DEVICES=y
353# CONFIG_SCSI_NETLINK is not set 364# CONFIG_SCSI_NETLINK is not set
354# CONFIG_ATA is not set 365# CONFIG_ATA is not set
355# CONFIG_MD is not set 366# CONFIG_MD is not set
356
357#
358# Fusion MPT device support
359#
360# CONFIG_FUSION is not set 367# CONFIG_FUSION is not set
361 368
362# 369#
@@ -375,12 +382,36 @@ CONFIG_NETDEVICES=y
375# CONFIG_MACVLAN is not set 382# CONFIG_MACVLAN is not set
376# CONFIG_EQUALIZER is not set 383# CONFIG_EQUALIZER is not set
377# CONFIG_TUN is not set 384# CONFIG_TUN is not set
385# CONFIG_VETH is not set
386# CONFIG_IP1000 is not set
378# CONFIG_ARCNET is not set 387# CONFIG_ARCNET is not set
379# CONFIG_NET_ETHERNET is not set 388# CONFIG_PHYLIB is not set
389CONFIG_NET_ETHERNET=y
390# CONFIG_MII is not set
391# CONFIG_HAPPYMEAL is not set
392# CONFIG_SUNGEM is not set
393# CONFIG_CASSINI is not set
394# CONFIG_NET_VENDOR_3COM is not set
395# CONFIG_NET_TULIP is not set
396# CONFIG_HP100 is not set
397CONFIG_IBM_NEW_EMAC=y
398CONFIG_IBM_NEW_EMAC_RXB=128
399CONFIG_IBM_NEW_EMAC_TXB=64
400CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
401CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
402CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
403# CONFIG_IBM_NEW_EMAC_DEBUG is not set
404CONFIG_IBM_NEW_EMAC_ZMII=y
405# CONFIG_IBM_NEW_EMAC_RGMII is not set
406# CONFIG_IBM_NEW_EMAC_TAH is not set
407# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
408# CONFIG_NET_PCI is not set
409# CONFIG_B44 is not set
380CONFIG_NETDEV_1000=y 410CONFIG_NETDEV_1000=y
381# CONFIG_ACENIC is not set 411# CONFIG_ACENIC is not set
382# CONFIG_DL2K is not set 412# CONFIG_DL2K is not set
383# CONFIG_E1000 is not set 413# CONFIG_E1000 is not set
414# CONFIG_E1000E is not set
384# CONFIG_NS83820 is not set 415# CONFIG_NS83820 is not set
385# CONFIG_HAMACHI is not set 416# CONFIG_HAMACHI is not set
386# CONFIG_YELLOWFIN is not set 417# CONFIG_YELLOWFIN is not set
@@ -388,6 +419,7 @@ CONFIG_NETDEV_1000=y
388# CONFIG_SIS190 is not set 419# CONFIG_SIS190 is not set
389# CONFIG_SKGE is not set 420# CONFIG_SKGE is not set
390# CONFIG_SKY2 is not set 421# CONFIG_SKY2 is not set
422# CONFIG_SK98LIN is not set
391# CONFIG_VIA_VELOCITY is not set 423# CONFIG_VIA_VELOCITY is not set
392# CONFIG_TIGON3 is not set 424# CONFIG_TIGON3 is not set
393# CONFIG_BNX2 is not set 425# CONFIG_BNX2 is not set
@@ -396,11 +428,14 @@ CONFIG_NETDEV_1000=y
396CONFIG_NETDEV_10000=y 428CONFIG_NETDEV_10000=y
397# CONFIG_CHELSIO_T1 is not set 429# CONFIG_CHELSIO_T1 is not set
398# CONFIG_CHELSIO_T3 is not set 430# CONFIG_CHELSIO_T3 is not set
431# CONFIG_IXGBE is not set
399# CONFIG_IXGB is not set 432# CONFIG_IXGB is not set
400# CONFIG_S2IO is not set 433# CONFIG_S2IO is not set
401# CONFIG_MYRI10GE is not set 434# CONFIG_MYRI10GE is not set
402# CONFIG_NETXEN_NIC is not set 435# CONFIG_NETXEN_NIC is not set
436# CONFIG_NIU is not set
403# CONFIG_MLX4_CORE is not set 437# CONFIG_MLX4_CORE is not set
438# CONFIG_TEHUTI is not set
404# CONFIG_TR is not set 439# CONFIG_TR is not set
405 440
406# 441#
@@ -463,14 +498,11 @@ CONFIG_UNIX98_PTYS=y
463CONFIG_LEGACY_PTYS=y 498CONFIG_LEGACY_PTYS=y
464CONFIG_LEGACY_PTY_COUNT=256 499CONFIG_LEGACY_PTY_COUNT=256
465# CONFIG_IPMI_HANDLER is not set 500# CONFIG_IPMI_HANDLER is not set
466# CONFIG_WATCHDOG is not set
467# CONFIG_HW_RANDOM is not set 501# CONFIG_HW_RANDOM is not set
468# CONFIG_NVRAM is not set 502# CONFIG_NVRAM is not set
469# CONFIG_GEN_RTC is not set 503# CONFIG_GEN_RTC is not set
470# CONFIG_R3964 is not set 504# CONFIG_R3964 is not set
471# CONFIG_APPLICOM is not set 505# CONFIG_APPLICOM is not set
472# CONFIG_AGP is not set
473# CONFIG_DRM is not set
474# CONFIG_RAW_DRIVER is not set 506# CONFIG_RAW_DRIVER is not set
475# CONFIG_TCG_TPM is not set 507# CONFIG_TCG_TPM is not set
476CONFIG_DEVPORT=y 508CONFIG_DEVPORT=y
@@ -484,6 +516,13 @@ CONFIG_DEVPORT=y
484# CONFIG_W1 is not set 516# CONFIG_W1 is not set
485# CONFIG_POWER_SUPPLY is not set 517# CONFIG_POWER_SUPPLY is not set
486# CONFIG_HWMON is not set 518# CONFIG_HWMON is not set
519# CONFIG_WATCHDOG is not set
520
521#
522# Sonics Silicon Backplane
523#
524CONFIG_SSB_POSSIBLE=y
525# CONFIG_SSB is not set
487 526
488# 527#
489# Multifunction device drivers 528# Multifunction device drivers
@@ -500,16 +539,17 @@ CONFIG_DAB=y
500# 539#
501# Graphics support 540# Graphics support
502# 541#
542# CONFIG_AGP is not set
543# CONFIG_DRM is not set
544# CONFIG_VGASTATE is not set
545CONFIG_VIDEO_OUTPUT_CONTROL=m
546# CONFIG_FB is not set
503# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 547# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
504 548
505# 549#
506# Display device support 550# Display device support
507# 551#
508# CONFIG_DISPLAY_SUPPORT is not set 552# CONFIG_DISPLAY_SUPPORT is not set
509# CONFIG_VGASTATE is not set
510CONFIG_VIDEO_OUTPUT_CONTROL=m
511# CONFIG_FB is not set
512# CONFIG_FB_IBM_GXT4500 is not set
513 553
514# 554#
515# Sound 555# Sound
@@ -536,19 +576,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y
536# CONFIG_RTC_CLASS is not set 576# CONFIG_RTC_CLASS is not set
537 577
538# 578#
539# DMA Engine support
540#
541# CONFIG_DMA_ENGINE is not set
542
543#
544# DMA Clients
545#
546
547#
548# DMA Devices
549#
550
551#
552# Userspace I/O 579# Userspace I/O
553# 580#
554# CONFIG_UIO is not set 581# CONFIG_UIO is not set
@@ -600,7 +627,6 @@ CONFIG_SYSFS=y
600CONFIG_TMPFS=y 627CONFIG_TMPFS=y
601# CONFIG_TMPFS_POSIX_ACL is not set 628# CONFIG_TMPFS_POSIX_ACL is not set
602# CONFIG_HUGETLB_PAGE is not set 629# CONFIG_HUGETLB_PAGE is not set
603CONFIG_RAMFS=y
604# CONFIG_CONFIGFS_FS is not set 630# CONFIG_CONFIGFS_FS is not set
605 631
606# 632#
@@ -619,10 +645,7 @@ CONFIG_CRAMFS=y
619# CONFIG_QNX4FS_FS is not set 645# CONFIG_QNX4FS_FS is not set
620# CONFIG_SYSV_FS is not set 646# CONFIG_SYSV_FS is not set
621# CONFIG_UFS_FS is not set 647# CONFIG_UFS_FS is not set
622 648CONFIG_NETWORK_FILESYSTEMS=y
623#
624# Network File Systems
625#
626CONFIG_NFS_FS=y 649CONFIG_NFS_FS=y
627CONFIG_NFS_V3=y 650CONFIG_NFS_V3=y
628# CONFIG_NFS_V3_ACL is not set 651# CONFIG_NFS_V3_ACL is not set
@@ -648,15 +671,7 @@ CONFIG_SUNRPC=y
648# 671#
649# CONFIG_PARTITION_ADVANCED is not set 672# CONFIG_PARTITION_ADVANCED is not set
650CONFIG_MSDOS_PARTITION=y 673CONFIG_MSDOS_PARTITION=y
651
652#
653# Native Language Support
654#
655# CONFIG_NLS is not set 674# CONFIG_NLS is not set
656
657#
658# Distributed Lock Manager
659#
660# CONFIG_DLM is not set 675# CONFIG_DLM is not set
661# CONFIG_UCC_SLOW is not set 676# CONFIG_UCC_SLOW is not set
662 677
@@ -709,6 +724,7 @@ CONFIG_SCHED_DEBUG=y
709# CONFIG_DEBUG_VM is not set 724# CONFIG_DEBUG_VM is not set
710# CONFIG_DEBUG_LIST is not set 725# CONFIG_DEBUG_LIST is not set
711CONFIG_FORCED_INLINING=y 726CONFIG_FORCED_INLINING=y
727# CONFIG_BOOT_PRINTK_DELAY is not set
712# CONFIG_RCU_TORTURE_TEST is not set 728# CONFIG_RCU_TORTURE_TEST is not set
713# CONFIG_FAULT_INJECTION is not set 729# CONFIG_FAULT_INJECTION is not set
714# CONFIG_DEBUG_STACKOVERFLOW is not set 730# CONFIG_DEBUG_STACKOVERFLOW is not set
@@ -728,6 +744,7 @@ CONFIG_PPC_EARLY_DEBUG=y
728# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set 744# CONFIG_PPC_EARLY_DEBUG_PAS_REALMODE is not set
729# CONFIG_PPC_EARLY_DEBUG_BEAT is not set 745# CONFIG_PPC_EARLY_DEBUG_BEAT is not set
730CONFIG_PPC_EARLY_DEBUG_44x=y 746CONFIG_PPC_EARLY_DEBUG_44x=y
747# CONFIG_PPC_EARLY_DEBUG_CPM is not set
731CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0xef600300 748CONFIG_PPC_EARLY_DEBUG_44x_PHYSLOW=0xef600300
732CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x0 749CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x0
733 750
@@ -736,6 +753,7 @@ CONFIG_PPC_EARLY_DEBUG_44x_PHYSHIGH=0x0
736# 753#
737# CONFIG_KEYS is not set 754# CONFIG_KEYS is not set
738# CONFIG_SECURITY is not set 755# CONFIG_SECURITY is not set
756# CONFIG_SECURITY_FILE_CAPABILITIES is not set
739CONFIG_CRYPTO=y 757CONFIG_CRYPTO=y
740CONFIG_CRYPTO_ALGAPI=y 758CONFIG_CRYPTO_ALGAPI=y
741CONFIG_CRYPTO_BLKCIPHER=y 759CONFIG_CRYPTO_BLKCIPHER=y
@@ -755,6 +773,7 @@ CONFIG_CRYPTO_ECB=y
755CONFIG_CRYPTO_CBC=y 773CONFIG_CRYPTO_CBC=y
756CONFIG_CRYPTO_PCBC=y 774CONFIG_CRYPTO_PCBC=y
757# CONFIG_CRYPTO_LRW is not set 775# CONFIG_CRYPTO_LRW is not set
776# CONFIG_CRYPTO_XTS is not set
758# CONFIG_CRYPTO_CRYPTD is not set 777# CONFIG_CRYPTO_CRYPTD is not set
759CONFIG_CRYPTO_DES=y 778CONFIG_CRYPTO_DES=y
760# CONFIG_CRYPTO_FCRYPT is not set 779# CONFIG_CRYPTO_FCRYPT is not set
@@ -768,9 +787,12 @@ CONFIG_CRYPTO_DES=y
768# CONFIG_CRYPTO_ARC4 is not set 787# CONFIG_CRYPTO_ARC4 is not set
769# CONFIG_CRYPTO_KHAZAD is not set 788# CONFIG_CRYPTO_KHAZAD is not set
770# CONFIG_CRYPTO_ANUBIS is not set 789# CONFIG_CRYPTO_ANUBIS is not set
790# CONFIG_CRYPTO_SEED is not set
771# CONFIG_CRYPTO_DEFLATE is not set 791# CONFIG_CRYPTO_DEFLATE is not set
772# CONFIG_CRYPTO_MICHAEL_MIC is not set 792# CONFIG_CRYPTO_MICHAEL_MIC is not set
773# CONFIG_CRYPTO_CRC32C is not set 793# CONFIG_CRYPTO_CRC32C is not set
774# CONFIG_CRYPTO_CAMELLIA is not set 794# CONFIG_CRYPTO_CAMELLIA is not set
775# CONFIG_CRYPTO_TEST is not set 795# CONFIG_CRYPTO_TEST is not set
796# CONFIG_CRYPTO_AUTHENC is not set
776CONFIG_CRYPTO_HW=y 797CONFIG_CRYPTO_HW=y
798# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/ebony_defconfig b/arch/powerpc/configs/ebony_defconfig
index 35a95dda681e..d3ef642811ef 100644
--- a/arch/powerpc/configs/ebony_defconfig
+++ b/arch/powerpc/configs/ebony_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc4 3# Linux kernel version: 2.6.23
4# Thu Aug 30 16:34:11 2007 4# Thu Oct 18 08:01:57 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -21,8 +21,13 @@ CONFIG_PHYS_64BIT=y
21# CONFIG_PPC_MM_SLICES is not set 21# CONFIG_PPC_MM_SLICES is not set
22CONFIG_NOT_COHERENT_CACHE=y 22CONFIG_NOT_COHERENT_CACHE=y
23CONFIG_PPC32=y 23CONFIG_PPC32=y
24CONFIG_WORD_SIZE=32
24CONFIG_PPC_MERGE=y 25CONFIG_PPC_MERGE=y
25CONFIG_MMU=y 26CONFIG_MMU=y
27CONFIG_GENERIC_CMOS_UPDATE=y
28CONFIG_GENERIC_TIME=y
29CONFIG_GENERIC_TIME_VSYSCALL=y
30CONFIG_GENERIC_CLOCKEVENTS=y
26CONFIG_GENERIC_HARDIRQS=y 31CONFIG_GENERIC_HARDIRQS=y
27CONFIG_IRQ_PER_CPU=y 32CONFIG_IRQ_PER_CPU=y
28CONFIG_RWSEM_XCHGADD_ALGORITHM=y 33CONFIG_RWSEM_XCHGADD_ALGORITHM=y
@@ -66,6 +71,8 @@ CONFIG_POSIX_MQUEUE=y
66# CONFIG_AUDIT is not set 71# CONFIG_AUDIT is not set
67# CONFIG_IKCONFIG is not set 72# CONFIG_IKCONFIG is not set
68CONFIG_LOG_BUF_SHIFT=14 73CONFIG_LOG_BUF_SHIFT=14
74CONFIG_FAIR_GROUP_SCHED=y
75CONFIG_FAIR_USER_SCHED=y
69CONFIG_SYSFS_DEPRECATED=y 76CONFIG_SYSFS_DEPRECATED=y
70# CONFIG_RELAY is not set 77# CONFIG_RELAY is not set
71CONFIG_BLK_DEV_INITRD=y 78CONFIG_BLK_DEV_INITRD=y
@@ -86,7 +93,6 @@ CONFIG_FUTEX=y
86CONFIG_ANON_INODES=y 93CONFIG_ANON_INODES=y
87CONFIG_EPOLL=y 94CONFIG_EPOLL=y
88CONFIG_SIGNALFD=y 95CONFIG_SIGNALFD=y
89CONFIG_TIMERFD=y
90CONFIG_EVENTFD=y 96CONFIG_EVENTFD=y
91CONFIG_SHMEM=y 97CONFIG_SHMEM=y
92CONFIG_VM_EVENT_COUNTERS=y 98CONFIG_VM_EVENT_COUNTERS=y
@@ -130,7 +136,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
130# CONFIG_PPC_CELL is not set 136# CONFIG_PPC_CELL is not set
131# CONFIG_PPC_CELL_NATIVE is not set 137# CONFIG_PPC_CELL_NATIVE is not set
132# CONFIG_PQ2ADS is not set 138# CONFIG_PQ2ADS is not set
139# CONFIG_BAMBOO is not set
133CONFIG_EBONY=y 140CONFIG_EBONY=y
141# CONFIG_SEQUOIA is not set
134CONFIG_440GP=y 142CONFIG_440GP=y
135# CONFIG_MPIC is not set 143# CONFIG_MPIC is not set
136# CONFIG_MPIC_WEIRD is not set 144# CONFIG_MPIC_WEIRD is not set
@@ -149,6 +157,10 @@ CONFIG_440GP=y
149# Kernel options 157# Kernel options
150# 158#
151# CONFIG_HIGHMEM is not set 159# CONFIG_HIGHMEM is not set
160# CONFIG_TICK_ONESHOT is not set
161# CONFIG_NO_HZ is not set
162# CONFIG_HIGH_RES_TIMERS is not set
163CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
152# CONFIG_HZ_100 is not set 164# CONFIG_HZ_100 is not set
153CONFIG_HZ_250=y 165CONFIG_HZ_250=y
154# CONFIG_HZ_300 is not set 166# CONFIG_HZ_300 is not set
@@ -170,6 +182,7 @@ CONFIG_FLATMEM_MANUAL=y
170CONFIG_FLATMEM=y 182CONFIG_FLATMEM=y
171CONFIG_FLAT_NODE_MEM_MAP=y 183CONFIG_FLAT_NODE_MEM_MAP=y
172# CONFIG_SPARSEMEM_STATIC is not set 184# CONFIG_SPARSEMEM_STATIC is not set
185# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
173CONFIG_SPLIT_PTLOCK_CPUS=4 186CONFIG_SPLIT_PTLOCK_CPUS=4
174CONFIG_RESOURCES_64BIT=y 187CONFIG_RESOURCES_64BIT=y
175CONFIG_ZONE_DMA_FLAG=1 188CONFIG_ZONE_DMA_FLAG=1
@@ -194,10 +207,6 @@ CONFIG_PCI_SYSCALL=y
194CONFIG_ARCH_SUPPORTS_MSI=y 207CONFIG_ARCH_SUPPORTS_MSI=y
195# CONFIG_PCI_MSI is not set 208# CONFIG_PCI_MSI is not set
196# CONFIG_PCI_DEBUG is not set 209# CONFIG_PCI_DEBUG is not set
197
198#
199# PCCARD (PCMCIA/CardBus) support
200#
201# CONFIG_PCCARD is not set 210# CONFIG_PCCARD is not set
202# CONFIG_HOTPLUG_PCI is not set 211# CONFIG_HOTPLUG_PCI is not set
203 212
@@ -212,7 +221,7 @@ CONFIG_ARCH_SUPPORTS_MSI=y
212CONFIG_HIGHMEM_START=0xfe000000 221CONFIG_HIGHMEM_START=0xfe000000
213CONFIG_LOWMEM_SIZE=0x30000000 222CONFIG_LOWMEM_SIZE=0x30000000
214CONFIG_KERNEL_START=0xc0000000 223CONFIG_KERNEL_START=0xc0000000
215CONFIG_TASK_SIZE=0x80000000 224CONFIG_TASK_SIZE=0xc0000000
216CONFIG_CONSISTENT_START=0xff100000 225CONFIG_CONSISTENT_START=0xff100000
217CONFIG_CONSISTENT_SIZE=0x00200000 226CONFIG_CONSISTENT_SIZE=0x00200000
218CONFIG_BOOT_LOAD=0x01000000 227CONFIG_BOOT_LOAD=0x01000000
@@ -249,6 +258,7 @@ CONFIG_IP_PNP_BOOTP=y
249# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 258# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
250# CONFIG_INET_XFRM_MODE_TUNNEL is not set 259# CONFIG_INET_XFRM_MODE_TUNNEL is not set
251# CONFIG_INET_XFRM_MODE_BEET is not set 260# CONFIG_INET_XFRM_MODE_BEET is not set
261# CONFIG_INET_LRO is not set
252CONFIG_INET_DIAG=y 262CONFIG_INET_DIAG=y
253CONFIG_INET_TCP_DIAG=y 263CONFIG_INET_TCP_DIAG=y
254# CONFIG_TCP_CONG_ADVANCED is not set 264# CONFIG_TCP_CONG_ADVANCED is not set
@@ -306,6 +316,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
306# 316#
307# Generic Driver Options 317# Generic Driver Options
308# 318#
319CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
309CONFIG_STANDALONE=y 320CONFIG_STANDALONE=y
310CONFIG_PREVENT_FIRMWARE_BUILD=y 321CONFIG_PREVENT_FIRMWARE_BUILD=y
311CONFIG_FW_LOADER=y 322CONFIG_FW_LOADER=y
@@ -332,6 +343,7 @@ CONFIG_MTD_BLOCK=y
332# CONFIG_INFTL is not set 343# CONFIG_INFTL is not set
333# CONFIG_RFD_FTL is not set 344# CONFIG_RFD_FTL is not set
334# CONFIG_SSFDC is not set 345# CONFIG_SSFDC is not set
346# CONFIG_MTD_OOPS is not set
335 347
336# 348#
337# RAM/ROM/Flash chip drivers 349# RAM/ROM/Flash chip drivers
@@ -364,6 +376,7 @@ CONFIG_MTD_CFI_UTIL=y
364# CONFIG_MTD_COMPLEX_MAPPINGS is not set 376# CONFIG_MTD_COMPLEX_MAPPINGS is not set
365# CONFIG_MTD_PHYSMAP is not set 377# CONFIG_MTD_PHYSMAP is not set
366CONFIG_MTD_PHYSMAP_OF=y 378CONFIG_MTD_PHYSMAP_OF=y
379# CONFIG_MTD_INTEL_VR_NOR is not set
367# CONFIG_MTD_PLATRAM is not set 380# CONFIG_MTD_PLATRAM is not set
368 381
369# 382#
@@ -423,10 +436,6 @@ CONFIG_MISC_DEVICES=y
423# CONFIG_SCSI_NETLINK is not set 436# CONFIG_SCSI_NETLINK is not set
424# CONFIG_ATA is not set 437# CONFIG_ATA is not set
425# CONFIG_MD is not set 438# CONFIG_MD is not set
426
427#
428# Fusion MPT device support
429#
430# CONFIG_FUSION is not set 439# CONFIG_FUSION is not set
431 440
432# 441#
@@ -443,12 +452,36 @@ CONFIG_NETDEVICES=y
443# CONFIG_MACVLAN is not set 452# CONFIG_MACVLAN is not set
444# CONFIG_EQUALIZER is not set 453# CONFIG_EQUALIZER is not set
445# CONFIG_TUN is not set 454# CONFIG_TUN is not set
455# CONFIG_VETH is not set
456# CONFIG_IP1000 is not set
446# CONFIG_ARCNET is not set 457# CONFIG_ARCNET is not set
447# CONFIG_NET_ETHERNET is not set 458# CONFIG_PHYLIB is not set
459CONFIG_NET_ETHERNET=y
460# CONFIG_MII is not set
461# CONFIG_HAPPYMEAL is not set
462# CONFIG_SUNGEM is not set
463# CONFIG_CASSINI is not set
464# CONFIG_NET_VENDOR_3COM is not set
465# CONFIG_NET_TULIP is not set
466# CONFIG_HP100 is not set
467CONFIG_IBM_NEW_EMAC=y
468CONFIG_IBM_NEW_EMAC_RXB=128
469CONFIG_IBM_NEW_EMAC_TXB=64
470CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
471CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
472CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
473# CONFIG_IBM_NEW_EMAC_DEBUG is not set
474CONFIG_IBM_NEW_EMAC_ZMII=y
475# CONFIG_IBM_NEW_EMAC_RGMII is not set
476# CONFIG_IBM_NEW_EMAC_TAH is not set
477# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
478# CONFIG_NET_PCI is not set
479# CONFIG_B44 is not set
448CONFIG_NETDEV_1000=y 480CONFIG_NETDEV_1000=y
449# CONFIG_ACENIC is not set 481# CONFIG_ACENIC is not set
450# CONFIG_DL2K is not set 482# CONFIG_DL2K is not set
451# CONFIG_E1000 is not set 483# CONFIG_E1000 is not set
484# CONFIG_E1000E is not set
452# CONFIG_NS83820 is not set 485# CONFIG_NS83820 is not set
453# CONFIG_HAMACHI is not set 486# CONFIG_HAMACHI is not set
454# CONFIG_YELLOWFIN is not set 487# CONFIG_YELLOWFIN is not set
@@ -456,6 +489,7 @@ CONFIG_NETDEV_1000=y
456# CONFIG_SIS190 is not set 489# CONFIG_SIS190 is not set
457# CONFIG_SKGE is not set 490# CONFIG_SKGE is not set
458# CONFIG_SKY2 is not set 491# CONFIG_SKY2 is not set
492# CONFIG_SK98LIN is not set
459# CONFIG_VIA_VELOCITY is not set 493# CONFIG_VIA_VELOCITY is not set
460# CONFIG_TIGON3 is not set 494# CONFIG_TIGON3 is not set
461# CONFIG_BNX2 is not set 495# CONFIG_BNX2 is not set
@@ -464,11 +498,14 @@ CONFIG_NETDEV_1000=y
464CONFIG_NETDEV_10000=y 498CONFIG_NETDEV_10000=y
465# CONFIG_CHELSIO_T1 is not set 499# CONFIG_CHELSIO_T1 is not set
466# CONFIG_CHELSIO_T3 is not set 500# CONFIG_CHELSIO_T3 is not set
501# CONFIG_IXGBE is not set
467# CONFIG_IXGB is not set 502# CONFIG_IXGB is not set
468# CONFIG_S2IO is not set 503# CONFIG_S2IO is not set
469# CONFIG_MYRI10GE is not set 504# CONFIG_MYRI10GE is not set
470# CONFIG_NETXEN_NIC is not set 505# CONFIG_NETXEN_NIC is not set
506# CONFIG_NIU is not set
471# CONFIG_MLX4_CORE is not set 507# CONFIG_MLX4_CORE is not set
508# CONFIG_TEHUTI is not set
472# CONFIG_TR is not set 509# CONFIG_TR is not set
473 510
474# 511#
@@ -537,8 +574,6 @@ CONFIG_LEGACY_PTY_COUNT=256
537# CONFIG_GEN_RTC is not set 574# CONFIG_GEN_RTC is not set
538# CONFIG_R3964 is not set 575# CONFIG_R3964 is not set
539# CONFIG_APPLICOM is not set 576# CONFIG_APPLICOM is not set
540# CONFIG_AGP is not set
541# CONFIG_DRM is not set
542# CONFIG_RAW_DRIVER is not set 577# CONFIG_RAW_DRIVER is not set
543# CONFIG_TCG_TPM is not set 578# CONFIG_TCG_TPM is not set
544CONFIG_DEVPORT=y 579CONFIG_DEVPORT=y
@@ -554,6 +589,12 @@ CONFIG_DEVPORT=y
554# CONFIG_HWMON is not set 589# CONFIG_HWMON is not set
555 590
556# 591#
592# Sonics Silicon Backplane
593#
594CONFIG_SSB_POSSIBLE=y
595# CONFIG_SSB is not set
596
597#
557# Multifunction device drivers 598# Multifunction device drivers
558# 599#
559# CONFIG_MFD_SM501 is not set 600# CONFIG_MFD_SM501 is not set
@@ -568,16 +609,17 @@ CONFIG_DEVPORT=y
568# 609#
569# Graphics support 610# Graphics support
570# 611#
612# CONFIG_AGP is not set
613# CONFIG_DRM is not set
614# CONFIG_VGASTATE is not set
615# CONFIG_VIDEO_OUTPUT_CONTROL is not set
616# CONFIG_FB is not set
571# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 617# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
572 618
573# 619#
574# Display device support 620# Display device support
575# 621#
576# CONFIG_DISPLAY_SUPPORT is not set 622# CONFIG_DISPLAY_SUPPORT is not set
577# CONFIG_VGASTATE is not set
578# CONFIG_VIDEO_OUTPUT_CONTROL is not set
579# CONFIG_FB is not set
580# CONFIG_FB_IBM_GXT4500 is not set
581 623
582# 624#
583# Sound 625# Sound
@@ -604,19 +646,6 @@ CONFIG_USB_ARCH_HAS_EHCI=y
604# CONFIG_RTC_CLASS is not set 646# CONFIG_RTC_CLASS is not set
605 647
606# 648#
607# DMA Engine support
608#
609# CONFIG_DMA_ENGINE is not set
610
611#
612# DMA Clients
613#
614
615#
616# DMA Devices
617#
618
619#
620# Userspace I/O 649# Userspace I/O
621# 650#
622# CONFIG_UIO is not set 651# CONFIG_UIO is not set
@@ -668,7 +697,6 @@ CONFIG_SYSFS=y
668CONFIG_TMPFS=y 697CONFIG_TMPFS=y
669# CONFIG_TMPFS_POSIX_ACL is not set 698# CONFIG_TMPFS_POSIX_ACL is not set
670# CONFIG_HUGETLB_PAGE is not set 699# CONFIG_HUGETLB_PAGE is not set
671CONFIG_RAMFS=y
672# CONFIG_CONFIGFS_FS is not set 700# CONFIG_CONFIGFS_FS is not set
673 701
674# 702#
@@ -684,10 +712,12 @@ CONFIG_RAMFS=y
684CONFIG_JFFS2_FS=y 712CONFIG_JFFS2_FS=y
685CONFIG_JFFS2_FS_DEBUG=0 713CONFIG_JFFS2_FS_DEBUG=0
686CONFIG_JFFS2_FS_WRITEBUFFER=y 714CONFIG_JFFS2_FS_WRITEBUFFER=y
715# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
687# CONFIG_JFFS2_SUMMARY is not set 716# CONFIG_JFFS2_SUMMARY is not set
688# CONFIG_JFFS2_FS_XATTR is not set 717# CONFIG_JFFS2_FS_XATTR is not set
689# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set 718# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
690CONFIG_JFFS2_ZLIB=y 719CONFIG_JFFS2_ZLIB=y
720# CONFIG_JFFS2_LZO is not set
691CONFIG_JFFS2_RTIME=y 721CONFIG_JFFS2_RTIME=y
692# CONFIG_JFFS2_RUBIN is not set 722# CONFIG_JFFS2_RUBIN is not set
693CONFIG_CRAMFS=y 723CONFIG_CRAMFS=y
@@ -696,10 +726,7 @@ CONFIG_CRAMFS=y
696# CONFIG_QNX4FS_FS is not set 726# CONFIG_QNX4FS_FS is not set
697# CONFIG_SYSV_FS is not set 727# CONFIG_SYSV_FS is not set
698# CONFIG_UFS_FS is not set 728# CONFIG_UFS_FS is not set
699 729CONFIG_NETWORK_FILESYSTEMS=y
700#
701# Network File Systems
702#
703CONFIG_NFS_FS=y 730CONFIG_NFS_FS=y
704CONFIG_NFS_V3=y 731CONFIG_NFS_V3=y
705# CONFIG_NFS_V3_ACL is not set 732# CONFIG_NFS_V3_ACL is not set
@@ -725,15 +752,7 @@ CONFIG_SUNRPC=y
725# 752#
726# CONFIG_PARTITION_ADVANCED is not set 753# CONFIG_PARTITION_ADVANCED is not set
727CONFIG_MSDOS_PARTITION=y 754CONFIG_MSDOS_PARTITION=y
728
729#
730# Native Language Support
731#
732# CONFIG_NLS is not set 755# CONFIG_NLS is not set
733
734#
735# Distributed Lock Manager
736#
737# CONFIG_DLM is not set 756# CONFIG_DLM is not set
738# CONFIG_UCC_SLOW is not set 757# CONFIG_UCC_SLOW is not set
739 758
@@ -787,6 +806,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
787# CONFIG_DEBUG_VM is not set 806# CONFIG_DEBUG_VM is not set
788# CONFIG_DEBUG_LIST is not set 807# CONFIG_DEBUG_LIST is not set
789CONFIG_FORCED_INLINING=y 808CONFIG_FORCED_INLINING=y
809# CONFIG_BOOT_PRINTK_DELAY is not set
790# CONFIG_RCU_TORTURE_TEST is not set 810# CONFIG_RCU_TORTURE_TEST is not set
791# CONFIG_FAULT_INJECTION is not set 811# CONFIG_FAULT_INJECTION is not set
792# CONFIG_DEBUG_STACKOVERFLOW is not set 812# CONFIG_DEBUG_STACKOVERFLOW is not set
@@ -801,6 +821,7 @@ CONFIG_FORCED_INLINING=y
801# 821#
802# CONFIG_KEYS is not set 822# CONFIG_KEYS is not set
803# CONFIG_SECURITY is not set 823# CONFIG_SECURITY is not set
824# CONFIG_SECURITY_FILE_CAPABILITIES is not set
804CONFIG_CRYPTO=y 825CONFIG_CRYPTO=y
805CONFIG_CRYPTO_ALGAPI=y 826CONFIG_CRYPTO_ALGAPI=y
806CONFIG_CRYPTO_BLKCIPHER=y 827CONFIG_CRYPTO_BLKCIPHER=y
@@ -820,6 +841,7 @@ CONFIG_CRYPTO_ECB=y
820CONFIG_CRYPTO_CBC=y 841CONFIG_CRYPTO_CBC=y
821CONFIG_CRYPTO_PCBC=y 842CONFIG_CRYPTO_PCBC=y
822# CONFIG_CRYPTO_LRW is not set 843# CONFIG_CRYPTO_LRW is not set
844# CONFIG_CRYPTO_XTS is not set
823# CONFIG_CRYPTO_CRYPTD is not set 845# CONFIG_CRYPTO_CRYPTD is not set
824CONFIG_CRYPTO_DES=y 846CONFIG_CRYPTO_DES=y
825# CONFIG_CRYPTO_FCRYPT is not set 847# CONFIG_CRYPTO_FCRYPT is not set
@@ -833,9 +855,12 @@ CONFIG_CRYPTO_DES=y
833# CONFIG_CRYPTO_ARC4 is not set 855# CONFIG_CRYPTO_ARC4 is not set
834# CONFIG_CRYPTO_KHAZAD is not set 856# CONFIG_CRYPTO_KHAZAD is not set
835# CONFIG_CRYPTO_ANUBIS is not set 857# CONFIG_CRYPTO_ANUBIS is not set
858# CONFIG_CRYPTO_SEED is not set
836# CONFIG_CRYPTO_DEFLATE is not set 859# CONFIG_CRYPTO_DEFLATE is not set
837# CONFIG_CRYPTO_MICHAEL_MIC is not set 860# CONFIG_CRYPTO_MICHAEL_MIC is not set
838# CONFIG_CRYPTO_CRC32C is not set 861# CONFIG_CRYPTO_CRC32C is not set
839# CONFIG_CRYPTO_CAMELLIA is not set 862# CONFIG_CRYPTO_CAMELLIA is not set
840# CONFIG_CRYPTO_TEST is not set 863# CONFIG_CRYPTO_TEST is not set
864# CONFIG_CRYPTO_AUTHENC is not set
841# CONFIG_CRYPTO_HW is not set 865# CONFIG_CRYPTO_HW is not set
866# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/configs/walnut_defconfig b/arch/powerpc/configs/walnut_defconfig
index 7724292cc06d..02896ecba490 100644
--- a/arch/powerpc/configs/walnut_defconfig
+++ b/arch/powerpc/configs/walnut_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23-rc4 3# Linux kernel version: 2.6.23
4# Wed Sep 5 12:06:37 2007 4# Thu Oct 18 12:54:18 2007
5# 5#
6# CONFIG_PPC64 is not set 6# CONFIG_PPC64 is not set
7 7
@@ -18,8 +18,13 @@ CONFIG_4xx=y
18# CONFIG_PPC_MM_SLICES is not set 18# CONFIG_PPC_MM_SLICES is not set
19CONFIG_NOT_COHERENT_CACHE=y 19CONFIG_NOT_COHERENT_CACHE=y
20CONFIG_PPC32=y 20CONFIG_PPC32=y
21CONFIG_WORD_SIZE=32
21CONFIG_PPC_MERGE=y 22CONFIG_PPC_MERGE=y
22CONFIG_MMU=y 23CONFIG_MMU=y
24CONFIG_GENERIC_CMOS_UPDATE=y
25CONFIG_GENERIC_TIME=y
26CONFIG_GENERIC_TIME_VSYSCALL=y
27CONFIG_GENERIC_CLOCKEVENTS=y
23CONFIG_GENERIC_HARDIRQS=y 28CONFIG_GENERIC_HARDIRQS=y
24CONFIG_IRQ_PER_CPU=y 29CONFIG_IRQ_PER_CPU=y
25CONFIG_RWSEM_XCHGADD_ALGORITHM=y 30CONFIG_RWSEM_XCHGADD_ALGORITHM=y
@@ -63,6 +68,8 @@ CONFIG_POSIX_MQUEUE=y
63# CONFIG_AUDIT is not set 68# CONFIG_AUDIT is not set
64# CONFIG_IKCONFIG is not set 69# CONFIG_IKCONFIG is not set
65CONFIG_LOG_BUF_SHIFT=14 70CONFIG_LOG_BUF_SHIFT=14
71CONFIG_FAIR_GROUP_SCHED=y
72CONFIG_FAIR_USER_SCHED=y
66CONFIG_SYSFS_DEPRECATED=y 73CONFIG_SYSFS_DEPRECATED=y
67# CONFIG_RELAY is not set 74# CONFIG_RELAY is not set
68CONFIG_BLK_DEV_INITRD=y 75CONFIG_BLK_DEV_INITRD=y
@@ -83,7 +90,6 @@ CONFIG_FUTEX=y
83CONFIG_ANON_INODES=y 90CONFIG_ANON_INODES=y
84CONFIG_EPOLL=y 91CONFIG_EPOLL=y
85CONFIG_SIGNALFD=y 92CONFIG_SIGNALFD=y
86CONFIG_TIMERFD=y
87CONFIG_EVENTFD=y 93CONFIG_EVENTFD=y
88CONFIG_SHMEM=y 94CONFIG_SHMEM=y
89CONFIG_VM_EVENT_COUNTERS=y 95CONFIG_VM_EVENT_COUNTERS=y
@@ -127,7 +133,9 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
127# CONFIG_PPC_CELL is not set 133# CONFIG_PPC_CELL is not set
128# CONFIG_PPC_CELL_NATIVE is not set 134# CONFIG_PPC_CELL_NATIVE is not set
129# CONFIG_PQ2ADS is not set 135# CONFIG_PQ2ADS is not set
136# CONFIG_KILAUEA is not set
130CONFIG_WALNUT=y 137CONFIG_WALNUT=y
138# CONFIG_XILINX_VIRTEX_GENERIC_BOARD is not set
131CONFIG_405GP=y 139CONFIG_405GP=y
132CONFIG_IBM405_ERR77=y 140CONFIG_IBM405_ERR77=y
133CONFIG_IBM405_ERR51=y 141CONFIG_IBM405_ERR51=y
@@ -148,6 +156,10 @@ CONFIG_IBM405_ERR51=y
148# Kernel options 156# Kernel options
149# 157#
150# CONFIG_HIGHMEM is not set 158# CONFIG_HIGHMEM is not set
159# CONFIG_TICK_ONESHOT is not set
160# CONFIG_NO_HZ is not set
161# CONFIG_HIGH_RES_TIMERS is not set
162CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
151# CONFIG_HZ_100 is not set 163# CONFIG_HZ_100 is not set
152CONFIG_HZ_250=y 164CONFIG_HZ_250=y
153# CONFIG_HZ_300 is not set 165# CONFIG_HZ_300 is not set
@@ -169,6 +181,7 @@ CONFIG_FLATMEM_MANUAL=y
169CONFIG_FLATMEM=y 181CONFIG_FLATMEM=y
170CONFIG_FLAT_NODE_MEM_MAP=y 182CONFIG_FLAT_NODE_MEM_MAP=y
171# CONFIG_SPARSEMEM_STATIC is not set 183# CONFIG_SPARSEMEM_STATIC is not set
184# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
172CONFIG_SPLIT_PTLOCK_CPUS=4 185CONFIG_SPLIT_PTLOCK_CPUS=4
173CONFIG_RESOURCES_64BIT=y 186CONFIG_RESOURCES_64BIT=y
174CONFIG_ZONE_DMA_FLAG=1 187CONFIG_ZONE_DMA_FLAG=1
@@ -177,6 +190,8 @@ CONFIG_VIRT_TO_BUS=y
177CONFIG_PROC_DEVICETREE=y 190CONFIG_PROC_DEVICETREE=y
178# CONFIG_CMDLINE_BOOL is not set 191# CONFIG_CMDLINE_BOOL is not set
179# CONFIG_PM is not set 192# CONFIG_PM is not set
193CONFIG_SUSPEND_UP_POSSIBLE=y
194CONFIG_HIBERNATION_UP_POSSIBLE=y
180CONFIG_SECCOMP=y 195CONFIG_SECCOMP=y
181CONFIG_WANT_DEVICE_TREE=y 196CONFIG_WANT_DEVICE_TREE=y
182CONFIG_DEVICE_TREE="walnut.dts" 197CONFIG_DEVICE_TREE="walnut.dts"
@@ -190,10 +205,6 @@ CONFIG_ZONE_DMA=y
190# CONFIG_PCI_DOMAINS is not set 205# CONFIG_PCI_DOMAINS is not set
191# CONFIG_PCI_SYSCALL is not set 206# CONFIG_PCI_SYSCALL is not set
192# CONFIG_ARCH_SUPPORTS_MSI is not set 207# CONFIG_ARCH_SUPPORTS_MSI is not set
193
194#
195# PCCARD (PCMCIA/CardBus) support
196#
197# CONFIG_PCCARD is not set 208# CONFIG_PCCARD is not set
198 209
199# 210#
@@ -207,7 +218,7 @@ CONFIG_ZONE_DMA=y
207CONFIG_HIGHMEM_START=0xfe000000 218CONFIG_HIGHMEM_START=0xfe000000
208CONFIG_LOWMEM_SIZE=0x30000000 219CONFIG_LOWMEM_SIZE=0x30000000
209CONFIG_KERNEL_START=0xc0000000 220CONFIG_KERNEL_START=0xc0000000
210CONFIG_TASK_SIZE=0x80000000 221CONFIG_TASK_SIZE=0xc0000000
211CONFIG_CONSISTENT_START=0xff100000 222CONFIG_CONSISTENT_START=0xff100000
212CONFIG_CONSISTENT_SIZE=0x00200000 223CONFIG_CONSISTENT_SIZE=0x00200000
213CONFIG_BOOT_LOAD=0x00400000 224CONFIG_BOOT_LOAD=0x00400000
@@ -244,6 +255,7 @@ CONFIG_IP_PNP_BOOTP=y
244# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 255# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
245# CONFIG_INET_XFRM_MODE_TUNNEL is not set 256# CONFIG_INET_XFRM_MODE_TUNNEL is not set
246# CONFIG_INET_XFRM_MODE_BEET is not set 257# CONFIG_INET_XFRM_MODE_BEET is not set
258# CONFIG_INET_LRO is not set
247CONFIG_INET_DIAG=y 259CONFIG_INET_DIAG=y
248CONFIG_INET_TCP_DIAG=y 260CONFIG_INET_TCP_DIAG=y
249# CONFIG_TCP_CONG_ADVANCED is not set 261# CONFIG_TCP_CONG_ADVANCED is not set
@@ -301,6 +313,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
301# 313#
302# Generic Driver Options 314# Generic Driver Options
303# 315#
316CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
304CONFIG_STANDALONE=y 317CONFIG_STANDALONE=y
305CONFIG_PREVENT_FIRMWARE_BUILD=y 318CONFIG_PREVENT_FIRMWARE_BUILD=y
306CONFIG_FW_LOADER=y 319CONFIG_FW_LOADER=y
@@ -328,6 +341,7 @@ CONFIG_MTD_BLOCK=m
328# CONFIG_INFTL is not set 341# CONFIG_INFTL is not set
329# CONFIG_RFD_FTL is not set 342# CONFIG_RFD_FTL is not set
330# CONFIG_SSFDC is not set 343# CONFIG_SSFDC is not set
344# CONFIG_MTD_OOPS is not set
331 345
332# 346#
333# RAM/ROM/Flash chip drivers 347# RAM/ROM/Flash chip drivers
@@ -360,7 +374,6 @@ CONFIG_MTD_CFI_UTIL=y
360# CONFIG_MTD_COMPLEX_MAPPINGS is not set 374# CONFIG_MTD_COMPLEX_MAPPINGS is not set
361# CONFIG_MTD_PHYSMAP is not set 375# CONFIG_MTD_PHYSMAP is not set
362CONFIG_MTD_PHYSMAP_OF=y 376CONFIG_MTD_PHYSMAP_OF=y
363# CONFIG_MTD_WALNUT is not set
364# CONFIG_MTD_PLATRAM is not set 377# CONFIG_MTD_PLATRAM is not set
365 378
366# 379#
@@ -419,7 +432,22 @@ CONFIG_NETDEVICES=y
419# CONFIG_MACVLAN is not set 432# CONFIG_MACVLAN is not set
420# CONFIG_EQUALIZER is not set 433# CONFIG_EQUALIZER is not set
421# CONFIG_TUN is not set 434# CONFIG_TUN is not set
422# CONFIG_NET_ETHERNET is not set 435# CONFIG_VETH is not set
436# CONFIG_PHYLIB is not set
437CONFIG_NET_ETHERNET=y
438# CONFIG_MII is not set
439CONFIG_IBM_NEW_EMAC=y
440CONFIG_IBM_NEW_EMAC_RXB=128
441CONFIG_IBM_NEW_EMAC_TXB=64
442CONFIG_IBM_NEW_EMAC_POLL_WEIGHT=32
443CONFIG_IBM_NEW_EMAC_RX_COPY_THRESHOLD=256
444CONFIG_IBM_NEW_EMAC_RX_SKB_HEADROOM=0
445# CONFIG_IBM_NEW_EMAC_DEBUG is not set
446CONFIG_IBM_NEW_EMAC_ZMII=y
447# CONFIG_IBM_NEW_EMAC_RGMII is not set
448# CONFIG_IBM_NEW_EMAC_TAH is not set
449# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
450# CONFIG_B44 is not set
423CONFIG_NETDEV_1000=y 451CONFIG_NETDEV_1000=y
424CONFIG_NETDEV_10000=y 452CONFIG_NETDEV_10000=y
425 453
@@ -498,6 +526,12 @@ CONFIG_LEGACY_PTY_COUNT=256
498# CONFIG_HWMON is not set 526# CONFIG_HWMON is not set
499 527
500# 528#
529# Sonics Silicon Backplane
530#
531CONFIG_SSB_POSSIBLE=y
532# CONFIG_SSB is not set
533
534#
501# Multifunction device drivers 535# Multifunction device drivers
502# 536#
503# CONFIG_MFD_SM501 is not set 537# CONFIG_MFD_SM501 is not set
@@ -512,16 +546,15 @@ CONFIG_LEGACY_PTY_COUNT=256
512# 546#
513# Graphics support 547# Graphics support
514# 548#
549# CONFIG_VGASTATE is not set
550CONFIG_VIDEO_OUTPUT_CONTROL=m
551# CONFIG_FB is not set
515# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 552# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
516 553
517# 554#
518# Display device support 555# Display device support
519# 556#
520# CONFIG_DISPLAY_SUPPORT is not set 557# CONFIG_DISPLAY_SUPPORT is not set
521# CONFIG_VGASTATE is not set
522CONFIG_VIDEO_OUTPUT_CONTROL=m
523# CONFIG_FB is not set
524# CONFIG_FB_IBM_GXT4500 is not set
525 558
526# 559#
527# Sound 560# Sound
@@ -546,19 +579,6 @@ CONFIG_USB_SUPPORT=y
546# CONFIG_RTC_CLASS is not set 579# CONFIG_RTC_CLASS is not set
547 580
548# 581#
549# DMA Engine support
550#
551# CONFIG_DMA_ENGINE is not set
552
553#
554# DMA Clients
555#
556
557#
558# DMA Devices
559#
560
561#
562# Userspace I/O 582# Userspace I/O
563# 583#
564# CONFIG_UIO is not set 584# CONFIG_UIO is not set
@@ -610,7 +630,6 @@ CONFIG_SYSFS=y
610CONFIG_TMPFS=y 630CONFIG_TMPFS=y
611# CONFIG_TMPFS_POSIX_ACL is not set 631# CONFIG_TMPFS_POSIX_ACL is not set
612# CONFIG_HUGETLB_PAGE is not set 632# CONFIG_HUGETLB_PAGE is not set
613CONFIG_RAMFS=y
614# CONFIG_CONFIGFS_FS is not set 633# CONFIG_CONFIGFS_FS is not set
615 634
616# 635#
@@ -630,10 +649,7 @@ CONFIG_CRAMFS=y
630# CONFIG_QNX4FS_FS is not set 649# CONFIG_QNX4FS_FS is not set
631# CONFIG_SYSV_FS is not set 650# CONFIG_SYSV_FS is not set
632# CONFIG_UFS_FS is not set 651# CONFIG_UFS_FS is not set
633 652CONFIG_NETWORK_FILESYSTEMS=y
634#
635# Network File Systems
636#
637CONFIG_NFS_FS=y 653CONFIG_NFS_FS=y
638CONFIG_NFS_V3=y 654CONFIG_NFS_V3=y
639# CONFIG_NFS_V3_ACL is not set 655# CONFIG_NFS_V3_ACL is not set
@@ -659,15 +675,7 @@ CONFIG_SUNRPC=y
659# 675#
660# CONFIG_PARTITION_ADVANCED is not set 676# CONFIG_PARTITION_ADVANCED is not set
661CONFIG_MSDOS_PARTITION=y 677CONFIG_MSDOS_PARTITION=y
662
663#
664# Native Language Support
665#
666# CONFIG_NLS is not set 678# CONFIG_NLS is not set
667
668#
669# Distributed Lock Manager
670#
671# CONFIG_DLM is not set 679# CONFIG_DLM is not set
672# CONFIG_UCC_SLOW is not set 680# CONFIG_UCC_SLOW is not set
673 681
@@ -720,6 +728,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
720# CONFIG_DEBUG_VM is not set 728# CONFIG_DEBUG_VM is not set
721# CONFIG_DEBUG_LIST is not set 729# CONFIG_DEBUG_LIST is not set
722CONFIG_FORCED_INLINING=y 730CONFIG_FORCED_INLINING=y
731# CONFIG_BOOT_PRINTK_DELAY is not set
723# CONFIG_RCU_TORTURE_TEST is not set 732# CONFIG_RCU_TORTURE_TEST is not set
724# CONFIG_FAULT_INJECTION is not set 733# CONFIG_FAULT_INJECTION is not set
725# CONFIG_DEBUG_STACKOVERFLOW is not set 734# CONFIG_DEBUG_STACKOVERFLOW is not set
@@ -734,6 +743,7 @@ CONFIG_FORCED_INLINING=y
734# 743#
735# CONFIG_KEYS is not set 744# CONFIG_KEYS is not set
736# CONFIG_SECURITY is not set 745# CONFIG_SECURITY is not set
746# CONFIG_SECURITY_FILE_CAPABILITIES is not set
737CONFIG_CRYPTO=y 747CONFIG_CRYPTO=y
738CONFIG_CRYPTO_ALGAPI=y 748CONFIG_CRYPTO_ALGAPI=y
739CONFIG_CRYPTO_BLKCIPHER=y 749CONFIG_CRYPTO_BLKCIPHER=y
@@ -753,6 +763,7 @@ CONFIG_CRYPTO_ECB=y
753CONFIG_CRYPTO_CBC=y 763CONFIG_CRYPTO_CBC=y
754CONFIG_CRYPTO_PCBC=y 764CONFIG_CRYPTO_PCBC=y
755# CONFIG_CRYPTO_LRW is not set 765# CONFIG_CRYPTO_LRW is not set
766# CONFIG_CRYPTO_XTS is not set
756# CONFIG_CRYPTO_CRYPTD is not set 767# CONFIG_CRYPTO_CRYPTD is not set
757CONFIG_CRYPTO_DES=y 768CONFIG_CRYPTO_DES=y
758# CONFIG_CRYPTO_FCRYPT is not set 769# CONFIG_CRYPTO_FCRYPT is not set
@@ -766,9 +777,12 @@ CONFIG_CRYPTO_DES=y
766# CONFIG_CRYPTO_ARC4 is not set 777# CONFIG_CRYPTO_ARC4 is not set
767# CONFIG_CRYPTO_KHAZAD is not set 778# CONFIG_CRYPTO_KHAZAD is not set
768# CONFIG_CRYPTO_ANUBIS is not set 779# CONFIG_CRYPTO_ANUBIS is not set
780# CONFIG_CRYPTO_SEED is not set
769# CONFIG_CRYPTO_DEFLATE is not set 781# CONFIG_CRYPTO_DEFLATE is not set
770# CONFIG_CRYPTO_MICHAEL_MIC is not set 782# CONFIG_CRYPTO_MICHAEL_MIC is not set
771# CONFIG_CRYPTO_CRC32C is not set 783# CONFIG_CRYPTO_CRC32C is not set
772# CONFIG_CRYPTO_CAMELLIA is not set 784# CONFIG_CRYPTO_CAMELLIA is not set
773# CONFIG_CRYPTO_TEST is not set 785# CONFIG_CRYPTO_TEST is not set
786# CONFIG_CRYPTO_AUTHENC is not set
774CONFIG_CRYPTO_HW=y 787CONFIG_CRYPTO_HW=y
788# CONFIG_PPC_CLOCK is not set
diff --git a/arch/powerpc/kernel/dma_64.c b/arch/powerpc/kernel/dma_64.c
index 9001104b56b0..14206e3f0819 100644
--- a/arch/powerpc/kernel/dma_64.c
+++ b/arch/powerpc/kernel/dma_64.c
@@ -161,8 +161,7 @@ static int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl,
161 int i; 161 int i;
162 162
163 for_each_sg(sgl, sg, nents, i) { 163 for_each_sg(sgl, sg, nents, i) {
164 sg->dma_address = (page_to_phys(sg->page) + sg->offset) | 164 sg->dma_address = sg_phys(sg) | dma_direct_offset;
165 dma_direct_offset;
166 sg->dma_length = sg->length; 165 sg->dma_length = sg->length;
167 } 166 }
168 167
diff --git a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c
index 289d7e935918..72fd87156b24 100644
--- a/arch/powerpc/kernel/ibmebus.c
+++ b/arch/powerpc/kernel/ibmebus.c
@@ -102,8 +102,7 @@ static int ibmebus_map_sg(struct device *dev,
102 int i; 102 int i;
103 103
104 for_each_sg(sgl, sg, nents, i) { 104 for_each_sg(sgl, sg, nents, i) {
105 sg->dma_address = (dma_addr_t)page_address(sg->page) 105 sg->dma_address = (dma_addr_t) sg_virt(sg);
106 + sg->offset;
107 sg->dma_length = sg->length; 106 sg->dma_length = sg->length;
108 } 107 }
109 108
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index 306a6f75b6c5..2d0c9ef555e9 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -307,7 +307,7 @@ int iommu_map_sg(struct iommu_table *tbl, struct scatterlist *sglist,
307 continue; 307 continue;
308 } 308 }
309 /* Allocate iommu entries for that segment */ 309 /* Allocate iommu entries for that segment */
310 vaddr = (unsigned long)page_address(s->page) + s->offset; 310 vaddr = (unsigned long) sg_virt(s);
311 npages = iommu_num_pages(vaddr, slen); 311 npages = iommu_num_pages(vaddr, slen);
312 entry = iommu_range_alloc(tbl, npages, &handle, mask >> IOMMU_PAGE_SHIFT, 0); 312 entry = iommu_range_alloc(tbl, npages, &handle, mask >> IOMMU_PAGE_SHIFT, 0);
313 313
diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig
index 47b3b0a3864a..8f6699fcc145 100644
--- a/arch/powerpc/platforms/40x/Kconfig
+++ b/arch/powerpc/platforms/40x/Kconfig
@@ -100,6 +100,7 @@ config 405GP
100 bool 100 bool
101 select IBM405_ERR77 101 select IBM405_ERR77
102 select IBM405_ERR51 102 select IBM405_ERR51
103 select IBM_NEW_EMAC_ZMII
103 104
104config 405EP 105config 405EP
105 bool 106 bool
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig
index 51f3ea40a285..8390cc164135 100644
--- a/arch/powerpc/platforms/44x/Kconfig
+++ b/arch/powerpc/platforms/44x/Kconfig
@@ -43,14 +43,14 @@ config 440EP
43 bool 43 bool
44 select PPC_FPU 44 select PPC_FPU
45 select IBM440EP_ERR42 45 select IBM440EP_ERR42
46# select IBM_NEW_EMAC_ZMII 46 select IBM_NEW_EMAC_ZMII
47 47
48config 440EPX 48config 440EPX
49 bool 49 bool
50 select PPC_FPU 50 select PPC_FPU
51# Disabled until the new EMAC Driver is merged. 51 select IBM_NEW_EMAC_EMAC4
52# select IBM_NEW_EMAC_EMAC4 52 select IBM_NEW_EMAC_RGMII
53# select IBM_NEW_EMAC_ZMII 53 select IBM_NEW_EMAC_ZMII
54 54
55config 440GP 55config 440GP
56 bool 56 bool
diff --git a/arch/powerpc/platforms/52xx/lite5200.c b/arch/powerpc/platforms/52xx/lite5200.c
index 65b7ae426238..25d2bfa3d9dc 100644
--- a/arch/powerpc/platforms/52xx/lite5200.c
+++ b/arch/powerpc/platforms/52xx/lite5200.c
@@ -145,6 +145,9 @@ static void __init lite5200_setup_arch(void)
145 /* Some mpc5200 & mpc5200b related configuration */ 145 /* Some mpc5200 & mpc5200b related configuration */
146 mpc5200_setup_xlb_arbiter(); 146 mpc5200_setup_xlb_arbiter();
147 147
148 /* Map wdt for mpc52xx_restart() */
149 mpc52xx_map_wdt();
150
148#ifdef CONFIG_PM 151#ifdef CONFIG_PM
149 mpc52xx_suspend.board_suspend_prepare = lite5200_suspend_prepare; 152 mpc52xx_suspend.board_suspend_prepare = lite5200_suspend_prepare;
150 mpc52xx_suspend.board_resume_finish = lite5200_resume_finish; 153 mpc52xx_suspend.board_resume_finish = lite5200_resume_finish;
@@ -183,5 +186,6 @@ define_machine(lite5200) {
183 .init = mpc52xx_declare_of_platform_devices, 186 .init = mpc52xx_declare_of_platform_devices,
184 .init_IRQ = mpc52xx_init_irq, 187 .init_IRQ = mpc52xx_init_irq,
185 .get_irq = mpc52xx_get_irq, 188 .get_irq = mpc52xx_get_irq,
189 .restart = mpc52xx_restart,
186 .calibrate_decr = generic_calibrate_decr, 190 .calibrate_decr = generic_calibrate_decr,
187}; 191};
diff --git a/arch/powerpc/platforms/52xx/mpc52xx_common.c b/arch/powerpc/platforms/52xx/mpc52xx_common.c
index 3bc201e07e6b..9850685c5429 100644
--- a/arch/powerpc/platforms/52xx/mpc52xx_common.c
+++ b/arch/powerpc/platforms/52xx/mpc52xx_common.c
@@ -18,15 +18,20 @@
18#include <asm/prom.h> 18#include <asm/prom.h>
19#include <asm/mpc52xx.h> 19#include <asm/mpc52xx.h>
20 20
21/*
22 * This variable is mapped in mpc52xx_map_wdt() and used in mpc52xx_restart().
23 * Permanent mapping is required because mpc52xx_restart() can be called
24 * from interrupt context while node mapping (which calls ioremap())
25 * cannot be used at such point.
26 */
27static volatile struct mpc52xx_gpt *mpc52xx_wdt = NULL;
21 28
22void __iomem * 29static void __iomem *
23mpc52xx_find_and_map(const char *compatible) 30mpc52xx_map_node(struct device_node *ofn)
24{ 31{
25 struct device_node *ofn;
26 const u32 *regaddr_p; 32 const u32 *regaddr_p;
27 u64 regaddr64, size64; 33 u64 regaddr64, size64;
28 34
29 ofn = of_find_compatible_node(NULL, NULL, compatible);
30 if (!ofn) 35 if (!ofn)
31 return NULL; 36 return NULL;
32 37
@@ -42,8 +47,23 @@ mpc52xx_find_and_map(const char *compatible)
42 47
43 return ioremap((u32)regaddr64, (u32)size64); 48 return ioremap((u32)regaddr64, (u32)size64);
44} 49}
50
51void __iomem *
52mpc52xx_find_and_map(const char *compatible)
53{
54 return mpc52xx_map_node(
55 of_find_compatible_node(NULL, NULL, compatible));
56}
57
45EXPORT_SYMBOL(mpc52xx_find_and_map); 58EXPORT_SYMBOL(mpc52xx_find_and_map);
46 59
60void __iomem *
61mpc52xx_find_and_map_path(const char *path)
62{
63 return mpc52xx_map_node(of_find_node_by_path(path));
64}
65
66EXPORT_SYMBOL(mpc52xx_find_and_map_path);
47 67
48/** 68/**
49 * mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device 69 * mpc52xx_find_ipb_freq - Find the IPB bus frequency for a device
@@ -113,3 +133,46 @@ mpc52xx_declare_of_platform_devices(void)
113 "Error while probing of_platform bus\n"); 133 "Error while probing of_platform bus\n");
114} 134}
115 135
136void __init
137mpc52xx_map_wdt(void)
138{
139 const void *has_wdt;
140 struct device_node *np;
141
142 /* mpc52xx_wdt is mapped here and used in mpc52xx_restart,
143 * possibly from a interrupt context. wdt is only implement
144 * on a gpt0, so check has-wdt property before mapping.
145 */
146 for_each_compatible_node(np, NULL, "fsl,mpc5200-gpt") {
147 has_wdt = of_get_property(np, "fsl,has-wdt", NULL);
148 if (has_wdt) {
149 mpc52xx_wdt = mpc52xx_map_node(np);
150 return;
151 }
152 }
153 for_each_compatible_node(np, NULL, "mpc5200-gpt") {
154 has_wdt = of_get_property(np, "has-wdt", NULL);
155 if (has_wdt) {
156 mpc52xx_wdt = mpc52xx_map_node(np);
157 return;
158 }
159 }
160}
161
162void
163mpc52xx_restart(char *cmd)
164{
165 local_irq_disable();
166
167 /* Turn on the watchdog and wait for it to expire.
168 * It effectively does a reset. */
169 if (mpc52xx_wdt) {
170 out_be32(&mpc52xx_wdt->mode, 0x00000000);
171 out_be32(&mpc52xx_wdt->count, 0x000000ff);
172 out_be32(&mpc52xx_wdt->mode, 0x00009004);
173 } else
174 printk("mpc52xx_restart: Can't access wdt. "
175 "Restart impossible, system halted.\n");
176
177 while (1);
178}
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype
index 3c7325ec36ec..99684ea606af 100644
--- a/arch/powerpc/platforms/Kconfig.cputype
+++ b/arch/powerpc/platforms/Kconfig.cputype
@@ -48,6 +48,7 @@ config 44x
48 bool "AMCC 44x" 48 bool "AMCC 44x"
49 select PPC_DCR_NATIVE 49 select PPC_DCR_NATIVE
50 select WANT_DEVICE_TREE 50 select WANT_DEVICE_TREE
51 select PPC_UDBG_16550
51 52
52config E200 53config E200
53 bool "Freescale e200" 54 bool "Freescale e200"
diff --git a/arch/powerpc/platforms/ps3/system-bus.c b/arch/powerpc/platforms/ps3/system-bus.c
index 07e64b48e7fc..6405f4a36763 100644
--- a/arch/powerpc/platforms/ps3/system-bus.c
+++ b/arch/powerpc/platforms/ps3/system-bus.c
@@ -628,9 +628,8 @@ static int ps3_sb_map_sg(struct device *_dev, struct scatterlist *sgl,
628 int i; 628 int i;
629 629
630 for_each_sg(sgl, sg, nents, i) { 630 for_each_sg(sgl, sg, nents, i) {
631 int result = ps3_dma_map(dev->d_region, 631 int result = ps3_dma_map(dev->d_region, sg_phys(sg),
632 page_to_phys(sg->page) + sg->offset, sg->length, 632 sg->length, &sg->dma_address, 0);
633 &sg->dma_address, 0);
634 633
635 if (result) { 634 if (result) {
636 pr_debug("%s:%d: ps3_dma_map failed (%d)\n", 635 pr_debug("%s:%d: ps3_dma_map failed (%d)\n",
diff --git a/arch/powerpc/sysdev/bestcomm/bestcomm.c b/arch/powerpc/sysdev/bestcomm/bestcomm.c
index 48492a83e5a7..740ad73ce5cc 100644
--- a/arch/powerpc/sysdev/bestcomm/bestcomm.c
+++ b/arch/powerpc/sysdev/bestcomm/bestcomm.c
@@ -269,6 +269,7 @@ bcom_engine_init(void)
269 int task; 269 int task;
270 phys_addr_t tdt_pa, ctx_pa, var_pa, fdt_pa; 270 phys_addr_t tdt_pa, ctx_pa, var_pa, fdt_pa;
271 unsigned int tdt_size, ctx_size, var_size, fdt_size; 271 unsigned int tdt_size, ctx_size, var_size, fdt_size;
272 u16 regval;
272 273
273 /* Allocate & clear SRAM zones for FDT, TDTs, contexts and vars/incs */ 274 /* Allocate & clear SRAM zones for FDT, TDTs, contexts and vars/incs */
274 tdt_size = BCOM_MAX_TASKS * sizeof(struct bcom_tdt); 275 tdt_size = BCOM_MAX_TASKS * sizeof(struct bcom_tdt);
@@ -319,9 +320,11 @@ bcom_engine_init(void)
319 /* Init 'always' initiator */ 320 /* Init 'always' initiator */
320 out_8(&bcom_eng->regs->ipr[BCOM_INITIATOR_ALWAYS], BCOM_IPR_ALWAYS); 321 out_8(&bcom_eng->regs->ipr[BCOM_INITIATOR_ALWAYS], BCOM_IPR_ALWAYS);
321 322
322 /* Disable COMM Bus Prefetch, apparently it's not reliable yet */ 323 /* Disable COMM Bus Prefetch on the original 5200; it's broken */
323 /* FIXME: This should be done on 5200 and not 5200B ... */ 324 if ((mfspr(SPRN_SVR) & MPC5200_SVR_MASK) == MPC5200_SVR) {
324 out_be16(&bcom_eng->regs->PtdCntrl, in_be16(&bcom_eng->regs->PtdCntrl) | 1); 325 regval = in_be16(&bcom_eng->regs->PtdCntrl);
326 out_be16(&bcom_eng->regs->PtdCntrl, regval | 1);
327 }
325 328
326 /* Init lock */ 329 /* Init lock */
327 spin_lock_init(&bcom_eng->lock); 330 spin_lock_init(&bcom_eng->lock);
diff --git a/arch/ppc/boot/Makefile b/arch/ppc/boot/Makefile
index 487dc66dcc74..500497e3c72d 100644
--- a/arch/ppc/boot/Makefile
+++ b/arch/ppc/boot/Makefile
@@ -13,6 +13,8 @@
13# modified by Cort (cort@cs.nmt.edu) 13# modified by Cort (cort@cs.nmt.edu)
14# 14#
15 15
16# KBUILD_CFLAGS used when building rest of boot (takes effect recursively)
17KBUILD_CFLAGS += -fno-builtin -D__BOOTER__ -Iarch/$(ARCH)/boot/include
16HOSTCFLAGS += -Iarch/$(ARCH)/boot/include 18HOSTCFLAGS += -Iarch/$(ARCH)/boot/include
17 19
18BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd 20BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd
diff --git a/arch/s390/defconfig b/arch/s390/defconfig
index 2aae23dba4bb..ece7b99da895 100644
--- a/arch/s390/defconfig
+++ b/arch/s390/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.22 3# Linux kernel version: 2.6.23
4# Tue Jul 17 12:50:23 2007 4# Mon Oct 22 12:10:44 2007
5# 5#
6CONFIG_MMU=y 6CONFIG_MMU=y
7CONFIG_ZONE_DMA=y 7CONFIG_ZONE_DMA=y
@@ -19,15 +19,11 @@ CONFIG_S390=y
19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" 19CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
20 20
21# 21#
22# Code maturity level options 22# General setup
23# 23#
24CONFIG_EXPERIMENTAL=y 24CONFIG_EXPERIMENTAL=y
25CONFIG_LOCK_KERNEL=y 25CONFIG_LOCK_KERNEL=y
26CONFIG_INIT_ENV_ARG_LIMIT=32 26CONFIG_INIT_ENV_ARG_LIMIT=32
27
28#
29# General setup
30#
31CONFIG_LOCALVERSION="" 27CONFIG_LOCALVERSION=""
32CONFIG_LOCALVERSION_AUTO=y 28CONFIG_LOCALVERSION_AUTO=y
33CONFIG_SWAP=y 29CONFIG_SWAP=y
@@ -42,7 +38,14 @@ CONFIG_AUDIT=y
42CONFIG_IKCONFIG=y 38CONFIG_IKCONFIG=y
43CONFIG_IKCONFIG_PROC=y 39CONFIG_IKCONFIG_PROC=y
44CONFIG_LOG_BUF_SHIFT=17 40CONFIG_LOG_BUF_SHIFT=17
41CONFIG_CGROUPS=y
42# CONFIG_CGROUP_DEBUG is not set
43CONFIG_CGROUP_NS=y
44CONFIG_CGROUP_CPUACCT=y
45# CONFIG_CPUSETS is not set 45# CONFIG_CPUSETS is not set
46CONFIG_FAIR_GROUP_SCHED=y
47CONFIG_FAIR_USER_SCHED=y
48# CONFIG_FAIR_CGROUP_SCHED is not set
46CONFIG_SYSFS_DEPRECATED=y 49CONFIG_SYSFS_DEPRECATED=y
47# CONFIG_RELAY is not set 50# CONFIG_RELAY is not set
48CONFIG_BLK_DEV_INITRD=y 51CONFIG_BLK_DEV_INITRD=y
@@ -63,7 +66,6 @@ CONFIG_FUTEX=y
63CONFIG_ANON_INODES=y 66CONFIG_ANON_INODES=y
64CONFIG_EPOLL=y 67CONFIG_EPOLL=y
65CONFIG_SIGNALFD=y 68CONFIG_SIGNALFD=y
66CONFIG_TIMERFD=y
67CONFIG_EVENTFD=y 69CONFIG_EVENTFD=y
68CONFIG_SHMEM=y 70CONFIG_SHMEM=y
69CONFIG_VM_EVENT_COUNTERS=y 71CONFIG_VM_EVENT_COUNTERS=y
@@ -83,6 +85,7 @@ CONFIG_STOP_MACHINE=y
83CONFIG_BLOCK=y 85CONFIG_BLOCK=y
84# CONFIG_BLK_DEV_IO_TRACE is not set 86# CONFIG_BLK_DEV_IO_TRACE is not set
85CONFIG_BLK_DEV_BSG=y 87CONFIG_BLK_DEV_BSG=y
88CONFIG_BLOCK_COMPAT=y
86 89
87# 90#
88# IO Schedulers 91# IO Schedulers
@@ -108,7 +111,6 @@ CONFIG_64BIT=y
108CONFIG_SMP=y 111CONFIG_SMP=y
109CONFIG_NR_CPUS=32 112CONFIG_NR_CPUS=32
110CONFIG_HOTPLUG_CPU=y 113CONFIG_HOTPLUG_CPU=y
111CONFIG_DEFAULT_MIGRATION_COST=1000000
112CONFIG_COMPAT=y 114CONFIG_COMPAT=y
113CONFIG_SYSVIPC_COMPAT=y 115CONFIG_SYSVIPC_COMPAT=y
114CONFIG_AUDIT_ARCH=y 116CONFIG_AUDIT_ARCH=y
@@ -143,9 +145,11 @@ CONFIG_FLATMEM_MANUAL=y
143CONFIG_FLATMEM=y 145CONFIG_FLATMEM=y
144CONFIG_FLAT_NODE_MEM_MAP=y 146CONFIG_FLAT_NODE_MEM_MAP=y
145# CONFIG_SPARSEMEM_STATIC is not set 147# CONFIG_SPARSEMEM_STATIC is not set
148# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
146CONFIG_SPLIT_PTLOCK_CPUS=4 149CONFIG_SPLIT_PTLOCK_CPUS=4
147CONFIG_RESOURCES_64BIT=y 150CONFIG_RESOURCES_64BIT=y
148CONFIG_ZONE_DMA_FLAG=1 151CONFIG_ZONE_DMA_FLAG=1
152CONFIG_BOUNCE=y
149CONFIG_VIRT_TO_BUS=y 153CONFIG_VIRT_TO_BUS=y
150CONFIG_HOLES_IN_ZONE=y 154CONFIG_HOLES_IN_ZONE=y
151 155
@@ -219,12 +223,14 @@ CONFIG_INET_TUNNEL=y
219CONFIG_INET_XFRM_MODE_TRANSPORT=y 223CONFIG_INET_XFRM_MODE_TRANSPORT=y
220CONFIG_INET_XFRM_MODE_TUNNEL=y 224CONFIG_INET_XFRM_MODE_TUNNEL=y
221CONFIG_INET_XFRM_MODE_BEET=y 225CONFIG_INET_XFRM_MODE_BEET=y
226CONFIG_INET_LRO=y
222CONFIG_INET_DIAG=y 227CONFIG_INET_DIAG=y
223CONFIG_INET_TCP_DIAG=y 228CONFIG_INET_TCP_DIAG=y
224# CONFIG_TCP_CONG_ADVANCED is not set 229# CONFIG_TCP_CONG_ADVANCED is not set
225CONFIG_TCP_CONG_CUBIC=y 230CONFIG_TCP_CONG_CUBIC=y
226CONFIG_DEFAULT_TCP_CONG="cubic" 231CONFIG_DEFAULT_TCP_CONG="cubic"
227# CONFIG_TCP_MD5SIG is not set 232# CONFIG_TCP_MD5SIG is not set
233# CONFIG_IP_VS is not set
228CONFIG_IPV6=y 234CONFIG_IPV6=y
229# CONFIG_IPV6_PRIVACY is not set 235# CONFIG_IPV6_PRIVACY is not set
230# CONFIG_IPV6_ROUTER_PREF is not set 236# CONFIG_IPV6_ROUTER_PREF is not set
@@ -243,7 +249,48 @@ CONFIG_IPV6_SIT=y
243# CONFIG_IPV6_TUNNEL is not set 249# CONFIG_IPV6_TUNNEL is not set
244# CONFIG_IPV6_MULTIPLE_TABLES is not set 250# CONFIG_IPV6_MULTIPLE_TABLES is not set
245# CONFIG_NETWORK_SECMARK is not set 251# CONFIG_NETWORK_SECMARK is not set
246# CONFIG_NETFILTER is not set 252CONFIG_NETFILTER=y
253# CONFIG_NETFILTER_DEBUG is not set
254
255#
256# Core Netfilter Configuration
257#
258CONFIG_NETFILTER_NETLINK=m
259CONFIG_NETFILTER_NETLINK_QUEUE=m
260CONFIG_NETFILTER_NETLINK_LOG=m
261CONFIG_NF_CONNTRACK_ENABLED=m
262CONFIG_NF_CONNTRACK=m
263# CONFIG_NF_CT_ACCT is not set
264# CONFIG_NF_CONNTRACK_MARK is not set
265# CONFIG_NF_CONNTRACK_EVENTS is not set
266# CONFIG_NF_CT_PROTO_SCTP is not set
267# CONFIG_NF_CT_PROTO_UDPLITE is not set
268# CONFIG_NF_CONNTRACK_AMANDA is not set
269# CONFIG_NF_CONNTRACK_FTP is not set
270# CONFIG_NF_CONNTRACK_H323 is not set
271# CONFIG_NF_CONNTRACK_IRC is not set
272# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set
273# CONFIG_NF_CONNTRACK_PPTP is not set
274# CONFIG_NF_CONNTRACK_SANE is not set
275# CONFIG_NF_CONNTRACK_SIP is not set
276# CONFIG_NF_CONNTRACK_TFTP is not set
277# CONFIG_NF_CT_NETLINK is not set
278# CONFIG_NETFILTER_XTABLES is not set
279
280#
281# IP: Netfilter Configuration
282#
283# CONFIG_NF_CONNTRACK_IPV4 is not set
284# CONFIG_IP_NF_QUEUE is not set
285# CONFIG_IP_NF_IPTABLES is not set
286# CONFIG_IP_NF_ARPTABLES is not set
287
288#
289# IPv6: Netfilter Configuration (EXPERIMENTAL)
290#
291# CONFIG_NF_CONNTRACK_IPV6 is not set
292# CONFIG_IP6_NF_QUEUE is not set
293# CONFIG_IP6_NF_IPTABLES is not set
247# CONFIG_IP_DCCP is not set 294# CONFIG_IP_DCCP is not set
248CONFIG_IP_SCTP=m 295CONFIG_IP_SCTP=m
249# CONFIG_SCTP_DBG_MSG is not set 296# CONFIG_SCTP_DBG_MSG is not set
@@ -263,12 +310,7 @@ CONFIG_SCTP_HMAC_MD5=y
263# CONFIG_LAPB is not set 310# CONFIG_LAPB is not set
264# CONFIG_ECONET is not set 311# CONFIG_ECONET is not set
265# CONFIG_WAN_ROUTER is not set 312# CONFIG_WAN_ROUTER is not set
266
267#
268# QoS and/or fair queueing
269#
270CONFIG_NET_SCHED=y 313CONFIG_NET_SCHED=y
271CONFIG_NET_SCH_FIFO=y
272 314
273# 315#
274# Queueing/Scheduling 316# Queueing/Scheduling
@@ -306,10 +348,12 @@ CONFIG_NET_CLS_ACT=y
306CONFIG_NET_ACT_POLICE=y 348CONFIG_NET_ACT_POLICE=y
307# CONFIG_NET_ACT_GACT is not set 349# CONFIG_NET_ACT_GACT is not set
308# CONFIG_NET_ACT_MIRRED is not set 350# CONFIG_NET_ACT_MIRRED is not set
351CONFIG_NET_ACT_NAT=m
309# CONFIG_NET_ACT_PEDIT is not set 352# CONFIG_NET_ACT_PEDIT is not set
310# CONFIG_NET_ACT_SIMP is not set 353# CONFIG_NET_ACT_SIMP is not set
311CONFIG_NET_CLS_POLICE=y 354CONFIG_NET_CLS_POLICE=y
312# CONFIG_NET_CLS_IND is not set 355# CONFIG_NET_CLS_IND is not set
356CONFIG_NET_SCH_FIFO=y
313 357
314# 358#
315# Network testing 359# Network testing
@@ -329,6 +373,7 @@ CONFIG_CCW=y
329# 373#
330# Generic Driver Options 374# Generic Driver Options
331# 375#
376CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
332CONFIG_STANDALONE=y 377CONFIG_STANDALONE=y
333CONFIG_PREVENT_FIRMWARE_BUILD=y 378CONFIG_PREVENT_FIRMWARE_BUILD=y
334# CONFIG_FW_LOADER is not set 379# CONFIG_FW_LOADER is not set
@@ -400,17 +445,11 @@ CONFIG_SCSI_FC_ATTRS=y
400# CONFIG_SCSI_ISCSI_ATTRS is not set 445# CONFIG_SCSI_ISCSI_ATTRS is not set
401# CONFIG_SCSI_SAS_ATTRS is not set 446# CONFIG_SCSI_SAS_ATTRS is not set
402# CONFIG_SCSI_SAS_LIBSAS is not set 447# CONFIG_SCSI_SAS_LIBSAS is not set
403 448# CONFIG_SCSI_SRP_ATTRS is not set
404# 449CONFIG_SCSI_LOWLEVEL=y
405# SCSI low-level drivers
406#
407# CONFIG_ISCSI_TCP is not set 450# CONFIG_ISCSI_TCP is not set
408# CONFIG_SCSI_DEBUG is not set 451# CONFIG_SCSI_DEBUG is not set
409CONFIG_ZFCP=y 452CONFIG_ZFCP=y
410
411#
412# Multi-device support (RAID and LVM)
413#
414CONFIG_MD=y 453CONFIG_MD=y
415CONFIG_BLK_DEV_MD=y 454CONFIG_BLK_DEV_MD=y
416CONFIG_MD_LINEAR=m 455CONFIG_MD_LINEAR=m
@@ -429,7 +468,9 @@ CONFIG_DM_ZERO=y
429CONFIG_DM_MULTIPATH=y 468CONFIG_DM_MULTIPATH=y
430# CONFIG_DM_MULTIPATH_EMC is not set 469# CONFIG_DM_MULTIPATH_EMC is not set
431# CONFIG_DM_MULTIPATH_RDAC is not set 470# CONFIG_DM_MULTIPATH_RDAC is not set
471# CONFIG_DM_MULTIPATH_HP is not set
432# CONFIG_DM_DELAY is not set 472# CONFIG_DM_DELAY is not set
473# CONFIG_DM_UEVENT is not set
433CONFIG_NETDEVICES=y 474CONFIG_NETDEVICES=y
434# CONFIG_NETDEVICES_MULTIQUEUE is not set 475# CONFIG_NETDEVICES_MULTIQUEUE is not set
435# CONFIG_IFB is not set 476# CONFIG_IFB is not set
@@ -438,8 +479,13 @@ CONFIG_BONDING=m
438# CONFIG_MACVLAN is not set 479# CONFIG_MACVLAN is not set
439CONFIG_EQUALIZER=m 480CONFIG_EQUALIZER=m
440CONFIG_TUN=m 481CONFIG_TUN=m
482CONFIG_VETH=m
441CONFIG_NET_ETHERNET=y 483CONFIG_NET_ETHERNET=y
442# CONFIG_MII is not set 484# CONFIG_MII is not set
485# CONFIG_IBM_NEW_EMAC_ZMII is not set
486# CONFIG_IBM_NEW_EMAC_RGMII is not set
487# CONFIG_IBM_NEW_EMAC_TAH is not set
488# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
443CONFIG_NETDEV_1000=y 489CONFIG_NETDEV_1000=y
444CONFIG_NETDEV_10000=y 490CONFIG_NETDEV_10000=y
445# CONFIG_TR is not set 491# CONFIG_TR is not set
@@ -473,7 +519,6 @@ CONFIG_CCWGROUP=y
473CONFIG_UNIX98_PTYS=y 519CONFIG_UNIX98_PTYS=y
474CONFIG_LEGACY_PTYS=y 520CONFIG_LEGACY_PTYS=y
475CONFIG_LEGACY_PTY_COUNT=256 521CONFIG_LEGACY_PTY_COUNT=256
476# CONFIG_WATCHDOG is not set
477CONFIG_HW_RANDOM=m 522CONFIG_HW_RANDOM=m
478# CONFIG_R3964 is not set 523# CONFIG_R3964 is not set
479CONFIG_RAW_DRIVER=m 524CONFIG_RAW_DRIVER=m
@@ -490,7 +535,6 @@ CONFIG_TN3270_CONSOLE=y
490CONFIG_TN3215=y 535CONFIG_TN3215=y
491CONFIG_TN3215_CONSOLE=y 536CONFIG_TN3215_CONSOLE=y
492CONFIG_CCW_CONSOLE=y 537CONFIG_CCW_CONSOLE=y
493CONFIG_SCLP=y
494CONFIG_SCLP_TTY=y 538CONFIG_SCLP_TTY=y
495CONFIG_SCLP_CONSOLE=y 539CONFIG_SCLP_CONSOLE=y
496CONFIG_SCLP_VT220_TTY=y 540CONFIG_SCLP_VT220_TTY=y
@@ -514,6 +558,11 @@ CONFIG_S390_TAPE_34XX=m
514CONFIG_MONWRITER=m 558CONFIG_MONWRITER=m
515CONFIG_S390_VMUR=m 559CONFIG_S390_VMUR=m
516# CONFIG_POWER_SUPPLY is not set 560# CONFIG_POWER_SUPPLY is not set
561# CONFIG_WATCHDOG is not set
562
563#
564# Sonics Silicon Backplane
565#
517 566
518# 567#
519# File systems 568# File systems
@@ -569,7 +618,6 @@ CONFIG_SYSFS=y
569CONFIG_TMPFS=y 618CONFIG_TMPFS=y
570CONFIG_TMPFS_POSIX_ACL=y 619CONFIG_TMPFS_POSIX_ACL=y
571# CONFIG_HUGETLB_PAGE is not set 620# CONFIG_HUGETLB_PAGE is not set
572CONFIG_RAMFS=y
573CONFIG_CONFIGFS_FS=m 621CONFIG_CONFIGFS_FS=m
574 622
575# 623#
@@ -588,10 +636,7 @@ CONFIG_CONFIGFS_FS=m
588# CONFIG_QNX4FS_FS is not set 636# CONFIG_QNX4FS_FS is not set
589# CONFIG_SYSV_FS is not set 637# CONFIG_SYSV_FS is not set
590# CONFIG_UFS_FS is not set 638# CONFIG_UFS_FS is not set
591 639CONFIG_NETWORK_FILESYSTEMS=y
592#
593# Network File Systems
594#
595CONFIG_NFS_FS=y 640CONFIG_NFS_FS=y
596CONFIG_NFS_V3=y 641CONFIG_NFS_V3=y
597# CONFIG_NFS_V3_ACL is not set 642# CONFIG_NFS_V3_ACL is not set
@@ -638,27 +683,13 @@ CONFIG_MSDOS_PARTITION=y
638# CONFIG_KARMA_PARTITION is not set 683# CONFIG_KARMA_PARTITION is not set
639# CONFIG_EFI_PARTITION is not set 684# CONFIG_EFI_PARTITION is not set
640# CONFIG_SYSV68_PARTITION is not set 685# CONFIG_SYSV68_PARTITION is not set
641
642#
643# Native Language Support
644#
645# CONFIG_NLS is not set 686# CONFIG_NLS is not set
646
647#
648# Distributed Lock Manager
649#
650CONFIG_DLM=m 687CONFIG_DLM=m
651# CONFIG_DLM_DEBUG is not set 688# CONFIG_DLM_DEBUG is not set
652 689CONFIG_INSTRUMENTATION=y
653#
654# Instrumentation Support
655#
656
657#
658# Profiling support
659#
660# CONFIG_PROFILING is not set 690# CONFIG_PROFILING is not set
661CONFIG_KPROBES=y 691CONFIG_KPROBES=y
692# CONFIG_MARKERS is not set
662 693
663# 694#
664# Kernel hacking 695# Kernel hacking
@@ -682,6 +713,7 @@ CONFIG_DEBUG_SPINLOCK=y
682CONFIG_DEBUG_MUTEXES=y 713CONFIG_DEBUG_MUTEXES=y
683# CONFIG_DEBUG_LOCK_ALLOC is not set 714# CONFIG_DEBUG_LOCK_ALLOC is not set
684# CONFIG_PROVE_LOCKING is not set 715# CONFIG_PROVE_LOCKING is not set
716# CONFIG_LOCK_STAT is not set
685CONFIG_DEBUG_SPINLOCK_SLEEP=y 717CONFIG_DEBUG_SPINLOCK_SLEEP=y
686# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set 718# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
687# CONFIG_DEBUG_KOBJECT is not set 719# CONFIG_DEBUG_KOBJECT is not set
@@ -694,14 +726,17 @@ CONFIG_FORCED_INLINING=y
694# CONFIG_RCU_TORTURE_TEST is not set 726# CONFIG_RCU_TORTURE_TEST is not set
695# CONFIG_LKDTM is not set 727# CONFIG_LKDTM is not set
696# CONFIG_FAULT_INJECTION is not set 728# CONFIG_FAULT_INJECTION is not set
729CONFIG_SAMPLES=y
697 730
698# 731#
699# Security options 732# Security options
700# 733#
701# CONFIG_KEYS is not set 734# CONFIG_KEYS is not set
702# CONFIG_SECURITY is not set 735# CONFIG_SECURITY is not set
736# CONFIG_SECURITY_FILE_CAPABILITIES is not set
703CONFIG_CRYPTO=y 737CONFIG_CRYPTO=y
704CONFIG_CRYPTO_ALGAPI=y 738CONFIG_CRYPTO_ALGAPI=y
739CONFIG_CRYPTO_AEAD=m
705CONFIG_CRYPTO_BLKCIPHER=y 740CONFIG_CRYPTO_BLKCIPHER=y
706CONFIG_CRYPTO_HASH=m 741CONFIG_CRYPTO_HASH=m
707CONFIG_CRYPTO_MANAGER=y 742CONFIG_CRYPTO_MANAGER=y
@@ -720,6 +755,7 @@ CONFIG_CRYPTO_ECB=m
720CONFIG_CRYPTO_CBC=y 755CONFIG_CRYPTO_CBC=y
721CONFIG_CRYPTO_PCBC=m 756CONFIG_CRYPTO_PCBC=m
722# CONFIG_CRYPTO_LRW is not set 757# CONFIG_CRYPTO_LRW is not set
758# CONFIG_CRYPTO_XTS is not set
723# CONFIG_CRYPTO_CRYPTD is not set 759# CONFIG_CRYPTO_CRYPTD is not set
724# CONFIG_CRYPTO_DES is not set 760# CONFIG_CRYPTO_DES is not set
725CONFIG_CRYPTO_FCRYPT=m 761CONFIG_CRYPTO_FCRYPT=m
@@ -733,11 +769,13 @@ CONFIG_CRYPTO_FCRYPT=m
733# CONFIG_CRYPTO_ARC4 is not set 769# CONFIG_CRYPTO_ARC4 is not set
734# CONFIG_CRYPTO_KHAZAD is not set 770# CONFIG_CRYPTO_KHAZAD is not set
735# CONFIG_CRYPTO_ANUBIS is not set 771# CONFIG_CRYPTO_ANUBIS is not set
772CONFIG_CRYPTO_SEED=m
736# CONFIG_CRYPTO_DEFLATE is not set 773# CONFIG_CRYPTO_DEFLATE is not set
737# CONFIG_CRYPTO_MICHAEL_MIC is not set 774# CONFIG_CRYPTO_MICHAEL_MIC is not set
738# CONFIG_CRYPTO_CRC32C is not set 775# CONFIG_CRYPTO_CRC32C is not set
739CONFIG_CRYPTO_CAMELLIA=m 776CONFIG_CRYPTO_CAMELLIA=m
740# CONFIG_CRYPTO_TEST is not set 777# CONFIG_CRYPTO_TEST is not set
778CONFIG_CRYPTO_AUTHENC=m
741CONFIG_CRYPTO_HW=y 779CONFIG_CRYPTO_HW=y
742# CONFIG_CRYPTO_SHA1_S390 is not set 780# CONFIG_CRYPTO_SHA1_S390 is not set
743# CONFIG_CRYPTO_SHA256_S390 is not set 781# CONFIG_CRYPTO_SHA256_S390 is not set
@@ -755,5 +793,6 @@ CONFIG_BITREVERSE=m
755# CONFIG_CRC16 is not set 793# CONFIG_CRC16 is not set
756# CONFIG_CRC_ITU_T is not set 794# CONFIG_CRC_ITU_T is not set
757CONFIG_CRC32=m 795CONFIG_CRC32=m
796CONFIG_CRC7=m
758# CONFIG_LIBCRC32C is not set 797# CONFIG_LIBCRC32C is not set
759CONFIG_PLIST=y 798CONFIG_PLIST=y
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index 66b51901c87d..ce0856d32500 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -648,6 +648,8 @@ static int dump_set_type(enum dump_type type)
648 case DUMP_TYPE_CCW: 648 case DUMP_TYPE_CCW:
649 if (MACHINE_IS_VM) 649 if (MACHINE_IS_VM)
650 dump_method = DUMP_METHOD_CCW_VM; 650 dump_method = DUMP_METHOD_CCW_VM;
651 else if (diag308_set_works)
652 dump_method = DUMP_METHOD_CCW_DIAG;
651 else 653 else
652 dump_method = DUMP_METHOD_CCW_CIO; 654 dump_method = DUMP_METHOD_CCW_CIO;
653 break; 655 break;
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c
index 70c57378f426..96492cf2d491 100644
--- a/arch/s390/kernel/process.c
+++ b/arch/s390/kernel/process.c
@@ -44,6 +44,7 @@
44#include <asm/processor.h> 44#include <asm/processor.h>
45#include <asm/irq.h> 45#include <asm/irq.h>
46#include <asm/timer.h> 46#include <asm/timer.h>
47#include <asm/cpu.h>
47 48
48asmlinkage void ret_from_fork(void) asm ("ret_from_fork"); 49asmlinkage void ret_from_fork(void) asm ("ret_from_fork");
49 50
@@ -91,6 +92,14 @@ EXPORT_SYMBOL(unregister_idle_notifier);
91 92
92void do_monitor_call(struct pt_regs *regs, long interruption_code) 93void do_monitor_call(struct pt_regs *regs, long interruption_code)
93{ 94{
95 struct s390_idle_data *idle;
96
97 idle = &__get_cpu_var(s390_idle);
98 spin_lock(&idle->lock);
99 idle->idle_time += get_clock() - idle->idle_enter;
100 idle->in_idle = 0;
101 spin_unlock(&idle->lock);
102
94 /* disable monitor call class 0 */ 103 /* disable monitor call class 0 */
95 __ctl_clear_bit(8, 15); 104 __ctl_clear_bit(8, 15);
96 105
@@ -105,6 +114,7 @@ extern void s390_handle_mcck(void);
105static void default_idle(void) 114static void default_idle(void)
106{ 115{
107 int cpu, rc; 116 int cpu, rc;
117 struct s390_idle_data *idle;
108 118
109 /* CPU is going idle. */ 119 /* CPU is going idle. */
110 cpu = smp_processor_id(); 120 cpu = smp_processor_id();
@@ -142,6 +152,12 @@ static void default_idle(void)
142 return; 152 return;
143 } 153 }
144 154
155 idle = &__get_cpu_var(s390_idle);
156 spin_lock(&idle->lock);
157 idle->idle_count++;
158 idle->in_idle = 1;
159 idle->idle_enter = get_clock();
160 spin_unlock(&idle->lock);
145 trace_hardirqs_on(); 161 trace_hardirqs_on();
146 /* Wait for external, I/O or machine check interrupt. */ 162 /* Wait for external, I/O or machine check interrupt. */
147 __load_psw_mask(psw_kernel_bits | PSW_MASK_WAIT | 163 __load_psw_mask(psw_kernel_bits | PSW_MASK_WAIT |
@@ -254,14 +270,12 @@ int copy_thread(int nr, unsigned long clone_flags, unsigned long new_stackp,
254 save_fp_regs(&current->thread.fp_regs); 270 save_fp_regs(&current->thread.fp_regs);
255 memcpy(&p->thread.fp_regs, &current->thread.fp_regs, 271 memcpy(&p->thread.fp_regs, &current->thread.fp_regs,
256 sizeof(s390_fp_regs)); 272 sizeof(s390_fp_regs));
257 p->thread.user_seg = __pa((unsigned long) p->mm->pgd) | _SEGMENT_TABLE;
258 /* Set a new TLS ? */ 273 /* Set a new TLS ? */
259 if (clone_flags & CLONE_SETTLS) 274 if (clone_flags & CLONE_SETTLS)
260 p->thread.acrs[0] = regs->gprs[6]; 275 p->thread.acrs[0] = regs->gprs[6];
261#else /* CONFIG_64BIT */ 276#else /* CONFIG_64BIT */
262 /* Save the fpu registers to new thread structure. */ 277 /* Save the fpu registers to new thread structure. */
263 save_fp_regs(&p->thread.fp_regs); 278 save_fp_regs(&p->thread.fp_regs);
264 p->thread.user_seg = __pa((unsigned long) p->mm->pgd) | _REGION_TABLE;
265 /* Set a new TLS ? */ 279 /* Set a new TLS ? */
266 if (clone_flags & CLONE_SETTLS) { 280 if (clone_flags & CLONE_SETTLS) {
267 if (test_thread_flag(TIF_31BIT)) { 281 if (test_thread_flag(TIF_31BIT)) {
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 35edbef1d222..1d97fe1c0e53 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -42,6 +42,7 @@
42#include <asm/tlbflush.h> 42#include <asm/tlbflush.h>
43#include <asm/timer.h> 43#include <asm/timer.h>
44#include <asm/lowcore.h> 44#include <asm/lowcore.h>
45#include <asm/cpu.h>
45 46
46/* 47/*
47 * An array with a pointer the lowcore of every CPU. 48 * An array with a pointer the lowcore of every CPU.
@@ -325,7 +326,7 @@ static void smp_ext_bitcall(int cpu, ec_bit_sig sig)
325 */ 326 */
326void smp_ptlb_callback(void *info) 327void smp_ptlb_callback(void *info)
327{ 328{
328 local_flush_tlb(); 329 __tlb_flush_local();
329} 330}
330 331
331void smp_ptlb_all(void) 332void smp_ptlb_all(void)
@@ -494,6 +495,8 @@ int __cpuinit start_secondary(void *cpuvoid)
494 return 0; 495 return 0;
495} 496}
496 497
498DEFINE_PER_CPU(struct s390_idle_data, s390_idle);
499
497static void __init smp_create_idle(unsigned int cpu) 500static void __init smp_create_idle(unsigned int cpu)
498{ 501{
499 struct task_struct *p; 502 struct task_struct *p;
@@ -506,6 +509,7 @@ static void __init smp_create_idle(unsigned int cpu)
506 if (IS_ERR(p)) 509 if (IS_ERR(p))
507 panic("failed fork for CPU %u: %li", cpu, PTR_ERR(p)); 510 panic("failed fork for CPU %u: %li", cpu, PTR_ERR(p));
508 current_set[cpu] = p; 511 current_set[cpu] = p;
512 spin_lock_init(&(&per_cpu(s390_idle, cpu))->lock);
509} 513}
510 514
511static int cpu_stopped(int cpu) 515static int cpu_stopped(int cpu)
@@ -724,6 +728,7 @@ void __init smp_prepare_boot_cpu(void)
724 cpu_set(0, cpu_online_map); 728 cpu_set(0, cpu_online_map);
725 S390_lowcore.percpu_offset = __per_cpu_offset[0]; 729 S390_lowcore.percpu_offset = __per_cpu_offset[0];
726 current_set[0] = current; 730 current_set[0] = current;
731 spin_lock_init(&(&__get_cpu_var(s390_idle))->lock);
727} 732}
728 733
729void __init smp_cpus_done(unsigned int max_cpus) 734void __init smp_cpus_done(unsigned int max_cpus)
@@ -756,22 +761,71 @@ static ssize_t show_capability(struct sys_device *dev, char *buf)
756} 761}
757static SYSDEV_ATTR(capability, 0444, show_capability, NULL); 762static SYSDEV_ATTR(capability, 0444, show_capability, NULL);
758 763
764static ssize_t show_idle_count(struct sys_device *dev, char *buf)
765{
766 struct s390_idle_data *idle;
767 unsigned long long idle_count;
768
769 idle = &per_cpu(s390_idle, dev->id);
770 spin_lock_irq(&idle->lock);
771 idle_count = idle->idle_count;
772 spin_unlock_irq(&idle->lock);
773 return sprintf(buf, "%llu\n", idle_count);
774}
775static SYSDEV_ATTR(idle_count, 0444, show_idle_count, NULL);
776
777static ssize_t show_idle_time(struct sys_device *dev, char *buf)
778{
779 struct s390_idle_data *idle;
780 unsigned long long new_time;
781
782 idle = &per_cpu(s390_idle, dev->id);
783 spin_lock_irq(&idle->lock);
784 if (idle->in_idle) {
785 new_time = get_clock();
786 idle->idle_time += new_time - idle->idle_enter;
787 idle->idle_enter = new_time;
788 }
789 new_time = idle->idle_time;
790 spin_unlock_irq(&idle->lock);
791 return sprintf(buf, "%llu us\n", new_time >> 12);
792}
793static SYSDEV_ATTR(idle_time, 0444, show_idle_time, NULL);
794
795static struct attribute *cpu_attrs[] = {
796 &attr_capability.attr,
797 &attr_idle_count.attr,
798 &attr_idle_time.attr,
799 NULL,
800};
801
802static struct attribute_group cpu_attr_group = {
803 .attrs = cpu_attrs,
804};
805
759static int __cpuinit smp_cpu_notify(struct notifier_block *self, 806static int __cpuinit smp_cpu_notify(struct notifier_block *self,
760 unsigned long action, void *hcpu) 807 unsigned long action, void *hcpu)
761{ 808{
762 unsigned int cpu = (unsigned int)(long)hcpu; 809 unsigned int cpu = (unsigned int)(long)hcpu;
763 struct cpu *c = &per_cpu(cpu_devices, cpu); 810 struct cpu *c = &per_cpu(cpu_devices, cpu);
764 struct sys_device *s = &c->sysdev; 811 struct sys_device *s = &c->sysdev;
812 struct s390_idle_data *idle;
765 813
766 switch (action) { 814 switch (action) {
767 case CPU_ONLINE: 815 case CPU_ONLINE:
768 case CPU_ONLINE_FROZEN: 816 case CPU_ONLINE_FROZEN:
769 if (sysdev_create_file(s, &attr_capability)) 817 idle = &per_cpu(s390_idle, cpu);
818 spin_lock_irq(&idle->lock);
819 idle->idle_enter = 0;
820 idle->idle_time = 0;
821 idle->idle_count = 0;
822 spin_unlock_irq(&idle->lock);
823 if (sysfs_create_group(&s->kobj, &cpu_attr_group))
770 return NOTIFY_BAD; 824 return NOTIFY_BAD;
771 break; 825 break;
772 case CPU_DEAD: 826 case CPU_DEAD:
773 case CPU_DEAD_FROZEN: 827 case CPU_DEAD_FROZEN:
774 sysdev_remove_file(s, &attr_capability); 828 sysfs_remove_group(&s->kobj, &cpu_attr_group);
775 break; 829 break;
776 } 830 }
777 return NOTIFY_OK; 831 return NOTIFY_OK;
@@ -784,6 +838,7 @@ static struct notifier_block __cpuinitdata smp_cpu_nb = {
784static int __init topology_init(void) 838static int __init topology_init(void)
785{ 839{
786 int cpu; 840 int cpu;
841 int rc;
787 842
788 register_cpu_notifier(&smp_cpu_nb); 843 register_cpu_notifier(&smp_cpu_nb);
789 844
@@ -796,7 +851,9 @@ static int __init topology_init(void)
796 if (!cpu_online(cpu)) 851 if (!cpu_online(cpu))
797 continue; 852 continue;
798 s = &c->sysdev; 853 s = &c->sysdev;
799 sysdev_create_file(s, &attr_capability); 854 rc = sysfs_create_group(&s->kobj, &cpu_attr_group);
855 if (rc)
856 return rc;
800 } 857 }
801 return 0; 858 return 0;
802} 859}
diff --git a/arch/s390/lib/uaccess_pt.c b/arch/s390/lib/uaccess_pt.c
index b159a9d65680..7e8efaade2ea 100644
--- a/arch/s390/lib/uaccess_pt.c
+++ b/arch/s390/lib/uaccess_pt.c
@@ -15,6 +15,27 @@
15#include <asm/futex.h> 15#include <asm/futex.h>
16#include "uaccess.h" 16#include "uaccess.h"
17 17
18static inline pte_t *follow_table(struct mm_struct *mm, unsigned long addr)
19{
20 pgd_t *pgd;
21 pud_t *pud;
22 pmd_t *pmd;
23
24 pgd = pgd_offset(mm, addr);
25 if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd)))
26 return NULL;
27
28 pud = pud_offset(pgd, addr);
29 if (pud_none(*pud) || unlikely(pud_bad(*pud)))
30 return NULL;
31
32 pmd = pmd_offset(pud, addr);
33 if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd)))
34 return NULL;
35
36 return pte_offset_map(pmd, addr);
37}
38
18static int __handle_fault(struct mm_struct *mm, unsigned long address, 39static int __handle_fault(struct mm_struct *mm, unsigned long address,
19 int write_access) 40 int write_access)
20{ 41{
@@ -85,8 +106,6 @@ static size_t __user_copy_pt(unsigned long uaddr, void *kptr,
85{ 106{
86 struct mm_struct *mm = current->mm; 107 struct mm_struct *mm = current->mm;
87 unsigned long offset, pfn, done, size; 108 unsigned long offset, pfn, done, size;
88 pgd_t *pgd;
89 pmd_t *pmd;
90 pte_t *pte; 109 pte_t *pte;
91 void *from, *to; 110 void *from, *to;
92 111
@@ -94,15 +113,7 @@ static size_t __user_copy_pt(unsigned long uaddr, void *kptr,
94retry: 113retry:
95 spin_lock(&mm->page_table_lock); 114 spin_lock(&mm->page_table_lock);
96 do { 115 do {
97 pgd = pgd_offset(mm, uaddr); 116 pte = follow_table(mm, uaddr);
98 if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd)))
99 goto fault;
100
101 pmd = pmd_offset(pgd, uaddr);
102 if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd)))
103 goto fault;
104
105 pte = pte_offset_map(pmd, uaddr);
106 if (!pte || !pte_present(*pte) || 117 if (!pte || !pte_present(*pte) ||
107 (write_user && !pte_write(*pte))) 118 (write_user && !pte_write(*pte)))
108 goto fault; 119 goto fault;
@@ -142,22 +153,12 @@ static unsigned long __dat_user_addr(unsigned long uaddr)
142{ 153{
143 struct mm_struct *mm = current->mm; 154 struct mm_struct *mm = current->mm;
144 unsigned long pfn, ret; 155 unsigned long pfn, ret;
145 pgd_t *pgd;
146 pmd_t *pmd;
147 pte_t *pte; 156 pte_t *pte;
148 int rc; 157 int rc;
149 158
150 ret = 0; 159 ret = 0;
151retry: 160retry:
152 pgd = pgd_offset(mm, uaddr); 161 pte = follow_table(mm, uaddr);
153 if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd)))
154 goto fault;
155
156 pmd = pmd_offset(pgd, uaddr);
157 if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd)))
158 goto fault;
159
160 pte = pte_offset_map(pmd, uaddr);
161 if (!pte || !pte_present(*pte)) 162 if (!pte || !pte_present(*pte))
162 goto fault; 163 goto fault;
163 164
@@ -229,8 +230,6 @@ static size_t strnlen_user_pt(size_t count, const char __user *src)
229 unsigned long uaddr = (unsigned long) src; 230 unsigned long uaddr = (unsigned long) src;
230 struct mm_struct *mm = current->mm; 231 struct mm_struct *mm = current->mm;
231 unsigned long offset, pfn, done, len; 232 unsigned long offset, pfn, done, len;
232 pgd_t *pgd;
233 pmd_t *pmd;
234 pte_t *pte; 233 pte_t *pte;
235 size_t len_str; 234 size_t len_str;
236 235
@@ -240,15 +239,7 @@ static size_t strnlen_user_pt(size_t count, const char __user *src)
240retry: 239retry:
241 spin_lock(&mm->page_table_lock); 240 spin_lock(&mm->page_table_lock);
242 do { 241 do {
243 pgd = pgd_offset(mm, uaddr); 242 pte = follow_table(mm, uaddr);
244 if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd)))
245 goto fault;
246
247 pmd = pmd_offset(pgd, uaddr);
248 if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd)))
249 goto fault;
250
251 pte = pte_offset_map(pmd, uaddr);
252 if (!pte || !pte_present(*pte)) 243 if (!pte || !pte_present(*pte))
253 goto fault; 244 goto fault;
254 245
@@ -308,8 +299,6 @@ static size_t copy_in_user_pt(size_t n, void __user *to,
308 uaddr, done, size; 299 uaddr, done, size;
309 unsigned long uaddr_from = (unsigned long) from; 300 unsigned long uaddr_from = (unsigned long) from;
310 unsigned long uaddr_to = (unsigned long) to; 301 unsigned long uaddr_to = (unsigned long) to;
311 pgd_t *pgd_from, *pgd_to;
312 pmd_t *pmd_from, *pmd_to;
313 pte_t *pte_from, *pte_to; 302 pte_t *pte_from, *pte_to;
314 int write_user; 303 int write_user;
315 304
@@ -317,39 +306,14 @@ static size_t copy_in_user_pt(size_t n, void __user *to,
317retry: 306retry:
318 spin_lock(&mm->page_table_lock); 307 spin_lock(&mm->page_table_lock);
319 do { 308 do {
320 pgd_from = pgd_offset(mm, uaddr_from); 309 pte_from = follow_table(mm, uaddr_from);
321 if (pgd_none(*pgd_from) || unlikely(pgd_bad(*pgd_from))) {
322 uaddr = uaddr_from;
323 write_user = 0;
324 goto fault;
325 }
326 pgd_to = pgd_offset(mm, uaddr_to);
327 if (pgd_none(*pgd_to) || unlikely(pgd_bad(*pgd_to))) {
328 uaddr = uaddr_to;
329 write_user = 1;
330 goto fault;
331 }
332
333 pmd_from = pmd_offset(pgd_from, uaddr_from);
334 if (pmd_none(*pmd_from) || unlikely(pmd_bad(*pmd_from))) {
335 uaddr = uaddr_from;
336 write_user = 0;
337 goto fault;
338 }
339 pmd_to = pmd_offset(pgd_to, uaddr_to);
340 if (pmd_none(*pmd_to) || unlikely(pmd_bad(*pmd_to))) {
341 uaddr = uaddr_to;
342 write_user = 1;
343 goto fault;
344 }
345
346 pte_from = pte_offset_map(pmd_from, uaddr_from);
347 if (!pte_from || !pte_present(*pte_from)) { 310 if (!pte_from || !pte_present(*pte_from)) {
348 uaddr = uaddr_from; 311 uaddr = uaddr_from;
349 write_user = 0; 312 write_user = 0;
350 goto fault; 313 goto fault;
351 } 314 }
352 pte_to = pte_offset_map(pmd_to, uaddr_to); 315
316 pte_to = follow_table(mm, uaddr_to);
353 if (!pte_to || !pte_present(*pte_to) || !pte_write(*pte_to)) { 317 if (!pte_to || !pte_present(*pte_to) || !pte_write(*pte_to)) {
354 uaddr = uaddr_to; 318 uaddr = uaddr_to;
355 write_user = 1; 319 write_user = 1;
diff --git a/arch/s390/mm/Makefile b/arch/s390/mm/Makefile
index f95449b29fa5..66401930f83e 100644
--- a/arch/s390/mm/Makefile
+++ b/arch/s390/mm/Makefile
@@ -2,6 +2,6 @@
2# Makefile for the linux s390-specific parts of the memory manager. 2# Makefile for the linux s390-specific parts of the memory manager.
3# 3#
4 4
5obj-y := init.o fault.o extmem.o mmap.o vmem.o 5obj-y := init.o fault.o extmem.o mmap.o vmem.o pgtable.o
6obj-$(CONFIG_CMM) += cmm.o 6obj-$(CONFIG_CMM) += cmm.o
7 7
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index 3a25bbf2eb0a..b234bb4a6da7 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -81,6 +81,7 @@ void show_mem(void)
81static void __init setup_ro_region(void) 81static void __init setup_ro_region(void)
82{ 82{
83 pgd_t *pgd; 83 pgd_t *pgd;
84 pud_t *pud;
84 pmd_t *pmd; 85 pmd_t *pmd;
85 pte_t *pte; 86 pte_t *pte;
86 pte_t new_pte; 87 pte_t new_pte;
@@ -91,7 +92,8 @@ static void __init setup_ro_region(void)
91 92
92 for (; address < end; address += PAGE_SIZE) { 93 for (; address < end; address += PAGE_SIZE) {
93 pgd = pgd_offset_k(address); 94 pgd = pgd_offset_k(address);
94 pmd = pmd_offset(pgd, address); 95 pud = pud_offset(pgd, address);
96 pmd = pmd_offset(pud, address);
95 pte = pte_offset_kernel(pmd, address); 97 pte = pte_offset_kernel(pmd, address);
96 new_pte = mk_pte_phys(address, __pgprot(_PAGE_RO)); 98 new_pte = mk_pte_phys(address, __pgprot(_PAGE_RO));
97 *pte = new_pte; 99 *pte = new_pte;
@@ -103,32 +105,28 @@ static void __init setup_ro_region(void)
103 */ 105 */
104void __init paging_init(void) 106void __init paging_init(void)
105{ 107{
106 pgd_t *pg_dir;
107 int i;
108 unsigned long pgdir_k;
109 static const int ssm_mask = 0x04000000L; 108 static const int ssm_mask = 0x04000000L;
110 unsigned long max_zone_pfns[MAX_NR_ZONES]; 109 unsigned long max_zone_pfns[MAX_NR_ZONES];
110 unsigned long pgd_type;
111 111
112 pg_dir = swapper_pg_dir; 112 init_mm.pgd = swapper_pg_dir;
113 113 S390_lowcore.kernel_asce = __pa(init_mm.pgd) & PAGE_MASK;
114#ifdef CONFIG_64BIT 114#ifdef CONFIG_64BIT
115 pgdir_k = (__pa(swapper_pg_dir) & PAGE_MASK) | _KERN_REGION_TABLE; 115 S390_lowcore.kernel_asce |= _ASCE_TYPE_REGION3 | _ASCE_TABLE_LENGTH;
116 for (i = 0; i < PTRS_PER_PGD; i++) 116 pgd_type = _REGION3_ENTRY_EMPTY;
117 pgd_clear_kernel(pg_dir + i);
118#else 117#else
119 pgdir_k = (__pa(swapper_pg_dir) & PAGE_MASK) | _KERNSEG_TABLE; 118 S390_lowcore.kernel_asce |= _ASCE_TABLE_LENGTH;
120 for (i = 0; i < PTRS_PER_PGD; i++) 119 pgd_type = _SEGMENT_ENTRY_EMPTY;
121 pmd_clear_kernel((pmd_t *)(pg_dir + i));
122#endif 120#endif
121 clear_table((unsigned long *) init_mm.pgd, pgd_type,
122 sizeof(unsigned long)*2048);
123 vmem_map_init(); 123 vmem_map_init();
124 setup_ro_region(); 124 setup_ro_region();
125 125
126 S390_lowcore.kernel_asce = pgdir_k;
127
128 /* enable virtual mapping in kernel mode */ 126 /* enable virtual mapping in kernel mode */
129 __ctl_load(pgdir_k, 1, 1); 127 __ctl_load(S390_lowcore.kernel_asce, 1, 1);
130 __ctl_load(pgdir_k, 7, 7); 128 __ctl_load(S390_lowcore.kernel_asce, 7, 7);
131 __ctl_load(pgdir_k, 13, 13); 129 __ctl_load(S390_lowcore.kernel_asce, 13, 13);
132 __raw_local_irq_ssm(ssm_mask); 130 __raw_local_irq_ssm(ssm_mask);
133 131
134 memset(max_zone_pfns, 0, sizeof(max_zone_pfns)); 132 memset(max_zone_pfns, 0, sizeof(max_zone_pfns));
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
new file mode 100644
index 000000000000..e60e0ae13402
--- /dev/null
+++ b/arch/s390/mm/pgtable.c
@@ -0,0 +1,94 @@
1/*
2 * arch/s390/mm/pgtable.c
3 *
4 * Copyright IBM Corp. 2007
5 * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com>
6 */
7
8#include <linux/sched.h>
9#include <linux/kernel.h>
10#include <linux/errno.h>
11#include <linux/mm.h>
12#include <linux/swap.h>
13#include <linux/smp.h>
14#include <linux/highmem.h>
15#include <linux/slab.h>
16#include <linux/pagemap.h>
17#include <linux/spinlock.h>
18#include <linux/module.h>
19#include <linux/quicklist.h>
20
21#include <asm/system.h>
22#include <asm/pgtable.h>
23#include <asm/pgalloc.h>
24#include <asm/tlb.h>
25#include <asm/tlbflush.h>
26
27#ifndef CONFIG_64BIT
28#define ALLOC_ORDER 1
29#else
30#define ALLOC_ORDER 2
31#endif
32
33unsigned long *crst_table_alloc(struct mm_struct *mm, int noexec)
34{
35 struct page *page = alloc_pages(GFP_KERNEL, ALLOC_ORDER);
36
37 if (!page)
38 return NULL;
39 page->index = 0;
40 if (noexec) {
41 struct page *shadow = alloc_pages(GFP_KERNEL, ALLOC_ORDER);
42 if (!shadow) {
43 __free_pages(page, ALLOC_ORDER);
44 return NULL;
45 }
46 page->index = page_to_phys(shadow);
47 }
48 return (unsigned long *) page_to_phys(page);
49}
50
51void crst_table_free(unsigned long *table)
52{
53 unsigned long *shadow = get_shadow_table(table);
54
55 if (shadow)
56 free_pages((unsigned long) shadow, ALLOC_ORDER);
57 free_pages((unsigned long) table, ALLOC_ORDER);
58}
59
60/*
61 * page table entry allocation/free routines.
62 */
63unsigned long *page_table_alloc(int noexec)
64{
65 struct page *page = alloc_page(GFP_KERNEL);
66 unsigned long *table;
67
68 if (!page)
69 return NULL;
70 page->index = 0;
71 if (noexec) {
72 struct page *shadow = alloc_page(GFP_KERNEL);
73 if (!shadow) {
74 __free_page(page);
75 return NULL;
76 }
77 table = (unsigned long *) page_to_phys(shadow);
78 clear_table(table, _PAGE_TYPE_EMPTY, PAGE_SIZE);
79 page->index = (addr_t) table;
80 }
81 table = (unsigned long *) page_to_phys(page);
82 clear_table(table, _PAGE_TYPE_EMPTY, PAGE_SIZE);
83 return table;
84}
85
86void page_table_free(unsigned long *table)
87{
88 unsigned long *shadow = get_shadow_pte(table);
89
90 if (shadow)
91 free_page((unsigned long) shadow);
92 free_page((unsigned long) table);
93
94}
diff --git a/arch/s390/mm/vmem.c b/arch/s390/mm/vmem.c
index fd594d5fe142..fb9c5a85aa56 100644
--- a/arch/s390/mm/vmem.c
+++ b/arch/s390/mm/vmem.c
@@ -73,31 +73,28 @@ static void __init_refok *vmem_alloc_pages(unsigned int order)
73 return alloc_bootmem_pages((1 << order) * PAGE_SIZE); 73 return alloc_bootmem_pages((1 << order) * PAGE_SIZE);
74} 74}
75 75
76#define vmem_pud_alloc() ({ BUG(); ((pud_t *) NULL); })
77
76static inline pmd_t *vmem_pmd_alloc(void) 78static inline pmd_t *vmem_pmd_alloc(void)
77{ 79{
78 pmd_t *pmd; 80 pmd_t *pmd = NULL;
79 int i;
80 81
81 pmd = vmem_alloc_pages(PMD_ALLOC_ORDER); 82#ifdef CONFIG_64BIT
83 pmd = vmem_alloc_pages(2);
82 if (!pmd) 84 if (!pmd)
83 return NULL; 85 return NULL;
84 for (i = 0; i < PTRS_PER_PMD; i++) 86 clear_table((unsigned long *) pmd, _SEGMENT_ENTRY_EMPTY, PAGE_SIZE*4);
85 pmd_clear_kernel(pmd + i); 87#endif
86 return pmd; 88 return pmd;
87} 89}
88 90
89static inline pte_t *vmem_pte_alloc(void) 91static inline pte_t *vmem_pte_alloc(void)
90{ 92{
91 pte_t *pte; 93 pte_t *pte = vmem_alloc_pages(0);
92 pte_t empty_pte;
93 int i;
94 94
95 pte = vmem_alloc_pages(PTE_ALLOC_ORDER);
96 if (!pte) 95 if (!pte)
97 return NULL; 96 return NULL;
98 pte_val(empty_pte) = _PAGE_TYPE_EMPTY; 97 clear_table((unsigned long *) pte, _PAGE_TYPE_EMPTY, PAGE_SIZE);
99 for (i = 0; i < PTRS_PER_PTE; i++)
100 pte[i] = empty_pte;
101 return pte; 98 return pte;
102} 99}
103 100
@@ -108,6 +105,7 @@ static int vmem_add_range(unsigned long start, unsigned long size)
108{ 105{
109 unsigned long address; 106 unsigned long address;
110 pgd_t *pg_dir; 107 pgd_t *pg_dir;
108 pud_t *pu_dir;
111 pmd_t *pm_dir; 109 pmd_t *pm_dir;
112 pte_t *pt_dir; 110 pte_t *pt_dir;
113 pte_t pte; 111 pte_t pte;
@@ -116,13 +114,21 @@ static int vmem_add_range(unsigned long start, unsigned long size)
116 for (address = start; address < start + size; address += PAGE_SIZE) { 114 for (address = start; address < start + size; address += PAGE_SIZE) {
117 pg_dir = pgd_offset_k(address); 115 pg_dir = pgd_offset_k(address);
118 if (pgd_none(*pg_dir)) { 116 if (pgd_none(*pg_dir)) {
117 pu_dir = vmem_pud_alloc();
118 if (!pu_dir)
119 goto out;
120 pgd_populate_kernel(&init_mm, pg_dir, pu_dir);
121 }
122
123 pu_dir = pud_offset(pg_dir, address);
124 if (pud_none(*pu_dir)) {
119 pm_dir = vmem_pmd_alloc(); 125 pm_dir = vmem_pmd_alloc();
120 if (!pm_dir) 126 if (!pm_dir)
121 goto out; 127 goto out;
122 pgd_populate_kernel(&init_mm, pg_dir, pm_dir); 128 pud_populate_kernel(&init_mm, pu_dir, pm_dir);
123 } 129 }
124 130
125 pm_dir = pmd_offset(pg_dir, address); 131 pm_dir = pmd_offset(pu_dir, address);
126 if (pmd_none(*pm_dir)) { 132 if (pmd_none(*pm_dir)) {
127 pt_dir = vmem_pte_alloc(); 133 pt_dir = vmem_pte_alloc();
128 if (!pt_dir) 134 if (!pt_dir)
@@ -148,6 +154,7 @@ static void vmem_remove_range(unsigned long start, unsigned long size)
148{ 154{
149 unsigned long address; 155 unsigned long address;
150 pgd_t *pg_dir; 156 pgd_t *pg_dir;
157 pud_t *pu_dir;
151 pmd_t *pm_dir; 158 pmd_t *pm_dir;
152 pte_t *pt_dir; 159 pte_t *pt_dir;
153 pte_t pte; 160 pte_t pte;
@@ -155,9 +162,10 @@ static void vmem_remove_range(unsigned long start, unsigned long size)
155 pte_val(pte) = _PAGE_TYPE_EMPTY; 162 pte_val(pte) = _PAGE_TYPE_EMPTY;
156 for (address = start; address < start + size; address += PAGE_SIZE) { 163 for (address = start; address < start + size; address += PAGE_SIZE) {
157 pg_dir = pgd_offset_k(address); 164 pg_dir = pgd_offset_k(address);
158 if (pgd_none(*pg_dir)) 165 pu_dir = pud_offset(pg_dir, address);
166 if (pud_none(*pu_dir))
159 continue; 167 continue;
160 pm_dir = pmd_offset(pg_dir, address); 168 pm_dir = pmd_offset(pu_dir, address);
161 if (pmd_none(*pm_dir)) 169 if (pmd_none(*pm_dir))
162 continue; 170 continue;
163 pt_dir = pte_offset_kernel(pm_dir, address); 171 pt_dir = pte_offset_kernel(pm_dir, address);
@@ -174,6 +182,7 @@ static int vmem_add_mem_map(unsigned long start, unsigned long size)
174 unsigned long address, start_addr, end_addr; 182 unsigned long address, start_addr, end_addr;
175 struct page *map_start, *map_end; 183 struct page *map_start, *map_end;
176 pgd_t *pg_dir; 184 pgd_t *pg_dir;
185 pud_t *pu_dir;
177 pmd_t *pm_dir; 186 pmd_t *pm_dir;
178 pte_t *pt_dir; 187 pte_t *pt_dir;
179 pte_t pte; 188 pte_t pte;
@@ -188,13 +197,21 @@ static int vmem_add_mem_map(unsigned long start, unsigned long size)
188 for (address = start_addr; address < end_addr; address += PAGE_SIZE) { 197 for (address = start_addr; address < end_addr; address += PAGE_SIZE) {
189 pg_dir = pgd_offset_k(address); 198 pg_dir = pgd_offset_k(address);
190 if (pgd_none(*pg_dir)) { 199 if (pgd_none(*pg_dir)) {
200 pu_dir = vmem_pud_alloc();
201 if (!pu_dir)
202 goto out;
203 pgd_populate_kernel(&init_mm, pg_dir, pu_dir);
204 }
205
206 pu_dir = pud_offset(pg_dir, address);
207 if (pud_none(*pu_dir)) {
191 pm_dir = vmem_pmd_alloc(); 208 pm_dir = vmem_pmd_alloc();
192 if (!pm_dir) 209 if (!pm_dir)
193 goto out; 210 goto out;
194 pgd_populate_kernel(&init_mm, pg_dir, pm_dir); 211 pud_populate_kernel(&init_mm, pu_dir, pm_dir);
195 } 212 }
196 213
197 pm_dir = pmd_offset(pg_dir, address); 214 pm_dir = pmd_offset(pu_dir, address);
198 if (pmd_none(*pm_dir)) { 215 if (pmd_none(*pm_dir)) {
199 pt_dir = vmem_pte_alloc(); 216 pt_dir = vmem_pte_alloc();
200 if (!pt_dir) 217 if (!pt_dir)
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c
index 9c3ed88853f3..97aa50d1e4ae 100644
--- a/arch/sparc/kernel/ioport.c
+++ b/arch/sparc/kernel/ioport.c
@@ -727,9 +727,8 @@ int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sgl, int nents,
727 BUG_ON(direction == PCI_DMA_NONE); 727 BUG_ON(direction == PCI_DMA_NONE);
728 /* IIep is write-through, not flushing. */ 728 /* IIep is write-through, not flushing. */
729 for_each_sg(sgl, sg, nents, n) { 729 for_each_sg(sgl, sg, nents, n) {
730 BUG_ON(page_address(sg->page) == NULL); 730 BUG_ON(page_address(sg_page(sg)) == NULL);
731 sg->dvma_address = 731 sg->dvma_address = virt_to_phys(sg_virt(sg));
732 virt_to_phys(page_address(sg->page)) + sg->offset;
733 sg->dvma_length = sg->length; 732 sg->dvma_length = sg->length;
734 } 733 }
735 return nents; 734 return nents;
@@ -748,9 +747,9 @@ void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sgl, int nents,
748 BUG_ON(direction == PCI_DMA_NONE); 747 BUG_ON(direction == PCI_DMA_NONE);
749 if (direction != PCI_DMA_TODEVICE) { 748 if (direction != PCI_DMA_TODEVICE) {
750 for_each_sg(sgl, sg, nents, n) { 749 for_each_sg(sgl, sg, nents, n) {
751 BUG_ON(page_address(sg->page) == NULL); 750 BUG_ON(page_address(sg_page(sg)) == NULL);
752 mmu_inval_dma_area( 751 mmu_inval_dma_area(
753 (unsigned long) page_address(sg->page), 752 (unsigned long) page_address(sg_page(sg)),
754 (sg->length + PAGE_SIZE-1) & PAGE_MASK); 753 (sg->length + PAGE_SIZE-1) & PAGE_MASK);
755 } 754 }
756 } 755 }
@@ -798,9 +797,9 @@ void pci_dma_sync_sg_for_cpu(struct pci_dev *hwdev, struct scatterlist *sgl, int
798 BUG_ON(direction == PCI_DMA_NONE); 797 BUG_ON(direction == PCI_DMA_NONE);
799 if (direction != PCI_DMA_TODEVICE) { 798 if (direction != PCI_DMA_TODEVICE) {
800 for_each_sg(sgl, sg, nents, n) { 799 for_each_sg(sgl, sg, nents, n) {
801 BUG_ON(page_address(sg->page) == NULL); 800 BUG_ON(page_address(sg_page(sg)) == NULL);
802 mmu_inval_dma_area( 801 mmu_inval_dma_area(
803 (unsigned long) page_address(sg->page), 802 (unsigned long) page_address(sg_page(sg)),
804 (sg->length + PAGE_SIZE-1) & PAGE_MASK); 803 (sg->length + PAGE_SIZE-1) & PAGE_MASK);
805 } 804 }
806 } 805 }
@@ -814,9 +813,9 @@ void pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sgl,
814 BUG_ON(direction == PCI_DMA_NONE); 813 BUG_ON(direction == PCI_DMA_NONE);
815 if (direction != PCI_DMA_TODEVICE) { 814 if (direction != PCI_DMA_TODEVICE) {
816 for_each_sg(sgl, sg, nents, n) { 815 for_each_sg(sgl, sg, nents, n) {
817 BUG_ON(page_address(sg->page) == NULL); 816 BUG_ON(page_address(sg_page(sg)) == NULL);
818 mmu_inval_dma_area( 817 mmu_inval_dma_area(
819 (unsigned long) page_address(sg->page), 818 (unsigned long) page_address(sg_page(sg)),
820 (sg->length + PAGE_SIZE-1) & PAGE_MASK); 819 (sg->length + PAGE_SIZE-1) & PAGE_MASK);
821 } 820 }
822 } 821 }
diff --git a/arch/sparc/mm/io-unit.c b/arch/sparc/mm/io-unit.c
index 375b4db63704..1666087c5b80 100644
--- a/arch/sparc/mm/io-unit.c
+++ b/arch/sparc/mm/io-unit.c
@@ -144,7 +144,7 @@ static void iounit_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus
144 spin_lock_irqsave(&iounit->lock, flags); 144 spin_lock_irqsave(&iounit->lock, flags);
145 while (sz != 0) { 145 while (sz != 0) {
146 --sz; 146 --sz;
147 sg->dvma_address = iounit_get_area(iounit, (unsigned long)page_address(sg->page) + sg->offset, sg->length); 147 sg->dvma_address = iounit_get_area(iounit, sg_virt(sg), sg->length);
148 sg->dvma_length = sg->length; 148 sg->dvma_length = sg->length;
149 sg = sg_next(sg); 149 sg = sg_next(sg);
150 } 150 }
diff --git a/arch/sparc/mm/iommu.c b/arch/sparc/mm/iommu.c
index 283656d9f6ea..4b934270f05e 100644
--- a/arch/sparc/mm/iommu.c
+++ b/arch/sparc/mm/iommu.c
@@ -238,7 +238,7 @@ static void iommu_get_scsi_sgl_noflush(struct scatterlist *sg, int sz, struct sb
238 while (sz != 0) { 238 while (sz != 0) {
239 --sz; 239 --sz;
240 n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; 240 n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT;
241 sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; 241 sg->dvma_address = iommu_get_one(sg_page(sg), n, sbus) + sg->offset;
242 sg->dvma_length = (__u32) sg->length; 242 sg->dvma_length = (__u32) sg->length;
243 sg = sg_next(sg); 243 sg = sg_next(sg);
244 } 244 }
@@ -252,7 +252,7 @@ static void iommu_get_scsi_sgl_gflush(struct scatterlist *sg, int sz, struct sbu
252 while (sz != 0) { 252 while (sz != 0) {
253 --sz; 253 --sz;
254 n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT; 254 n = (sg->length + sg->offset + PAGE_SIZE-1) >> PAGE_SHIFT;
255 sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; 255 sg->dvma_address = iommu_get_one(sg_page(sg), n, sbus) + sg->offset;
256 sg->dvma_length = (__u32) sg->length; 256 sg->dvma_length = (__u32) sg->length;
257 sg = sg_next(sg); 257 sg = sg_next(sg);
258 } 258 }
@@ -273,7 +273,7 @@ static void iommu_get_scsi_sgl_pflush(struct scatterlist *sg, int sz, struct sbu
273 * XXX Is this a good assumption? 273 * XXX Is this a good assumption?
274 * XXX What if someone else unmaps it here and races us? 274 * XXX What if someone else unmaps it here and races us?
275 */ 275 */
276 if ((page = (unsigned long) page_address(sg->page)) != 0) { 276 if ((page = (unsigned long) page_address(sg_page(sg))) != 0) {
277 for (i = 0; i < n; i++) { 277 for (i = 0; i < n; i++) {
278 if (page != oldpage) { /* Already flushed? */ 278 if (page != oldpage) { /* Already flushed? */
279 flush_page_for_dma(page); 279 flush_page_for_dma(page);
@@ -283,7 +283,7 @@ static void iommu_get_scsi_sgl_pflush(struct scatterlist *sg, int sz, struct sbu
283 } 283 }
284 } 284 }
285 285
286 sg->dvma_address = iommu_get_one(sg->page, n, sbus) + sg->offset; 286 sg->dvma_address = iommu_get_one(sg_page(sg), n, sbus) + sg->offset;
287 sg->dvma_length = (__u32) sg->length; 287 sg->dvma_length = (__u32) sg->length;
288 sg = sg_next(sg); 288 sg = sg_next(sg);
289 } 289 }
diff --git a/arch/sparc/mm/sun4c.c b/arch/sparc/mm/sun4c.c
index ee6708fc4492..a2cc141291c7 100644
--- a/arch/sparc/mm/sun4c.c
+++ b/arch/sparc/mm/sun4c.c
@@ -1228,7 +1228,7 @@ static void sun4c_get_scsi_sgl(struct scatterlist *sg, int sz, struct sbus_bus *
1228{ 1228{
1229 while (sz != 0) { 1229 while (sz != 0) {
1230 --sz; 1230 --sz;
1231 sg->dvma_address = (__u32)sun4c_lockarea(page_address(sg->page) + sg->offset, sg->length); 1231 sg->dvma_address = (__u32)sun4c_lockarea(sg_virt(sg), sg->length);
1232 sg->dvma_length = sg->length; 1232 sg->dvma_length = sg->length;
1233 sg = sg_next(sg); 1233 sg = sg_next(sg);
1234 } 1234 }
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index c7a74e376985..03c4e5c1b94a 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -72,6 +72,10 @@ config ARCH_NO_VIRT_TO_BUS
72config OF 72config OF
73 def_bool y 73 def_bool y
74 74
75config GENERIC_HARDIRQS_NO__DO_IRQ
76 bool
77 def_bool y
78
75choice 79choice
76 prompt "Kernel page size" 80 prompt "Kernel page size"
77 default SPARC64_PAGE_SIZE_8KB 81 default SPARC64_PAGE_SIZE_8KB
diff --git a/arch/sparc64/Makefile b/arch/sparc64/Makefile
index 6c92a42efe76..01159cb5f16d 100644
--- a/arch/sparc64/Makefile
+++ b/arch/sparc64/Makefile
@@ -18,8 +18,6 @@ NEW_GCC := $(call cc-option-yn, -m64 -mcmodel=medlow)
18NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi) 18NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi)
19UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; ) 19UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; )
20 20
21export NEW_GCC
22
23ifneq ($(NEW_GAS),y) 21ifneq ($(NEW_GAS),y)
24AS = sparc64-linux-as 22AS = sparc64-linux-as
25LD = sparc64-linux-ld 23LD = sparc64-linux-ld
@@ -58,8 +56,6 @@ core-y += arch/sparc64/kernel/ arch/sparc64/mm/
58core-$(CONFIG_SOLARIS_EMUL) += arch/sparc64/solaris/ 56core-$(CONFIG_SOLARIS_EMUL) += arch/sparc64/solaris/
59core-y += arch/sparc64/math-emu/ 57core-y += arch/sparc64/math-emu/
60libs-y += arch/sparc64/prom/ arch/sparc64/lib/ 58libs-y += arch/sparc64/prom/ arch/sparc64/lib/
61
62# FIXME: is drivers- right?
63drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/ 59drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/
64 60
65boot := arch/sparc64/boot 61boot := arch/sparc64/boot
diff --git a/arch/sparc64/defconfig b/arch/sparc64/defconfig
index 1aa2c4048e4b..e023d4b2fef4 100644
--- a/arch/sparc64/defconfig
+++ b/arch/sparc64/defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Linux kernel version: 2.6.23 3# Linux kernel version: 2.6.23
4# Sat Oct 13 21:53:54 2007 4# Sun Oct 21 19:57:44 2007
5# 5#
6CONFIG_SPARC=y 6CONFIG_SPARC=y
7CONFIG_SPARC64=y 7CONFIG_SPARC64=y
@@ -49,6 +49,10 @@ CONFIG_POSIX_MQUEUE=y
49# CONFIG_AUDIT is not set 49# CONFIG_AUDIT is not set
50# CONFIG_IKCONFIG is not set 50# CONFIG_IKCONFIG is not set
51CONFIG_LOG_BUF_SHIFT=18 51CONFIG_LOG_BUF_SHIFT=18
52# CONFIG_CGROUPS is not set
53CONFIG_FAIR_GROUP_SCHED=y
54CONFIG_FAIR_USER_SCHED=y
55# CONFIG_FAIR_CGROUP_SCHED is not set
52CONFIG_SYSFS_DEPRECATED=y 56CONFIG_SYSFS_DEPRECATED=y
53CONFIG_RELAY=y 57CONFIG_RELAY=y
54# CONFIG_BLK_DEV_INITRD is not set 58# CONFIG_BLK_DEV_INITRD is not set
@@ -145,7 +149,10 @@ CONFIG_SELECT_MEMORY_MODEL=y
145CONFIG_SPARSEMEM_MANUAL=y 149CONFIG_SPARSEMEM_MANUAL=y
146CONFIG_SPARSEMEM=y 150CONFIG_SPARSEMEM=y
147CONFIG_HAVE_MEMORY_PRESENT=y 151CONFIG_HAVE_MEMORY_PRESENT=y
148CONFIG_SPARSEMEM_STATIC=y 152# CONFIG_SPARSEMEM_STATIC is not set
153CONFIG_SPARSEMEM_EXTREME=y
154CONFIG_SPARSEMEM_VMEMMAP_ENABLE=y
155CONFIG_SPARSEMEM_VMEMMAP=y
149CONFIG_SPLIT_PTLOCK_CPUS=4 156CONFIG_SPLIT_PTLOCK_CPUS=4
150CONFIG_RESOURCES_64BIT=y 157CONFIG_RESOURCES_64BIT=y
151CONFIG_ZONE_DMA_FLAG=0 158CONFIG_ZONE_DMA_FLAG=0
@@ -275,10 +282,6 @@ CONFIG_VLAN_8021Q=m
275# CONFIG_LAPB is not set 282# CONFIG_LAPB is not set
276# CONFIG_ECONET is not set 283# CONFIG_ECONET is not set
277# CONFIG_WAN_ROUTER is not set 284# CONFIG_WAN_ROUTER is not set
278
279#
280# QoS and/or fair queueing
281#
282# CONFIG_NET_SCHED is not set 285# CONFIG_NET_SCHED is not set
283 286
284# 287#
@@ -372,8 +375,6 @@ CONFIG_IDEPCI_PCIBUS_ORDER=y
372# CONFIG_BLK_DEV_GENERIC is not set 375# CONFIG_BLK_DEV_GENERIC is not set
373# CONFIG_BLK_DEV_OPTI621 is not set 376# CONFIG_BLK_DEV_OPTI621 is not set
374CONFIG_BLK_DEV_IDEDMA_PCI=y 377CONFIG_BLK_DEV_IDEDMA_PCI=y
375# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
376CONFIG_IDEDMA_ONLYDISK=y
377# CONFIG_BLK_DEV_AEC62XX is not set 378# CONFIG_BLK_DEV_AEC62XX is not set
378CONFIG_BLK_DEV_ALI15X3=y 379CONFIG_BLK_DEV_ALI15X3=y
379# CONFIG_WDC_ALI15X3 is not set 380# CONFIG_WDC_ALI15X3 is not set
@@ -401,6 +402,7 @@ CONFIG_BLK_DEV_ALI15X3=y
401# CONFIG_BLK_DEV_TC86C001 is not set 402# CONFIG_BLK_DEV_TC86C001 is not set
402# CONFIG_IDE_ARM is not set 403# CONFIG_IDE_ARM is not set
403CONFIG_BLK_DEV_IDEDMA=y 404CONFIG_BLK_DEV_IDEDMA=y
405CONFIG_IDE_ARCH_OBSOLETE_INIT=y
404# CONFIG_BLK_DEV_HD is not set 406# CONFIG_BLK_DEV_HD is not set
405 407
406# 408#
@@ -441,6 +443,7 @@ CONFIG_SCSI_FC_ATTRS=y
441CONFIG_SCSI_ISCSI_ATTRS=m 443CONFIG_SCSI_ISCSI_ATTRS=m
442# CONFIG_SCSI_SAS_ATTRS is not set 444# CONFIG_SCSI_SAS_ATTRS is not set
443# CONFIG_SCSI_SAS_LIBSAS is not set 445# CONFIG_SCSI_SAS_LIBSAS is not set
446# CONFIG_SCSI_SRP_ATTRS is not set
444CONFIG_SCSI_LOWLEVEL=y 447CONFIG_SCSI_LOWLEVEL=y
445CONFIG_ISCSI_TCP=m 448CONFIG_ISCSI_TCP=m
446# CONFIG_BLK_DEV_3W_XXXX_RAID is not set 449# CONFIG_BLK_DEV_3W_XXXX_RAID is not set
@@ -492,14 +495,8 @@ CONFIG_DM_MIRROR=m
492CONFIG_DM_ZERO=m 495CONFIG_DM_ZERO=m
493# CONFIG_DM_MULTIPATH is not set 496# CONFIG_DM_MULTIPATH is not set
494# CONFIG_DM_DELAY is not set 497# CONFIG_DM_DELAY is not set
495 498# CONFIG_DM_UEVENT is not set
496#
497# Fusion MPT device support
498#
499# CONFIG_FUSION is not set 499# CONFIG_FUSION is not set
500# CONFIG_FUSION_SPI is not set
501# CONFIG_FUSION_FC is not set
502# CONFIG_FUSION_SAS is not set
503 500
504# 501#
505# IEEE 1394 (FireWire) support 502# IEEE 1394 (FireWire) support
@@ -638,7 +635,6 @@ CONFIG_INPUT_MOUSEDEV_PSAUX=y
638CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 635CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
639CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 636CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
640# CONFIG_INPUT_JOYDEV is not set 637# CONFIG_INPUT_JOYDEV is not set
641# CONFIG_INPUT_TSDEV is not set
642CONFIG_INPUT_EVDEV=y 638CONFIG_INPUT_EVDEV=y
643# CONFIG_INPUT_EVBUG is not set 639# CONFIG_INPUT_EVBUG is not set
644 640
@@ -714,11 +710,9 @@ CONFIG_SERIAL_CORE_CONSOLE=y
714CONFIG_UNIX98_PTYS=y 710CONFIG_UNIX98_PTYS=y
715# CONFIG_LEGACY_PTYS is not set 711# CONFIG_LEGACY_PTYS is not set
716# CONFIG_IPMI_HANDLER is not set 712# CONFIG_IPMI_HANDLER is not set
717# CONFIG_WATCHDOG is not set
718# CONFIG_HW_RANDOM is not set 713# CONFIG_HW_RANDOM is not set
719# CONFIG_R3964 is not set 714# CONFIG_R3964 is not set
720# CONFIG_APPLICOM is not set 715# CONFIG_APPLICOM is not set
721# CONFIG_DRM is not set
722# CONFIG_RAW_DRIVER is not set 716# CONFIG_RAW_DRIVER is not set
723# CONFIG_TCG_TPM is not set 717# CONFIG_TCG_TPM is not set
724CONFIG_DEVPORT=y 718CONFIG_DEVPORT=y
@@ -786,8 +780,6 @@ CONFIG_I2C_ALGOBIT=y
786# CONFIG_POWER_SUPPLY is not set 780# CONFIG_POWER_SUPPLY is not set
787CONFIG_HWMON=y 781CONFIG_HWMON=y
788# CONFIG_HWMON_VID is not set 782# CONFIG_HWMON_VID is not set
789# CONFIG_SENSORS_ABITUGURU is not set
790# CONFIG_SENSORS_ABITUGURU3 is not set
791# CONFIG_SENSORS_AD7418 is not set 783# CONFIG_SENSORS_AD7418 is not set
792# CONFIG_SENSORS_ADM1021 is not set 784# CONFIG_SENSORS_ADM1021 is not set
793# CONFIG_SENSORS_ADM1025 is not set 785# CONFIG_SENSORS_ADM1025 is not set
@@ -795,12 +787,12 @@ CONFIG_HWMON=y
795# CONFIG_SENSORS_ADM1029 is not set 787# CONFIG_SENSORS_ADM1029 is not set
796# CONFIG_SENSORS_ADM1031 is not set 788# CONFIG_SENSORS_ADM1031 is not set
797# CONFIG_SENSORS_ADM9240 is not set 789# CONFIG_SENSORS_ADM9240 is not set
798# CONFIG_SENSORS_ASB100 is not set 790# CONFIG_SENSORS_ADT7470 is not set
799# CONFIG_SENSORS_ATXP1 is not set 791# CONFIG_SENSORS_ATXP1 is not set
800# CONFIG_SENSORS_DS1621 is not set 792# CONFIG_SENSORS_DS1621 is not set
801# CONFIG_SENSORS_F71805F is not set 793# CONFIG_SENSORS_F71805F is not set
802# CONFIG_SENSORS_FSCHER is not set 794# CONFIG_SENSORS_F71882FG is not set
803# CONFIG_SENSORS_FSCPOS is not set 795# CONFIG_SENSORS_F75375S is not set
804# CONFIG_SENSORS_GL518SM is not set 796# CONFIG_SENSORS_GL518SM is not set
805# CONFIG_SENSORS_GL520SM is not set 797# CONFIG_SENSORS_GL520SM is not set
806# CONFIG_SENSORS_IT87 is not set 798# CONFIG_SENSORS_IT87 is not set
@@ -836,6 +828,7 @@ CONFIG_HWMON=y
836# CONFIG_SENSORS_W83627HF is not set 828# CONFIG_SENSORS_W83627HF is not set
837# CONFIG_SENSORS_W83627EHF is not set 829# CONFIG_SENSORS_W83627EHF is not set
838# CONFIG_HWMON_DEBUG_CHIP is not set 830# CONFIG_HWMON_DEBUG_CHIP is not set
831# CONFIG_WATCHDOG is not set
839 832
840# 833#
841# Sonics Silicon Backplane 834# Sonics Silicon Backplane
@@ -858,12 +851,7 @@ CONFIG_SSB_POSSIBLE=y
858# 851#
859# Graphics support 852# Graphics support
860# 853#
861# CONFIG_BACKLIGHT_LCD_SUPPORT is not set 854# CONFIG_DRM is not set
862
863#
864# Display device support
865#
866# CONFIG_DISPLAY_SUPPORT is not set
867# CONFIG_VGASTATE is not set 855# CONFIG_VGASTATE is not set
868# CONFIG_VIDEO_OUTPUT_CONTROL is not set 856# CONFIG_VIDEO_OUTPUT_CONTROL is not set
869CONFIG_FB=y 857CONFIG_FB=y
@@ -872,6 +860,7 @@ CONFIG_FB_DDC=y
872CONFIG_FB_CFB_FILLRECT=y 860CONFIG_FB_CFB_FILLRECT=y
873CONFIG_FB_CFB_COPYAREA=y 861CONFIG_FB_CFB_COPYAREA=y
874CONFIG_FB_CFB_IMAGEBLIT=y 862CONFIG_FB_CFB_IMAGEBLIT=y
863# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
875# CONFIG_FB_SYS_FILLRECT is not set 864# CONFIG_FB_SYS_FILLRECT is not set
876# CONFIG_FB_SYS_COPYAREA is not set 865# CONFIG_FB_SYS_COPYAREA is not set
877# CONFIG_FB_SYS_IMAGEBLIT is not set 866# CONFIG_FB_SYS_IMAGEBLIT is not set
@@ -890,6 +879,7 @@ CONFIG_FB_TILEBLITTING=y
890# CONFIG_FB_PM2 is not set 879# CONFIG_FB_PM2 is not set
891# CONFIG_FB_ASILIANT is not set 880# CONFIG_FB_ASILIANT is not set
892# CONFIG_FB_IMSTT is not set 881# CONFIG_FB_IMSTT is not set
882# CONFIG_FB_UVESA is not set
893# CONFIG_FB_SBUS is not set 883# CONFIG_FB_SBUS is not set
894# CONFIG_FB_XVR500 is not set 884# CONFIG_FB_XVR500 is not set
895# CONFIG_FB_XVR2500 is not set 885# CONFIG_FB_XVR2500 is not set
@@ -915,6 +905,12 @@ CONFIG_FB_RADEON_I2C=y
915# CONFIG_FB_ARK is not set 905# CONFIG_FB_ARK is not set
916# CONFIG_FB_PM3 is not set 906# CONFIG_FB_PM3 is not set
917# CONFIG_FB_VIRTUAL is not set 907# CONFIG_FB_VIRTUAL is not set
908# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
909
910#
911# Display device support
912#
913# CONFIG_DISPLAY_SUPPORT is not set
918 914
919# 915#
920# Console display driver support 916# Console display driver support
@@ -1066,6 +1062,7 @@ CONFIG_AC97_BUS=m
1066CONFIG_HID_SUPPORT=y 1062CONFIG_HID_SUPPORT=y
1067CONFIG_HID=y 1063CONFIG_HID=y
1068# CONFIG_HID_DEBUG is not set 1064# CONFIG_HID_DEBUG is not set
1065# CONFIG_HIDRAW is not set
1069 1066
1070# 1067#
1071# USB Input Devices 1068# USB Input Devices
@@ -1187,19 +1184,6 @@ CONFIG_USB_STORAGE=m
1187# CONFIG_RTC_CLASS is not set 1184# CONFIG_RTC_CLASS is not set
1188 1185
1189# 1186#
1190# DMA Engine support
1191#
1192# CONFIG_DMA_ENGINE is not set
1193
1194#
1195# DMA Clients
1196#
1197
1198#
1199# DMA Devices
1200#
1201
1202#
1203# Userspace I/O 1187# Userspace I/O
1204# 1188#
1205# CONFIG_UIO is not set 1189# CONFIG_UIO is not set
@@ -1275,7 +1259,6 @@ CONFIG_TMPFS=y
1275# CONFIG_TMPFS_POSIX_ACL is not set 1259# CONFIG_TMPFS_POSIX_ACL is not set
1276CONFIG_HUGETLBFS=y 1260CONFIG_HUGETLBFS=y
1277CONFIG_HUGETLB_PAGE=y 1261CONFIG_HUGETLB_PAGE=y
1278CONFIG_RAMFS=y
1279# CONFIG_CONFIGFS_FS is not set 1262# CONFIG_CONFIGFS_FS is not set
1280 1263
1281# 1264#
@@ -1295,10 +1278,7 @@ CONFIG_RAMFS=y
1295# CONFIG_QNX4FS_FS is not set 1278# CONFIG_QNX4FS_FS is not set
1296# CONFIG_SYSV_FS is not set 1279# CONFIG_SYSV_FS is not set
1297# CONFIG_UFS_FS is not set 1280# CONFIG_UFS_FS is not set
1298 1281CONFIG_NETWORK_FILESYSTEMS=y
1299#
1300# Network File Systems
1301#
1302# CONFIG_NFS_FS is not set 1282# CONFIG_NFS_FS is not set
1303# CONFIG_NFSD is not set 1283# CONFIG_NFSD is not set
1304# CONFIG_SMB_FS is not set 1284# CONFIG_SMB_FS is not set
@@ -1313,10 +1293,6 @@ CONFIG_RAMFS=y
1313# CONFIG_PARTITION_ADVANCED is not set 1293# CONFIG_PARTITION_ADVANCED is not set
1314CONFIG_MSDOS_PARTITION=y 1294CONFIG_MSDOS_PARTITION=y
1315CONFIG_SUN_PARTITION=y 1295CONFIG_SUN_PARTITION=y
1316
1317#
1318# Native Language Support
1319#
1320CONFIG_NLS=m 1296CONFIG_NLS=m
1321CONFIG_NLS_DEFAULT="iso8859-1" 1297CONFIG_NLS_DEFAULT="iso8859-1"
1322# CONFIG_NLS_CODEPAGE_437 is not set 1298# CONFIG_NLS_CODEPAGE_437 is not set
@@ -1357,18 +1333,12 @@ CONFIG_NLS_DEFAULT="iso8859-1"
1357# CONFIG_NLS_KOI8_R is not set 1333# CONFIG_NLS_KOI8_R is not set
1358# CONFIG_NLS_KOI8_U is not set 1334# CONFIG_NLS_KOI8_U is not set
1359# CONFIG_NLS_UTF8 is not set 1335# CONFIG_NLS_UTF8 is not set
1360
1361#
1362# Distributed Lock Manager
1363#
1364# CONFIG_DLM is not set 1336# CONFIG_DLM is not set
1365 1337CONFIG_INSTRUMENTATION=y
1366#
1367# Instrumentation Support
1368#
1369CONFIG_PROFILING=y 1338CONFIG_PROFILING=y
1370CONFIG_OPROFILE=m 1339CONFIG_OPROFILE=m
1371CONFIG_KPROBES=y 1340CONFIG_KPROBES=y
1341# CONFIG_MARKERS is not set
1372 1342
1373# 1343#
1374# Kernel hacking 1344# Kernel hacking
@@ -1402,9 +1372,11 @@ CONFIG_DEBUG_BUGVERBOSE=y
1402# CONFIG_DEBUG_VM is not set 1372# CONFIG_DEBUG_VM is not set
1403# CONFIG_DEBUG_LIST is not set 1373# CONFIG_DEBUG_LIST is not set
1404CONFIG_FORCED_INLINING=y 1374CONFIG_FORCED_INLINING=y
1375# CONFIG_BOOT_PRINTK_DELAY is not set
1405# CONFIG_RCU_TORTURE_TEST is not set 1376# CONFIG_RCU_TORTURE_TEST is not set
1406# CONFIG_LKDTM is not set 1377# CONFIG_LKDTM is not set
1407# CONFIG_FAULT_INJECTION is not set 1378# CONFIG_FAULT_INJECTION is not set
1379# CONFIG_SAMPLES is not set
1408# CONFIG_DEBUG_STACK_USAGE is not set 1380# CONFIG_DEBUG_STACK_USAGE is not set
1409# CONFIG_DEBUG_DCFLUSH is not set 1381# CONFIG_DEBUG_DCFLUSH is not set
1410# CONFIG_STACK_DEBUG is not set 1382# CONFIG_STACK_DEBUG is not set
@@ -1417,6 +1389,7 @@ CONFIG_FORCED_INLINING=y
1417CONFIG_KEYS=y 1389CONFIG_KEYS=y
1418# CONFIG_KEYS_DEBUG_PROC_KEYS is not set 1390# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
1419# CONFIG_SECURITY is not set 1391# CONFIG_SECURITY is not set
1392# CONFIG_SECURITY_FILE_CAPABILITIES is not set
1420CONFIG_XOR_BLOCKS=m 1393CONFIG_XOR_BLOCKS=m
1421CONFIG_ASYNC_CORE=m 1394CONFIG_ASYNC_CORE=m
1422CONFIG_ASYNC_MEMCPY=m 1395CONFIG_ASYNC_MEMCPY=m
diff --git a/arch/sparc64/kernel/Makefile b/arch/sparc64/kernel/Makefile
index 112c46e66578..ef50d217432f 100644
--- a/arch/sparc64/kernel/Makefile
+++ b/arch/sparc64/kernel/Makefile
@@ -39,12 +39,3 @@ else
39 obj-y += sys_sunos32.o sunos_ioctl32.o 39 obj-y += sys_sunos32.o sunos_ioctl32.o
40 endif 40 endif
41endif 41endif
42
43ifneq ($(NEW_GCC),y)
44 CMODEL_CFLAG := -mmedlow
45else
46 CMODEL_CFLAG := -m64 -mcmodel=medlow
47endif
48
49head.o: head.S ttable.S itlb_miss.S dtlb_miss.S ktlb.S tsb.S \
50 etrap.S rtrap.S winfixup.S entry.S
diff --git a/arch/sparc64/kernel/iommu.c b/arch/sparc64/kernel/iommu.c
index 29af777d7ac9..070a4846c0cb 100644
--- a/arch/sparc64/kernel/iommu.c
+++ b/arch/sparc64/kernel/iommu.c
@@ -472,8 +472,7 @@ static void dma_4u_unmap_single(struct device *dev, dma_addr_t bus_addr,
472 spin_unlock_irqrestore(&iommu->lock, flags); 472 spin_unlock_irqrestore(&iommu->lock, flags);
473} 473}
474 474
475#define SG_ENT_PHYS_ADDRESS(SG) \ 475#define SG_ENT_PHYS_ADDRESS(SG) (__pa(sg_virt((SG))))
476 (__pa(page_address((SG)->page)) + (SG)->offset)
477 476
478static void fill_sg(iopte_t *iopte, struct scatterlist *sg, 477static void fill_sg(iopte_t *iopte, struct scatterlist *sg,
479 int nused, int nelems, 478 int nused, int nelems,
@@ -565,9 +564,7 @@ static int dma_4u_map_sg(struct device *dev, struct scatterlist *sglist,
565 /* Fast path single entry scatterlists. */ 564 /* Fast path single entry scatterlists. */
566 if (nelems == 1) { 565 if (nelems == 1) {
567 sglist->dma_address = 566 sglist->dma_address =
568 dma_4u_map_single(dev, 567 dma_4u_map_single(dev, sg_virt(sglist),
569 (page_address(sglist->page) +
570 sglist->offset),
571 sglist->length, direction); 568 sglist->length, direction);
572 if (unlikely(sglist->dma_address == DMA_ERROR_CODE)) 569 if (unlikely(sglist->dma_address == DMA_ERROR_CODE))
573 return 0; 570 return 0;
diff --git a/arch/sparc64/kernel/iommu_common.c b/arch/sparc64/kernel/iommu_common.c
index d7ca900ec51d..b70324e0d83d 100644
--- a/arch/sparc64/kernel/iommu_common.c
+++ b/arch/sparc64/kernel/iommu_common.c
@@ -73,7 +73,7 @@ static int verify_one_map(struct scatterlist *dma_sg, struct scatterlist **__sg,
73 73
74 daddr = dma_sg->dma_address; 74 daddr = dma_sg->dma_address;
75 sglen = sg->length; 75 sglen = sg->length;
76 sgaddr = (unsigned long) (page_address(sg->page) + sg->offset); 76 sgaddr = (unsigned long) sg_virt(sg);
77 while (dlen > 0) { 77 while (dlen > 0) {
78 unsigned long paddr; 78 unsigned long paddr;
79 79
@@ -123,7 +123,7 @@ static int verify_one_map(struct scatterlist *dma_sg, struct scatterlist **__sg,
123 sg = sg_next(sg); 123 sg = sg_next(sg);
124 if (--nents <= 0) 124 if (--nents <= 0)
125 break; 125 break;
126 sgaddr = (unsigned long) (page_address(sg->page) + sg->offset); 126 sgaddr = (unsigned long) sg_virt(sg);
127 sglen = sg->length; 127 sglen = sg->length;
128 } 128 }
129 if (dlen < 0) { 129 if (dlen < 0) {
@@ -191,7 +191,7 @@ void verify_sglist(struct scatterlist *sglist, int nents, iopte_t *iopte, int np
191 printk("sg(%d): page_addr(%p) off(%x) length(%x) " 191 printk("sg(%d): page_addr(%p) off(%x) length(%x) "
192 "dma_address[%016x] dma_length[%016x]\n", 192 "dma_address[%016x] dma_length[%016x]\n",
193 i, 193 i,
194 page_address(sg->page), sg->offset, 194 page_address(sg_page(sg)), sg->offset,
195 sg->length, 195 sg->length,
196 sg->dma_address, sg->dma_length); 196 sg->dma_address, sg->dma_length);
197 } 197 }
@@ -207,15 +207,14 @@ unsigned long prepare_sg(struct scatterlist *sg, int nents)
207 unsigned long prev; 207 unsigned long prev;
208 u32 dent_addr, dent_len; 208 u32 dent_addr, dent_len;
209 209
210 prev = (unsigned long) (page_address(sg->page) + sg->offset); 210 prev = (unsigned long) sg_virt(sg);
211 prev += (unsigned long) (dent_len = sg->length); 211 prev += (unsigned long) (dent_len = sg->length);
212 dent_addr = (u32) ((unsigned long)(page_address(sg->page) + sg->offset) 212 dent_addr = (u32) ((unsigned long)(sg_virt(sg)) & (IO_PAGE_SIZE - 1UL));
213 & (IO_PAGE_SIZE - 1UL));
214 while (--nents) { 213 while (--nents) {
215 unsigned long addr; 214 unsigned long addr;
216 215
217 sg = sg_next(sg); 216 sg = sg_next(sg);
218 addr = (unsigned long) (page_address(sg->page) + sg->offset); 217 addr = (unsigned long) sg_virt(sg);
219 if (! VCONTIG(prev, addr)) { 218 if (! VCONTIG(prev, addr)) {
220 dma_sg->dma_address = dent_addr; 219 dma_sg->dma_address = dent_addr;
221 dma_sg->dma_length = dent_len; 220 dma_sg->dma_length = dent_len;
@@ -234,6 +233,11 @@ unsigned long prepare_sg(struct scatterlist *sg, int nents)
234 dma_sg->dma_address = dent_addr; 233 dma_sg->dma_address = dent_addr;
235 dma_sg->dma_length = dent_len; 234 dma_sg->dma_length = dent_len;
236 235
236 if (dma_sg != sg) {
237 dma_sg = next_sg(dma_sg);
238 dma_sg->dma_length = 0;
239 }
240
237 return ((unsigned long) dent_addr + 241 return ((unsigned long) dent_addr +
238 (unsigned long) dent_len + 242 (unsigned long) dent_len +
239 (IO_PAGE_SIZE - 1UL)) >> IO_PAGE_SHIFT; 243 (IO_PAGE_SIZE - 1UL)) >> IO_PAGE_SHIFT;
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c
index 2c3bea228159..30431bd24e1e 100644
--- a/arch/sparc64/kernel/irq.c
+++ b/arch/sparc64/kernel/irq.c
@@ -257,8 +257,8 @@ struct irq_handler_data {
257 unsigned long imap; 257 unsigned long imap;
258 258
259 void (*pre_handler)(unsigned int, void *, void *); 259 void (*pre_handler)(unsigned int, void *, void *);
260 void *pre_handler_arg1; 260 void *arg1;
261 void *pre_handler_arg2; 261 void *arg2;
262}; 262};
263 263
264#ifdef CONFIG_SMP 264#ifdef CONFIG_SMP
@@ -346,7 +346,7 @@ static void sun4u_irq_disable(unsigned int virt_irq)
346 } 346 }
347} 347}
348 348
349static void sun4u_irq_end(unsigned int virt_irq) 349static void sun4u_irq_eoi(unsigned int virt_irq)
350{ 350{
351 struct irq_handler_data *data = get_irq_chip_data(virt_irq); 351 struct irq_handler_data *data = get_irq_chip_data(virt_irq);
352 struct irq_desc *desc = irq_desc + virt_irq; 352 struct irq_desc *desc = irq_desc + virt_irq;
@@ -401,7 +401,7 @@ static void sun4v_irq_disable(unsigned int virt_irq)
401 "err(%d)\n", ino, err); 401 "err(%d)\n", ino, err);
402} 402}
403 403
404static void sun4v_irq_end(unsigned int virt_irq) 404static void sun4v_irq_eoi(unsigned int virt_irq)
405{ 405{
406 unsigned int ino = virt_irq_table[virt_irq].dev_ino; 406 unsigned int ino = virt_irq_table[virt_irq].dev_ino;
407 struct irq_desc *desc = irq_desc + virt_irq; 407 struct irq_desc *desc = irq_desc + virt_irq;
@@ -478,7 +478,7 @@ static void sun4v_virq_disable(unsigned int virt_irq)
478 dev_handle, dev_ino, err); 478 dev_handle, dev_ino, err);
479} 479}
480 480
481static void sun4v_virq_end(unsigned int virt_irq) 481static void sun4v_virq_eoi(unsigned int virt_irq)
482{ 482{
483 struct irq_desc *desc = irq_desc + virt_irq; 483 struct irq_desc *desc = irq_desc + virt_irq;
484 unsigned long dev_handle, dev_ino; 484 unsigned long dev_handle, dev_ino;
@@ -498,33 +498,11 @@ static void sun4v_virq_end(unsigned int virt_irq)
498 dev_handle, dev_ino, err); 498 dev_handle, dev_ino, err);
499} 499}
500 500
501static void run_pre_handler(unsigned int virt_irq)
502{
503 struct irq_handler_data *data = get_irq_chip_data(virt_irq);
504 unsigned int ino;
505
506 ino = virt_irq_table[virt_irq].dev_ino;
507 if (likely(data->pre_handler)) {
508 data->pre_handler(ino,
509 data->pre_handler_arg1,
510 data->pre_handler_arg2);
511 }
512}
513
514static struct irq_chip sun4u_irq = { 501static struct irq_chip sun4u_irq = {
515 .typename = "sun4u", 502 .typename = "sun4u",
516 .enable = sun4u_irq_enable, 503 .enable = sun4u_irq_enable,
517 .disable = sun4u_irq_disable, 504 .disable = sun4u_irq_disable,
518 .end = sun4u_irq_end, 505 .eoi = sun4u_irq_eoi,
519 .set_affinity = sun4u_set_affinity,
520};
521
522static struct irq_chip sun4u_irq_ack = {
523 .typename = "sun4u+ack",
524 .enable = sun4u_irq_enable,
525 .disable = sun4u_irq_disable,
526 .ack = run_pre_handler,
527 .end = sun4u_irq_end,
528 .set_affinity = sun4u_set_affinity, 506 .set_affinity = sun4u_set_affinity,
529}; 507};
530 508
@@ -532,7 +510,7 @@ static struct irq_chip sun4v_irq = {
532 .typename = "sun4v", 510 .typename = "sun4v",
533 .enable = sun4v_irq_enable, 511 .enable = sun4v_irq_enable,
534 .disable = sun4v_irq_disable, 512 .disable = sun4v_irq_disable,
535 .end = sun4v_irq_end, 513 .eoi = sun4v_irq_eoi,
536 .set_affinity = sun4v_set_affinity, 514 .set_affinity = sun4v_set_affinity,
537}; 515};
538 516
@@ -540,31 +518,33 @@ static struct irq_chip sun4v_virq = {
540 .typename = "vsun4v", 518 .typename = "vsun4v",
541 .enable = sun4v_virq_enable, 519 .enable = sun4v_virq_enable,
542 .disable = sun4v_virq_disable, 520 .disable = sun4v_virq_disable,
543 .end = sun4v_virq_end, 521 .eoi = sun4v_virq_eoi,
544 .set_affinity = sun4v_virt_set_affinity, 522 .set_affinity = sun4v_virt_set_affinity,
545}; 523};
546 524
525static void fastcall pre_flow_handler(unsigned int virt_irq,
526 struct irq_desc *desc)
527{
528 struct irq_handler_data *data = get_irq_chip_data(virt_irq);
529 unsigned int ino = virt_irq_table[virt_irq].dev_ino;
530
531 data->pre_handler(ino, data->arg1, data->arg2);
532
533 handle_fasteoi_irq(virt_irq, desc);
534}
535
547void irq_install_pre_handler(int virt_irq, 536void irq_install_pre_handler(int virt_irq,
548 void (*func)(unsigned int, void *, void *), 537 void (*func)(unsigned int, void *, void *),
549 void *arg1, void *arg2) 538 void *arg1, void *arg2)
550{ 539{
551 struct irq_handler_data *data = get_irq_chip_data(virt_irq); 540 struct irq_handler_data *data = get_irq_chip_data(virt_irq);
552 struct irq_chip *chip = get_irq_chip(virt_irq); 541 struct irq_desc *desc = irq_desc + virt_irq;
553
554 if (WARN_ON(chip == &sun4v_irq || chip == &sun4v_virq)) {
555 printk(KERN_ERR "IRQ: Trying to install pre-handler on "
556 "sun4v irq %u\n", virt_irq);
557 return;
558 }
559 542
560 data->pre_handler = func; 543 data->pre_handler = func;
561 data->pre_handler_arg1 = arg1; 544 data->arg1 = arg1;
562 data->pre_handler_arg2 = arg2; 545 data->arg2 = arg2;
563
564 if (chip == &sun4u_irq_ack)
565 return;
566 546
567 set_irq_chip(virt_irq, &sun4u_irq_ack); 547 desc->handle_irq = pre_flow_handler;
568} 548}
569 549
570unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap) 550unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
@@ -582,7 +562,10 @@ unsigned int build_irq(int inofixup, unsigned long iclr, unsigned long imap)
582 if (!virt_irq) { 562 if (!virt_irq) {
583 virt_irq = virt_irq_alloc(0, ino); 563 virt_irq = virt_irq_alloc(0, ino);
584 bucket_set_virt_irq(__pa(bucket), virt_irq); 564 bucket_set_virt_irq(__pa(bucket), virt_irq);
585 set_irq_chip(virt_irq, &sun4u_irq); 565 set_irq_chip_and_handler_name(virt_irq,
566 &sun4u_irq,
567 handle_fasteoi_irq,
568 "IVEC");
586 } 569 }
587 570
588 data = get_irq_chip_data(virt_irq); 571 data = get_irq_chip_data(virt_irq);
@@ -617,7 +600,9 @@ static unsigned int sun4v_build_common(unsigned long sysino,
617 if (!virt_irq) { 600 if (!virt_irq) {
618 virt_irq = virt_irq_alloc(0, sysino); 601 virt_irq = virt_irq_alloc(0, sysino);
619 bucket_set_virt_irq(__pa(bucket), virt_irq); 602 bucket_set_virt_irq(__pa(bucket), virt_irq);
620 set_irq_chip(virt_irq, chip); 603 set_irq_chip_and_handler_name(virt_irq, chip,
604 handle_fasteoi_irq,
605 "IVEC");
621 } 606 }
622 607
623 data = get_irq_chip_data(virt_irq); 608 data = get_irq_chip_data(virt_irq);
@@ -665,7 +650,10 @@ unsigned int sun4v_build_virq(u32 devhandle, unsigned int devino)
665 650
666 virt_irq = virt_irq_alloc(devhandle, devino); 651 virt_irq = virt_irq_alloc(devhandle, devino);
667 bucket_set_virt_irq(__pa(bucket), virt_irq); 652 bucket_set_virt_irq(__pa(bucket), virt_irq);
668 set_irq_chip(virt_irq, &sun4v_virq); 653
654 set_irq_chip_and_handler_name(virt_irq, &sun4v_virq,
655 handle_fasteoi_irq,
656 "IVEC");
669 657
670 data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC); 658 data = kzalloc(sizeof(struct irq_handler_data), GFP_ATOMIC);
671 if (unlikely(!data)) 659 if (unlikely(!data))
@@ -724,6 +712,7 @@ void handler_irq(int irq, struct pt_regs *regs)
724 : "memory"); 712 : "memory");
725 713
726 while (bucket_pa) { 714 while (bucket_pa) {
715 struct irq_desc *desc;
727 unsigned long next_pa; 716 unsigned long next_pa;
728 unsigned int virt_irq; 717 unsigned int virt_irq;
729 718
@@ -731,7 +720,9 @@ void handler_irq(int irq, struct pt_regs *regs)
731 virt_irq = bucket_get_virt_irq(bucket_pa); 720 virt_irq = bucket_get_virt_irq(bucket_pa);
732 bucket_clear_chain_pa(bucket_pa); 721 bucket_clear_chain_pa(bucket_pa);
733 722
734 __do_IRQ(virt_irq); 723 desc = irq_desc + virt_irq;
724
725 desc->handle_irq(virt_irq, desc);
735 726
736 bucket_pa = next_pa; 727 bucket_pa = next_pa;
737 } 728 }
diff --git a/arch/sparc64/kernel/ldc.c b/arch/sparc64/kernel/ldc.c
index 85a2be0b0962..c8313cb60f0a 100644
--- a/arch/sparc64/kernel/ldc.c
+++ b/arch/sparc64/kernel/ldc.c
@@ -2057,7 +2057,7 @@ static void fill_cookies(struct cookie_state *sp, unsigned long pa,
2057 2057
2058static int sg_count_one(struct scatterlist *sg) 2058static int sg_count_one(struct scatterlist *sg)
2059{ 2059{
2060 unsigned long base = page_to_pfn(sg->page) << PAGE_SHIFT; 2060 unsigned long base = page_to_pfn(sg_page(sg)) << PAGE_SHIFT;
2061 long len = sg->length; 2061 long len = sg->length;
2062 2062
2063 if ((sg->offset | len) & (8UL - 1)) 2063 if ((sg->offset | len) & (8UL - 1))
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c
index 9b808640a193..63b3ebc0c3c2 100644
--- a/arch/sparc64/kernel/pci.c
+++ b/arch/sparc64/kernel/pci.c
@@ -207,8 +207,7 @@ static struct {
207 { "SUNW,sun4v-pci", sun4v_pci_init }, 207 { "SUNW,sun4v-pci", sun4v_pci_init },
208 { "pciex108e,80f0", fire_pci_init }, 208 { "pciex108e,80f0", fire_pci_init },
209}; 209};
210#define PCI_NUM_CONTROLLER_TYPES (sizeof(pci_controller_table) / \ 210#define PCI_NUM_CONTROLLER_TYPES ARRAY_SIZE(pci_controller_table)
211 sizeof(pci_controller_table[0]))
212 211
213static int __init pci_controller_init(const char *model_name, int namelen, struct device_node *dp) 212static int __init pci_controller_init(const char *model_name, int namelen, struct device_node *dp)
214{ 213{
diff --git a/arch/sparc64/kernel/pci_msi.c b/arch/sparc64/kernel/pci_msi.c
index 31a165fd3e48..d6d64b44af63 100644
--- a/arch/sparc64/kernel/pci_msi.c
+++ b/arch/sparc64/kernel/pci_msi.c
@@ -28,8 +28,15 @@ static irqreturn_t sparc64_msiq_interrupt(int irq, void *cookie)
28 unsigned long msi; 28 unsigned long msi;
29 29
30 err = ops->dequeue_msi(pbm, msiqid, &head, &msi); 30 err = ops->dequeue_msi(pbm, msiqid, &head, &msi);
31 if (likely(err > 0)) 31 if (likely(err > 0)) {
32 __do_IRQ(pbm->msi_irq_table[msi - pbm->msi_first]); 32 struct irq_desc *desc;
33 unsigned int virt_irq;
34
35 virt_irq = pbm->msi_irq_table[msi - pbm->msi_first];
36 desc = irq_desc + virt_irq;
37
38 desc->handle_irq(virt_irq, desc);
39 }
33 40
34 if (unlikely(err < 0)) 41 if (unlikely(err < 0))
35 goto err_dequeue; 42 goto err_dequeue;
@@ -128,7 +135,8 @@ int sparc64_setup_msi_irq(unsigned int *virt_irq_p,
128 if (!*virt_irq_p) 135 if (!*virt_irq_p)
129 goto out_err; 136 goto out_err;
130 137
131 set_irq_chip(*virt_irq_p, &msi_irq); 138 set_irq_chip_and_handler_name(*virt_irq_p, &msi_irq,
139 handle_simple_irq, "MSI");
132 140
133 err = alloc_msi(pbm); 141 err = alloc_msi(pbm);
134 if (unlikely(err < 0)) 142 if (unlikely(err < 0))
diff --git a/arch/sparc64/kernel/pci_sun4v.c b/arch/sparc64/kernel/pci_sun4v.c
index fe46ace3e59f..8c4875bdb4a8 100644
--- a/arch/sparc64/kernel/pci_sun4v.c
+++ b/arch/sparc64/kernel/pci_sun4v.c
@@ -365,8 +365,7 @@ static void dma_4v_unmap_single(struct device *dev, dma_addr_t bus_addr,
365 spin_unlock_irqrestore(&iommu->lock, flags); 365 spin_unlock_irqrestore(&iommu->lock, flags);
366} 366}
367 367
368#define SG_ENT_PHYS_ADDRESS(SG) \ 368#define SG_ENT_PHYS_ADDRESS(SG) (__pa(sg_virt((SG))))
369 (__pa(page_address((SG)->page)) + (SG)->offset)
370 369
371static long fill_sg(long entry, struct device *dev, 370static long fill_sg(long entry, struct device *dev,
372 struct scatterlist *sg, 371 struct scatterlist *sg,
@@ -477,9 +476,7 @@ static int dma_4v_map_sg(struct device *dev, struct scatterlist *sglist,
477 /* Fast path single entry scatterlists. */ 476 /* Fast path single entry scatterlists. */
478 if (nelems == 1) { 477 if (nelems == 1) {
479 sglist->dma_address = 478 sglist->dma_address =
480 dma_4v_map_single(dev, 479 dma_4v_map_single(dev, sg_virt(sglist),
481 (page_address(sglist->page) +
482 sglist->offset),
483 sglist->length, direction); 480 sglist->length, direction);
484 if (unlikely(sglist->dma_address == DMA_ERROR_CODE)) 481 if (unlikely(sglist->dma_address == DMA_ERROR_CODE))
485 return 0; 482 return 0;
diff --git a/arch/sparc64/math-emu/Makefile b/arch/sparc64/math-emu/Makefile
index a0b06fd29467..cc5cb9baf6aa 100644
--- a/arch/sparc64/math-emu/Makefile
+++ b/arch/sparc64/math-emu/Makefile
@@ -4,4 +4,4 @@
4 4
5obj-y := math.o 5obj-y := math.o
6 6
7EXTRA_CFLAGS = -I. -Iinclude/math-emu -w 7EXTRA_CFLAGS = -Iinclude/math-emu -w
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c
index 25b248a02507..3a8cd3dfb51c 100644
--- a/arch/um/drivers/ubd_kern.c
+++ b/arch/um/drivers/ubd_kern.c
@@ -1115,7 +1115,7 @@ static void do_ubd_request(struct request_queue *q)
1115 } 1115 }
1116 prepare_request(req, io_req, 1116 prepare_request(req, io_req,
1117 (unsigned long long) req->sector << 9, 1117 (unsigned long long) req->sector << 9,
1118 sg->offset, sg->length, sg->page); 1118 sg->offset, sg->length, sg_page(sg));
1119 1119
1120 last_sectors = sg->length >> 9; 1120 last_sectors = sg->length >> 9;
1121 n = os_write_file(thread_fd, &io_req, 1121 n = os_write_file(thread_fd, &io_req,
diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
index f35ea2237522..a0ae2e7f6cec 100644
--- a/arch/x86/boot/compressed/head_32.S
+++ b/arch/x86/boot/compressed/head_32.S
@@ -27,13 +27,22 @@
27#include <asm/segment.h> 27#include <asm/segment.h>
28#include <asm/page.h> 28#include <asm/page.h>
29#include <asm/boot.h> 29#include <asm/boot.h>
30#include <asm/asm-offsets.h>
30 31
31.section ".text.head","ax",@progbits 32.section ".text.head","ax",@progbits
32 .globl startup_32 33 .globl startup_32
33 34
34startup_32: 35startup_32:
35 cld 36 /* check to see if KEEP_SEGMENTS flag is meaningful */
36 cli 37 cmpw $0x207, BP_version(%esi)
38 jb 1f
39
40 /* test KEEP_SEGMENTS flag to see if the bootloader is asking
41 * us to not reload segments */
42 testb $(1<<6), BP_loadflags(%esi)
43 jnz 2f
44
451: cli
37 movl $(__BOOT_DS),%eax 46 movl $(__BOOT_DS),%eax
38 movl %eax,%ds 47 movl %eax,%ds
39 movl %eax,%es 48 movl %eax,%es
@@ -41,6 +50,8 @@ startup_32:
41 movl %eax,%gs 50 movl %eax,%gs
42 movl %eax,%ss 51 movl %eax,%ss
43 52
532: cld
54
44/* Calculate the delta between where we were compiled to run 55/* Calculate the delta between where we were compiled to run
45 * at and where we were actually loaded at. This can only be done 56 * at and where we were actually loaded at. This can only be done
46 * with a short local call on x86. Nothing else will tell us what 57 * with a short local call on x86. Nothing else will tell us what
diff --git a/arch/x86/boot/compressed/misc_32.c b/arch/x86/boot/compressed/misc_32.c
index 1dc1e19c0a9f..b74d60d1b2fa 100644
--- a/arch/x86/boot/compressed/misc_32.c
+++ b/arch/x86/boot/compressed/misc_32.c
@@ -247,6 +247,9 @@ static void putstr(const char *s)
247 int x,y,pos; 247 int x,y,pos;
248 char c; 248 char c;
249 249
250 if (RM_SCREEN_INFO.orig_video_mode == 0 && lines == 0 && cols == 0)
251 return;
252
250 x = RM_SCREEN_INFO.orig_x; 253 x = RM_SCREEN_INFO.orig_x;
251 y = RM_SCREEN_INFO.orig_y; 254 y = RM_SCREEN_INFO.orig_y;
252 255
diff --git a/arch/x86/boot/header.S b/arch/x86/boot/header.S
index f3140e596d40..8353c81c41c0 100644
--- a/arch/x86/boot/header.S
+++ b/arch/x86/boot/header.S
@@ -119,7 +119,7 @@ _start:
119 # Part 2 of the header, from the old setup.S 119 # Part 2 of the header, from the old setup.S
120 120
121 .ascii "HdrS" # header signature 121 .ascii "HdrS" # header signature
122 .word 0x0206 # header version number (>= 0x0105) 122 .word 0x0207 # header version number (>= 0x0105)
123 # or else old loadlin-1.5 will fail) 123 # or else old loadlin-1.5 will fail)
124 .globl realmode_swtch 124 .globl realmode_swtch
125realmode_swtch: .word 0, 0 # default_switch, SETUPSEG 125realmode_swtch: .word 0, 0 # default_switch, SETUPSEG
@@ -214,6 +214,11 @@ cmdline_size: .long COMMAND_LINE_SIZE-1 #length of the command line,
214 #added with boot protocol 214 #added with boot protocol
215 #version 2.06 215 #version 2.06
216 216
217hardware_subarch: .long 0 # subarchitecture, added with 2.07
218 # default to 0 for normal x86 PC
219
220hardware_subarch_data: .quad 0
221
217# End of setup header ##################################################### 222# End of setup header #####################################################
218 223
219 .section ".inittext", "ax" 224 .section ".inittext", "ax"
diff --git a/arch/x86/kernel/asm-offsets_32.c b/arch/x86/kernel/asm-offsets_32.c
index f1b7cdda82b3..0e45981b2dd7 100644
--- a/arch/x86/kernel/asm-offsets_32.c
+++ b/arch/x86/kernel/asm-offsets_32.c
@@ -15,6 +15,7 @@
15#include <asm/fixmap.h> 15#include <asm/fixmap.h>
16#include <asm/processor.h> 16#include <asm/processor.h>
17#include <asm/thread_info.h> 17#include <asm/thread_info.h>
18#include <asm/bootparam.h>
18#include <asm/elf.h> 19#include <asm/elf.h>
19 20
20#include <xen/interface/xen.h> 21#include <xen/interface/xen.h>
@@ -135,6 +136,7 @@ void foo(void)
135#ifdef CONFIG_LGUEST_GUEST 136#ifdef CONFIG_LGUEST_GUEST
136 BLANK(); 137 BLANK();
137 OFFSET(LGUEST_DATA_irq_enabled, lguest_data, irq_enabled); 138 OFFSET(LGUEST_DATA_irq_enabled, lguest_data, irq_enabled);
139 OFFSET(LGUEST_DATA_pgdir, lguest_data, pgdir);
138 OFFSET(LGUEST_PAGES_host_gdt_desc, lguest_pages, state.host_gdt_desc); 140 OFFSET(LGUEST_PAGES_host_gdt_desc, lguest_pages, state.host_gdt_desc);
139 OFFSET(LGUEST_PAGES_host_idt_desc, lguest_pages, state.host_idt_desc); 141 OFFSET(LGUEST_PAGES_host_idt_desc, lguest_pages, state.host_idt_desc);
140 OFFSET(LGUEST_PAGES_host_cr3, lguest_pages, state.host_cr3); 142 OFFSET(LGUEST_PAGES_host_cr3, lguest_pages, state.host_cr3);
@@ -146,4 +148,10 @@ void foo(void)
146 OFFSET(LGUEST_PAGES_regs_errcode, lguest_pages, regs.errcode); 148 OFFSET(LGUEST_PAGES_regs_errcode, lguest_pages, regs.errcode);
147 OFFSET(LGUEST_PAGES_regs, lguest_pages, regs); 149 OFFSET(LGUEST_PAGES_regs, lguest_pages, regs);
148#endif 150#endif
151
152 BLANK();
153 OFFSET(BP_scratch, boot_params, scratch);
154 OFFSET(BP_loadflags, boot_params, hdr.loadflags);
155 OFFSET(BP_hardware_subarch, boot_params, hdr.hardware_subarch);
156 OFFSET(BP_version, boot_params, hdr.version);
149} 157}
diff --git a/arch/x86/kernel/e820_32.c b/arch/x86/kernel/e820_32.c
index 58fd54eb5577..18f500d185a2 100644
--- a/arch/x86/kernel/e820_32.c
+++ b/arch/x86/kernel/e820_32.c
@@ -51,6 +51,13 @@ struct resource code_resource = {
51 .flags = IORESOURCE_BUSY | IORESOURCE_MEM 51 .flags = IORESOURCE_BUSY | IORESOURCE_MEM
52}; 52};
53 53
54struct resource bss_resource = {
55 .name = "Kernel bss",
56 .start = 0,
57 .end = 0,
58 .flags = IORESOURCE_BUSY | IORESOURCE_MEM
59};
60
54static struct resource system_rom_resource = { 61static struct resource system_rom_resource = {
55 .name = "System ROM", 62 .name = "System ROM",
56 .start = 0xf0000, 63 .start = 0xf0000,
@@ -254,7 +261,9 @@ static void __init probe_roms(void)
254 * and also for regions reported as reserved by the e820. 261 * and also for regions reported as reserved by the e820.
255 */ 262 */
256static void __init 263static void __init
257legacy_init_iomem_resources(struct resource *code_resource, struct resource *data_resource) 264legacy_init_iomem_resources(struct resource *code_resource,
265 struct resource *data_resource,
266 struct resource *bss_resource)
258{ 267{
259 int i; 268 int i;
260 269
@@ -287,6 +296,7 @@ legacy_init_iomem_resources(struct resource *code_resource, struct resource *dat
287 */ 296 */
288 request_resource(res, code_resource); 297 request_resource(res, code_resource);
289 request_resource(res, data_resource); 298 request_resource(res, data_resource);
299 request_resource(res, bss_resource);
290#ifdef CONFIG_KEXEC 300#ifdef CONFIG_KEXEC
291 if (crashk_res.start != crashk_res.end) 301 if (crashk_res.start != crashk_res.end)
292 request_resource(res, &crashk_res); 302 request_resource(res, &crashk_res);
@@ -307,9 +317,11 @@ static int __init request_standard_resources(void)
307 317
308 printk("Setting up standard PCI resources\n"); 318 printk("Setting up standard PCI resources\n");
309 if (efi_enabled) 319 if (efi_enabled)
310 efi_initialize_iomem_resources(&code_resource, &data_resource); 320 efi_initialize_iomem_resources(&code_resource,
321 &data_resource, &bss_resource);
311 else 322 else
312 legacy_init_iomem_resources(&code_resource, &data_resource); 323 legacy_init_iomem_resources(&code_resource,
324 &data_resource, &bss_resource);
313 325
314 /* EFI systems may still have VGA */ 326 /* EFI systems may still have VGA */
315 request_resource(&iomem_resource, &video_ram_resource); 327 request_resource(&iomem_resource, &video_ram_resource);
diff --git a/arch/x86/kernel/e820_64.c b/arch/x86/kernel/e820_64.c
index 57616865d8a0..04698e0b056c 100644
--- a/arch/x86/kernel/e820_64.c
+++ b/arch/x86/kernel/e820_64.c
@@ -47,7 +47,7 @@ unsigned long end_pfn_map;
47 */ 47 */
48static unsigned long __initdata end_user_pfn = MAXMEM>>PAGE_SHIFT; 48static unsigned long __initdata end_user_pfn = MAXMEM>>PAGE_SHIFT;
49 49
50extern struct resource code_resource, data_resource; 50extern struct resource code_resource, data_resource, bss_resource;
51 51
52/* Check for some hardcoded bad areas that early boot is not allowed to touch */ 52/* Check for some hardcoded bad areas that early boot is not allowed to touch */
53static inline int bad_addr(unsigned long *addrp, unsigned long size) 53static inline int bad_addr(unsigned long *addrp, unsigned long size)
@@ -225,6 +225,7 @@ void __init e820_reserve_resources(void)
225 */ 225 */
226 request_resource(res, &code_resource); 226 request_resource(res, &code_resource);
227 request_resource(res, &data_resource); 227 request_resource(res, &data_resource);
228 request_resource(res, &bss_resource);
228#ifdef CONFIG_KEXEC 229#ifdef CONFIG_KEXEC
229 if (crashk_res.start != crashk_res.end) 230 if (crashk_res.start != crashk_res.end)
230 request_resource(res, &crashk_res); 231 request_resource(res, &crashk_res);
@@ -729,3 +730,22 @@ __init void e820_setup_gap(void)
729 printk(KERN_INFO "Allocating PCI resources starting at %lx (gap: %lx:%lx)\n", 730 printk(KERN_INFO "Allocating PCI resources starting at %lx (gap: %lx:%lx)\n",
730 pci_mem_start, gapstart, gapsize); 731 pci_mem_start, gapstart, gapsize);
731} 732}
733
734int __init arch_get_ram_range(int slot, u64 *addr, u64 *size)
735{
736 int i;
737
738 if (slot < 0 || slot >= e820.nr_map)
739 return -1;
740 for (i = slot; i < e820.nr_map; i++) {
741 if (e820.map[i].type != E820_RAM)
742 continue;
743 break;
744 }
745 if (i == e820.nr_map || e820.map[i].addr > (max_pfn << PAGE_SHIFT))
746 return -1;
747 *addr = e820.map[i].addr;
748 *size = min_t(u64, e820.map[i].size + e820.map[i].addr,
749 max_pfn << PAGE_SHIFT) - *addr;
750 return i + 1;
751}
diff --git a/arch/x86/kernel/efi_32.c b/arch/x86/kernel/efi_32.c
index b42558c48e9d..e2be78f49399 100644
--- a/arch/x86/kernel/efi_32.c
+++ b/arch/x86/kernel/efi_32.c
@@ -603,7 +603,8 @@ void __init efi_enter_virtual_mode(void)
603 603
604void __init 604void __init
605efi_initialize_iomem_resources(struct resource *code_resource, 605efi_initialize_iomem_resources(struct resource *code_resource,
606 struct resource *data_resource) 606 struct resource *data_resource,
607 struct resource *bss_resource)
607{ 608{
608 struct resource *res; 609 struct resource *res;
609 efi_memory_desc_t *md; 610 efi_memory_desc_t *md;
@@ -675,6 +676,7 @@ efi_initialize_iomem_resources(struct resource *code_resource,
675 if (md->type == EFI_CONVENTIONAL_MEMORY) { 676 if (md->type == EFI_CONVENTIONAL_MEMORY) {
676 request_resource(res, code_resource); 677 request_resource(res, code_resource);
677 request_resource(res, data_resource); 678 request_resource(res, data_resource);
679 request_resource(res, bss_resource);
678#ifdef CONFIG_KEXEC 680#ifdef CONFIG_KEXEC
679 request_resource(res, &crashk_res); 681 request_resource(res, &crashk_res);
680#endif 682#endif
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S
index 39677965e161..00b1c2c56454 100644
--- a/arch/x86/kernel/head_32.S
+++ b/arch/x86/kernel/head_32.S
@@ -79,22 +79,30 @@ INIT_MAP_BEYOND_END = BOOTBITMAP_SIZE + (PAGE_TABLE_SIZE + ALLOCATOR_SLOP)*PAGE_
79 */ 79 */
80.section .text.head,"ax",@progbits 80.section .text.head,"ax",@progbits
81ENTRY(startup_32) 81ENTRY(startup_32)
82 /* check to see if KEEP_SEGMENTS flag is meaningful */
83 cmpw $0x207, BP_version(%esi)
84 jb 1f
85
86 /* test KEEP_SEGMENTS flag to see if the bootloader is asking
87 us to not reload segments */
88 testb $(1<<6), BP_loadflags(%esi)
89 jnz 2f
82 90
83/* 91/*
84 * Set segments to known values. 92 * Set segments to known values.
85 */ 93 */
86 cld 941: lgdt boot_gdt_descr - __PAGE_OFFSET
87 lgdt boot_gdt_descr - __PAGE_OFFSET
88 movl $(__BOOT_DS),%eax 95 movl $(__BOOT_DS),%eax
89 movl %eax,%ds 96 movl %eax,%ds
90 movl %eax,%es 97 movl %eax,%es
91 movl %eax,%fs 98 movl %eax,%fs
92 movl %eax,%gs 99 movl %eax,%gs
1002:
93 101
94/* 102/*
95 * Clear BSS first so that there are no surprises... 103 * Clear BSS first so that there are no surprises...
96 * No need to cld as DF is already clear from cld above...
97 */ 104 */
105 cld
98 xorl %eax,%eax 106 xorl %eax,%eax
99 movl $__bss_start - __PAGE_OFFSET,%edi 107 movl $__bss_start - __PAGE_OFFSET,%edi
100 movl $__bss_stop - __PAGE_OFFSET,%ecx 108 movl $__bss_stop - __PAGE_OFFSET,%ecx
@@ -128,6 +136,35 @@ ENTRY(startup_32)
128 movsl 136 movsl
1291: 1371:
130 138
139#ifdef CONFIG_PARAVIRT
140 cmpw $0x207, (boot_params + BP_version - __PAGE_OFFSET)
141 jb default_entry
142
143 /* Paravirt-compatible boot parameters. Look to see what architecture
144 we're booting under. */
145 movl (boot_params + BP_hardware_subarch - __PAGE_OFFSET), %eax
146 cmpl $num_subarch_entries, %eax
147 jae bad_subarch
148
149 movl subarch_entries - __PAGE_OFFSET(,%eax,4), %eax
150 subl $__PAGE_OFFSET, %eax
151 jmp *%eax
152
153bad_subarch:
154WEAK(lguest_entry)
155WEAK(xen_entry)
156 /* Unknown implementation; there's really
157 nothing we can do at this point. */
158 ud2a
159.data
160subarch_entries:
161 .long default_entry /* normal x86/PC */
162 .long lguest_entry /* lguest hypervisor */
163 .long xen_entry /* Xen hypervisor */
164num_subarch_entries = (. - subarch_entries) / 4
165.previous
166#endif /* CONFIG_PARAVIRT */
167
131/* 168/*
132 * Initialize page tables. This creates a PDE and a set of page 169 * Initialize page tables. This creates a PDE and a set of page
133 * tables, which are located immediately beyond _end. The variable 170 * tables, which are located immediately beyond _end. The variable
@@ -140,6 +177,7 @@ ENTRY(startup_32)
140 */ 177 */
141page_pde_offset = (__PAGE_OFFSET >> 20); 178page_pde_offset = (__PAGE_OFFSET >> 20);
142 179
180default_entry:
143 movl $(pg0 - __PAGE_OFFSET), %edi 181 movl $(pg0 - __PAGE_OFFSET), %edi
144 movl $(swapper_pg_dir - __PAGE_OFFSET), %edx 182 movl $(swapper_pg_dir - __PAGE_OFFSET), %edx
145 movl $0x007, %eax /* 0x007 = PRESENT+RW+USER */ 183 movl $0x007, %eax /* 0x007 = PRESENT+RW+USER */
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c
index b3c2d268d708..953328b55a30 100644
--- a/arch/x86/kernel/io_apic_64.c
+++ b/arch/x86/kernel/io_apic_64.c
@@ -31,6 +31,7 @@
31#include <linux/sysdev.h> 31#include <linux/sysdev.h>
32#include <linux/msi.h> 32#include <linux/msi.h>
33#include <linux/htirq.h> 33#include <linux/htirq.h>
34#include <linux/dmar.h>
34#ifdef CONFIG_ACPI 35#ifdef CONFIG_ACPI
35#include <acpi/acpi_bus.h> 36#include <acpi/acpi_bus.h>
36#endif 37#endif
@@ -2031,8 +2032,64 @@ void arch_teardown_msi_irq(unsigned int irq)
2031 destroy_irq(irq); 2032 destroy_irq(irq);
2032} 2033}
2033 2034
2034#endif /* CONFIG_PCI_MSI */ 2035#ifdef CONFIG_DMAR
2036#ifdef CONFIG_SMP
2037static void dmar_msi_set_affinity(unsigned int irq, cpumask_t mask)
2038{
2039 struct irq_cfg *cfg = irq_cfg + irq;
2040 struct msi_msg msg;
2041 unsigned int dest;
2042 cpumask_t tmp;
2043
2044 cpus_and(tmp, mask, cpu_online_map);
2045 if (cpus_empty(tmp))
2046 return;
2047
2048 if (assign_irq_vector(irq, mask))
2049 return;
2050
2051 cpus_and(tmp, cfg->domain, mask);
2052 dest = cpu_mask_to_apicid(tmp);
2053
2054 dmar_msi_read(irq, &msg);
2055
2056 msg.data &= ~MSI_DATA_VECTOR_MASK;
2057 msg.data |= MSI_DATA_VECTOR(cfg->vector);
2058 msg.address_lo &= ~MSI_ADDR_DEST_ID_MASK;
2059 msg.address_lo |= MSI_ADDR_DEST_ID(dest);
2060
2061 dmar_msi_write(irq, &msg);
2062 irq_desc[irq].affinity = mask;
2063}
2064#endif /* CONFIG_SMP */
2065
2066struct irq_chip dmar_msi_type = {
2067 .name = "DMAR_MSI",
2068 .unmask = dmar_msi_unmask,
2069 .mask = dmar_msi_mask,
2070 .ack = ack_apic_edge,
2071#ifdef CONFIG_SMP
2072 .set_affinity = dmar_msi_set_affinity,
2073#endif
2074 .retrigger = ioapic_retrigger_irq,
2075};
2076
2077int arch_setup_dmar_msi(unsigned int irq)
2078{
2079 int ret;
2080 struct msi_msg msg;
2081
2082 ret = msi_compose_msg(NULL, irq, &msg);
2083 if (ret < 0)
2084 return ret;
2085 dmar_msi_write(irq, &msg);
2086 set_irq_chip_and_handler_name(irq, &dmar_msi_type, handle_edge_irq,
2087 "edge");
2088 return 0;
2089}
2090#endif
2035 2091
2092#endif /* CONFIG_PCI_MSI */
2036/* 2093/*
2037 * Hypertransport interrupt support 2094 * Hypertransport interrupt support
2038 */ 2095 */
diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c
index 5098f58063a5..1a20fe31338b 100644
--- a/arch/x86/kernel/pci-calgary_64.c
+++ b/arch/x86/kernel/pci-calgary_64.c
@@ -411,8 +411,10 @@ static int calgary_nontranslate_map_sg(struct device* dev,
411 int i; 411 int i;
412 412
413 for_each_sg(sg, s, nelems, i) { 413 for_each_sg(sg, s, nelems, i) {
414 BUG_ON(!s->page); 414 struct page *p = sg_page(s);
415 s->dma_address = virt_to_bus(page_address(s->page) +s->offset); 415
416 BUG_ON(!p);
417 s->dma_address = virt_to_bus(sg_virt(s));
416 s->dma_length = s->length; 418 s->dma_length = s->length;
417 } 419 }
418 return nelems; 420 return nelems;
@@ -432,9 +434,9 @@ static int calgary_map_sg(struct device *dev, struct scatterlist *sg,
432 return calgary_nontranslate_map_sg(dev, sg, nelems, direction); 434 return calgary_nontranslate_map_sg(dev, sg, nelems, direction);
433 435
434 for_each_sg(sg, s, nelems, i) { 436 for_each_sg(sg, s, nelems, i) {
435 BUG_ON(!s->page); 437 BUG_ON(!sg_page(s));
436 438
437 vaddr = (unsigned long)page_address(s->page) + s->offset; 439 vaddr = (unsigned long) sg_virt(s);
438 npages = num_dma_pages(vaddr, s->length); 440 npages = num_dma_pages(vaddr, s->length);
439 441
440 entry = iommu_range_alloc(tbl, npages); 442 entry = iommu_range_alloc(tbl, npages);
diff --git a/arch/x86/kernel/pci-dma_64.c b/arch/x86/kernel/pci-dma_64.c
index afaf9f12c032..393e2725a6e3 100644
--- a/arch/x86/kernel/pci-dma_64.c
+++ b/arch/x86/kernel/pci-dma_64.c
@@ -7,6 +7,7 @@
7#include <linux/string.h> 7#include <linux/string.h>
8#include <linux/pci.h> 8#include <linux/pci.h>
9#include <linux/module.h> 9#include <linux/module.h>
10#include <linux/dmar.h>
10#include <asm/io.h> 11#include <asm/io.h>
11#include <asm/iommu.h> 12#include <asm/iommu.h>
12#include <asm/calgary.h> 13#include <asm/calgary.h>
@@ -305,6 +306,8 @@ void __init pci_iommu_alloc(void)
305 detect_calgary(); 306 detect_calgary();
306#endif 307#endif
307 308
309 detect_intel_iommu();
310
308#ifdef CONFIG_SWIOTLB 311#ifdef CONFIG_SWIOTLB
309 pci_swiotlb_init(); 312 pci_swiotlb_init();
310#endif 313#endif
@@ -316,6 +319,8 @@ static int __init pci_iommu_init(void)
316 calgary_iommu_init(); 319 calgary_iommu_init();
317#endif 320#endif
318 321
322 intel_iommu_init();
323
319#ifdef CONFIG_IOMMU 324#ifdef CONFIG_IOMMU
320 gart_iommu_init(); 325 gart_iommu_init();
321#endif 326#endif
diff --git a/arch/x86/kernel/pci-gart_64.c b/arch/x86/kernel/pci-gart_64.c
index 5cdfab65e93f..c56e9ee64964 100644
--- a/arch/x86/kernel/pci-gart_64.c
+++ b/arch/x86/kernel/pci-gart_64.c
@@ -302,7 +302,7 @@ static int dma_map_sg_nonforce(struct device *dev, struct scatterlist *sg,
302#endif 302#endif
303 303
304 for_each_sg(sg, s, nents, i) { 304 for_each_sg(sg, s, nents, i) {
305 unsigned long addr = page_to_phys(s->page) + s->offset; 305 unsigned long addr = sg_phys(s);
306 if (nonforced_iommu(dev, addr, s->length)) { 306 if (nonforced_iommu(dev, addr, s->length)) {
307 addr = dma_map_area(dev, addr, s->length, dir); 307 addr = dma_map_area(dev, addr, s->length, dir);
308 if (addr == bad_dma_address) { 308 if (addr == bad_dma_address) {
@@ -397,7 +397,7 @@ static int gart_map_sg(struct device *dev, struct scatterlist *sg, int nents,
397 start_sg = sgmap = sg; 397 start_sg = sgmap = sg;
398 ps = NULL; /* shut up gcc */ 398 ps = NULL; /* shut up gcc */
399 for_each_sg(sg, s, nents, i) { 399 for_each_sg(sg, s, nents, i) {
400 dma_addr_t addr = page_to_phys(s->page) + s->offset; 400 dma_addr_t addr = sg_phys(s);
401 s->dma_address = addr; 401 s->dma_address = addr;
402 BUG_ON(s->length == 0); 402 BUG_ON(s->length == 0);
403 403
diff --git a/arch/x86/kernel/pci-nommu_64.c b/arch/x86/kernel/pci-nommu_64.c
index e85d4360360c..faf70bdca335 100644
--- a/arch/x86/kernel/pci-nommu_64.c
+++ b/arch/x86/kernel/pci-nommu_64.c
@@ -62,8 +62,8 @@ static int nommu_map_sg(struct device *hwdev, struct scatterlist *sg,
62 int i; 62 int i;
63 63
64 for_each_sg(sg, s, nents, i) { 64 for_each_sg(sg, s, nents, i) {
65 BUG_ON(!s->page); 65 BUG_ON(!sg_page(s));
66 s->dma_address = virt_to_bus(page_address(s->page) +s->offset); 66 s->dma_address = virt_to_bus(sg_virt(s));
67 if (!check_addr("map_sg", hwdev, s->dma_address, s->length)) 67 if (!check_addr("map_sg", hwdev, s->dma_address, s->length))
68 return 0; 68 return 0;
69 s->dma_length = s->length; 69 s->dma_length = s->length;
diff --git a/arch/x86/kernel/setup_32.c b/arch/x86/kernel/setup_32.c
index ba2e165a8a0f..cc0e91447b76 100644
--- a/arch/x86/kernel/setup_32.c
+++ b/arch/x86/kernel/setup_32.c
@@ -60,6 +60,7 @@
60#include <asm/vmi.h> 60#include <asm/vmi.h>
61#include <setup_arch.h> 61#include <setup_arch.h>
62#include <bios_ebda.h> 62#include <bios_ebda.h>
63#include <asm/cacheflush.h>
63 64
64/* This value is set up by the early boot code to point to the value 65/* This value is set up by the early boot code to point to the value
65 immediately after the boot time page tables. It contains a *physical* 66 immediately after the boot time page tables. It contains a *physical*
@@ -73,6 +74,7 @@ int disable_pse __devinitdata = 0;
73 */ 74 */
74extern struct resource code_resource; 75extern struct resource code_resource;
75extern struct resource data_resource; 76extern struct resource data_resource;
77extern struct resource bss_resource;
76 78
77/* cpu data as detected by the assembly code in head.S */ 79/* cpu data as detected by the assembly code in head.S */
78struct cpuinfo_x86 new_cpu_data __cpuinitdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 }; 80struct cpuinfo_x86 new_cpu_data __cpuinitdata = { 0, 0, 0, 0, -1, 1, 0, 0, -1 };
@@ -600,6 +602,8 @@ void __init setup_arch(char **cmdline_p)
600 code_resource.end = virt_to_phys(_etext)-1; 602 code_resource.end = virt_to_phys(_etext)-1;
601 data_resource.start = virt_to_phys(_etext); 603 data_resource.start = virt_to_phys(_etext);
602 data_resource.end = virt_to_phys(_edata)-1; 604 data_resource.end = virt_to_phys(_edata)-1;
605 bss_resource.start = virt_to_phys(&__bss_start);
606 bss_resource.end = virt_to_phys(&__bss_stop)-1;
603 607
604 parse_early_param(); 608 parse_early_param();
605 609
diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c
index 31322d42eaae..e7a9e36bd52d 100644
--- a/arch/x86/kernel/setup_64.c
+++ b/arch/x86/kernel/setup_64.c
@@ -58,6 +58,7 @@
58#include <asm/numa.h> 58#include <asm/numa.h>
59#include <asm/sections.h> 59#include <asm/sections.h>
60#include <asm/dmi.h> 60#include <asm/dmi.h>
61#include <asm/cacheflush.h>
61 62
62/* 63/*
63 * Machine setup.. 64 * Machine setup..
@@ -133,6 +134,12 @@ struct resource code_resource = {
133 .end = 0, 134 .end = 0,
134 .flags = IORESOURCE_RAM, 135 .flags = IORESOURCE_RAM,
135}; 136};
137struct resource bss_resource = {
138 .name = "Kernel bss",
139 .start = 0,
140 .end = 0,
141 .flags = IORESOURCE_RAM,
142};
136 143
137#ifdef CONFIG_PROC_VMCORE 144#ifdef CONFIG_PROC_VMCORE
138/* elfcorehdr= specifies the location of elf core header 145/* elfcorehdr= specifies the location of elf core header
@@ -276,6 +283,8 @@ void __init setup_arch(char **cmdline_p)
276 code_resource.end = virt_to_phys(&_etext)-1; 283 code_resource.end = virt_to_phys(&_etext)-1;
277 data_resource.start = virt_to_phys(&_etext); 284 data_resource.start = virt_to_phys(&_etext);
278 data_resource.end = virt_to_phys(&_edata)-1; 285 data_resource.end = virt_to_phys(&_edata)-1;
286 bss_resource.start = virt_to_phys(&__bss_start);
287 bss_resource.end = virt_to_phys(&__bss_stop)-1;
279 288
280 early_identify_cpu(&boot_cpu_data); 289 early_identify_cpu(&boot_cpu_data);
281 290
diff --git a/arch/x86/lguest/Kconfig b/arch/x86/lguest/Kconfig
new file mode 100644
index 000000000000..c4dffbeea5e1
--- /dev/null
+++ b/arch/x86/lguest/Kconfig
@@ -0,0 +1,14 @@
1config LGUEST_GUEST
2 bool "Lguest guest support"
3 select PARAVIRT
4 depends on !X86_PAE
5 select VIRTIO
6 select VIRTIO_RING
7 select VIRTIO_CONSOLE
8 help
9 Lguest is a tiny in-kernel hypervisor. Selecting this will
10 allow your kernel to boot under lguest. This option will increase
11 your kernel size by about 6k. If in doubt, say N.
12
13 If you say Y here, make sure you say Y (or M) to the virtio block
14 and net drivers which lguest needs.
diff --git a/arch/x86/lguest/Makefile b/arch/x86/lguest/Makefile
new file mode 100644
index 000000000000..27f0c9ed7f60
--- /dev/null
+++ b/arch/x86/lguest/Makefile
@@ -0,0 +1 @@
obj-y := i386_head.o boot.o
diff --git a/arch/x86/lguest/boot.c b/arch/x86/lguest/boot.c
new file mode 100644
index 000000000000..d2235db4085f
--- /dev/null
+++ b/arch/x86/lguest/boot.c
@@ -0,0 +1,1070 @@
1/*P:010
2 * A hypervisor allows multiple Operating Systems to run on a single machine.
3 * To quote David Wheeler: "Any problem in computer science can be solved with
4 * another layer of indirection."
5 *
6 * We keep things simple in two ways. First, we start with a normal Linux
7 * kernel and insert a module (lg.ko) which allows us to run other Linux
8 * kernels the same way we'd run processes. We call the first kernel the Host,
9 * and the others the Guests. The program which sets up and configures Guests
10 * (such as the example in Documentation/lguest/lguest.c) is called the
11 * Launcher.
12 *
13 * Secondly, we only run specially modified Guests, not normal kernels. When
14 * you set CONFIG_LGUEST to 'y' or 'm', this automatically sets
15 * CONFIG_LGUEST_GUEST=y, which compiles this file into the kernel so it knows
16 * how to be a Guest. This means that you can use the same kernel you boot
17 * normally (ie. as a Host) as a Guest.
18 *
19 * These Guests know that they cannot do privileged operations, such as disable
20 * interrupts, and that they have to ask the Host to do such things explicitly.
21 * This file consists of all the replacements for such low-level native
22 * hardware operations: these special Guest versions call the Host.
23 *
24 * So how does the kernel know it's a Guest? The Guest starts at a special
25 * entry point marked with a magic string, which sets up a few things then
26 * calls here. We replace the native functions various "paravirt" structures
27 * with our Guest versions, then boot like normal. :*/
28
29/*
30 * Copyright (C) 2006, Rusty Russell <rusty@rustcorp.com.au> IBM Corporation.
31 *
32 * This program is free software; you can redistribute it and/or modify
33 * it under the terms of the GNU General Public License as published by
34 * the Free Software Foundation; either version 2 of the License, or
35 * (at your option) any later version.
36 *
37 * This program is distributed in the hope that it will be useful, but
38 * WITHOUT ANY WARRANTY; without even the implied warranty of
39 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
40 * NON INFRINGEMENT. See the GNU General Public License for more
41 * details.
42 *
43 * You should have received a copy of the GNU General Public License
44 * along with this program; if not, write to the Free Software
45 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
46 */
47#include <linux/kernel.h>
48#include <linux/start_kernel.h>
49#include <linux/string.h>
50#include <linux/console.h>
51#include <linux/screen_info.h>
52#include <linux/irq.h>
53#include <linux/interrupt.h>
54#include <linux/clocksource.h>
55#include <linux/clockchips.h>
56#include <linux/lguest.h>
57#include <linux/lguest_launcher.h>
58#include <linux/virtio_console.h>
59#include <asm/paravirt.h>
60#include <asm/param.h>
61#include <asm/page.h>
62#include <asm/pgtable.h>
63#include <asm/desc.h>
64#include <asm/setup.h>
65#include <asm/e820.h>
66#include <asm/mce.h>
67#include <asm/io.h>
68#include <asm/i387.h>
69
70/*G:010 Welcome to the Guest!
71 *
72 * The Guest in our tale is a simple creature: identical to the Host but
73 * behaving in simplified but equivalent ways. In particular, the Guest is the
74 * same kernel as the Host (or at least, built from the same source code). :*/
75
76/* Declarations for definitions in lguest_guest.S */
77extern char lguest_noirq_start[], lguest_noirq_end[];
78extern const char lgstart_cli[], lgend_cli[];
79extern const char lgstart_sti[], lgend_sti[];
80extern const char lgstart_popf[], lgend_popf[];
81extern const char lgstart_pushf[], lgend_pushf[];
82extern const char lgstart_iret[], lgend_iret[];
83extern void lguest_iret(void);
84
85struct lguest_data lguest_data = {
86 .hcall_status = { [0 ... LHCALL_RING_SIZE-1] = 0xFF },
87 .noirq_start = (u32)lguest_noirq_start,
88 .noirq_end = (u32)lguest_noirq_end,
89 .kernel_address = PAGE_OFFSET,
90 .blocked_interrupts = { 1 }, /* Block timer interrupts */
91 .syscall_vec = SYSCALL_VECTOR,
92};
93static cycle_t clock_base;
94
95/*G:035 Notice the lazy_hcall() above, rather than hcall(). This is our first
96 * real optimization trick!
97 *
98 * When lazy_mode is set, it means we're allowed to defer all hypercalls and do
99 * them as a batch when lazy_mode is eventually turned off. Because hypercalls
100 * are reasonably expensive, batching them up makes sense. For example, a
101 * large mmap might update dozens of page table entries: that code calls
102 * paravirt_enter_lazy_mmu(), does the dozen updates, then calls
103 * lguest_leave_lazy_mode().
104 *
105 * So, when we're in lazy mode, we call async_hypercall() to store the call for
106 * future processing. When lazy mode is turned off we issue a hypercall to
107 * flush the stored calls.
108 */
109static void lguest_leave_lazy_mode(void)
110{
111 paravirt_leave_lazy(paravirt_get_lazy_mode());
112 hcall(LHCALL_FLUSH_ASYNC, 0, 0, 0);
113}
114
115static void lazy_hcall(unsigned long call,
116 unsigned long arg1,
117 unsigned long arg2,
118 unsigned long arg3)
119{
120 if (paravirt_get_lazy_mode() == PARAVIRT_LAZY_NONE)
121 hcall(call, arg1, arg2, arg3);
122 else
123 async_hcall(call, arg1, arg2, arg3);
124}
125
126/* async_hcall() is pretty simple: I'm quite proud of it really. We have a
127 * ring buffer of stored hypercalls which the Host will run though next time we
128 * do a normal hypercall. Each entry in the ring has 4 slots for the hypercall
129 * arguments, and a "hcall_status" word which is 0 if the call is ready to go,
130 * and 255 once the Host has finished with it.
131 *
132 * If we come around to a slot which hasn't been finished, then the table is
133 * full and we just make the hypercall directly. This has the nice side
134 * effect of causing the Host to run all the stored calls in the ring buffer
135 * which empties it for next time! */
136void async_hcall(unsigned long call,
137 unsigned long arg1, unsigned long arg2, unsigned long arg3)
138{
139 /* Note: This code assumes we're uniprocessor. */
140 static unsigned int next_call;
141 unsigned long flags;
142
143 /* Disable interrupts if not already disabled: we don't want an
144 * interrupt handler making a hypercall while we're already doing
145 * one! */
146 local_irq_save(flags);
147 if (lguest_data.hcall_status[next_call] != 0xFF) {
148 /* Table full, so do normal hcall which will flush table. */
149 hcall(call, arg1, arg2, arg3);
150 } else {
151 lguest_data.hcalls[next_call].arg0 = call;
152 lguest_data.hcalls[next_call].arg1 = arg1;
153 lguest_data.hcalls[next_call].arg2 = arg2;
154 lguest_data.hcalls[next_call].arg3 = arg3;
155 /* Arguments must all be written before we mark it to go */
156 wmb();
157 lguest_data.hcall_status[next_call] = 0;
158 if (++next_call == LHCALL_RING_SIZE)
159 next_call = 0;
160 }
161 local_irq_restore(flags);
162}
163/*:*/
164
165/*G:033
166 * Here are our first native-instruction replacements: four functions for
167 * interrupt control.
168 *
169 * The simplest way of implementing these would be to have "turn interrupts
170 * off" and "turn interrupts on" hypercalls. Unfortunately, this is too slow:
171 * these are by far the most commonly called functions of those we override.
172 *
173 * So instead we keep an "irq_enabled" field inside our "struct lguest_data",
174 * which the Guest can update with a single instruction. The Host knows to
175 * check there when it wants to deliver an interrupt.
176 */
177
178/* save_flags() is expected to return the processor state (ie. "eflags"). The
179 * eflags word contains all kind of stuff, but in practice Linux only cares
180 * about the interrupt flag. Our "save_flags()" just returns that. */
181static unsigned long save_fl(void)
182{
183 return lguest_data.irq_enabled;
184}
185
186/* "restore_flags" just sets the flags back to the value given. */
187static void restore_fl(unsigned long flags)
188{
189 lguest_data.irq_enabled = flags;
190}
191
192/* Interrupts go off... */
193static void irq_disable(void)
194{
195 lguest_data.irq_enabled = 0;
196}
197
198/* Interrupts go on... */
199static void irq_enable(void)
200{
201 lguest_data.irq_enabled = X86_EFLAGS_IF;
202}
203/*:*/
204/*M:003 Note that we don't check for outstanding interrupts when we re-enable
205 * them (or when we unmask an interrupt). This seems to work for the moment,
206 * since interrupts are rare and we'll just get the interrupt on the next timer
207 * tick, but when we turn on CONFIG_NO_HZ, we should revisit this. One way
208 * would be to put the "irq_enabled" field in a page by itself, and have the
209 * Host write-protect it when an interrupt comes in when irqs are disabled.
210 * There will then be a page fault as soon as interrupts are re-enabled. :*/
211
212/*G:034
213 * The Interrupt Descriptor Table (IDT).
214 *
215 * The IDT tells the processor what to do when an interrupt comes in. Each
216 * entry in the table is a 64-bit descriptor: this holds the privilege level,
217 * address of the handler, and... well, who cares? The Guest just asks the
218 * Host to make the change anyway, because the Host controls the real IDT.
219 */
220static void lguest_write_idt_entry(struct desc_struct *dt,
221 int entrynum, u32 low, u32 high)
222{
223 /* Keep the local copy up to date. */
224 write_dt_entry(dt, entrynum, low, high);
225 /* Tell Host about this new entry. */
226 hcall(LHCALL_LOAD_IDT_ENTRY, entrynum, low, high);
227}
228
229/* Changing to a different IDT is very rare: we keep the IDT up-to-date every
230 * time it is written, so we can simply loop through all entries and tell the
231 * Host about them. */
232static void lguest_load_idt(const struct Xgt_desc_struct *desc)
233{
234 unsigned int i;
235 struct desc_struct *idt = (void *)desc->address;
236
237 for (i = 0; i < (desc->size+1)/8; i++)
238 hcall(LHCALL_LOAD_IDT_ENTRY, i, idt[i].a, idt[i].b);
239}
240
241/*
242 * The Global Descriptor Table.
243 *
244 * The Intel architecture defines another table, called the Global Descriptor
245 * Table (GDT). You tell the CPU where it is (and its size) using the "lgdt"
246 * instruction, and then several other instructions refer to entries in the
247 * table. There are three entries which the Switcher needs, so the Host simply
248 * controls the entire thing and the Guest asks it to make changes using the
249 * LOAD_GDT hypercall.
250 *
251 * This is the opposite of the IDT code where we have a LOAD_IDT_ENTRY
252 * hypercall and use that repeatedly to load a new IDT. I don't think it
253 * really matters, but wouldn't it be nice if they were the same?
254 */
255static void lguest_load_gdt(const struct Xgt_desc_struct *desc)
256{
257 BUG_ON((desc->size+1)/8 != GDT_ENTRIES);
258 hcall(LHCALL_LOAD_GDT, __pa(desc->address), GDT_ENTRIES, 0);
259}
260
261/* For a single GDT entry which changes, we do the lazy thing: alter our GDT,
262 * then tell the Host to reload the entire thing. This operation is so rare
263 * that this naive implementation is reasonable. */
264static void lguest_write_gdt_entry(struct desc_struct *dt,
265 int entrynum, u32 low, u32 high)
266{
267 write_dt_entry(dt, entrynum, low, high);
268 hcall(LHCALL_LOAD_GDT, __pa(dt), GDT_ENTRIES, 0);
269}
270
271/* OK, I lied. There are three "thread local storage" GDT entries which change
272 * on every context switch (these three entries are how glibc implements
273 * __thread variables). So we have a hypercall specifically for this case. */
274static void lguest_load_tls(struct thread_struct *t, unsigned int cpu)
275{
276 /* There's one problem which normal hardware doesn't have: the Host
277 * can't handle us removing entries we're currently using. So we clear
278 * the GS register here: if it's needed it'll be reloaded anyway. */
279 loadsegment(gs, 0);
280 lazy_hcall(LHCALL_LOAD_TLS, __pa(&t->tls_array), cpu, 0);
281}
282
283/*G:038 That's enough excitement for now, back to ploughing through each of
284 * the different pv_ops structures (we're about 1/3 of the way through).
285 *
286 * This is the Local Descriptor Table, another weird Intel thingy. Linux only
287 * uses this for some strange applications like Wine. We don't do anything
288 * here, so they'll get an informative and friendly Segmentation Fault. */
289static void lguest_set_ldt(const void *addr, unsigned entries)
290{
291}
292
293/* This loads a GDT entry into the "Task Register": that entry points to a
294 * structure called the Task State Segment. Some comments scattered though the
295 * kernel code indicate that this used for task switching in ages past, along
296 * with blood sacrifice and astrology.
297 *
298 * Now there's nothing interesting in here that we don't get told elsewhere.
299 * But the native version uses the "ltr" instruction, which makes the Host
300 * complain to the Guest about a Segmentation Fault and it'll oops. So we
301 * override the native version with a do-nothing version. */
302static void lguest_load_tr_desc(void)
303{
304}
305
306/* The "cpuid" instruction is a way of querying both the CPU identity
307 * (manufacturer, model, etc) and its features. It was introduced before the
308 * Pentium in 1993 and keeps getting extended by both Intel and AMD. As you
309 * might imagine, after a decade and a half this treatment, it is now a giant
310 * ball of hair. Its entry in the current Intel manual runs to 28 pages.
311 *
312 * This instruction even it has its own Wikipedia entry. The Wikipedia entry
313 * has been translated into 4 languages. I am not making this up!
314 *
315 * We could get funky here and identify ourselves as "GenuineLguest", but
316 * instead we just use the real "cpuid" instruction. Then I pretty much turned
317 * off feature bits until the Guest booted. (Don't say that: you'll damage
318 * lguest sales!) Shut up, inner voice! (Hey, just pointing out that this is
319 * hardly future proof.) Noone's listening! They don't like you anyway,
320 * parenthetic weirdo!
321 *
322 * Replacing the cpuid so we can turn features off is great for the kernel, but
323 * anyone (including userspace) can just use the raw "cpuid" instruction and
324 * the Host won't even notice since it isn't privileged. So we try not to get
325 * too worked up about it. */
326static void lguest_cpuid(unsigned int *eax, unsigned int *ebx,
327 unsigned int *ecx, unsigned int *edx)
328{
329 int function = *eax;
330
331 native_cpuid(eax, ebx, ecx, edx);
332 switch (function) {
333 case 1: /* Basic feature request. */
334 /* We only allow kernel to see SSE3, CMPXCHG16B and SSSE3 */
335 *ecx &= 0x00002201;
336 /* SSE, SSE2, FXSR, MMX, CMOV, CMPXCHG8B, FPU. */
337 *edx &= 0x07808101;
338 /* The Host can do a nice optimization if it knows that the
339 * kernel mappings (addresses above 0xC0000000 or whatever
340 * PAGE_OFFSET is set to) haven't changed. But Linux calls
341 * flush_tlb_user() for both user and kernel mappings unless
342 * the Page Global Enable (PGE) feature bit is set. */
343 *edx |= 0x00002000;
344 break;
345 case 0x80000000:
346 /* Futureproof this a little: if they ask how much extended
347 * processor information there is, limit it to known fields. */
348 if (*eax > 0x80000008)
349 *eax = 0x80000008;
350 break;
351 }
352}
353
354/* Intel has four control registers, imaginatively named cr0, cr2, cr3 and cr4.
355 * I assume there's a cr1, but it hasn't bothered us yet, so we'll not bother
356 * it. The Host needs to know when the Guest wants to change them, so we have
357 * a whole series of functions like read_cr0() and write_cr0().
358 *
359 * We start with CR0. CR0 allows you to turn on and off all kinds of basic
360 * features, but Linux only really cares about one: the horrifically-named Task
361 * Switched (TS) bit at bit 3 (ie. 8)
362 *
363 * What does the TS bit do? Well, it causes the CPU to trap (interrupt 7) if
364 * the floating point unit is used. Which allows us to restore FPU state
365 * lazily after a task switch, and Linux uses that gratefully, but wouldn't a
366 * name like "FPUTRAP bit" be a little less cryptic?
367 *
368 * We store cr0 (and cr3) locally, because the Host never changes it. The
369 * Guest sometimes wants to read it and we'd prefer not to bother the Host
370 * unnecessarily. */
371static unsigned long current_cr0, current_cr3;
372static void lguest_write_cr0(unsigned long val)
373{
374 /* 8 == TS bit. */
375 lazy_hcall(LHCALL_TS, val & 8, 0, 0);
376 current_cr0 = val;
377}
378
379static unsigned long lguest_read_cr0(void)
380{
381 return current_cr0;
382}
383
384/* Intel provided a special instruction to clear the TS bit for people too cool
385 * to use write_cr0() to do it. This "clts" instruction is faster, because all
386 * the vowels have been optimized out. */
387static void lguest_clts(void)
388{
389 lazy_hcall(LHCALL_TS, 0, 0, 0);
390 current_cr0 &= ~8U;
391}
392
393/* CR2 is the virtual address of the last page fault, which the Guest only ever
394 * reads. The Host kindly writes this into our "struct lguest_data", so we
395 * just read it out of there. */
396static unsigned long lguest_read_cr2(void)
397{
398 return lguest_data.cr2;
399}
400
401/* CR3 is the current toplevel pagetable page: the principle is the same as
402 * cr0. Keep a local copy, and tell the Host when it changes. */
403static void lguest_write_cr3(unsigned long cr3)
404{
405 lazy_hcall(LHCALL_NEW_PGTABLE, cr3, 0, 0);
406 current_cr3 = cr3;
407}
408
409static unsigned long lguest_read_cr3(void)
410{
411 return current_cr3;
412}
413
414/* CR4 is used to enable and disable PGE, but we don't care. */
415static unsigned long lguest_read_cr4(void)
416{
417 return 0;
418}
419
420static void lguest_write_cr4(unsigned long val)
421{
422}
423
424/*
425 * Page Table Handling.
426 *
427 * Now would be a good time to take a rest and grab a coffee or similarly
428 * relaxing stimulant. The easy parts are behind us, and the trek gradually
429 * winds uphill from here.
430 *
431 * Quick refresher: memory is divided into "pages" of 4096 bytes each. The CPU
432 * maps virtual addresses to physical addresses using "page tables". We could
433 * use one huge index of 1 million entries: each address is 4 bytes, so that's
434 * 1024 pages just to hold the page tables. But since most virtual addresses
435 * are unused, we use a two level index which saves space. The CR3 register
436 * contains the physical address of the top level "page directory" page, which
437 * contains physical addresses of up to 1024 second-level pages. Each of these
438 * second level pages contains up to 1024 physical addresses of actual pages,
439 * or Page Table Entries (PTEs).
440 *
441 * Here's a diagram, where arrows indicate physical addresses:
442 *
443 * CR3 ---> +---------+
444 * | --------->+---------+
445 * | | | PADDR1 |
446 * Top-level | | PADDR2 |
447 * (PMD) page | | |
448 * | | Lower-level |
449 * | | (PTE) page |
450 * | | | |
451 * .... ....
452 *
453 * So to convert a virtual address to a physical address, we look up the top
454 * level, which points us to the second level, which gives us the physical
455 * address of that page. If the top level entry was not present, or the second
456 * level entry was not present, then the virtual address is invalid (we
457 * say "the page was not mapped").
458 *
459 * Put another way, a 32-bit virtual address is divided up like so:
460 *
461 * 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
462 * |<---- 10 bits ---->|<---- 10 bits ---->|<------ 12 bits ------>|
463 * Index into top Index into second Offset within page
464 * page directory page pagetable page
465 *
466 * The kernel spends a lot of time changing both the top-level page directory
467 * and lower-level pagetable pages. The Guest doesn't know physical addresses,
468 * so while it maintains these page tables exactly like normal, it also needs
469 * to keep the Host informed whenever it makes a change: the Host will create
470 * the real page tables based on the Guests'.
471 */
472
473/* The Guest calls this to set a second-level entry (pte), ie. to map a page
474 * into a process' address space. We set the entry then tell the Host the
475 * toplevel and address this corresponds to. The Guest uses one pagetable per
476 * process, so we need to tell the Host which one we're changing (mm->pgd). */
477static void lguest_set_pte_at(struct mm_struct *mm, unsigned long addr,
478 pte_t *ptep, pte_t pteval)
479{
480 *ptep = pteval;
481 lazy_hcall(LHCALL_SET_PTE, __pa(mm->pgd), addr, pteval.pte_low);
482}
483
484/* The Guest calls this to set a top-level entry. Again, we set the entry then
485 * tell the Host which top-level page we changed, and the index of the entry we
486 * changed. */
487static void lguest_set_pmd(pmd_t *pmdp, pmd_t pmdval)
488{
489 *pmdp = pmdval;
490 lazy_hcall(LHCALL_SET_PMD, __pa(pmdp)&PAGE_MASK,
491 (__pa(pmdp)&(PAGE_SIZE-1))/4, 0);
492}
493
494/* There are a couple of legacy places where the kernel sets a PTE, but we
495 * don't know the top level any more. This is useless for us, since we don't
496 * know which pagetable is changing or what address, so we just tell the Host
497 * to forget all of them. Fortunately, this is very rare.
498 *
499 * ... except in early boot when the kernel sets up the initial pagetables,
500 * which makes booting astonishingly slow. So we don't even tell the Host
501 * anything changed until we've done the first page table switch.
502 */
503static void lguest_set_pte(pte_t *ptep, pte_t pteval)
504{
505 *ptep = pteval;
506 /* Don't bother with hypercall before initial setup. */
507 if (current_cr3)
508 lazy_hcall(LHCALL_FLUSH_TLB, 1, 0, 0);
509}
510
511/* Unfortunately for Lguest, the pv_mmu_ops for page tables were based on
512 * native page table operations. On native hardware you can set a new page
513 * table entry whenever you want, but if you want to remove one you have to do
514 * a TLB flush (a TLB is a little cache of page table entries kept by the CPU).
515 *
516 * So the lguest_set_pte_at() and lguest_set_pmd() functions above are only
517 * called when a valid entry is written, not when it's removed (ie. marked not
518 * present). Instead, this is where we come when the Guest wants to remove a
519 * page table entry: we tell the Host to set that entry to 0 (ie. the present
520 * bit is zero). */
521static void lguest_flush_tlb_single(unsigned long addr)
522{
523 /* Simply set it to zero: if it was not, it will fault back in. */
524 lazy_hcall(LHCALL_SET_PTE, current_cr3, addr, 0);
525}
526
527/* This is what happens after the Guest has removed a large number of entries.
528 * This tells the Host that any of the page table entries for userspace might
529 * have changed, ie. virtual addresses below PAGE_OFFSET. */
530static void lguest_flush_tlb_user(void)
531{
532 lazy_hcall(LHCALL_FLUSH_TLB, 0, 0, 0);
533}
534
535/* This is called when the kernel page tables have changed. That's not very
536 * common (unless the Guest is using highmem, which makes the Guest extremely
537 * slow), so it's worth separating this from the user flushing above. */
538static void lguest_flush_tlb_kernel(void)
539{
540 lazy_hcall(LHCALL_FLUSH_TLB, 1, 0, 0);
541}
542
543/*
544 * The Unadvanced Programmable Interrupt Controller.
545 *
546 * This is an attempt to implement the simplest possible interrupt controller.
547 * I spent some time looking though routines like set_irq_chip_and_handler,
548 * set_irq_chip_and_handler_name, set_irq_chip_data and set_phasers_to_stun and
549 * I *think* this is as simple as it gets.
550 *
551 * We can tell the Host what interrupts we want blocked ready for using the
552 * lguest_data.interrupts bitmap, so disabling (aka "masking") them is as
553 * simple as setting a bit. We don't actually "ack" interrupts as such, we
554 * just mask and unmask them. I wonder if we should be cleverer?
555 */
556static void disable_lguest_irq(unsigned int irq)
557{
558 set_bit(irq, lguest_data.blocked_interrupts);
559}
560
561static void enable_lguest_irq(unsigned int irq)
562{
563 clear_bit(irq, lguest_data.blocked_interrupts);
564}
565
566/* This structure describes the lguest IRQ controller. */
567static struct irq_chip lguest_irq_controller = {
568 .name = "lguest",
569 .mask = disable_lguest_irq,
570 .mask_ack = disable_lguest_irq,
571 .unmask = enable_lguest_irq,
572};
573
574/* This sets up the Interrupt Descriptor Table (IDT) entry for each hardware
575 * interrupt (except 128, which is used for system calls), and then tells the
576 * Linux infrastructure that each interrupt is controlled by our level-based
577 * lguest interrupt controller. */
578static void __init lguest_init_IRQ(void)
579{
580 unsigned int i;
581
582 for (i = 0; i < LGUEST_IRQS; i++) {
583 int vector = FIRST_EXTERNAL_VECTOR + i;
584 if (vector != SYSCALL_VECTOR) {
585 set_intr_gate(vector, interrupt[i]);
586 set_irq_chip_and_handler(i, &lguest_irq_controller,
587 handle_level_irq);
588 }
589 }
590 /* This call is required to set up for 4k stacks, where we have
591 * separate stacks for hard and soft interrupts. */
592 irq_ctx_init(smp_processor_id());
593}
594
595/*
596 * Time.
597 *
598 * It would be far better for everyone if the Guest had its own clock, but
599 * until then the Host gives us the time on every interrupt.
600 */
601static unsigned long lguest_get_wallclock(void)
602{
603 return lguest_data.time.tv_sec;
604}
605
606static cycle_t lguest_clock_read(void)
607{
608 unsigned long sec, nsec;
609
610 /* If the Host tells the TSC speed, we can trust that. */
611 if (lguest_data.tsc_khz)
612 return native_read_tsc();
613
614 /* If we can't use the TSC, we read the time value written by the Host.
615 * Since it's in two parts (seconds and nanoseconds), we risk reading
616 * it just as it's changing from 99 & 0.999999999 to 100 and 0, and
617 * getting 99 and 0. As Linux tends to come apart under the stress of
618 * time travel, we must be careful: */
619 do {
620 /* First we read the seconds part. */
621 sec = lguest_data.time.tv_sec;
622 /* This read memory barrier tells the compiler and the CPU that
623 * this can't be reordered: we have to complete the above
624 * before going on. */
625 rmb();
626 /* Now we read the nanoseconds part. */
627 nsec = lguest_data.time.tv_nsec;
628 /* Make sure we've done that. */
629 rmb();
630 /* Now if the seconds part has changed, try again. */
631 } while (unlikely(lguest_data.time.tv_sec != sec));
632
633 /* Our non-TSC clock is in real nanoseconds. */
634 return sec*1000000000ULL + nsec;
635}
636
637/* This is what we tell the kernel is our clocksource. */
638static struct clocksource lguest_clock = {
639 .name = "lguest",
640 .rating = 400,
641 .read = lguest_clock_read,
642 .mask = CLOCKSOURCE_MASK(64),
643 .mult = 1 << 22,
644 .shift = 22,
645 .flags = CLOCK_SOURCE_IS_CONTINUOUS,
646};
647
648/* The "scheduler clock" is just our real clock, adjusted to start at zero */
649static unsigned long long lguest_sched_clock(void)
650{
651 return cyc2ns(&lguest_clock, lguest_clock_read() - clock_base);
652}
653
654/* We also need a "struct clock_event_device": Linux asks us to set it to go
655 * off some time in the future. Actually, James Morris figured all this out, I
656 * just applied the patch. */
657static int lguest_clockevent_set_next_event(unsigned long delta,
658 struct clock_event_device *evt)
659{
660 if (delta < LG_CLOCK_MIN_DELTA) {
661 if (printk_ratelimit())
662 printk(KERN_DEBUG "%s: small delta %lu ns\n",
663 __FUNCTION__, delta);
664 return -ETIME;
665 }
666 hcall(LHCALL_SET_CLOCKEVENT, delta, 0, 0);
667 return 0;
668}
669
670static void lguest_clockevent_set_mode(enum clock_event_mode mode,
671 struct clock_event_device *evt)
672{
673 switch (mode) {
674 case CLOCK_EVT_MODE_UNUSED:
675 case CLOCK_EVT_MODE_SHUTDOWN:
676 /* A 0 argument shuts the clock down. */
677 hcall(LHCALL_SET_CLOCKEVENT, 0, 0, 0);
678 break;
679 case CLOCK_EVT_MODE_ONESHOT:
680 /* This is what we expect. */
681 break;
682 case CLOCK_EVT_MODE_PERIODIC:
683 BUG();
684 case CLOCK_EVT_MODE_RESUME:
685 break;
686 }
687}
688
689/* This describes our primitive timer chip. */
690static struct clock_event_device lguest_clockevent = {
691 .name = "lguest",
692 .features = CLOCK_EVT_FEAT_ONESHOT,
693 .set_next_event = lguest_clockevent_set_next_event,
694 .set_mode = lguest_clockevent_set_mode,
695 .rating = INT_MAX,
696 .mult = 1,
697 .shift = 0,
698 .min_delta_ns = LG_CLOCK_MIN_DELTA,
699 .max_delta_ns = LG_CLOCK_MAX_DELTA,
700};
701
702/* This is the Guest timer interrupt handler (hardware interrupt 0). We just
703 * call the clockevent infrastructure and it does whatever needs doing. */
704static void lguest_time_irq(unsigned int irq, struct irq_desc *desc)
705{
706 unsigned long flags;
707
708 /* Don't interrupt us while this is running. */
709 local_irq_save(flags);
710 lguest_clockevent.event_handler(&lguest_clockevent);
711 local_irq_restore(flags);
712}
713
714/* At some point in the boot process, we get asked to set up our timing
715 * infrastructure. The kernel doesn't expect timer interrupts before this, but
716 * we cleverly initialized the "blocked_interrupts" field of "struct
717 * lguest_data" so that timer interrupts were blocked until now. */
718static void lguest_time_init(void)
719{
720 /* Set up the timer interrupt (0) to go to our simple timer routine */
721 set_irq_handler(0, lguest_time_irq);
722
723 /* Our clock structure look like arch/i386/kernel/tsc.c if we can use
724 * the TSC, otherwise it's a dumb nanosecond-resolution clock. Either
725 * way, the "rating" is initialized so high that it's always chosen
726 * over any other clocksource. */
727 if (lguest_data.tsc_khz)
728 lguest_clock.mult = clocksource_khz2mult(lguest_data.tsc_khz,
729 lguest_clock.shift);
730 clock_base = lguest_clock_read();
731 clocksource_register(&lguest_clock);
732
733 /* Now we've set up our clock, we can use it as the scheduler clock */
734 pv_time_ops.sched_clock = lguest_sched_clock;
735
736 /* We can't set cpumask in the initializer: damn C limitations! Set it
737 * here and register our timer device. */
738 lguest_clockevent.cpumask = cpumask_of_cpu(0);
739 clockevents_register_device(&lguest_clockevent);
740
741 /* Finally, we unblock the timer interrupt. */
742 enable_lguest_irq(0);
743}
744
745/*
746 * Miscellaneous bits and pieces.
747 *
748 * Here is an oddball collection of functions which the Guest needs for things
749 * to work. They're pretty simple.
750 */
751
752/* The Guest needs to tell the host what stack it expects traps to use. For
753 * native hardware, this is part of the Task State Segment mentioned above in
754 * lguest_load_tr_desc(), but to help hypervisors there's this special call.
755 *
756 * We tell the Host the segment we want to use (__KERNEL_DS is the kernel data
757 * segment), the privilege level (we're privilege level 1, the Host is 0 and
758 * will not tolerate us trying to use that), the stack pointer, and the number
759 * of pages in the stack. */
760static void lguest_load_esp0(struct tss_struct *tss,
761 struct thread_struct *thread)
762{
763 lazy_hcall(LHCALL_SET_STACK, __KERNEL_DS|0x1, thread->esp0,
764 THREAD_SIZE/PAGE_SIZE);
765}
766
767/* Let's just say, I wouldn't do debugging under a Guest. */
768static void lguest_set_debugreg(int regno, unsigned long value)
769{
770 /* FIXME: Implement */
771}
772
773/* There are times when the kernel wants to make sure that no memory writes are
774 * caught in the cache (that they've all reached real hardware devices). This
775 * doesn't matter for the Guest which has virtual hardware.
776 *
777 * On the Pentium 4 and above, cpuid() indicates that the Cache Line Flush
778 * (clflush) instruction is available and the kernel uses that. Otherwise, it
779 * uses the older "Write Back and Invalidate Cache" (wbinvd) instruction.
780 * Unlike clflush, wbinvd can only be run at privilege level 0. So we can
781 * ignore clflush, but replace wbinvd.
782 */
783static void lguest_wbinvd(void)
784{
785}
786
787/* If the Guest expects to have an Advanced Programmable Interrupt Controller,
788 * we play dumb by ignoring writes and returning 0 for reads. So it's no
789 * longer Programmable nor Controlling anything, and I don't think 8 lines of
790 * code qualifies for Advanced. It will also never interrupt anything. It
791 * does, however, allow us to get through the Linux boot code. */
792#ifdef CONFIG_X86_LOCAL_APIC
793static void lguest_apic_write(unsigned long reg, unsigned long v)
794{
795}
796
797static unsigned long lguest_apic_read(unsigned long reg)
798{
799 return 0;
800}
801#endif
802
803/* STOP! Until an interrupt comes in. */
804static void lguest_safe_halt(void)
805{
806 hcall(LHCALL_HALT, 0, 0, 0);
807}
808
809/* Perhaps CRASH isn't the best name for this hypercall, but we use it to get a
810 * message out when we're crashing as well as elegant termination like powering
811 * off.
812 *
813 * Note that the Host always prefers that the Guest speak in physical addresses
814 * rather than virtual addresses, so we use __pa() here. */
815static void lguest_power_off(void)
816{
817 hcall(LHCALL_CRASH, __pa("Power down"), 0, 0);
818}
819
820/*
821 * Panicing.
822 *
823 * Don't. But if you did, this is what happens.
824 */
825static int lguest_panic(struct notifier_block *nb, unsigned long l, void *p)
826{
827 hcall(LHCALL_CRASH, __pa(p), 0, 0);
828 /* The hcall won't return, but to keep gcc happy, we're "done". */
829 return NOTIFY_DONE;
830}
831
832static struct notifier_block paniced = {
833 .notifier_call = lguest_panic
834};
835
836/* Setting up memory is fairly easy. */
837static __init char *lguest_memory_setup(void)
838{
839 /* We do this here and not earlier because lockcheck barfs if we do it
840 * before start_kernel() */
841 atomic_notifier_chain_register(&panic_notifier_list, &paniced);
842
843 /* The Linux bootloader header contains an "e820" memory map: the
844 * Launcher populated the first entry with our memory limit. */
845 add_memory_region(boot_params.e820_map[0].addr,
846 boot_params.e820_map[0].size,
847 boot_params.e820_map[0].type);
848
849 /* This string is for the boot messages. */
850 return "LGUEST";
851}
852
853/* Before virtqueues are set up, we use LHCALL_NOTIFY on normal memory to
854 * produce console output. */
855static __init int early_put_chars(u32 vtermno, const char *buf, int count)
856{
857 char scratch[17];
858 unsigned int len = count;
859
860 if (len > sizeof(scratch) - 1)
861 len = sizeof(scratch) - 1;
862 scratch[len] = '\0';
863 memcpy(scratch, buf, len);
864 hcall(LHCALL_NOTIFY, __pa(scratch), 0, 0);
865
866 /* This routine returns the number of bytes actually written. */
867 return len;
868}
869
870/*G:050
871 * Patching (Powerfully Placating Performance Pedants)
872 *
873 * We have already seen that pv_ops structures let us replace simple
874 * native instructions with calls to the appropriate back end all throughout
875 * the kernel. This allows the same kernel to run as a Guest and as a native
876 * kernel, but it's slow because of all the indirect branches.
877 *
878 * Remember that David Wheeler quote about "Any problem in computer science can
879 * be solved with another layer of indirection"? The rest of that quote is
880 * "... But that usually will create another problem." This is the first of
881 * those problems.
882 *
883 * Our current solution is to allow the paravirt back end to optionally patch
884 * over the indirect calls to replace them with something more efficient. We
885 * patch the four most commonly called functions: disable interrupts, enable
886 * interrupts, restore interrupts and save interrupts. We usually have 10
887 * bytes to patch into: the Guest versions of these operations are small enough
888 * that we can fit comfortably.
889 *
890 * First we need assembly templates of each of the patchable Guest operations,
891 * and these are in lguest_asm.S. */
892
893/*G:060 We construct a table from the assembler templates: */
894static const struct lguest_insns
895{
896 const char *start, *end;
897} lguest_insns[] = {
898 [PARAVIRT_PATCH(pv_irq_ops.irq_disable)] = { lgstart_cli, lgend_cli },
899 [PARAVIRT_PATCH(pv_irq_ops.irq_enable)] = { lgstart_sti, lgend_sti },
900 [PARAVIRT_PATCH(pv_irq_ops.restore_fl)] = { lgstart_popf, lgend_popf },
901 [PARAVIRT_PATCH(pv_irq_ops.save_fl)] = { lgstart_pushf, lgend_pushf },
902};
903
904/* Now our patch routine is fairly simple (based on the native one in
905 * paravirt.c). If we have a replacement, we copy it in and return how much of
906 * the available space we used. */
907static unsigned lguest_patch(u8 type, u16 clobber, void *ibuf,
908 unsigned long addr, unsigned len)
909{
910 unsigned int insn_len;
911
912 /* Don't do anything special if we don't have a replacement */
913 if (type >= ARRAY_SIZE(lguest_insns) || !lguest_insns[type].start)
914 return paravirt_patch_default(type, clobber, ibuf, addr, len);
915
916 insn_len = lguest_insns[type].end - lguest_insns[type].start;
917
918 /* Similarly if we can't fit replacement (shouldn't happen, but let's
919 * be thorough). */
920 if (len < insn_len)
921 return paravirt_patch_default(type, clobber, ibuf, addr, len);
922
923 /* Copy in our instructions. */
924 memcpy(ibuf, lguest_insns[type].start, insn_len);
925 return insn_len;
926}
927
928/*G:030 Once we get to lguest_init(), we know we're a Guest. The pv_ops
929 * structures in the kernel provide points for (almost) every routine we have
930 * to override to avoid privileged instructions. */
931__init void lguest_init(void)
932{
933 /* We're under lguest, paravirt is enabled, and we're running at
934 * privilege level 1, not 0 as normal. */
935 pv_info.name = "lguest";
936 pv_info.paravirt_enabled = 1;
937 pv_info.kernel_rpl = 1;
938
939 /* We set up all the lguest overrides for sensitive operations. These
940 * are detailed with the operations themselves. */
941
942 /* interrupt-related operations */
943 pv_irq_ops.init_IRQ = lguest_init_IRQ;
944 pv_irq_ops.save_fl = save_fl;
945 pv_irq_ops.restore_fl = restore_fl;
946 pv_irq_ops.irq_disable = irq_disable;
947 pv_irq_ops.irq_enable = irq_enable;
948 pv_irq_ops.safe_halt = lguest_safe_halt;
949
950 /* init-time operations */
951 pv_init_ops.memory_setup = lguest_memory_setup;
952 pv_init_ops.patch = lguest_patch;
953
954 /* Intercepts of various cpu instructions */
955 pv_cpu_ops.load_gdt = lguest_load_gdt;
956 pv_cpu_ops.cpuid = lguest_cpuid;
957 pv_cpu_ops.load_idt = lguest_load_idt;
958 pv_cpu_ops.iret = lguest_iret;
959 pv_cpu_ops.load_esp0 = lguest_load_esp0;
960 pv_cpu_ops.load_tr_desc = lguest_load_tr_desc;
961 pv_cpu_ops.set_ldt = lguest_set_ldt;
962 pv_cpu_ops.load_tls = lguest_load_tls;
963 pv_cpu_ops.set_debugreg = lguest_set_debugreg;
964 pv_cpu_ops.clts = lguest_clts;
965 pv_cpu_ops.read_cr0 = lguest_read_cr0;
966 pv_cpu_ops.write_cr0 = lguest_write_cr0;
967 pv_cpu_ops.read_cr4 = lguest_read_cr4;
968 pv_cpu_ops.write_cr4 = lguest_write_cr4;
969 pv_cpu_ops.write_gdt_entry = lguest_write_gdt_entry;
970 pv_cpu_ops.write_idt_entry = lguest_write_idt_entry;
971 pv_cpu_ops.wbinvd = lguest_wbinvd;
972 pv_cpu_ops.lazy_mode.enter = paravirt_enter_lazy_cpu;
973 pv_cpu_ops.lazy_mode.leave = lguest_leave_lazy_mode;
974
975 /* pagetable management */
976 pv_mmu_ops.write_cr3 = lguest_write_cr3;
977 pv_mmu_ops.flush_tlb_user = lguest_flush_tlb_user;
978 pv_mmu_ops.flush_tlb_single = lguest_flush_tlb_single;
979 pv_mmu_ops.flush_tlb_kernel = lguest_flush_tlb_kernel;
980 pv_mmu_ops.set_pte = lguest_set_pte;
981 pv_mmu_ops.set_pte_at = lguest_set_pte_at;
982 pv_mmu_ops.set_pmd = lguest_set_pmd;
983 pv_mmu_ops.read_cr2 = lguest_read_cr2;
984 pv_mmu_ops.read_cr3 = lguest_read_cr3;
985 pv_mmu_ops.lazy_mode.enter = paravirt_enter_lazy_mmu;
986 pv_mmu_ops.lazy_mode.leave = lguest_leave_lazy_mode;
987
988#ifdef CONFIG_X86_LOCAL_APIC
989 /* apic read/write intercepts */
990 pv_apic_ops.apic_write = lguest_apic_write;
991 pv_apic_ops.apic_write_atomic = lguest_apic_write;
992 pv_apic_ops.apic_read = lguest_apic_read;
993#endif
994
995 /* time operations */
996 pv_time_ops.get_wallclock = lguest_get_wallclock;
997 pv_time_ops.time_init = lguest_time_init;
998
999 /* Now is a good time to look at the implementations of these functions
1000 * before returning to the rest of lguest_init(). */
1001
1002 /*G:070 Now we've seen all the paravirt_ops, we return to
1003 * lguest_init() where the rest of the fairly chaotic boot setup
1004 * occurs. */
1005
1006 /* The native boot code sets up initial page tables immediately after
1007 * the kernel itself, and sets init_pg_tables_end so they're not
1008 * clobbered. The Launcher places our initial pagetables somewhere at
1009 * the top of our physical memory, so we don't need extra space: set
1010 * init_pg_tables_end to the end of the kernel. */
1011 init_pg_tables_end = __pa(pg0);
1012
1013 /* Load the %fs segment register (the per-cpu segment register) with
1014 * the normal data segment to get through booting. */
1015 asm volatile ("mov %0, %%fs" : : "r" (__KERNEL_DS) : "memory");
1016
1017 /* The Host uses the top of the Guest's virtual address space for the
1018 * Host<->Guest Switcher, and it tells us how much it needs in
1019 * lguest_data.reserve_mem, set up on the LGUEST_INIT hypercall. */
1020 reserve_top_address(lguest_data.reserve_mem);
1021
1022 /* If we don't initialize the lock dependency checker now, it crashes
1023 * paravirt_disable_iospace. */
1024 lockdep_init();
1025
1026 /* The IDE code spends about 3 seconds probing for disks: if we reserve
1027 * all the I/O ports up front it can't get them and so doesn't probe.
1028 * Other device drivers are similar (but less severe). This cuts the
1029 * kernel boot time on my machine from 4.1 seconds to 0.45 seconds. */
1030 paravirt_disable_iospace();
1031
1032 /* This is messy CPU setup stuff which the native boot code does before
1033 * start_kernel, so we have to do, too: */
1034 cpu_detect(&new_cpu_data);
1035 /* head.S usually sets up the first capability word, so do it here. */
1036 new_cpu_data.x86_capability[0] = cpuid_edx(1);
1037
1038 /* Math is always hard! */
1039 new_cpu_data.hard_math = 1;
1040
1041#ifdef CONFIG_X86_MCE
1042 mce_disabled = 1;
1043#endif
1044#ifdef CONFIG_ACPI
1045 acpi_disabled = 1;
1046 acpi_ht = 0;
1047#endif
1048
1049 /* We set the perferred console to "hvc". This is the "hypervisor
1050 * virtual console" driver written by the PowerPC people, which we also
1051 * adapted for lguest's use. */
1052 add_preferred_console("hvc", 0, NULL);
1053
1054 /* Register our very early console. */
1055 virtio_cons_early_init(early_put_chars);
1056
1057 /* Last of all, we set the power management poweroff hook to point to
1058 * the Guest routine to power off. */
1059 pm_power_off = lguest_power_off;
1060
1061 /* Now we're set up, call start_kernel() in init/main.c and we proceed
1062 * to boot as normal. It never returns. */
1063 start_kernel();
1064}
1065/*
1066 * This marks the end of stage II of our journey, The Guest.
1067 *
1068 * It is now time for us to explore the nooks and crannies of the three Guest
1069 * devices and complete our understanding of the Guest in "make Drivers".
1070 */
diff --git a/arch/x86/lguest/i386_head.S b/arch/x86/lguest/i386_head.S
new file mode 100644
index 000000000000..ebc6ac733899
--- /dev/null
+++ b/arch/x86/lguest/i386_head.S
@@ -0,0 +1,115 @@
1#include <linux/linkage.h>
2#include <linux/lguest.h>
3#include <asm/lguest_hcall.h>
4#include <asm/asm-offsets.h>
5#include <asm/thread_info.h>
6#include <asm/processor-flags.h>
7
8/*G:020 This is where we begin: head.S notes that the boot header's platform
9 * type field is "1" (lguest), so calls us here. The boot header is in %esi.
10 *
11 * WARNING: be very careful here! We're running at addresses equal to physical
12 * addesses (around 0), not above PAGE_OFFSET as most code expectes
13 * (eg. 0xC0000000). Jumps are relative, so they're OK, but we can't touch any
14 * data.
15 *
16 * The .section line puts this code in .init.text so it will be discarded after
17 * boot. */
18.section .init.text, "ax", @progbits
19ENTRY(lguest_entry)
20 /* Make initial hypercall now, so we can set up the pagetables. */
21 movl $LHCALL_LGUEST_INIT, %eax
22 movl $lguest_data - __PAGE_OFFSET, %edx
23 int $LGUEST_TRAP_ENTRY
24
25 /* The Host put the toplevel pagetable in lguest_data.pgdir. The movsl
26 * instruction uses %esi implicitly. */
27 movl lguest_data - __PAGE_OFFSET + LGUEST_DATA_pgdir, %esi
28
29 /* Copy first 32 entries of page directory to __PAGE_OFFSET entries.
30 * This means the first 128M of kernel memory will be mapped at
31 * PAGE_OFFSET where the kernel expects to run. This will get it far
32 * enough through boot to switch to its own pagetables. */
33 movl $32, %ecx
34 movl %esi, %edi
35 addl $((__PAGE_OFFSET >> 22) * 4), %edi
36 rep
37 movsl
38
39 /* Set up the initial stack so we can run C code. */
40 movl $(init_thread_union+THREAD_SIZE),%esp
41
42 /* Jumps are relative, and we're running __PAGE_OFFSET too low at the
43 * moment. */
44 jmp lguest_init+__PAGE_OFFSET
45
46/*G:055 We create a macro which puts the assembler code between lgstart_ and
47 * lgend_ markers. These templates are put in the .text section: they can't be
48 * discarded after boot as we may need to patch modules, too. */
49.text
50#define LGUEST_PATCH(name, insns...) \
51 lgstart_##name: insns; lgend_##name:; \
52 .globl lgstart_##name; .globl lgend_##name
53
54LGUEST_PATCH(cli, movl $0, lguest_data+LGUEST_DATA_irq_enabled)
55LGUEST_PATCH(sti, movl $X86_EFLAGS_IF, lguest_data+LGUEST_DATA_irq_enabled)
56LGUEST_PATCH(popf, movl %eax, lguest_data+LGUEST_DATA_irq_enabled)
57LGUEST_PATCH(pushf, movl lguest_data+LGUEST_DATA_irq_enabled, %eax)
58/*:*/
59
60/* These demark the EIP range where host should never deliver interrupts. */
61.global lguest_noirq_start
62.global lguest_noirq_end
63
64/*M:004 When the Host reflects a trap or injects an interrupt into the Guest,
65 * it sets the eflags interrupt bit on the stack based on
66 * lguest_data.irq_enabled, so the Guest iret logic does the right thing when
67 * restoring it. However, when the Host sets the Guest up for direct traps,
68 * such as system calls, the processor is the one to push eflags onto the
69 * stack, and the interrupt bit will be 1 (in reality, interrupts are always
70 * enabled in the Guest).
71 *
72 * This turns out to be harmless: the only trap which should happen under Linux
73 * with interrupts disabled is Page Fault (due to our lazy mapping of vmalloc
74 * regions), which has to be reflected through the Host anyway. If another
75 * trap *does* go off when interrupts are disabled, the Guest will panic, and
76 * we'll never get to this iret! :*/
77
78/*G:045 There is one final paravirt_op that the Guest implements, and glancing
79 * at it you can see why I left it to last. It's *cool*! It's in *assembler*!
80 *
81 * The "iret" instruction is used to return from an interrupt or trap. The
82 * stack looks like this:
83 * old address
84 * old code segment & privilege level
85 * old processor flags ("eflags")
86 *
87 * The "iret" instruction pops those values off the stack and restores them all
88 * at once. The only problem is that eflags includes the Interrupt Flag which
89 * the Guest can't change: the CPU will simply ignore it when we do an "iret".
90 * So we have to copy eflags from the stack to lguest_data.irq_enabled before
91 * we do the "iret".
92 *
93 * There are two problems with this: firstly, we need to use a register to do
94 * the copy and secondly, the whole thing needs to be atomic. The first
95 * problem is easy to solve: push %eax on the stack so we can use it, and then
96 * restore it at the end just before the real "iret".
97 *
98 * The second is harder: copying eflags to lguest_data.irq_enabled will turn
99 * interrupts on before we're finished, so we could be interrupted before we
100 * return to userspace or wherever. Our solution to this is to surround the
101 * code with lguest_noirq_start: and lguest_noirq_end: labels. We tell the
102 * Host that it is *never* to interrupt us there, even if interrupts seem to be
103 * enabled. */
104ENTRY(lguest_iret)
105 pushl %eax
106 movl 12(%esp), %eax
107lguest_noirq_start:
108 /* Note the %ss: segment prefix here. Normal data accesses use the
109 * "ds" segment, but that will have already been restored for whatever
110 * we're returning to (such as userspace): we can't trust it. The %ss:
111 * prefix makes sure we use the stack segment, which is still valid. */
112 movl %eax,%ss:lguest_data+LGUEST_DATA_irq_enabled
113 popl %eax
114 iret
115lguest_noirq_end:
diff --git a/arch/x86/mm/pageattr_64.c b/arch/x86/mm/pageattr_64.c
index c7b7dfe1d405..c40afbaaf93d 100644
--- a/arch/x86/mm/pageattr_64.c
+++ b/arch/x86/mm/pageattr_64.c
@@ -61,10 +61,10 @@ static struct page *split_large_page(unsigned long address, pgprot_t prot,
61 return base; 61 return base;
62} 62}
63 63
64static void cache_flush_page(void *adr) 64void clflush_cache_range(void *adr, int size)
65{ 65{
66 int i; 66 int i;
67 for (i = 0; i < PAGE_SIZE; i += boot_cpu_data.x86_clflush_size) 67 for (i = 0; i < size; i += boot_cpu_data.x86_clflush_size)
68 clflush(adr+i); 68 clflush(adr+i);
69} 69}
70 70
@@ -80,7 +80,7 @@ static void flush_kernel_map(void *arg)
80 asm volatile("wbinvd" ::: "memory"); 80 asm volatile("wbinvd" ::: "memory");
81 else list_for_each_entry(pg, l, lru) { 81 else list_for_each_entry(pg, l, lru) {
82 void *adr = page_address(pg); 82 void *adr = page_address(pg);
83 cache_flush_page(adr); 83 clflush_cache_range(adr, PAGE_SIZE);
84 } 84 }
85 __flush_tlb_all(); 85 __flush_tlb_all();
86} 86}
diff --git a/arch/x86/xen/Kconfig b/arch/x86/xen/Kconfig
index 9df99e1885a4..fbfa55ce0d55 100644
--- a/arch/x86/xen/Kconfig
+++ b/arch/x86/xen/Kconfig
@@ -3,8 +3,9 @@
3# 3#
4 4
5config XEN 5config XEN
6 bool "Enable support for Xen hypervisor" 6 bool "Xen guest support"
7 depends on PARAVIRT && X86_CMPXCHG && X86_TSC && !NEED_MULTIPLE_NODES 7 select PARAVIRT
8 depends on X86_CMPXCHG && X86_TSC && !NEED_MULTIPLE_NODES && !(X86_VISWS || X86_VOYAGER)
8 help 9 help
9 This is the Linux Xen port. Enabling this will allow the 10 This is the Linux Xen port. Enabling this will allow the
10 kernel to boot in a paravirtualized environment under the 11 kernel to boot in a paravirtualized environment under the
diff --git a/arch/x86_64/Kconfig b/arch/x86_64/Kconfig
index aab25f3ba3ce..c2d24991bb2b 100644
--- a/arch/x86_64/Kconfig
+++ b/arch/x86_64/Kconfig
@@ -750,6 +750,38 @@ config PCI_DOMAINS
750 depends on PCI 750 depends on PCI
751 default y 751 default y
752 752
753config DMAR
754 bool "Support for DMA Remapping Devices (EXPERIMENTAL)"
755 depends on PCI_MSI && ACPI && EXPERIMENTAL
756 default y
757 help
758 DMA remapping (DMAR) devices support enables independent address
759 translations for Direct Memory Access (DMA) from devices.
760 These DMA remapping devices are reported via ACPI tables
761 and include PCI device scope covered by these DMA
762 remapping devices.
763
764config DMAR_GFX_WA
765 bool "Support for Graphics workaround"
766 depends on DMAR
767 default y
768 help
769 Current Graphics drivers tend to use physical address
770 for DMA and avoid using DMA APIs. Setting this config
771 option permits the IOMMU driver to set a unity map for
772 all the OS-visible memory. Hence the driver can continue
773 to use physical addresses for DMA.
774
775config DMAR_FLOPPY_WA
776 bool
777 depends on DMAR
778 default y
779 help
780 Floppy disk drivers are know to bypass DMA API calls
781 thereby failing to work when IOMMU is enabled. This
782 workaround will setup a 1:1 mapping for the first
783 16M to make floppy (an ISA device) work.
784
753source "drivers/pci/pcie/Kconfig" 785source "drivers/pci/pcie/Kconfig"
754 786
755source "drivers/pci/Kconfig" 787source "drivers/pci/Kconfig"
diff --git a/arch/xtensa/boot/Makefile b/arch/xtensa/boot/Makefile
index 9c5185f605b6..40aa55b485be 100644
--- a/arch/xtensa/boot/Makefile
+++ b/arch/xtensa/boot/Makefile
@@ -8,7 +8,8 @@
8# 8#
9 9
10 10
11EXTRA_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include 11# KBUILD_CFLAGS used when building rest of boot (takes effect recursively)
12KBUILD_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include
12HOSTFLAGS += -Iarch/$(ARCH)/boot/include 13HOSTFLAGS += -Iarch/$(ARCH)/boot/include
13 14
14BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#") 15BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#")